diff --git a/.obsidian/plugins/customizable-page-header-buttons/main.js b/.obsidian/plugins/customizable-page-header-buttons/main.js index 776d55a7..a73ecf5b 100644 --- a/.obsidian/plugins/customizable-page-header-buttons/main.js +++ b/.obsidian/plugins/customizable-page-header-buttons/main.js @@ -26,7 +26,32 @@ This plugin uses feather icons (https://github.com/feathericons/feather). Feathe SOFTWARE. -The commandSuggester, iconPicker, addFeatherIcons function, feather icon names and the biggest part of the settings tab have been adapted from the Obsidian Customizable Sidebar Plugin (https://github.com/phibr0/obsidian-customizable-sidebar). +The feather icons npm module uses itself the 'class names' npm package (https://github.com/JedWatson/classnames). +It is MIT-licensed: + The MIT License (MIT) + + Copyright (c) 2018 Jed Watson + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + +The commandSuggester, iconPicker, addFeatherIcons function, Obsidian icon names and the biggest part of the settings tab have been adapted from the Obsidian Customizable Sidebar Plugin (https://github.com/phibr0/obsidian-customizable-sidebar). It is MIT-licensed: MIT License diff --git a/.obsidian/plugins/customizable-page-header-buttons/manifest.json b/.obsidian/plugins/customizable-page-header-buttons/manifest.json index e10065ec..6b93bae2 100644 --- a/.obsidian/plugins/customizable-page-header-buttons/manifest.json +++ b/.obsidian/plugins/customizable-page-header-buttons/manifest.json @@ -1,7 +1,7 @@ { "id": "customizable-page-header-buttons", "name": "Customizable Page Header", - "version": "3.1.1", + "version": "3.1.2", "minAppVersion": "0.12.19", "description": "This plugin lets you add buttons for executing commands to the page header.", "author": "kometenstaub", diff --git a/.obsidian/plugins/dataview/main.js b/.obsidian/plugins/dataview/main.js index 1ab99e4a..ff9947a9 100644 --- a/.obsidian/plugins/dataview/main.js +++ b/.obsidian/plugins/dataview/main.js @@ -1,7 +1,23 @@ +/* Version: 0.4.21 - November 20, 2021 14:41:21 */ 'use strict'; var obsidian = require('obsidian'); +function _mergeNamespaces(n, m) { + m.forEach(function (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default' && !(k in n)) { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + }); + return Object.freeze(n); +} + /*! ***************************************************************************** Copyright (c) Microsoft Corporation. @@ -8356,15 +8372,31 @@ var VERSION = "2.0.2"; var DateTime_1 = luxon.DateTime = DateTime; var Duration_1 = luxon.Duration = Duration; -luxon.FixedOffsetZone = FixedOffsetZone; -luxon.IANAZone = IANAZone; -luxon.Info = Info; -luxon.Interval = Interval; -luxon.InvalidZone = InvalidZone; -luxon.Settings = Settings; -luxon.SystemZone = SystemZone; -luxon.VERSION = VERSION; -luxon.Zone = Zone; +var FixedOffsetZone_1 = luxon.FixedOffsetZone = FixedOffsetZone; +var IANAZone_1 = luxon.IANAZone = IANAZone; +var Info_1 = luxon.Info = Info; +var Interval_1 = luxon.Interval = Interval; +var InvalidZone_1 = luxon.InvalidZone = InvalidZone; +var Settings_1 = luxon.Settings = Settings; +var SystemZone_1 = luxon.SystemZone = SystemZone; +var VERSION_1 = luxon.VERSION = VERSION; +var Zone_1 = luxon.Zone = Zone; + +var Luxon = /*#__PURE__*/Object.freeze(/*#__PURE__*/_mergeNamespaces({ + __proto__: null, + DateTime: DateTime_1, + Duration: Duration_1, + FixedOffsetZone: FixedOffsetZone_1, + IANAZone: IANAZone_1, + Info: Info_1, + Interval: Interval_1, + InvalidZone: InvalidZone_1, + Settings: Settings_1, + SystemZone: SystemZone_1, + VERSION: VERSION_1, + Zone: Zone_1, + 'default': luxon +}, [luxon])); //////////////////// // Query Settings // @@ -8376,6 +8408,7 @@ const DEFAULT_QUERY_SETTINGS = { taskCompletionTracking: false, taskCompletionText: "completion", warnOnEmptyResult: true, + refreshEnabled: true, refreshInterval: 250, defaultDateFormat: "MMMM dd, yyyy", defaultDateTimeFormat: "h:mm a - MMMM dd, yyyy", @@ -9648,14 +9681,14 @@ function parseInnerLink(link) { link = split[0]; display = split[1]; } - if (link.includes("#")) { + if (link.includes("#^")) { + let split = link.split("#^"); + return Link.block(split[0], split[1], false, display); + } + else if (link.includes("#")) { let split = link.split("#"); return Link.header(split[0], split[1], false, display); } - else if (link.includes("^")) { - let split = link.split("^"); - return Link.block(split[0], split[1], false, display); - } return Link.file(link, false, display); } /** Create a left-associative binary parser which parses the given sub-element and separator. Handles whitespace. */ @@ -9758,11 +9791,13 @@ const EXPRESSION = parsimmon_umd_min.exports.createLanguage({ return DateTime_1.fromObject({ year: Number.parseInt(year), month: Number.parseInt(month) }); }).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), date: q => chainOpt(q.rootDate, (ym) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, day) => ym.set({ day: Number.parseInt(day) })), (ymd) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("T"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, hour) => ymd.set({ hour: Number.parseInt(hour) })), (ymdh) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, minute) => ymdh.set({ minute: Number.parseInt(minute) })), (ymdhm) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, second) => ymdhm.set({ second: Number.parseInt(second) })), (ymdhms) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("."), parsimmon_umd_min.exports.regexp(/\d{3}/), (_, millisecond) => ymdhms.set({ millisecond: Number.parseInt(millisecond) })), parsimmon_umd_min.exports.succeed(ymdhms) // pass - ), (dt) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("+").or(parsimmon_umd_min.exports.string("-")), parsimmon_umd_min.exports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt.setZone("UTC" + pm + hr)), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("Z"), () => dt.setZone("utc")))), + ), (dt) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("+").or(parsimmon_umd_min.exports.string("-")), parsimmon_umd_min.exports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt.setZone("UTC" + pm + hr, { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("Z"), () => dt.setZone("utc", { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_min.exports.string("]"), (_a, zone, _b) => dt.setZone(zone, { keepLocalTime: true })))).assert((dt) => dt.isValid, "valid date"), // A date, plus various shorthand times of day it could be. datePlus: q => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.string("now").map(_ => DateTime_1.local()), parsimmon_umd_min.exports.string("today").map(_ => DateTime_1.local().startOf("day")), parsimmon_umd_min.exports.string("tomorrow").map(_ => DateTime_1.local() .startOf("day") - .plus(Duration_1.fromObject({ days: 1 }))), parsimmon_umd_min.exports.string("sow").map(_ => DateTime_1.local().startOf("week")), parsimmon_umd_min.exports.string("som").map(_ => DateTime_1.local().startOf("month")), parsimmon_umd_min.exports.string("soy").map(_ => DateTime_1.local().startOf("year")), parsimmon_umd_min.exports.string("eow").map(_ => DateTime_1.local().endOf("week")), parsimmon_umd_min.exports.string("eom").map(_ => DateTime_1.local().endOf("month")), parsimmon_umd_min.exports.string("eoy").map(_ => DateTime_1.local().endOf("year")), q.date), + .plus(Duration_1.fromObject({ days: 1 }))), parsimmon_umd_min.exports.string("yesterday").map(_ => DateTime_1.local() + .startOf("day") + .minus(Duration_1.fromObject({ days: 1 }))), parsimmon_umd_min.exports.string("sow").map(_ => DateTime_1.local().startOf("week")), parsimmon_umd_min.exports.string("som").map(_ => DateTime_1.local().startOf("month")), parsimmon_umd_min.exports.string("soy").map(_ => DateTime_1.local().startOf("year")), parsimmon_umd_min.exports.string("eow").map(_ => DateTime_1.local().endOf("week")), parsimmon_umd_min.exports.string("eom").map(_ => DateTime_1.local().endOf("month")), parsimmon_umd_min.exports.string("eoy").map(_ => DateTime_1.local().endOf("year")), q.date), // A duration of time. durationType: _ => parsimmon_umd_min.exports.alt(...Object.keys(DURATION_TYPES) .sort((a, b) => b.length - a.length) @@ -10385,7 +10420,7 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) { }; } -var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgdmFyIGNvbW1vbmpzR2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307CgogICAgdmFyIGx1eG9uID0ge307CgogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGx1eG9uLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7CgogICAgZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsKICAgICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7CiAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOwogICAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsKICAgICAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7CiAgICAgIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsKICAgICAgcmV0dXJuIENvbnN0cnVjdG9yOwogICAgfQoKICAgIGZ1bmN0aW9uIF9leHRlbmRzKCkgewogICAgICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgewogICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOwoKICAgICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsKICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsKICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgICB9OwoKICAgICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsKICAgICAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7CiAgICAgIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOwoKICAgICAgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgewogICAgICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgewogICAgICAgIHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7CiAgICAgIH07CiAgICAgIHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7CiAgICB9CgogICAgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsKICAgICAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7CiAgICAgICAgby5fX3Byb3RvX18gPSBwOwogICAgICAgIHJldHVybiBvOwogICAgICB9OwoKICAgICAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgewogICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICJ1bmRlZmluZWQiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAodHlwZW9mIFByb3h5ID09PSAiZnVuY3Rpb24iKSByZXR1cm4gdHJ1ZTsKCiAgICAgIHRyeSB7CiAgICAgICAgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7CiAgICAgIGlmIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHsKICAgICAgICBfY29uc3RydWN0ID0gUmVmbGVjdC5jb25zdHJ1Y3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2NvbnN0cnVjdCA9IGZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykgewogICAgICAgICAgdmFyIGEgPSBbbnVsbF07CiAgICAgICAgICBhLnB1c2guYXBwbHkoYSwgYXJncyk7CiAgICAgICAgICB2YXIgQ29uc3RydWN0b3IgPSBGdW5jdGlvbi5iaW5kLmFwcGx5KFBhcmVudCwgYSk7CiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29uc3RydWN0b3IoKTsKICAgICAgICAgIGlmIChDbGFzcykgX3NldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpOwogICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHJldHVybiBfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24oZm4pIHsKICAgICAgcmV0dXJuIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoZm4pLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSAhPT0gLTE7CiAgICB9CgogICAgZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgewogICAgICB2YXIgX2NhY2hlID0gdHlwZW9mIE1hcCA9PT0gImZ1bmN0aW9uIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDsKCiAgICAgIF93cmFwTmF0aXZlU3VwZXIgPSBmdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7CiAgICAgICAgaWYgKENsYXNzID09PSBudWxsIHx8ICFfaXNOYXRpdmVGdW5jdGlvbihDbGFzcykpIHJldHVybiBDbGFzczsKCiAgICAgICAgaWYgKHR5cGVvZiBDbGFzcyAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTsKICAgICAgICB9CgogICAgICAgIGlmICh0eXBlb2YgX2NhY2hlICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgaWYgKF9jYWNoZS5oYXMoQ2xhc3MpKSByZXR1cm4gX2NhY2hlLmdldChDbGFzcyk7CgogICAgICAgICAgX2NhY2hlLnNldChDbGFzcywgV3JhcHBlcik7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBXcmFwcGVyKCkgewogICAgICAgICAgcmV0dXJuIF9jb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTsKICAgICAgICB9CgogICAgICAgIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHsKICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgIHZhbHVlOiBXcmFwcGVyLAogICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpOwogICAgICB9OwoKICAgICAgcmV0dXJuIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpOwogICAgfQoKICAgIGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsKICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307CiAgICAgIHZhciB0YXJnZXQgPSB7fTsKICAgICAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOwogICAgICB2YXIga2V5LCBpOwoKICAgICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBrZXkgPSBzb3VyY2VLZXlzW2ldOwogICAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7CiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KCiAgICBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7CiAgICAgIGlmICghbykgcmV0dXJuOwogICAgICBpZiAodHlwZW9mIG8gPT09ICJzdHJpbmciKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsKICAgICAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOwogICAgICBpZiAobiA9PT0gIk9iamVjdCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsKICAgICAgaWYgKG4gPT09ICJNYXAiIHx8IG4gPT09ICJTZXQiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsKICAgICAgaWYgKG4gPT09ICJBcmd1bWVudHMiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgewogICAgICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsKCiAgICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsKCiAgICAgIHJldHVybiBhcnIyOwogICAgfQoKICAgIGZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyTG9vc2UobywgYWxsb3dBcnJheUxpa2UpIHsKICAgICAgdmFyIGl0ID0gdHlwZW9mIFN5bWJvbCAhPT0gInVuZGVmaW5lZCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bIkBAaXRlcmF0b3IiXTsKICAgICAgaWYgKGl0KSByZXR1cm4gKGl0ID0gaXQuY2FsbChvKSkubmV4dC5iaW5kKGl0KTsKCiAgICAgIGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSB7CiAgICAgICAgaWYgKGl0KSBvID0gaXQ7CiAgICAgICAgdmFyIGkgPSAwOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsKICAgICAgICAgICAgZG9uZTogdHJ1ZQogICAgICAgICAgfTsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGRvbmU6IGZhbHNlLAogICAgICAgICAgICB2YWx1ZTogb1tpKytdCiAgICAgICAgICB9OwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKTsKICAgIH0KCiAgICAvLyB0aGVzZSBhcmVuJ3QgcmVhbGx5IHByaXZhdGUsIGJ1dCBub3IgYXJlIHRoZXkgcmVhbGx5IHVzZWZ1bCB0byBkb2N1bWVudAoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwogICAgdmFyIEx1eG9uRXJyb3IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9FcnJvcikgewogICAgICBfaW5oZXJpdHNMb29zZShMdXhvbkVycm9yLCBfRXJyb3IpOwoKICAgICAgZnVuY3Rpb24gTHV4b25FcnJvcigpIHsKICAgICAgICByZXR1cm4gX0Vycm9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEx1eG9uRXJyb3I7CiAgICB9KCAvKiNfX1BVUkVfXyovX3dyYXBOYXRpdmVTdXBlcihFcnJvcikpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIHZhciBJbnZhbGlkRGF0ZVRpbWVFcnJvciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0x1eG9uRXJyb3IpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZERhdGVUaW1lRXJyb3IsIF9MdXhvbkVycm9yKTsKCiAgICAgIGZ1bmN0aW9uIEludmFsaWREYXRlVGltZUVycm9yKHJlYXNvbikgewogICAgICAgIHJldHVybiBfTHV4b25FcnJvci5jYWxsKHRoaXMsICJJbnZhbGlkIERhdGVUaW1lOiAiICsgcmVhc29uLnRvTWVzc2FnZSgpKSB8fCB0aGlzOwogICAgICB9CgogICAgICByZXR1cm4gSW52YWxpZERhdGVUaW1lRXJyb3I7CiAgICB9KEx1eG9uRXJyb3IpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgogICAgdmFyIEludmFsaWRJbnRlcnZhbEVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTHV4b25FcnJvcjIpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZEludGVydmFsRXJyb3IsIF9MdXhvbkVycm9yMik7CgogICAgICBmdW5jdGlvbiBJbnZhbGlkSW50ZXJ2YWxFcnJvcihyZWFzb24pIHsKICAgICAgICByZXR1cm4gX0x1eG9uRXJyb3IyLmNhbGwodGhpcywgIkludmFsaWQgSW50ZXJ2YWw6ICIgKyByZWFzb24udG9NZXNzYWdlKCkpIHx8IHRoaXM7CiAgICAgIH0KCiAgICAgIHJldHVybiBJbnZhbGlkSW50ZXJ2YWxFcnJvcjsKICAgIH0oTHV4b25FcnJvcik7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCiAgICB2YXIgSW52YWxpZER1cmF0aW9uRXJyb3IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9MdXhvbkVycm9yMykgewogICAgICBfaW5oZXJpdHNMb29zZShJbnZhbGlkRHVyYXRpb25FcnJvciwgX0x1eG9uRXJyb3IzKTsKCiAgICAgIGZ1bmN0aW9uIEludmFsaWREdXJhdGlvbkVycm9yKHJlYXNvbikgewogICAgICAgIHJldHVybiBfTHV4b25FcnJvcjMuY2FsbCh0aGlzLCAiSW52YWxpZCBEdXJhdGlvbjogIiArIHJlYXNvbi50b01lc3NhZ2UoKSkgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEludmFsaWREdXJhdGlvbkVycm9yOwogICAgfShMdXhvbkVycm9yKTsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKICAgIHZhciBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0x1eG9uRXJyb3I0KSB7CiAgICAgIF9pbmhlcml0c0xvb3NlKENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yLCBfTHV4b25FcnJvcjQpOwoKICAgICAgZnVuY3Rpb24gQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoKSB7CiAgICAgICAgcmV0dXJuIF9MdXhvbkVycm9yNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CiAgICAgIH0KCiAgICAgIHJldHVybiBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcjsKICAgIH0oTHV4b25FcnJvcik7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCiAgICB2YXIgSW52YWxpZFVuaXRFcnJvciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0x1eG9uRXJyb3I1KSB7CiAgICAgIF9pbmhlcml0c0xvb3NlKEludmFsaWRVbml0RXJyb3IsIF9MdXhvbkVycm9yNSk7CgogICAgICBmdW5jdGlvbiBJbnZhbGlkVW5pdEVycm9yKHVuaXQpIHsKICAgICAgICByZXR1cm4gX0x1eG9uRXJyb3I1LmNhbGwodGhpcywgIkludmFsaWQgdW5pdCAiICsgdW5pdCkgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEludmFsaWRVbml0RXJyb3I7CiAgICB9KEx1eG9uRXJyb3IpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgogICAgdmFyIEludmFsaWRBcmd1bWVudEVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTHV4b25FcnJvcjYpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZEFyZ3VtZW50RXJyb3IsIF9MdXhvbkVycm9yNik7CgogICAgICBmdW5jdGlvbiBJbnZhbGlkQXJndW1lbnRFcnJvcigpIHsKICAgICAgICByZXR1cm4gX0x1eG9uRXJyb3I2LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEludmFsaWRBcmd1bWVudEVycm9yOwogICAgfShMdXhvbkVycm9yKTsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKICAgIHZhciBab25lSXNBYnN0cmFjdEVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTHV4b25FcnJvcjcpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoWm9uZUlzQWJzdHJhY3RFcnJvciwgX0x1eG9uRXJyb3I3KTsKCiAgICAgIGZ1bmN0aW9uIFpvbmVJc0Fic3RyYWN0RXJyb3IoKSB7CiAgICAgICAgcmV0dXJuIF9MdXhvbkVycm9yNy5jYWxsKHRoaXMsICJab25lIGlzIGFuIGFic3RyYWN0IGNsYXNzIikgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIFpvbmVJc0Fic3RyYWN0RXJyb3I7CiAgICB9KEx1eG9uRXJyb3IpOwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwogICAgdmFyIG4gPSAibnVtZXJpYyIsCiAgICAgICAgcyA9ICJzaG9ydCIsCiAgICAgICAgbCA9ICJsb25nIjsKICAgIHZhciBEQVRFX1NIT1JUID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbiwKICAgICAgZGF5OiBuCiAgICB9OwogICAgdmFyIERBVEVfTUVEID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogcywKICAgICAgZGF5OiBuCiAgICB9OwogICAgdmFyIERBVEVfTUVEX1dJVEhfV0VFS0RBWSA9IHsKICAgICAgeWVhcjogbiwKICAgICAgbW9udGg6IHMsCiAgICAgIGRheTogbiwKICAgICAgd2Vla2RheTogcwogICAgfTsKICAgIHZhciBEQVRFX0ZVTEwgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBsLAogICAgICBkYXk6IG4KICAgIH07CiAgICB2YXIgREFURV9IVUdFID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbCwKICAgICAgZGF5OiBuLAogICAgICB3ZWVrZGF5OiBsCiAgICB9OwogICAgdmFyIFRJTUVfU0lNUExFID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4KICAgIH07CiAgICB2YXIgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuCiAgICB9OwogICAgdmFyIFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgVElNRV9XSVRIX0xPTkdfT0ZGU0VUID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbiwKICAgICAgdGltZVpvbmVOYW1lOiBsCiAgICB9OwogICAgdmFyIFRJTUVfMjRfU0lNUExFID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIGhvdXJDeWNsZTogImgyMyIKICAgIH07CiAgICB2YXIgVElNRV8yNF9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICBob3VyQ3ljbGU6ICJoMjMiCiAgICB9OwogICAgdmFyIFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbiwKICAgICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgICAgdGltZVpvbmVOYW1lOiBsCiAgICB9OwogICAgdmFyIERBVEVUSU1FX1NIT1JUID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbiwKICAgICAgZGF5OiBuLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4KICAgIH07CiAgICB2YXIgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbiwKICAgICAgZGF5OiBuLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbgogICAgfTsKICAgIHZhciBEQVRFVElNRV9NRUQgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBzLAogICAgICBkYXk6IG4sCiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbgogICAgfTsKICAgIHZhciBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogcywKICAgICAgZGF5OiBuLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbgogICAgfTsKICAgIHZhciBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogcywKICAgICAgZGF5OiBuLAogICAgICB3ZWVrZGF5OiBzLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4KICAgIH07CiAgICB2YXIgREFURVRJTUVfRlVMTCA9IHsKICAgICAgeWVhcjogbiwKICAgICAgbW9udGg6IGwsCiAgICAgIGRheTogbiwKICAgICAgaG91cjogbiwKICAgICAgbWludXRlOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBsLAogICAgICBkYXk6IG4sCiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgREFURVRJTUVfSFVHRSA9IHsKICAgICAgeWVhcjogbiwKICAgICAgbW9udGg6IGwsCiAgICAgIGRheTogbiwKICAgICAgd2Vla2RheTogbCwKICAgICAgaG91cjogbiwKICAgICAgbWludXRlOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IGwKICAgIH07CiAgICB2YXIgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBsLAogICAgICBkYXk6IG4sCiAgICAgIHdlZWtkYXk6IGwsCiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IGwKICAgIH07CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICAvLyBUWVBFUwoKICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG8pIHsKICAgICAgcmV0dXJuIHR5cGVvZiBvID09PSAidW5kZWZpbmVkIjsKICAgIH0KICAgIGZ1bmN0aW9uIGlzTnVtYmVyKG8pIHsKICAgICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICAgIH0KICAgIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICAgIHJldHVybiB0eXBlb2YgbyA9PT0gIm51bWJlciIgJiYgbyAlIDEgPT09IDA7CiAgICB9CiAgICBmdW5jdGlvbiBpc1N0cmluZyhvKSB7CiAgICAgIHJldHVybiB0eXBlb2YgbyA9PT0gInN0cmluZyI7CiAgICB9CiAgICBmdW5jdGlvbiBpc0RhdGUobykgewogICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgICB9IC8vIENBUEFCSUxJVElFUwoKICAgIGZ1bmN0aW9uIGhhc1JlbGF0aXZlKCkgewogICAgICB0cnkgewogICAgICAgIHJldHVybiB0eXBlb2YgSW50bCAhPT0gInVuZGVmaW5lZCIgJiYgISFJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSAvLyBPQkpFQ1RTIEFORCBBUlJBWVMKCiAgICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaW5nKSA/IHRoaW5nIDogW3RoaW5nXTsKICAgIH0KICAgIGZ1bmN0aW9uIGJlc3RCeShhcnIsIGJ5LCBjb21wYXJlKSB7CiAgICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQoKICAgICAgcmV0dXJuIGFyci5yZWR1Y2UoZnVuY3Rpb24gKGJlc3QsIG5leHQpIHsKICAgICAgICB2YXIgcGFpciA9IFtieShuZXh0KSwgbmV4dF07CgogICAgICAgIGlmICghYmVzdCkgewogICAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgICByZXR1cm4gYmVzdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgICAgfQogICAgICB9LCBudWxsKVsxXTsKICAgIH0KICAgIGZ1bmN0aW9uIHBpY2sob2JqLCBrZXlzKSB7CiAgICAgIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoYSwgaykgewogICAgICAgIGFba10gPSBvYmpba107CiAgICAgICAgcmV0dXJuIGE7CiAgICAgIH0sIHt9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7CiAgICB9IC8vIE5VTUJFUlMgQU5EIFNUUklOR1MKCiAgICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgICAgcmV0dXJuIGlzSW50ZWdlcih0aGluZykgJiYgdGhpbmcgPj0gYm90dG9tICYmIHRoaW5nIDw9IHRvcDsKICAgIH0gLy8geCAlIG4gYnV0IHRha2VzIHRoZSBzaWduIG9mIG4gaW5zdGVhZCBvZiB4CgogICAgZnVuY3Rpb24gZmxvb3JNb2QoeCwgbikgewogICAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICAgIH0KICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuKSB7CiAgICAgIGlmIChuID09PSB2b2lkIDApIHsKICAgICAgICBuID0gMjsKICAgICAgfQoKICAgICAgdmFyIG1pbnVzID0gaW5wdXQgPCAwID8gIi0iIDogIiI7CiAgICAgIHZhciB0YXJnZXQgPSBtaW51cyA/IGlucHV0ICogLTEgOiBpbnB1dDsKICAgICAgdmFyIHJlc3VsdDsKCiAgICAgIGlmICh0YXJnZXQudG9TdHJpbmcoKS5sZW5ndGggPCBuKSB7CiAgICAgICAgcmVzdWx0ID0gKCIwIi5yZXBlYXQobikgKyB0YXJnZXQpLnNsaWNlKC1uKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXN1bHQgPSB0YXJnZXQudG9TdHJpbmcoKTsKICAgICAgfQoKICAgICAgcmV0dXJuICIiICsgbWludXMgKyByZXN1bHQ7CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUludGVnZXIoc3RyaW5nKSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHBhcnNlTWlsbGlzKGZyYWN0aW9uKSB7CiAgICAgIC8vIFJldHVybiB1bmRlZmluZWQgKGluc3RlYWQgb2YgMCkgaW4gdGhlc2UgY2FzZXMsIHdoZXJlIGZyYWN0aW9uIGlzIG5vdCBzZXQKICAgICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBmID0gcGFyc2VGbG9hdCgiMC4iICsgZnJhY3Rpb24pICogMTAwMDsKICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gcm91bmRUbyhudW1iZXIsIGRpZ2l0cywgdG93YXJkWmVybykgewogICAgICBpZiAodG93YXJkWmVybyA9PT0gdm9pZCAwKSB7CiAgICAgICAgdG93YXJkWmVybyA9IGZhbHNlOwogICAgICB9CgogICAgICB2YXIgZmFjdG9yID0gTWF0aC5wb3coMTAsIGRpZ2l0cyksCiAgICAgICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgICByZXR1cm4gcm91bmRlcihudW1iZXIgKiBmYWN0b3IpIC8gZmFjdG9yOwogICAgfSAvLyBEQVRFIEJBU0lDUwoKICAgIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgICByZXR1cm4geWVhciAlIDQgPT09IDAgJiYgKHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMCk7CiAgICB9CiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7CiAgICB9CiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkgewogICAgICB2YXIgbW9kTW9udGggPSBmbG9vck1vZChtb250aCAtIDEsIDEyKSArIDEsCiAgICAgICAgICBtb2RZZWFyID0geWVhciArIChtb250aCAtIG1vZE1vbnRoKSAvIDEyOwoKICAgICAgaWYgKG1vZE1vbnRoID09PSAyKSB7CiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVttb2RNb250aCAtIDFdOwogICAgICB9CiAgICB9IC8vIGNvdmVydCBhIGNhbGVuZGFyIG9iamVjdCB0byBhIGxvY2FsIHRpbWVzdGFtcCAoZXBvY2gsIGJ1dCB3aXRoIHRoZSBvZmZzZXQgYmFrZWQgaW4pCgogICAgZnVuY3Rpb24gb2JqVG9Mb2NhbFRTKG9iaikgewogICAgICB2YXIgZCA9IERhdGUuVVRDKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5LCBvYmouaG91ciwgb2JqLm1pbnV0ZSwgb2JqLnNlY29uZCwgb2JqLm1pbGxpc2Vjb25kKTsgLy8gZm9yIGxlZ2FjeSByZWFzb25zLCB5ZWFycyBiZXR3ZWVuIDAgYW5kIDk5IGFyZSBpbnRlcnByZXRlZCBhcyAxOVhYOyByZXZlcnQgdGhhdAoKICAgICAgaWYgKG9iai55ZWFyIDwgMTAwICYmIG9iai55ZWFyID49IDApIHsKICAgICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgICAgfQoKICAgICAgcmV0dXJuICtkOwogICAgfQogICAgZnVuY3Rpb24gd2Vla3NJbldlZWtZZWFyKHdlZWtZZWFyKSB7CiAgICAgIHZhciBwMSA9ICh3ZWVrWWVhciArIE1hdGguZmxvb3Iod2Vla1llYXIgLyA0KSAtIE1hdGguZmxvb3Iod2Vla1llYXIgLyAxMDApICsgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUgNywKICAgICAgICAgIGxhc3QgPSB3ZWVrWWVhciAtIDEsCiAgICAgICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgICByZXR1cm4gcDEgPT09IDQgfHwgcDIgPT09IDMgPyA1MyA6IDUyOwogICAgfQogICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhcikgewogICAgICBpZiAoeWVhciA+IDk5KSB7CiAgICAgICAgcmV0dXJuIHllYXI7CiAgICAgIH0gZWxzZSByZXR1cm4geWVhciA+IDYwID8gMTkwMCArIHllYXIgOiAyMDAwICsgeWVhcjsKICAgIH0gLy8gUEFSU0lORwoKICAgIGZ1bmN0aW9uIHBhcnNlWm9uZUluZm8odHMsIG9mZnNldEZvcm1hdCwgbG9jYWxlLCB0aW1lWm9uZSkgewogICAgICBpZiAodGltZVpvbmUgPT09IHZvaWQgMCkgewogICAgICAgIHRpbWVab25lID0gbnVsbDsKICAgICAgfQoKICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0cyksCiAgICAgICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IgogICAgICB9OwoKICAgICAgaWYgKHRpbWVab25lKSB7CiAgICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgICAgfQoKICAgICAgdmFyIG1vZGlmaWVkID0gX2V4dGVuZHMoewogICAgICAgIHRpbWVab25lTmFtZTogb2Zmc2V0Rm9ybWF0CiAgICAgIH0sIGludGxPcHRzKTsKCiAgICAgIHZhciBwYXJzZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG1vZGlmaWVkKS5mb3JtYXRUb1BhcnRzKGRhdGUpLmZpbmQoZnVuY3Rpb24gKG0pIHsKICAgICAgICByZXR1cm4gbS50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICJ0aW1lem9uZW5hbWUiOwogICAgICB9KTsKICAgICAgcmV0dXJuIHBhcnNlZCA/IHBhcnNlZC52YWx1ZSA6IG51bGw7CiAgICB9IC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCgogICAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgICB2YXIgb2ZmSG91ciA9IHBhcnNlSW50KG9mZkhvdXJTdHIsIDEwKTsgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKCiAgICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgICBvZmZIb3VyID0gMDsKICAgICAgfQoKICAgICAgdmFyIG9mZk1pbiA9IHBhcnNlSW50KG9mZk1pbnV0ZVN0ciwgMTApIHx8IDAsCiAgICAgICAgICBvZmZNaW5TaWduZWQgPSBvZmZIb3VyIDwgMCB8fCBPYmplY3QuaXMob2ZmSG91ciwgLTApID8gLW9mZk1pbiA6IG9mZk1pbjsKICAgICAgcmV0dXJuIG9mZkhvdXIgKiA2MCArIG9mZk1pblNpZ25lZDsKICAgIH0gLy8gQ09FUkNJT04KCiAgICBmdW5jdGlvbiBhc051bWJlcih2YWx1ZSkgewogICAgICB2YXIgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImJvb2xlYW4iIHx8IHZhbHVlID09PSAiIiB8fCBOdW1iZXIuaXNOYU4obnVtZXJpY1ZhbHVlKSkgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJJbnZhbGlkIHVuaXQgdmFsdWUgIiArIHZhbHVlKTsKICAgICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgICAgdmFyIG5vcm1hbGl6ZWQgPSB7fTsKCiAgICAgIGZvciAodmFyIHUgaW4gb2JqKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICAgIHZhciB2ID0gb2JqW3VdOwogICAgICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplcih1KV0gPSBhc051bWJlcih2KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBub3JtYWxpemVkOwogICAgfQogICAgZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KG9mZnNldCwgZm9ybWF0KSB7CiAgICAgIHZhciBob3VycyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSwKICAgICAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgICAgICBzaWduID0gb2Zmc2V0ID49IDAgPyAiKyIgOiAiLSI7CgogICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICAgIHJldHVybiAiIiArIHNpZ24gKyBwYWRTdGFydChob3VycywgMikgKyAiOiIgKyBwYWRTdGFydChtaW51dGVzLCAyKTsKCiAgICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICAgIHJldHVybiAiIiArIHNpZ24gKyBob3VycyArIChtaW51dGVzID4gMCA/ICI6IiArIG1pbnV0ZXMgOiAiIik7CgogICAgICAgIGNhc2UgInRlY2hpZSI6CiAgICAgICAgICByZXR1cm4gIiIgKyBzaWduICsgcGFkU3RhcnQoaG91cnMsIDIpICsgcGFkU3RhcnQobWludXRlcywgMik7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVmFsdWUgZm9ybWF0ICIgKyBmb3JtYXQgKyAiIGlzIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgZm9ybWF0Iik7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICAgIHJldHVybiBwaWNrKG9iaiwgWyJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWlsbGlzZWNvbmQiXSk7CiAgICB9CiAgICB2YXIgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg6P1wvW0EtWmEtel8rLV17MSwyNTZ9KFwvW0EtWmEtel8rLV17MSwyNTZ9KT8pPy87CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIHZhciBtb250aHNMb25nID0gWyJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIl07CiAgICB2YXIgbW9udGhzU2hvcnQgPSBbIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIl07CiAgICB2YXIgbW9udGhzTmFycm93ID0gWyJKIiwgIkYiLCAiTSIsICJBIiwgIk0iLCAiSiIsICJKIiwgIkEiLCAiUyIsICJPIiwgIk4iLCAiRCJdOwogICAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgIGNhc2UgIm5hcnJvdyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KG1vbnRoc05hcnJvdyk7CgogICAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICAgIHJldHVybiBbXS5jb25jYXQobW9udGhzU2hvcnQpOwoKICAgICAgICBjYXNlICJsb25nIjoKICAgICAgICAgIHJldHVybiBbXS5jb25jYXQobW9udGhzTG9uZyk7CgogICAgICAgIGNhc2UgIm51bWVyaWMiOgogICAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKCiAgICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgICByZXR1cm4gWyIwMSIsICIwMiIsICIwMyIsICIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIwOSIsICIxMCIsICIxMSIsICIxMiJdOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KICAgIHZhciB3ZWVrZGF5c0xvbmcgPSBbIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiLCAiU3VuZGF5Il07CiAgICB2YXIgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CiAgICB2YXIgd2Vla2RheXNOYXJyb3cgPSBbIk0iLCAiVCIsICJXIiwgIlQiLCAiRiIsICJTIiwgIlMiXTsKICAgIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgIGNhc2UgIm5hcnJvdyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KHdlZWtkYXlzTmFycm93KTsKCiAgICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdCh3ZWVrZGF5c1Nob3J0KTsKCiAgICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KHdlZWtkYXlzTG9uZyk7CgogICAgICAgIGNhc2UgIm51bWVyaWMiOgogICAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KICAgIHZhciBtZXJpZGllbXMgPSBbIkFNIiwgIlBNIl07CiAgICB2YXIgZXJhc0xvbmcgPSBbIkJlZm9yZSBDaHJpc3QiLCAiQW5ubyBEb21pbmkiXTsKICAgIHZhciBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CiAgICB2YXIgZXJhc05hcnJvdyA9IFsiQiIsICJBIl07CiAgICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgIGNhc2UgIm5hcnJvdyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KGVyYXNOYXJyb3cpOwoKICAgICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KGVyYXNTaG9ydCk7CgogICAgICAgIGNhc2UgImxvbmciOgogICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChlcmFzTG9uZyk7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gbWVyaWRpZW1Gb3JEYXRlVGltZShkdCkgewogICAgICByZXR1cm4gbWVyaWRpZW1zW2R0LmhvdXIgPCAxMiA/IDAgOiAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIHdlZWtkYXlGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgICByZXR1cm4gbW9udGhzKGxlbmd0aClbZHQubW9udGggLSAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgICAgcmV0dXJuIGVyYXMobGVuZ3RoKVtkdC55ZWFyIDwgMCA/IDAgOiAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgbnVtZXJpYywgbmFycm93KSB7CiAgICAgIGlmIChudW1lcmljID09PSB2b2lkIDApIHsKICAgICAgICBudW1lcmljID0gImFsd2F5cyI7CiAgICAgIH0KCiAgICAgIGlmIChuYXJyb3cgPT09IHZvaWQgMCkgewogICAgICAgIG5hcnJvdyA9IGZhbHNlOwogICAgICB9CgogICAgICB2YXIgdW5pdHMgPSB7CiAgICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgICBxdWFydGVyczogWyJxdWFydGVyIiwgInF0ci4iXSwKICAgICAgICBtb250aHM6IFsibW9udGgiLCAibW8uIl0sCiAgICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgICBkYXlzOiBbImRheSIsICJkYXkiLCAiZGF5cyJdLAogICAgICAgIGhvdXJzOiBbImhvdXIiLCAiaHIuIl0sCiAgICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICAgIHNlY29uZHM6IFsic2Vjb25kIiwgInNlYy4iXQogICAgICB9OwogICAgICB2YXIgbGFzdGFibGUgPSBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyJdLmluZGV4T2YodW5pdCkgPT09IC0xOwoKICAgICAgaWYgKG51bWVyaWMgPT09ICJhdXRvIiAmJiBsYXN0YWJsZSkgewogICAgICAgIHZhciBpc0RheSA9IHVuaXQgPT09ICJkYXlzIjsKCiAgICAgICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICByZXR1cm4gaXNEYXkgPyAidG9tb3Jyb3ciIDogIm5leHQgIiArIHVuaXRzW3VuaXRdWzBdOwoKICAgICAgICAgIGNhc2UgLTE6CiAgICAgICAgICAgIHJldHVybiBpc0RheSA/ICJ5ZXN0ZXJkYXkiIDogImxhc3QgIiArIHVuaXRzW3VuaXRdWzBdOwoKICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6ICJ0aGlzICIgKyB1bml0c1t1bml0XVswXTsKCiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgaXNJblBhc3QgPSBPYmplY3QuaXMoY291bnQsIC0wKSB8fCBjb3VudCA8IDAsCiAgICAgICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgICAgIHNpbmd1bGFyID0gZm10VmFsdWUgPT09IDEsCiAgICAgICAgICBsaWxVbml0cyA9IHVuaXRzW3VuaXRdLAogICAgICAgICAgZm10VW5pdCA9IG5hcnJvdyA/IHNpbmd1bGFyID8gbGlsVW5pdHNbMV0gOiBsaWxVbml0c1syXSB8fCBsaWxVbml0c1sxXSA6IHNpbmd1bGFyID8gdW5pdHNbdW5pdF1bMF0gOiB1bml0OwogICAgICByZXR1cm4gaXNJblBhc3QgPyBmbXRWYWx1ZSArICIgIiArIGZtdFVuaXQgKyAiIGFnbyIgOiAiaW4gIiArIGZtdFZhbHVlICsgIiAiICsgZm10VW5pdDsKICAgIH0KCiAgICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICAgIHZhciBzID0gIiI7CgogICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKHNwbGl0cyksIF9zdGVwOyAhKF9zdGVwID0gX2l0ZXJhdG9yKCkpLmRvbmU7KSB7CiAgICAgICAgdmFyIHRva2VuID0gX3N0ZXAudmFsdWU7CgogICAgICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcyArPSB0b2tlblRvU3RyaW5nKHRva2VuLnZhbCk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gczsKICAgIH0KCiAgICB2YXIgX21hY3JvVG9rZW5Ub0Zvcm1hdE9wdHMgPSB7CiAgICAgIEQ6IERBVEVfU0hPUlQsCiAgICAgIEREOiBEQVRFX01FRCwKICAgICAgREREOiBEQVRFX0ZVTEwsCiAgICAgIEREREQ6IERBVEVfSFVHRSwKICAgICAgdDogVElNRV9TSU1QTEUsCiAgICAgIHR0OiBUSU1FX1dJVEhfU0VDT05EUywKICAgICAgdHR0OiBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VULAogICAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICAgIFQ6IFRJTUVfMjRfU0lNUExFLAogICAgICBUVDogVElNRV8yNF9XSVRIX1NFQ09ORFMsCiAgICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgICAgVFRUVDogVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VULAogICAgICBmOiBEQVRFVElNRV9TSE9SVCwKICAgICAgZmY6IERBVEVUSU1FX01FRCwKICAgICAgZmZmOiBEQVRFVElNRV9GVUxMLAogICAgICBmZmZmOiBEQVRFVElNRV9IVUdFLAogICAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICAgIEZGOiBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTLAogICAgICBGRkY6IERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTLAogICAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUwogICAgfTsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKICAgIHZhciBGb3JtYXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBGb3JtYXR0ZXIuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGxvY2FsZSwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRm9ybWF0dGVyKGxvY2FsZSwgb3B0cyk7CiAgICAgIH07CgogICAgICBGb3JtYXR0ZXIucGFyc2VGb3JtYXQgPSBmdW5jdGlvbiBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgICB2YXIgY3VycmVudCA9IG51bGwsCiAgICAgICAgICAgIGN1cnJlbnRGdWxsID0gIiIsCiAgICAgICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICAgIHZhciBzcGxpdHMgPSBbXTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjID0gZm10LmNoYXJBdChpKTsKCiAgICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgc3BsaXRzLnB1c2goewogICAgICAgICAgICAgICAgbGl0ZXJhbDogYnJhY2tldGVkLAogICAgICAgICAgICAgICAgdmFsOiBjdXJyZW50RnVsbAogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjdXJyZW50ID0gbnVsbDsKICAgICAgICAgICAgY3VycmVudEZ1bGwgPSAiIjsKICAgICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICAgIH0gZWxzZSBpZiAoYnJhY2tldGVkKSB7CiAgICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgc3BsaXRzLnB1c2goewogICAgICAgICAgICAgICAgbGl0ZXJhbDogZmFsc2UsCiAgICAgICAgICAgICAgICB2YWw6IGN1cnJlbnRGdWxsCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgICAgY3VycmVudCA9IGM7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgc3BsaXRzLnB1c2goewogICAgICAgICAgICBsaXRlcmFsOiBicmFja2V0ZWQsCiAgICAgICAgICAgIHZhbDogY3VycmVudEZ1bGwKICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNwbGl0czsKICAgICAgfTsKCiAgICAgIEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gZnVuY3Rpb24gbWFjcm9Ub2tlblRvRm9ybWF0T3B0cyh0b2tlbikgewogICAgICAgIHJldHVybiBfbWFjcm9Ub2tlblRvRm9ybWF0T3B0c1t0b2tlbl07CiAgICAgIH07CgogICAgICBmdW5jdGlvbiBGb3JtYXR0ZXIobG9jYWxlLCBmb3JtYXRPcHRzKSB7CiAgICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgICB0aGlzLmxvYyA9IGxvY2FsZTsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IG51bGw7CiAgICAgIH0KCiAgICAgIHZhciBfcHJvdG8gPSBGb3JtYXR0ZXIucHJvdG90eXBlOwoKICAgICAgX3Byb3RvLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0ID0gZnVuY3Rpb24gZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIG9wdHMpIHsKICAgICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICAgIHRoaXMuc3lzdGVtTG9jID0gdGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKTsKICAgICAgICB9CgogICAgICAgIHZhciBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzLCBvcHRzKSk7CiAgICAgICAgcmV0dXJuIGRmLmZvcm1hdCgpOwogICAgICB9OwoKICAgICAgX3Byb3RvLmZvcm1hdERhdGVUaW1lID0gZnVuY3Rpb24gZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICB2YXIgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgX2V4dGVuZHMoe30sIHRoaXMub3B0cywgb3B0cykpOwogICAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5mb3JtYXREYXRlVGltZVBhcnRzID0gZnVuY3Rpb24gZm9ybWF0RGF0ZVRpbWVQYXJ0cyhkdCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHZhciBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGR0LCBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzLCBvcHRzKSk7CiAgICAgICAgcmV0dXJuIGRmLmZvcm1hdFRvUGFydHMoKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5yZXNvbHZlZE9wdGlvbnMgPSBmdW5jdGlvbiByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICB2YXIgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgX2V4dGVuZHMoe30sIHRoaXMub3B0cywgb3B0cykpOwogICAgICAgIHJldHVybiBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5udW0gPSBmdW5jdGlvbiBudW0obiwgcCkgewogICAgICAgIGlmIChwID09PSB2b2lkIDApIHsKICAgICAgICAgIHAgPSAwOwogICAgICAgIH0KCiAgICAgICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5CiAgICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KG4sIHApOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9wdHMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzKTsKCiAgICAgICAgaWYgKHAgPiAwKSB7CiAgICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIob3B0cykuZm9ybWF0KG4pOwogICAgICB9OwoKICAgICAgX3Byb3RvLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyA9IGZ1bmN0aW9uIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7CiAgICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgICAgdmFyIGtub3duRW5nbGlzaCA9IHRoaXMubG9jLmxpc3RpbmdNb2RlKCkgPT09ICJlbiIsCiAgICAgICAgICAgIHVzZURhdGVUaW1lRm9ybWF0dGVyID0gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgJiYgdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgIT09ICJncmVnb3J5IiwKICAgICAgICAgICAgc3RyaW5nID0gZnVuY3Rpb24gc3RyaW5nKG9wdHMsIGV4dHJhY3QpIHsKICAgICAgICAgIHJldHVybiBfdGhpcy5sb2MuZXh0cmFjdChkdCwgb3B0cywgZXh0cmFjdCk7CiAgICAgICAgfSwKICAgICAgICAgICAgZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KG9wdHMpIHsKICAgICAgICAgIGlmIChkdC5pc09mZnNldEZpeGVkICYmIGR0Lm9mZnNldCA9PT0gMCAmJiBvcHRzLmFsbG93WikgewogICAgICAgICAgICByZXR1cm4gIloiOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBkdC5pc1ZhbGlkID8gZHQuem9uZS5mb3JtYXRPZmZzZXQoZHQudHMsIG9wdHMuZm9ybWF0KSA6ICIiOwogICAgICAgIH0sCiAgICAgICAgICAgIG1lcmlkaWVtID0gZnVuY3Rpb24gbWVyaWRpZW0oKSB7CiAgICAgICAgICByZXR1cm4ga25vd25FbmdsaXNoID8gbWVyaWRpZW1Gb3JEYXRlVGltZShkdCkgOiBzdHJpbmcoewogICAgICAgICAgICBob3VyOiAibnVtZXJpYyIsCiAgICAgICAgICAgIGhvdXJDeWNsZTogImgxMiIKICAgICAgICAgIH0sICJkYXlwZXJpb2QiKTsKICAgICAgICB9LAogICAgICAgICAgICBtb250aCA9IGZ1bmN0aW9uIG1vbnRoKGxlbmd0aCwgc3RhbmRhbG9uZSkgewogICAgICAgICAgcmV0dXJuIGtub3duRW5nbGlzaCA/IG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgOiBzdHJpbmcoc3RhbmRhbG9uZSA/IHsKICAgICAgICAgICAgbW9udGg6IGxlbmd0aAogICAgICAgICAgfSA6IHsKICAgICAgICAgICAgbW9udGg6IGxlbmd0aCwKICAgICAgICAgICAgZGF5OiAibnVtZXJpYyIKICAgICAgICAgIH0sICJtb250aCIpOwogICAgICAgIH0sCiAgICAgICAgICAgIHdlZWtkYXkgPSBmdW5jdGlvbiB3ZWVrZGF5KGxlbmd0aCwgc3RhbmRhbG9uZSkgewogICAgICAgICAgcmV0dXJuIGtub3duRW5nbGlzaCA/IHdlZWtkYXlGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSA6IHN0cmluZyhzdGFuZGFsb25lID8gewogICAgICAgICAgICB3ZWVrZGF5OiBsZW5ndGgKICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgIHdlZWtkYXk6IGxlbmd0aCwKICAgICAgICAgICAgbW9udGg6ICJsb25nIiwKICAgICAgICAgICAgZGF5OiAibnVtZXJpYyIKICAgICAgICAgIH0sICJ3ZWVrZGF5Iik7CiAgICAgICAgfSwKICAgICAgICAgICAgbWF5YmVNYWNybyA9IGZ1bmN0aW9uIG1heWJlTWFjcm8odG9rZW4pIHsKICAgICAgICAgIHZhciBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwoKICAgICAgICAgIGlmIChmb3JtYXRPcHRzKSB7CiAgICAgICAgICAgIHJldHVybiBfdGhpcy5mb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgZm9ybWF0T3B0cyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAgICAgZXJhID0gZnVuY3Rpb24gZXJhKGxlbmd0aCkgewogICAgICAgICAgcmV0dXJuIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsKICAgICAgICAgICAgZXJhOiBsZW5ndGgKICAgICAgICAgIH0sICJlcmEiKTsKICAgICAgICB9LAogICAgICAgICAgICB0b2tlblRvU3RyaW5nID0gZnVuY3Rpb24gdG9rZW5Ub1N0cmluZyh0b2tlbikgewogICAgICAgICAgLy8gV2hlcmUgcG9zc2libGU6IGh0dHA6Ly9jbGRyLnVuaWNvZGUub3JnL3RyYW5zbGF0aW9uL2RhdGUtdGltZS0xL2RhdGUtdGltZSNUT0MtU3RhbmRhbG9uZS12cy4tRm9ybWF0LVN0eWxlcwogICAgICAgICAgc3dpdGNoICh0b2tlbikgewogICAgICAgICAgICAvLyBtcwogICAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0Lm1pbGxpc2Vjb25kKTsKCiAgICAgICAgICAgIGNhc2UgInUiOiAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQubWlsbGlzZWNvbmQsIDMpOwogICAgICAgICAgICAvLyBzZWNvbmRzCgogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LnNlY29uZCk7CgogICAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBtaW51dGVzCgogICAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0Lm1pbnV0ZSk7CgogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5taW51dGUsIDIpOwogICAgICAgICAgICAvLyBob3VycwoKICAgICAgICAgICAgY2FzZSAiaCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CgogICAgICAgICAgICBjYXNlICJoaCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMiwgMik7CgogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LmhvdXIpOwoKICAgICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAoKICAgICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICAgICAgLy8gbGlrZSArNgogICAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoewogICAgICAgICAgICAgICAgZm9ybWF0OiAibmFycm93IiwKICAgICAgICAgICAgICAgIGFsbG93WjogX3RoaXMub3B0cy5hbGxvd1oKICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGNhc2UgIlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlICswNjowMAogICAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoewogICAgICAgICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgICAgICAgYWxsb3daOiBfdGhpcy5vcHRzLmFsbG93WgogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlICswNjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7CiAgICAgICAgICAgICAgICBmb3JtYXQ6ICJ0ZWNoaWUiLAogICAgICAgICAgICAgICAgYWxsb3daOiBfdGhpcy5vcHRzLmFsbG93WgogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY2FzZSAiWlpaWiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBFU1QKICAgICAgICAgICAgICByZXR1cm4gZHQuem9uZS5vZmZzZXROYW1lKGR0LnRzLCB7CiAgICAgICAgICAgICAgICBmb3JtYXQ6ICJzaG9ydCIsCiAgICAgICAgICAgICAgICBsb2NhbGU6IF90aGlzLmxvYy5sb2NhbGUKICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGNhc2UgIlpaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVhc3Rlcm4gU3RhbmRhcmQgVGltZQogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsKICAgICAgICAgICAgICAgIGZvcm1hdDogImxvbmciLAogICAgICAgICAgICAgICAgbG9jYWxlOiBfdGhpcy5sb2MubG9jYWxlCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKCiAgICAgICAgICAgIGNhc2UgInoiOgogICAgICAgICAgICAgIC8vIGxpa2UgQW1lcmljYS9OZXdfWW9yawogICAgICAgICAgICAgIHJldHVybiBkdC56b25lTmFtZTsKICAgICAgICAgICAgLy8gbWVyaWRpZW1zCgogICAgICAgICAgICBjYXNlICJhIjoKICAgICAgICAgICAgICByZXR1cm4gbWVyaWRpZW0oKTsKICAgICAgICAgICAgLy8gZGF0ZXMKCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICBkYXk6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJkYXkiKSA6IF90aGlzLm51bShkdC5kYXkpOwoKICAgICAgICAgICAgY2FzZSAiZGQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICBkYXk6ICIyLWRpZ2l0IgogICAgICAgICAgICAgIH0sICJkYXkiKSA6IF90aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKCiAgICAgICAgICAgIGNhc2UgImMiOgogICAgICAgICAgICAgIC8vIGxpa2UgMQogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQud2Vla2RheSk7CgogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CgogICAgICAgICAgICBjYXNlICJjY2NjIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUdWVzZGF5JwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJsb25nIiwgdHJ1ZSk7CgogICAgICAgICAgICBjYXNlICJjY2NjYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVCcKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgibmFycm93IiwgdHJ1ZSk7CiAgICAgICAgICAgIC8vIHdlZWtkYXlzIC0gZm9ybWF0CgogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LndlZWtkYXkpOwoKICAgICAgICAgICAgY2FzZSAiRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUdWVzJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJzaG9ydCIsIGZhbHNlKTsKCiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CgogICAgICAgICAgICBjYXNlICJFRUVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVCcKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyBtb250aHMgLSBzdGFuZGFsb25lCgogICAgICAgICAgICBjYXNlICJMIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoewogICAgICAgICAgICAgICAgbW9udGg6ICJudW1lcmljIiwKICAgICAgICAgICAgICAgIGRheTogIm51bWVyaWMiCiAgICAgICAgICAgICAgfSwgIm1vbnRoIikgOiBfdGhpcy5udW0oZHQubW9udGgpOwoKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgICAgICAgICBkYXk6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJtb250aCIpIDogX3RoaXMubnVtKGR0Lm1vbnRoLCAyKTsKCiAgICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW4KICAgICAgICAgICAgICByZXR1cm4gbW9udGgoInNob3J0IiwgdHJ1ZSk7CgogICAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbnVhcnkKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoImxvbmciLCB0cnVlKTsKCiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKCiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIC8vIGxpa2UgMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICBtb250aDogIm51bWVyaWMiCiAgICAgICAgICAgICAgfSwgIm1vbnRoIikgOiBfdGhpcy5udW0oZHQubW9udGgpOwoKICAgICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoewogICAgICAgICAgICAgICAgbW9udGg6ICIyLWRpZ2l0IgogICAgICAgICAgICAgIH0sICJtb250aCIpIDogX3RoaXMubnVtKGR0Lm1vbnRoLCAyKTsKCiAgICAgICAgICAgIGNhc2UgIk1NTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW4KICAgICAgICAgICAgICByZXR1cm4gbW9udGgoInNob3J0IiwgZmFsc2UpOwoKICAgICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgZmFsc2UpOwoKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwoKICAgICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAyMDE0CiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIHllYXI6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJ5ZWFyIikgOiBfdGhpcy5udW0oZHQueWVhcik7CgogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICB5ZWFyOiAiMi1kaWdpdCIKICAgICAgICAgICAgICB9LCAieWVhciIpIDogX3RoaXMubnVtKGR0LnllYXIudG9TdHJpbmcoKS5zbGljZSgtMiksIDIpOwoKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIHllYXI6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJ5ZWFyIikgOiBfdGhpcy5udW0oZHQueWVhciwgNCk7CgogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIHllYXI6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJ5ZWFyIikgOiBfdGhpcy5udW0oZHQueWVhciwgNik7CiAgICAgICAgICAgIC8vIGVyYXMKCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwoKICAgICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICAgIC8vIGxpa2UgQW5ubyBEb21pbmkKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJsb25nIik7CgogICAgICAgICAgICBjYXNlICJHR0dHRyI6CiAgICAgICAgICAgICAgcmV0dXJuIGVyYSgibmFycm93Iik7CgogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC53ZWVrWWVhci50b1N0cmluZygpLnNsaWNlKC0yKSwgMik7CgogICAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKCiAgICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQud2Vla051bWJlcik7CgogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC53ZWVrTnVtYmVyLCAyKTsKCiAgICAgICAgICAgIGNhc2UgIm8iOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQub3JkaW5hbCk7CgogICAgICAgICAgICBjYXNlICJvb28iOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQub3JkaW5hbCwgMyk7CgogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LnF1YXJ0ZXIpOwoKICAgICAgICAgICAgY2FzZSAicXEiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwoKICAgICAgICAgICAgY2FzZSAiWCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShNYXRoLmZsb29yKGR0LnRzIC8gMTAwMCkpOwoKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC50cyk7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBtYXliZU1hY3JvKHRva2VuKTsKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLCB0b2tlblRvU3RyaW5nKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcgPSBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbkZyb21TdHJpbmcoZHVyLCBmbXQpIHsKICAgICAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICAgICAgdmFyIHRva2VuVG9GaWVsZCA9IGZ1bmN0aW9uIHRva2VuVG9GaWVsZCh0b2tlbikgewogICAgICAgICAgc3dpdGNoICh0b2tlblswXSkgewogICAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgICByZXR1cm4gIm1pbGxpc2Vjb25kIjsKCiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiAibWludXRlIjsKCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiAiaG91ciI7CgogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CgogICAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKCiAgICAgICAgICAgIGNhc2UgInkiOgogICAgICAgICAgICAgIHJldHVybiAieWVhciI7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgICAgIHRva2VuVG9TdHJpbmcgPSBmdW5jdGlvbiB0b2tlblRvU3RyaW5nKGxpbGR1cikgewogICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0b2tlbikgewogICAgICAgICAgICB2YXIgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKCiAgICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLm51bShsaWxkdXIuZ2V0KG1hcHBlZCksIHRva2VuLmxlbmd0aCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICB9CiAgICAgICAgICB9OwogICAgICAgIH0sCiAgICAgICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgICAgICByZWFsVG9rZW5zID0gdG9rZW5zLnJlZHVjZShmdW5jdGlvbiAoZm91bmQsIF9yZWYpIHsKICAgICAgICAgIHZhciBsaXRlcmFsID0gX3JlZi5saXRlcmFsLAogICAgICAgICAgICAgIHZhbCA9IF9yZWYudmFsOwogICAgICAgICAgcmV0dXJuIGxpdGVyYWwgPyBmb3VuZCA6IGZvdW5kLmNvbmNhdCh2YWwpOwogICAgICAgIH0sIFtdKSwKICAgICAgICAgICAgY29sbGFwc2VkID0gZHVyLnNoaWZ0VG8uYXBwbHkoZHVyLCByZWFsVG9rZW5zLm1hcCh0b2tlblRvRmllbGQpLmZpbHRlcihmdW5jdGlvbiAodCkgewogICAgICAgICAgcmV0dXJuIHQ7CiAgICAgICAgfSkpOwoKICAgICAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKHRva2VucywgdG9rZW5Ub1N0cmluZyhjb2xsYXBzZWQpKTsKICAgICAgfTsKCiAgICAgIHJldHVybiBGb3JtYXR0ZXI7CiAgICB9KCk7CgogICAgdmFyIEludmFsaWQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pIHsKICAgICAgICB0aGlzLnJlYXNvbiA9IHJlYXNvbjsKICAgICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICAgIH0KCiAgICAgIHZhciBfcHJvdG8gPSBJbnZhbGlkLnByb3RvdHlwZTsKCiAgICAgIF9wcm90by50b01lc3NhZ2UgPSBmdW5jdGlvbiB0b01lc3NhZ2UoKSB7CiAgICAgICAgaWYgKHRoaXMuZXhwbGFuYXRpb24pIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJlYXNvbiArICI6ICIgKyB0aGlzLmV4cGxhbmF0aW9uOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFzb247CiAgICAgICAgfQogICAgICB9OwoKICAgICAgcmV0dXJuIEludmFsaWQ7CiAgICB9KCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJmYWNlCiAgICAgKi8KCiAgICB2YXIgWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIFpvbmUoKSB7fQoKICAgICAgdmFyIF9wcm90byA9IFpvbmUucHJvdG90eXBlOwoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIGNvbW1vbiBuYW1lIChzdWNoIGFzIEVTVCkgYXQgdGhlIHNwZWNpZmllZCB0aW1lc3RhbXAKICAgICAgICogQGFic3RyYWN0CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyB0byBhZmZlY3QgdGhlIGZvcm1hdAogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5mb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uIEFjY2VwdHMgJ2xvbmcnIG9yICdzaG9ydCcuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIF9wcm90by5vZmZzZXROYW1lID0gZnVuY3Rpb24gb2Zmc2V0TmFtZSh0cywgb3B0cykgewogICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgICAqIEBhYnN0cmFjdAogICAgICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgb2Zmc2V0CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHRzICduYXJyb3cnLCAnc2hvcnQnLCBvciAndGVjaGllJy4gUmV0dXJuaW5nICcrNicsICcrMDY6MDAnLCBvciAnKzA2MDAnIHJlc3BlY3RpdmVseQogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBpbiBtaW51dGVzIGZvciB0aGlzIHpvbmUgYXQgdGhlIHNwZWNpZmllZCB0aW1lc3RhbXAuCiAgICAgICAqIEBhYnN0cmFjdAogICAgICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGNvbXB1dGUgdGhlIG9mZnNldAogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KHRzKSB7CiAgICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIGVxdWFsIHRvIGFub3RoZXIgem9uZQogICAgICAgKiBAYWJzdHJhY3QKICAgICAgICogQHBhcmFtIHtab25lfSBvdGhlclpvbmUgLSB0aGUgem9uZSB0byBjb21wYXJlCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzKG90aGVyWm9uZSkgewogICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgWm9uZSBpcyB2YWxpZC4KICAgICAgICogQGFic3RyYWN0CiAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX2NyZWF0ZUNsYXNzKFpvbmUsIFt7CiAgICAgICAga2V5OiAidHlwZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKgogICAgICAgICAqIFRoZSB0eXBlIG9mIHpvbmUKICAgICAgICAgKiBAYWJzdHJhY3QKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBuYW1lIG9mIHRoaXMgem9uZS4KICAgICAgICAgKiBAYWJzdHJhY3QKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm5hbWUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBvZmZzZXQgaXMga25vd24gdG8gYmUgZml4ZWQgZm9yIHRoZSB3aG9sZSB5ZWFyLgogICAgICAgICAqIEBhYnN0cmFjdAogICAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzVW5pdmVyc2FsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNWYWxpZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgICAgIH0KICAgICAgfV0pOwoKICAgICAgcmV0dXJuIFpvbmU7CiAgICB9KCk7CgogICAgdmFyIHNpbmdsZXRvbiQxID0gbnVsbDsKICAgIC8qKgogICAgICogUmVwcmVzZW50cyB0aGUgbG9jYWwgem9uZSBmb3IgdGhpcyBKYXZhU2NyaXB0IGVudmlyb25tZW50LgogICAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICAgKi8KCiAgICB2YXIgU3lzdGVtWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoU3lzdGVtWm9uZSwgX1pvbmUpOwoKICAgICAgZnVuY3Rpb24gU3lzdGVtWm9uZSgpIHsKICAgICAgICByZXR1cm4gX1pvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwogICAgICB9CgogICAgICB2YXIgX3Byb3RvID0gU3lzdGVtWm9uZS5wcm90b3R5cGU7CgogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICBfcHJvdG8ub2Zmc2V0TmFtZSA9IGZ1bmN0aW9uIG9mZnNldE5hbWUodHMsIF9yZWYpIHsKICAgICAgICB2YXIgZm9ybWF0ID0gX3JlZi5mb3JtYXQsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYubG9jYWxlOwogICAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSk7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmZvcm1hdE9mZnNldCA9IGZ1bmN0aW9uIGZvcm1hdE9mZnNldCQxKHRzLCBmb3JtYXQpIHsKICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KHRzKSB7CiAgICAgICAgcmV0dXJuIC1uZXcgRGF0ZSh0cykuZ2V0VGltZXpvbmVPZmZzZXQoKTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8uZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzKG90aGVyWm9uZSkgewogICAgICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gInN5c3RlbSI7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX2NyZWF0ZUNsYXNzKFN5c3RlbVpvbmUsIFt7CiAgICAgICAga2V5OiAidHlwZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuICJzeXN0ZW0iOwogICAgICAgIH0KICAgICAgICAvKiogQG92ZXJyaWRlICoqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm5hbWUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7CiAgICAgICAgfQogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNVbml2ZXJzYWwiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIGtleTogImlzVmFsaWQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9XSwgW3sKICAgICAgICBrZXk6ICJpbnN0YW5jZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKgogICAgICAgICAqIEdldCBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgbG9jYWwgem9uZQogICAgICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHNpbmdsZXRvbiQxID09PSBudWxsKSB7CiAgICAgICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICAgICAgfQogICAgICB9XSk7CgogICAgICByZXR1cm4gU3lzdGVtWm9uZTsKICAgIH0oWm9uZSk7CgogICAgdmFyIG1hdGNoaW5nUmVnZXggPSBSZWdFeHAoIl4iICsgaWFuYVJlZ2V4LnNvdXJjZSArICIkIik7CiAgICB2YXIgZHRmQ2FjaGUgPSB7fTsKCiAgICBmdW5jdGlvbiBtYWtlRFRGKHpvbmUpIHsKICAgICAgaWYgKCFkdGZDYWNoZVt6b25lXSkgewogICAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgICAgICAgIHRpbWVab25lOiB6b25lLAogICAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgICAgbW9udGg6ICIyLWRpZ2l0IiwKICAgICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgICAgbWludXRlOiAiMi1kaWdpdCIsCiAgICAgICAgICBzZWNvbmQ6ICIyLWRpZ2l0IgogICAgICAgIH0pOwogICAgICB9CgogICAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgICB9CgogICAgdmFyIHR5cGVUb1BvcyA9IHsKICAgICAgeWVhcjogMCwKICAgICAgbW9udGg6IDEsCiAgICAgIGRheTogMiwKICAgICAgaG91cjogMywKICAgICAgbWludXRlOiA0LAogICAgICBzZWNvbmQ6IDUKICAgIH07CgogICAgZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7CiAgICAgIHZhciBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0KGRhdGUpLnJlcGxhY2UoL1x1MjAwRS9nLCAiIiksCiAgICAgICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSw/IChcZCspOihcZCspOihcZCspLy5leGVjKGZvcm1hdHRlZCksCiAgICAgICAgICBmTW9udGggPSBwYXJzZWRbMV0sCiAgICAgICAgICBmRGF5ID0gcGFyc2VkWzJdLAogICAgICAgICAgZlllYXIgPSBwYXJzZWRbM10sCiAgICAgICAgICBmSG91ciA9IHBhcnNlZFs0XSwKICAgICAgICAgIGZNaW51dGUgPSBwYXJzZWRbNV0sCiAgICAgICAgICBmU2Vjb25kID0gcGFyc2VkWzZdOwogICAgICByZXR1cm4gW2ZZZWFyLCBmTW9udGgsIGZEYXksIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgICAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpLAogICAgICAgICAgZmlsbGVkID0gW107CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBfZm9ybWF0dGVkJGkgPSBmb3JtYXR0ZWRbaV0sCiAgICAgICAgICAgIHR5cGUgPSBfZm9ybWF0dGVkJGkudHlwZSwKICAgICAgICAgICAgdmFsdWUgPSBfZm9ybWF0dGVkJGkudmFsdWUsCiAgICAgICAgICAgIHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwb3MpKSB7CiAgICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gZmlsbGVkOwogICAgfQoKICAgIHZhciBpYW5hWm9uZUNhY2hlID0ge307CiAgICAvKioKICAgICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgICAqLwoKICAgIHZhciBJQU5BWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSUFOQVpvbmUsIF9ab25lKTsKCiAgICAgIC8qKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFpvbmUgbmFtZQogICAgICAgKiBAcmV0dXJuIHtJQU5BWm9uZX0KICAgICAgICovCiAgICAgIElBTkFab25lLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShuYW1lKSB7CiAgICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgICBpYW5hWm9uZUNhY2hlW25hbWVdID0gbmV3IElBTkFab25lKG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGlhbmFab25lQ2FjaGVbbmFtZV07CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgOwoKICAgICAgSUFOQVpvbmUucmVzZXRDYWNoZSA9IGZ1bmN0aW9uIHJlc2V0Q2FjaGUoKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZSA9IHt9OwogICAgICAgIGR0ZkNhY2hlID0ge307CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgc3RyaW5nIHRvIGNoZWNrIHZhbGlkaXR5IG9uCiAgICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoIkFtZXJpY2EvTmV3X1lvcmsiKSAvLz0+IHRydWUKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiRmFudGFzaWEvQ2FzdGxlIikgLy89PiB0cnVlCiAgICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIgPSBmdW5jdGlvbiBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgICByZXR1cm4gISEocyAmJiBzLm1hdGNoKG1hdGNoaW5nUmVnZXgpKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaWRlbnRpZmllcyBhIHJlYWwgem9uZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiKSAvLz0+IHRydWUKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIkZhbnRhc2lhL0Nhc3RsZSIpIC8vPT4gZmFsc2UKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIElBTkFab25lLmlzVmFsaWRab25lID0gZnVuY3Rpb24gaXNWYWxpZFpvbmUoem9uZSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiZW4tVVMiLCB7CiAgICAgICAgICAgIHRpbWVab25lOiB6b25lCiAgICAgICAgICB9KS5mb3JtYXQoKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0gLy8gRXRjL0dNVCs4IC0+IC00ODAKCiAgICAgIC8qKiBAaWdub3JlICovCiAgICAgIDsKCiAgICAgIElBTkFab25lLnBhcnNlR01UT2Zmc2V0ID0gZnVuY3Rpb24gcGFyc2VHTVRPZmZzZXQoc3BlY2lmaWVyKSB7CiAgICAgICAgaWYgKHNwZWNpZmllcikgewogICAgICAgICAgdmFyIG1hdGNoID0gc3BlY2lmaWVyLm1hdGNoKC9eRXRjXC9HTVQoMHxbKy1dXGR7MSwyfSkkL2kpOwoKICAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICByZXR1cm4gLTYwICogcGFyc2VJbnQobWF0Y2hbMV0pOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH07CgogICAgICBmdW5jdGlvbiBJQU5BWm9uZShuYW1lKSB7CiAgICAgICAgdmFyIF90aGlzOwoKICAgICAgICBfdGhpcyA9IF9ab25lLmNhbGwodGhpcykgfHwgdGhpczsKICAgICAgICAvKiogQHByaXZhdGUgKiovCgogICAgICAgIF90aGlzLnpvbmVOYW1lID0gbmFtZTsKICAgICAgICAvKiogQHByaXZhdGUgKiovCgogICAgICAgIF90aGlzLnZhbGlkID0gSUFOQVpvbmUuaXNWYWxpZFpvbmUobmFtZSk7CiAgICAgICAgcmV0dXJuIF90aGlzOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgoKICAgICAgdmFyIF9wcm90byA9IElBTkFab25lLnByb3RvdHlwZTsKCiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIF9wcm90by5vZmZzZXROYW1lID0gZnVuY3Rpb24gb2Zmc2V0TmFtZSh0cywgX3JlZikgewogICAgICAgIHZhciBmb3JtYXQgPSBfcmVmLmZvcm1hdCwKICAgICAgICAgICAgbG9jYWxlID0gX3JlZi5sb2NhbGU7CiAgICAgICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlLCB0aGlzLm5hbWUpOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIDsKCiAgICAgIF9wcm90by5mb3JtYXRPZmZzZXQgPSBmdW5jdGlvbiBmb3JtYXRPZmZzZXQkMSh0cywgZm9ybWF0KSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLm9mZnNldCA9IGZ1bmN0aW9uIG9mZnNldCh0cykgewogICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUodHMpOwogICAgICAgIGlmIChpc05hTihkYXRlKSkgcmV0dXJuIE5hTjsKCiAgICAgICAgdmFyIGR0ZiA9IG1ha2VEVEYodGhpcy5uYW1lKSwKICAgICAgICAgICAgX3JlZjIgPSBkdGYuZm9ybWF0VG9QYXJ0cyA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkgOiBoYWNreU9mZnNldChkdGYsIGRhdGUpLAogICAgICAgICAgICB5ZWFyID0gX3JlZjJbMF0sCiAgICAgICAgICAgIG1vbnRoID0gX3JlZjJbMV0sCiAgICAgICAgICAgIGRheSA9IF9yZWYyWzJdLAogICAgICAgICAgICBob3VyID0gX3JlZjJbM10sCiAgICAgICAgICAgIG1pbnV0ZSA9IF9yZWYyWzRdLAogICAgICAgICAgICBzZWNvbmQgPSBfcmVmMls1XTsKCiAgICAgICAgdmFyIGFzVVRDID0gb2JqVG9Mb2NhbFRTKHsKICAgICAgICAgIHllYXI6IHllYXIsCiAgICAgICAgICBtb250aDogbW9udGgsCiAgICAgICAgICBkYXk6IGRheSwKICAgICAgICAgIGhvdXI6IGhvdXIsCiAgICAgICAgICBtaW51dGU6IG1pbnV0ZSwKICAgICAgICAgIHNlY29uZDogc2Vjb25kLAogICAgICAgICAgbWlsbGlzZWNvbmQ6IDAKICAgICAgICB9KTsKICAgICAgICB2YXIgYXNUUyA9ICtkYXRlOwogICAgICAgIHZhciBvdmVyID0gYXNUUyAlIDEwMDA7CiAgICAgICAgYXNUUyAtPSBvdmVyID49IDAgPyBvdmVyIDogMTAwMCArIG92ZXI7CiAgICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09ICJpYW5hIiAmJiBvdGhlclpvbmUubmFtZSA9PT0gdGhpcy5uYW1lOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIDsKCiAgICAgIF9jcmVhdGVDbGFzcyhJQU5BWm9uZSwgW3sKICAgICAgICBrZXk6ICJ0eXBlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiAiaWFuYSI7CiAgICAgICAgfQogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibmFtZSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy56b25lTmFtZTsKICAgICAgICB9CiAgICAgICAgLyoqIEBvdmVycmlkZSAqKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1VuaXZlcnNhbCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNWYWxpZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZDsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBJQU5BWm9uZTsKICAgIH0oWm9uZSk7CgogICAgdmFyIHNpbmdsZXRvbiA9IG51bGw7CiAgICAvKioKICAgICAqIEEgem9uZSB3aXRoIGEgZml4ZWQgb2Zmc2V0IChtZWFuaW5nIG5vIERTVCkKICAgICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAgICovCgogICAgdmFyIEZpeGVkT2Zmc2V0Wm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoRml4ZWRPZmZzZXRab25lLCBfWm9uZSk7CgogICAgICAvKioKICAgICAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfQogICAgICAgKi8KICAgICAgRml4ZWRPZmZzZXRab25lLmluc3RhbmNlID0gZnVuY3Rpb24gaW5zdGFuY2Uob2Zmc2V0KSB7CiAgICAgICAgcmV0dXJuIG9mZnNldCA9PT0gMCA/IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZSA6IG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBvZmZzZXQgc3RyaW5nIHRvIHBhcnNlCiAgICAgICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcigiVVRDKzYiKQogICAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcigiVVRDLTY6MDAiKQogICAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgICAqLwogICAgICA7CgogICAgICBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIgPSBmdW5jdGlvbiBwYXJzZVNwZWNpZmllcihzKSB7CiAgICAgICAgaWYgKHMpIHsKICAgICAgICAgIHZhciByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwoKICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgRml4ZWRPZmZzZXRab25lKHNpZ25lZE9mZnNldChyWzFdLCByWzJdKSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfTsKCiAgICAgIGZ1bmN0aW9uIEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpIHsKICAgICAgICB2YXIgX3RoaXM7CgogICAgICAgIF90aGlzID0gX1pvbmUuY2FsbCh0aGlzKSB8fCB0aGlzOwogICAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KCiAgICAgICAgX3RoaXMuZml4ZWQgPSBvZmZzZXQ7CiAgICAgICAgcmV0dXJuIF90aGlzOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgoKICAgICAgdmFyIF9wcm90byA9IEZpeGVkT2Zmc2V0Wm9uZS5wcm90b3R5cGU7CgogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICBfcHJvdG8ub2Zmc2V0TmFtZSA9IGZ1bmN0aW9uIG9mZnNldE5hbWUoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8uZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0JDEodHMsIGZvcm1hdCkgewogICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgZm9ybWF0KTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KCkgewogICAgICAgIHJldHVybiB0aGlzLmZpeGVkOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIDsKCiAgICAgIF9wcm90by5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMob3RoZXJab25lKSB7CiAgICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfY3JlYXRlQ2xhc3MoRml4ZWRPZmZzZXRab25lLCBbewogICAgICAgIGtleTogInR5cGUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICAgICAgfQogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibmFtZSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogIlVUQyIgKyBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgIm5hcnJvdyIpOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIGtleTogImlzVW5pdmVyc2FsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIGtleTogImlzVmFsaWQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9XSwgW3sKICAgICAgICBrZXk6ICJ1dGNJbnN0YW5jZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKgogICAgICAgICAqIEdldCBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiBVVEMKICAgICAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHNpbmdsZXRvbiA9PT0gbnVsbCkgewogICAgICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICAgICAgfQogICAgICB9XSk7CgogICAgICByZXR1cm4gRml4ZWRPZmZzZXRab25lOwogICAgfShab25lKTsKCiAgICAvKioKICAgICAqIEEgem9uZSB0aGF0IGZhaWxlZCB0byBwYXJzZS4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuCiAgICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgICAqLwoKICAgIHZhciBJbnZhbGlkWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZFpvbmUsIF9ab25lKTsKCiAgICAgIGZ1bmN0aW9uIEludmFsaWRab25lKHpvbmVOYW1lKSB7CiAgICAgICAgdmFyIF90aGlzOwoKICAgICAgICBfdGhpcyA9IF9ab25lLmNhbGwodGhpcykgfHwgdGhpczsKICAgICAgICAvKiogIEBwcml2YXRlICovCgogICAgICAgIF90aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICAgICAgcmV0dXJuIF90aGlzOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgoKICAgICAgdmFyIF9wcm90byA9IEludmFsaWRab25lLnByb3RvdHlwZTsKCiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIF9wcm90by5vZmZzZXROYW1lID0gZnVuY3Rpb24gb2Zmc2V0TmFtZSgpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8uZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KCkgewogICAgICAgIHJldHVybiAiIjsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KCkgewogICAgICAgIHJldHVybiBOYU47CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscygpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX2NyZWF0ZUNsYXNzKEludmFsaWRab25lLCBbewogICAgICAgIGtleTogInR5cGUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKICAgICAgICB9CiAgICAgICAgLyoqIEBvdmVycmlkZSAqKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJuYW1lIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgICAgIH0KICAgICAgICAvKiogQG92ZXJyaWRlICoqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzVW5pdmVyc2FsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1ZhbGlkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBJbnZhbGlkWm9uZTsKICAgIH0oWm9uZSk7CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgICB2YXIgb2Zmc2V0OwoKICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICAgIHJldHVybiBkZWZhdWx0Wm9uZTsKICAgICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHsKICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcoaW5wdXQpKSB7CiAgICAgICAgdmFyIGxvd2VyZWQgPSBpbnB1dC50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gZGVmYXVsdFpvbmU7ZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7ZWxzZSBpZiAoKG9mZnNldCA9IElBTkFab25lLnBhcnNlR01UT2Zmc2V0KGlucHV0KSkgIT0gbnVsbCkgewogICAgICAgICAgLy8gaGFuZGxlIEV0Yy9HTVQtNCwgd2hpY2ggVjggY2hva2VzIG9uCiAgICAgICAgICByZXR1cm4gRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCk7CiAgICAgICAgfSBlbHNlIGlmIChJQU5BWm9uZS5pc1ZhbGlkU3BlY2lmaWVyKGxvd2VyZWQpKSByZXR1cm4gSUFOQVpvbmUuY3JlYXRlKGlucHV0KTtlbHNlIHJldHVybiBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIobG93ZXJlZCkgfHwgbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgICByZXR1cm4gRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKGlucHV0KTsKICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICJvYmplY3QiICYmIGlucHV0Lm9mZnNldCAmJiB0eXBlb2YgaW5wdXQub2Zmc2V0ID09PSAibnVtYmVyIikgewogICAgICAgIC8vIFRoaXMgaXMgZHVtYiwgYnV0IHRoZSBpbnN0YW5jZW9mIGNoZWNrIGFib3ZlIGRvZXNuJ3Qgc2VlbSB0byByZWFsbHkgd29yawogICAgICAgIC8vIHNvIHdlJ3JlIGR1Y2sgY2hlY2tpbmcgaXQKICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnZhbGlkWm9uZShpbnB1dCk7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgbm93ID0gZnVuY3Rpb24gbm93KCkgewogICAgICByZXR1cm4gRGF0ZS5ub3coKTsKICAgIH0sCiAgICAgICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgICAgICBkZWZhdWx0TG9jYWxlID0gbnVsbCwKICAgICAgICBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtID0gbnVsbCwKICAgICAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgICAgIHRocm93T25JbnZhbGlkOwogICAgLyoqCiAgICAgKiBTZXR0aW5ncyBjb250YWlucyBzdGF0aWMgZ2V0dGVycyBhbmQgc2V0dGVycyB0aGF0IGNvbnRyb2wgTHV4b24ncyBvdmVyYWxsIGJlaGF2aW9yLiBMdXhvbiBpcyBhIHNpbXBsZSBsaWJyYXJ5IHdpdGggZmV3IG9wdGlvbnMsIGJ1dCB0aGUgb25lcyBpdCBkb2VzIGhhdmUgbGl2ZSBoZXJlLgogICAgICovCgoKICAgIHZhciBTZXR0aW5ncyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIFNldHRpbmdzKCkge30KCiAgICAgIC8qKgogICAgICAgKiBSZXNldCBMdXhvbidzIGdsb2JhbCBjYWNoZXMuIFNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBpbiB0ZXN0aW5nIHNjZW5hcmlvcy4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIFNldHRpbmdzLnJlc2V0Q2FjaGVzID0gZnVuY3Rpb24gcmVzZXRDYWNoZXMoKSB7CiAgICAgICAgTG9jYWxlLnJlc2V0Q2FjaGUoKTsKICAgICAgICBJQU5BWm9uZS5yZXNldENhY2hlKCk7CiAgICAgIH07CgogICAgICBfY3JlYXRlQ2xhc3MoU2V0dGluZ3MsIG51bGwsIFt7CiAgICAgICAga2V5OiAibm93IiwKICAgICAgICBnZXQ6CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIG5vdzsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAgICAgKiBUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhIG51bWJlciwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBFcG9jaCBtaWxsaXNlY29uZCBjb3VudAogICAgICAgICAqIEB0eXBlIHtmdW5jdGlvbn0KICAgICAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgICAgICogQGV4YW1wbGUgU2V0dGluZ3Mubm93ID0gKCkgPT4gMCAvLyBhbHdheXMgcHJldGVuZCBpdCdzIEphbiAxLCAxOTcwIGF0IG1pZG5pZ2h0IGluIFVUQyB0aW1lCiAgICAgICAgICovCiAgICAgICAgLAogICAgICAgIHNldDogZnVuY3Rpb24gc2V0KG4pIHsKICAgICAgICAgIG5vdyA9IG47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFNldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgdG8gY3JlYXRlIERhdGVUaW1lcyBpbi4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBVc2UgdGhlIHZhbHVlICJzeXN0ZW0iIHRvIHJlc2V0IHRoaXMgdmFsdWUgdG8gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImRlZmF1bHRab25lIiwKICAgICAgICBnZXQ6CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgc3lzdGVtJ3MgdGltZSB6b25lICh0aGUgb25lIHNldCBvbiB0aGUgbWFjaGluZSB0aGF0IHJ1bnMgdGhpcyBjb2RlKS4KICAgICAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gbm9ybWFsaXplWm9uZShkZWZhdWx0Wm9uZSwgU3lzdGVtWm9uZS5pbnN0YW5jZSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCiAgICAgICAgLAogICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHpvbmUpIHsKICAgICAgICAgIGRlZmF1bHRab25lID0gem9uZTsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJkZWZhdWx0TG9jYWxlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBkZWZhdWx0TG9jYWxlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwogICAgICAgICwKICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldChsb2NhbGUpIHsKICAgICAgICAgIGRlZmF1bHRMb2NhbGUgPSBsb2NhbGU7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImRlZmF1bHROdW1iZXJpbmdTeXN0ZW0iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwogICAgICAgICwKICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICAgIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmdTeXN0ZW07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGVmYXVsdE91dHB1dENhbGVuZGFyIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFNldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCiAgICAgICAgLAogICAgICAgIHNldDogZnVuY3Rpb24gc2V0KG91dHB1dENhbGVuZGFyKSB7CiAgICAgICAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhcjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHdoZXRoZXIgTHV4b24gd2lsbCB0aHJvdyB3aGVuIGl0IGVuY291bnRlcnMgaW52YWxpZCBEYXRlVGltZXMsIER1cmF0aW9ucywgb3IgSW50ZXJ2YWxzCiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAidGhyb3dPbkludmFsaWQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRocm93T25JbnZhbGlkOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAgICAgKi8KICAgICAgICAsCiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodCkgewogICAgICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgICAgIH0KICAgICAgfV0pOwoKICAgICAgcmV0dXJuIFNldHRpbmdzOwogICAgfSgpOwoKICAgIHZhciBfZXhjbHVkZWQgPSBbImJhc2UiXTsKICAgIHZhciBpbnRsRFRDYWNoZSA9IHt9OwoKICAgIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMpIHsKICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgIG9wdHMgPSB7fTsKICAgICAgfQoKICAgICAgdmFyIGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgICAgdmFyIGR0ZiA9IGludGxEVENhY2hlW2tleV07CgogICAgICBpZiAoIWR0ZikgewogICAgICAgIGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY1N0cmluZywgb3B0cyk7CiAgICAgICAgaW50bERUQ2FjaGVba2V5XSA9IGR0ZjsKICAgICAgfQoKICAgICAgcmV0dXJuIGR0ZjsKICAgIH0KCiAgICB2YXIgaW50bE51bUNhY2hlID0ge307CgogICAgZnVuY3Rpb24gZ2V0Q2FjaGVkSU5GKGxvY1N0cmluZywgb3B0cykgewogICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgb3B0cyA9IHt9OwogICAgICB9CgogICAgICB2YXIga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgICB2YXIgaW5mID0gaW50bE51bUNhY2hlW2tleV07CgogICAgICBpZiAoIWluZikgewogICAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICAgIGludGxOdW1DYWNoZVtrZXldID0gaW5mOwogICAgICB9CgogICAgICByZXR1cm4gaW5mOwogICAgfQoKICAgIHZhciBpbnRsUmVsQ2FjaGUgPSB7fTsKCiAgICBmdW5jdGlvbiBnZXRDYWNoZWRSVEYobG9jU3RyaW5nLCBvcHRzKSB7CiAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICBvcHRzID0ge307CiAgICAgIH0KCiAgICAgIHZhciBfb3B0cyA9IG9wdHM7CiAgICAgICAgICBfb3B0cy5iYXNlOwogICAgICAgICAgdmFyIGNhY2hlS2V5T3B0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9vcHRzLCBfZXhjbHVkZWQpOyAvLyBleGNsdWRlIGBiYXNlYCBmcm9tIHRoZSBvcHRpb25zCgoKICAgICAgdmFyIGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIGNhY2hlS2V5T3B0c10pOwogICAgICB2YXIgaW5mID0gaW50bFJlbENhY2hlW2tleV07CgogICAgICBpZiAoIWluZikgewogICAgICAgIGluZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICAgIGludGxSZWxDYWNoZVtrZXldID0gaW5mOwogICAgICB9CgogICAgICByZXR1cm4gaW5mOwogICAgfQoKICAgIHZhciBzeXNMb2NhbGVDYWNoZSA9IG51bGw7CgogICAgZnVuY3Rpb24gc3lzdGVtTG9jYWxlKCkgewogICAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgICByZXR1cm4gc3lzTG9jYWxlQ2FjaGU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgICByZXR1cm4gc3lzTG9jYWxlQ2FjaGU7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGVTdHIpIHsKICAgICAgLy8gSSByZWFsbHkgd2FudCB0byBhdm9pZCB3cml0aW5nIGEgQkNQIDQ3IHBhcnNlcgogICAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgICAgLy8gSW5zdGVhZCwgd2UnbGwgZG8gdGhpczoKICAgICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgICAvLyBiKSBpZiBpdCBkb2VzLCB1c2UgSW50bCB0byByZXNvbHZlIGV2ZXJ5dGhpbmcKICAgICAgLy8gYykgaWYgSW50bCBmYWlscywgdHJ5IGFnYWluIHdpdGhvdXQgdGhlIC11CiAgICAgIHZhciB1SW5kZXggPSBsb2NhbGVTdHIuaW5kZXhPZigiLXUtIik7CgogICAgICBpZiAodUluZGV4ID09PSAtMSkgewogICAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgb3B0aW9uczsKICAgICAgICB2YXIgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgIG9wdGlvbnMgPSBnZXRDYWNoZWREVEYobG9jYWxlU3RyKS5yZXNvbHZlZE9wdGlvbnMoKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucywKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX29wdGlvbnMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBjYWxlbmRhciA9IF9vcHRpb25zLmNhbGVuZGFyOyAvLyByZXR1cm4gdGhlIHNtYWxsZXIgb25lIHNvIHRoYXQgd2UgY2FuIGFwcGVuZCB0aGUgY2FsZW5kYXIgYW5kIG51bWJlcmluZyBvdmVycmlkZXMgdG8gaXQKCiAgICAgICAgcmV0dXJuIFtzbWFsbGVyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGlmIChvdXRwdXRDYWxlbmRhciB8fCBudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gIi11IjsKCiAgICAgICAgaWYgKG91dHB1dENhbGVuZGFyKSB7CiAgICAgICAgICBsb2NhbGVTdHIgKz0gIi1jYS0iICsgb3V0cHV0Q2FsZW5kYXI7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgICAgICBsb2NhbGVTdHIgKz0gIi1udS0iICsgbnVtYmVyaW5nU3lzdGVtOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGxvY2FsZVN0cjsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgICAgdmFyIG1zID0gW107CgogICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgICAgdmFyIGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpOwogICAgICAgIG1zLnB1c2goZihkdCkpOwogICAgICB9CgogICAgICByZXR1cm4gbXM7CiAgICB9CgogICAgZnVuY3Rpb24gbWFwV2Vla2RheXMoZikgewogICAgICB2YXIgbXMgPSBbXTsKCiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDc7IGkrKykgewogICAgICAgIHZhciBkdCA9IERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMgKyBpKTsKICAgICAgICBtcy5wdXNoKGYoZHQpKTsKICAgICAgfQoKICAgICAgcmV0dXJuIG1zOwogICAgfQoKICAgIGZ1bmN0aW9uIGxpc3RTdHVmZihsb2MsIGxlbmd0aCwgZGVmYXVsdE9LLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgICB2YXIgbW9kZSA9IGxvYy5saXN0aW5nTW9kZShkZWZhdWx0T0spOwoKICAgICAgaWYgKG1vZGUgPT09ICJlcnJvciIpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgICAgcmV0dXJuIGVuZ2xpc2hGbihsZW5ndGgpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICAgIGlmIChsb2MubnVtYmVyaW5nU3lzdGVtICYmIGxvYy5udW1iZXJpbmdTeXN0ZW0gIT09ICJsYXRuIikgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbG9jLm51bWJlcmluZ1N5c3RlbSA9PT0gImxhdG4iIHx8ICFsb2MubG9jYWxlIHx8IGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fCBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2MuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biI7CiAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKCiAgICB2YXIgUG9seU51bWJlckZvcm1hdHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIFBvbHlOdW1iZXJGb3JtYXR0ZXIoaW50bCwgZm9yY2VTaW1wbGUsIG9wdHMpIHsKICAgICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICAgIHRoaXMuZmxvb3IgPSBvcHRzLmZsb29yIHx8IGZhbHNlOwoKICAgICAgICBpZiAoIWZvcmNlU2ltcGxlKSB7CiAgICAgICAgICB2YXIgaW50bE9wdHMgPSB7CiAgICAgICAgICAgIHVzZUdyb3VwaW5nOiBmYWxzZQogICAgICAgICAgfTsKICAgICAgICAgIGlmIChvcHRzLnBhZFRvID4gMCkgaW50bE9wdHMubWluaW11bUludGVnZXJEaWdpdHMgPSBvcHRzLnBhZFRvOwogICAgICAgICAgdGhpcy5pbmYgPSBnZXRDYWNoZWRJTkYoaW50bCwgaW50bE9wdHMpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIF9wcm90byA9IFBvbHlOdW1iZXJGb3JtYXR0ZXIucHJvdG90eXBlOwoKICAgICAgX3Byb3RvLmZvcm1hdCA9IGZ1bmN0aW9uIGZvcm1hdChpKSB7CiAgICAgICAgaWYgKHRoaXMuaW5mKSB7CiAgICAgICAgICB2YXIgZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IGk7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gdG8gbWF0Y2ggdGhlIGJyb3dzZXIncyBudW1iZXJmb3JtYXR0ZXIgZGVmYXVsdHMKICAgICAgICAgIHZhciBfZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IHJvdW5kVG8oaSwgMyk7CgogICAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KF9maXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgcmV0dXJuIFBvbHlOdW1iZXJGb3JtYXR0ZXI7CiAgICB9KCk7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCgogICAgdmFyIFBvbHlEYXRlRm9ybWF0dGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gUG9seURhdGVGb3JtYXR0ZXIoZHQsIGludGwsIG9wdHMpIHsKICAgICAgICB0aGlzLm9wdHMgPSBvcHRzOwogICAgICAgIHZhciB6OwoKICAgICAgICBpZiAoZHQuem9uZS5pc1VuaXZlcnNhbCkgewogICAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAgIC8vIFRoYXQgaXMgd2h5IGZpeGVkLW9mZnNldCBUWiBpcyBzZXQgdG8gdGhhdCB1bmxlc3MgaXQgaXM6CiAgICAgICAgICAvLyAxLiBSZXByZXNlbnRpbmcgb2Zmc2V0IDAgd2hlbiBVVEMgaXMgdXNlZCB0byBtYWludGFpbiBwcmV2aW91cyBiZWhhdmlvciBhbmQgZG9lcyBub3QgYmVjb21lIEdNVC4KICAgICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgICAgLy8gICAgLSBzb21lIGRvIG5vdCBzdXBwb3J0IEV0Yy8KICAgICAgICAgIC8vICAgIC0gPCBFdGMvR01ULTE0LCA+IEV0Yy9HTVQrMTIsIGFuZCAzMC1taW51dGUgb3IgNDUtbWludXRlIG9mZnNldHMgYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YQogICAgICAgICAgdmFyIGdtdE9mZnNldCA9IC0xICogKGR0Lm9mZnNldCAvIDYwKTsKICAgICAgICAgIHZhciBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyAiRXRjL0dNVCsiICsgZ210T2Zmc2V0IDogIkV0Yy9HTVQiICsgZ210T2Zmc2V0OwogICAgICAgICAgdmFyIGlzT2Zmc2V0Wm9uZVN1cHBvcnRlZCA9IElBTkFab25lLmlzVmFsaWRab25lKG9mZnNldFopOwoKICAgICAgICAgIGlmIChkdC5vZmZzZXQgIT09IDAgJiYgaXNPZmZzZXRab25lU3VwcG9ydGVkKSB7CiAgICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEuCiAgICAgICAgICAgIC8vIFNvIHdlIGhhdmUgdG8gbWFrZSBkby4gVHdvIGNhc2VzOgogICAgICAgICAgICAvLyAxLiBUaGUgZm9ybWF0IG9wdGlvbnMgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBXZSBjYW4ndCBkbyB0aGF0LCBzbyB0aGUgYmVzdAogICAgICAgICAgICAvLyB3ZSBjYW4gZG8gaXMgZm9ybWF0IHRoZSBkYXRlIGluIFVUQy4KICAgICAgICAgICAgLy8gMi4gVGhlIGZvcm1hdCBvcHRpb25zIGRvbid0IHRlbGwgdXMgdG8gc2hvdyB0aGUgem9uZS4gVGhlbiB3ZSBjYW4gYWRqdXN0IHRoZW0KICAgICAgICAgICAgLy8gdGhlIHRpbWUgYW5kIHRlbGwgdGhlIGZvcm1hdHRlciB0byBzaG93IGl0IHRvIHVzIGluIFVUQywgc28gdGhhdCB0aGUgdGltZSBpcyByaWdodAogICAgICAgICAgICAvLyBhbmQgdGhlIGJhZCB6b25lIGRvZXNuJ3Qgc2hvdyB1cC4KICAgICAgICAgICAgeiA9ICJVVEMiOwoKICAgICAgICAgICAgaWYgKG9wdHMudGltZVpvbmVOYW1lKSB7CiAgICAgICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuZHQgPSBkdC5vZmZzZXQgPT09IDAgPyBkdCA6IERhdGVUaW1lLmZyb21NaWxsaXMoZHQudHMgKyBkdC5vZmZzZXQgKiA2MCAqIDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJzeXN0ZW0iKSB7CiAgICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICAgIHogPSBkdC56b25lLm5hbWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgaW50bE9wdHMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzKTsKCiAgICAgICAgaWYgKHopIHsKICAgICAgICAgIGludGxPcHRzLnRpbWVab25lID0gejsKICAgICAgICB9CgogICAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgICAgfQoKICAgICAgdmFyIF9wcm90bzIgPSBQb2x5RGF0ZUZvcm1hdHRlci5wcm90b3R5cGU7CgogICAgICBfcHJvdG8yLmZvcm1hdCA9IGZ1bmN0aW9uIGZvcm1hdCgpIHsKICAgICAgICByZXR1cm4gdGhpcy5kdGYuZm9ybWF0KHRoaXMuZHQudG9KU0RhdGUoKSk7CiAgICAgIH07CgogICAgICBfcHJvdG8yLmZvcm1hdFRvUGFydHMgPSBmdW5jdGlvbiBmb3JtYXRUb1BhcnRzKCkgewogICAgICAgIHJldHVybiB0aGlzLmR0Zi5mb3JtYXRUb1BhcnRzKHRoaXMuZHQudG9KU0RhdGUoKSk7CiAgICAgIH07CgogICAgICBfcHJvdG8yLnJlc29sdmVkT3B0aW9ucyA9IGZ1bmN0aW9uIHJlc29sdmVkT3B0aW9ucygpIHsKICAgICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICAgIH07CgogICAgICByZXR1cm4gUG9seURhdGVGb3JtYXR0ZXI7CiAgICB9KCk7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCgogICAgdmFyIFBvbHlSZWxGb3JtYXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBQb2x5UmVsRm9ybWF0dGVyKGludGwsIGlzRW5nbGlzaCwgb3B0cykgewogICAgICAgIHRoaXMub3B0cyA9IF9leHRlbmRzKHsKICAgICAgICAgIHN0eWxlOiAibG9uZyIKICAgICAgICB9LCBvcHRzKTsKCiAgICAgICAgaWYgKCFpc0VuZ2xpc2ggJiYgaGFzUmVsYXRpdmUoKSkgewogICAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgX3Byb3RvMyA9IFBvbHlSZWxGb3JtYXR0ZXIucHJvdG90eXBlOwoKICAgICAgX3Byb3RvMy5mb3JtYXQgPSBmdW5jdGlvbiBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXQoY291bnQsIHVuaXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCB0aGlzLm9wdHMubnVtZXJpYywgdGhpcy5vcHRzLnN0eWxlICE9PSAibG9uZyIpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIF9wcm90bzMuZm9ybWF0VG9QYXJ0cyA9IGZ1bmN0aW9uIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXRUb1BhcnRzKGNvdW50LCB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIHJldHVybiBQb2x5UmVsRm9ybWF0dGVyOwogICAgfSgpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIHZhciBMb2NhbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBMb2NhbGUuZnJvbU9wdHMgPSBmdW5jdGlvbiBmcm9tT3B0cyhvcHRzKSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTsKICAgICAgfTsKCiAgICAgIExvY2FsZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyLCBkZWZhdWx0VG9FTikgewogICAgICAgIGlmIChkZWZhdWx0VG9FTiA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBkZWZhdWx0VG9FTiA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNwZWNpZmllZExvY2FsZSA9IGxvY2FsZSB8fCBTZXR0aW5ncy5kZWZhdWx0TG9jYWxlOyAvLyB0aGUgc3lzdGVtIGxvY2FsZSBpcyB1c2VmdWwgZm9yIGh1bWFuIHJlYWRhYmxlIHN0cmluZ3MgYnV0IGFubm95aW5nIGZvciBwYXJzaW5nL2Zvcm1hdHRpbmcga25vd24gZm9ybWF0cwoKICAgICAgICB2YXIgbG9jYWxlUiA9IHNwZWNpZmllZExvY2FsZSB8fCAoZGVmYXVsdFRvRU4gPyAiZW4tVVMiIDogc3lzdGVtTG9jYWxlKCkpOwogICAgICAgIHZhciBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07CiAgICAgICAgdmFyIG91dHB1dENhbGVuZGFyUiA9IG91dHB1dENhbGVuZGFyIHx8IFNldHRpbmdzLmRlZmF1bHRPdXRwdXRDYWxlbmRhcjsKICAgICAgICByZXR1cm4gbmV3IExvY2FsZShsb2NhbGVSLCBudW1iZXJpbmdTeXN0ZW1SLCBvdXRwdXRDYWxlbmRhclIsIHNwZWNpZmllZExvY2FsZSk7CiAgICAgIH07CgogICAgICBMb2NhbGUucmVzZXRDYWNoZSA9IGZ1bmN0aW9uIHJlc2V0Q2FjaGUoKSB7CiAgICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICAgIGludGxEVENhY2hlID0ge307CiAgICAgICAgaW50bE51bUNhY2hlID0ge307CiAgICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICAgIH07CgogICAgICBMb2NhbGUuZnJvbU9iamVjdCA9IGZ1bmN0aW9uIGZyb21PYmplY3QoX3RlbXApIHsKICAgICAgICB2YXIgX3JlZiA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wLAogICAgICAgICAgICBsb2NhbGUgPSBfcmVmLmxvY2FsZSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX3JlZi5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIG91dHB1dENhbGVuZGFyID0gX3JlZi5vdXRwdXRDYWxlbmRhcjsKCiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTsKICAgICAgfTsKCiAgICAgIGZ1bmN0aW9uIExvY2FsZShsb2NhbGUsIG51bWJlcmluZywgb3V0cHV0Q2FsZW5kYXIsIHNwZWNpZmllZExvY2FsZSkgewogICAgICAgIHZhciBfcGFyc2VMb2NhbGVTdHJpbmcgPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpLAogICAgICAgICAgICBwYXJzZWRMb2NhbGUgPSBfcGFyc2VMb2NhbGVTdHJpbmdbMF0sCiAgICAgICAgICAgIHBhcnNlZE51bWJlcmluZ1N5c3RlbSA9IF9wYXJzZUxvY2FsZVN0cmluZ1sxXSwKICAgICAgICAgICAgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgPSBfcGFyc2VMb2NhbGVTdHJpbmdbMl07CgogICAgICAgIHRoaXMubG9jYWxlID0gcGFyc2VkTG9jYWxlOwogICAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhciB8fCBwYXJzZWRPdXRwdXRDYWxlbmRhciB8fCBudWxsOwogICAgICAgIHRoaXMuaW50bCA9IGludGxDb25maWdTdHJpbmcodGhpcy5sb2NhbGUsIHRoaXMubnVtYmVyaW5nU3lzdGVtLCB0aGlzLm91dHB1dENhbGVuZGFyKTsKICAgICAgICB0aGlzLndlZWtkYXlzQ2FjaGUgPSB7CiAgICAgICAgICBmb3JtYXQ6IHt9LAogICAgICAgICAgc3RhbmRhbG9uZToge30KICAgICAgICB9OwogICAgICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7CiAgICAgICAgICBmb3JtYXQ6IHt9LAogICAgICAgICAgc3RhbmRhbG9uZToge30KICAgICAgICB9OwogICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IG51bGw7CiAgICAgICAgdGhpcy5lcmFDYWNoZSA9IHt9OwogICAgICAgIHRoaXMuc3BlY2lmaWVkTG9jYWxlID0gc3BlY2lmaWVkTG9jYWxlOwogICAgICAgIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQgPSBudWxsOwogICAgICB9CgogICAgICB2YXIgX3Byb3RvNCA9IExvY2FsZS5wcm90b3R5cGU7CgogICAgICBfcHJvdG80Lmxpc3RpbmdNb2RlID0gZnVuY3Rpb24gbGlzdGluZ01vZGUoZGVmYXVsdE9LKSB7CgogICAgICAgIHZhciBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICAgIHZhciBoYXNOb1dlaXJkbmVzcyA9ICh0aGlzLm51bWJlcmluZ1N5c3RlbSA9PT0gbnVsbCB8fCB0aGlzLm51bWJlcmluZ1N5c3RlbSA9PT0gImxhdG4iKSAmJiAodGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gbnVsbCB8fCB0aGlzLm91dHB1dENhbGVuZGFyID09PSAiZ3JlZ29yeSIpOwogICAgICAgIHJldHVybiBpc0FjdHVhbGx5RW4gJiYgaGFzTm9XZWlyZG5lc3MgPyAiZW4iIDogImludGwiOwogICAgICB9OwoKICAgICAgX3Byb3RvNC5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lKGFsdHMpIHsKICAgICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoYWx0cy5sb2NhbGUgfHwgdGhpcy5zcGVjaWZpZWRMb2NhbGUsIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLCBhbHRzLm91dHB1dENhbGVuZGFyIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIsIGFsdHMuZGVmYXVsdFRvRU4gfHwgZmFsc2UpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIF9wcm90bzQucmVkZWZhdWx0VG9FTiA9IGZ1bmN0aW9uIHJlZGVmYXVsdFRvRU4oYWx0cykgewogICAgICAgIGlmIChhbHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIGFsdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmNsb25lKF9leHRlbmRzKHt9LCBhbHRzLCB7CiAgICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZQogICAgICAgIH0pKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQucmVkZWZhdWx0VG9TeXN0ZW0gPSBmdW5jdGlvbiByZWRlZmF1bHRUb1N5c3RlbShhbHRzKSB7CiAgICAgICAgaWYgKGFsdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgYWx0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoX2V4dGVuZHMoe30sIGFsdHMsIHsKICAgICAgICAgIGRlZmF1bHRUb0VOOiBmYWxzZQogICAgICAgIH0pKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQubW9udGhzID0gZnVuY3Rpb24gbW9udGhzJDEobGVuZ3RoLCBmb3JtYXQsIGRlZmF1bHRPSykgewogICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgewogICAgICAgICAgZm9ybWF0ID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGVmYXVsdE9LID09PSB2b2lkIDApIHsKICAgICAgICAgIGRlZmF1bHRPSyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBtb250aHMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBpbnRsID0gZm9ybWF0ID8gewogICAgICAgICAgICBtb250aDogbGVuZ3RoLAogICAgICAgICAgICBkYXk6ICJudW1lcmljIgogICAgICAgICAgfSA6IHsKICAgICAgICAgICAgbW9udGg6IGxlbmd0aAogICAgICAgICAgfSwKICAgICAgICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyAiZm9ybWF0IiA6ICJzdGFuZGFsb25lIjsKCiAgICAgICAgICBpZiAoIV90aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgICBfdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoZnVuY3Rpb24gKGR0KSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gX3RoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICAgIH0pOwogICAgICB9OwoKICAgICAgX3Byb3RvNC53ZWVrZGF5cyA9IGZ1bmN0aW9uIHdlZWtkYXlzJDEobGVuZ3RoLCBmb3JtYXQsIGRlZmF1bHRPSykgewogICAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsKICAgICAgICAgIGZvcm1hdCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRlZmF1bHRPSyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBkZWZhdWx0T0sgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgd2Vla2RheXMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBpbnRsID0gZm9ybWF0ID8gewogICAgICAgICAgICB3ZWVrZGF5OiBsZW5ndGgsCiAgICAgICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICAgICAgbW9udGg6ICJsb25nIiwKICAgICAgICAgICAgZGF5OiAibnVtZXJpYyIKICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgIHdlZWtkYXk6IGxlbmd0aAogICAgICAgICAgfSwKICAgICAgICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyAiZm9ybWF0IiA6ICJzdGFuZGFsb25lIjsKCiAgICAgICAgICBpZiAoIV90aGlzMi53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgICBfdGhpczIud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBXZWVrZGF5cyhmdW5jdGlvbiAoZHQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLmV4dHJhY3QoZHQsIGludGwsICJ3ZWVrZGF5Iik7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfdGhpczIud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF07CiAgICAgICAgfSk7CiAgICAgIH07CgogICAgICBfcHJvdG80Lm1lcmlkaWVtcyA9IGZ1bmN0aW9uIG1lcmlkaWVtcyQxKGRlZmF1bHRPSykgewogICAgICAgIHZhciBfdGhpczMgPSB0aGlzOwoKICAgICAgICBpZiAoZGVmYXVsdE9LID09PSB2b2lkIDApIHsKICAgICAgICAgIGRlZmF1bHRPSyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIHVuZGVmaW5lZCwgZGVmYXVsdE9LLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gbWVyaWRpZW1zOwogICAgICAgIH0sIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvCiAgICAgICAgICAvLyBmb3IgQU0gYW5kIFBNLiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLCBidXQgaXQncyBtYWtlcyBwYXJzaW5nIHdheSBlYXNpZXIuCiAgICAgICAgICBpZiAoIV90aGlzMy5tZXJpZGllbUNhY2hlKSB7CiAgICAgICAgICAgIHZhciBpbnRsID0gewogICAgICAgICAgICAgIGhvdXI6ICJudW1lcmljIiwKICAgICAgICAgICAgICBob3VyQ3ljbGU6ICJoMTIiCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIF90aGlzMy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcChmdW5jdGlvbiAoZHQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIF90aGlzMy5tZXJpZGllbUNhY2hlOwogICAgICAgIH0pOwogICAgICB9OwoKICAgICAgX3Byb3RvNC5lcmFzID0gZnVuY3Rpb24gZXJhcyQxKGxlbmd0aCwgZGVmYXVsdE9LKSB7CiAgICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CgogICAgICAgIGlmIChkZWZhdWx0T0sgPT09IHZvaWQgMCkgewogICAgICAgICAgZGVmYXVsdE9LID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIGVyYXMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBpbnRsID0gewogICAgICAgICAgICBlcmE6IGxlbmd0aAogICAgICAgICAgfTsgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgICAvLyB0byBkZWZpbml0ZWx5IGVudW1lcmF0ZSB0aGVtLgoKICAgICAgICAgIGlmICghX3RoaXM0LmVyYUNhY2hlW2xlbmd0aF0pIHsKICAgICAgICAgICAgX3RoaXM0LmVyYUNhY2hlW2xlbmd0aF0gPSBbRGF0ZVRpbWUudXRjKC00MCwgMSwgMSksIERhdGVUaW1lLnV0YygyMDE3LCAxLCAxKV0ubWFwKGZ1bmN0aW9uIChkdCkgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczQuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gX3RoaXM0LmVyYUNhY2hlW2xlbmd0aF07CiAgICAgICAgfSk7CiAgICAgIH07CgogICAgICBfcHJvdG80LmV4dHJhY3QgPSBmdW5jdGlvbiBleHRyYWN0KGR0LCBpbnRsT3B0cywgZmllbGQpIHsKICAgICAgICB2YXIgZGYgPSB0aGlzLmR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyksCiAgICAgICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgICAgIG1hdGNoaW5nID0gcmVzdWx0cy5maW5kKGZ1bmN0aW9uIChtKSB7CiAgICAgICAgICByZXR1cm4gbS50eXBlLnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgICAgfTsKCiAgICAgIF9wcm90bzQubnVtYmVyRm9ybWF0dGVyID0gZnVuY3Rpb24gbnVtYmVyRm9ybWF0dGVyKG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICAvLyB0aGlzIGZvcmNlc2ltcGxlIG9wdGlvbiBpcyBuZXZlciB1c2VkICh0aGUgb25seSBjYWxsZXIgc2hvcnQtY2lyY3VpdHMgb24gaXQsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBsZWF2ZSkKICAgICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICAgIHJldHVybiBuZXcgUG9seU51bWJlckZvcm1hdHRlcih0aGlzLmludGwsIG9wdHMuZm9yY2VTaW1wbGUgfHwgdGhpcy5mYXN0TnVtYmVycywgb3B0cyk7CiAgICAgIH07CgogICAgICBfcHJvdG80LmR0Rm9ybWF0dGVyID0gZnVuY3Rpb24gZHRGb3JtYXR0ZXIoZHQsIGludGxPcHRzKSB7CiAgICAgICAgaWYgKGludGxPcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIGludGxPcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFBvbHlEYXRlRm9ybWF0dGVyKGR0LCB0aGlzLmludGwsIGludGxPcHRzKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQucmVsRm9ybWF0dGVyID0gZnVuY3Rpb24gcmVsRm9ybWF0dGVyKG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFBvbHlSZWxGb3JtYXR0ZXIodGhpcy5pbnRsLCB0aGlzLmlzRW5nbGlzaCgpLCBvcHRzKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQuaXNFbmdsaXNoID0gZnVuY3Rpb24gaXNFbmdsaXNoKCkgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZSA9PT0gImVuIiB8fCB0aGlzLmxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSAiZW4tdXMiIHx8IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIik7CiAgICAgIH07CgogICAgICBfcHJvdG80LmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmIHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBvdGhlci5udW1iZXJpbmdTeXN0ZW0gJiYgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gb3RoZXIub3V0cHV0Q2FsZW5kYXI7CiAgICAgIH07CgogICAgICBfY3JlYXRlQ2xhc3MoTG9jYWxlLCBbewogICAgICAgIGtleTogImZhc3ROdW1iZXJzIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIGlmICh0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ7CiAgICAgICAgfQogICAgICB9XSk7CgogICAgICByZXR1cm4gTG9jYWxlOwogICAgfSgpOwoKICAgIC8qCiAgICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAgICogVHdvIHRoaW5ncyBnbyBpbnRvIHBhcnNpbmc6IGEgcmVnZXggdG8gbWF0Y2ggd2l0aCBhbmQgYW4gZXh0cmFjdG9yIHRvIHRha2UgYXBhcnQgdGhlIGdyb3VwcyBpbiB0aGUgbWF0Y2guCiAgICAgKiBBbiBleHRyYWN0b3IgaXMganVzdCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSByZWdleCBtYXRjaCBhcnJheSBhbmQgcmV0dXJucyBhIHsgeWVhcjogLi4uLCBtb250aDogLi4uIH0gb2JqZWN0CiAgICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgICAqIEV4dHJhY3RvcnMgY2FuIHRha2UgYSAiY3Vyc29yIiByZXByZXNlbnRpbmcgdGhlIG9mZnNldCBpbiB0aGUgbWF0Y2ggdG8gbG9vayBhdC4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIGNvbWJpbmUgZXh0cmFjdG9ycy4KICAgICAqIGNvbWJpbmVFeHRyYWN0b3JzKCkgZG9lcyB0aGUgd29yayBvZiBjb21iaW5pbmcgdGhlbSwga2VlcGluZyB0cmFjayBvZiB0aGUgY3Vyc29yIHRocm91Z2ggbXVsdGlwbGUgZXh0cmFjdGlvbnMuCiAgICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgICAqLwoKICAgIGZ1bmN0aW9uIGNvbWJpbmVSZWdleGVzKCkgewogICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVnZXhlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKICAgICAgICByZWdleGVzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICB9CgogICAgICB2YXIgZnVsbCA9IHJlZ2V4ZXMucmVkdWNlKGZ1bmN0aW9uIChmLCByKSB7CiAgICAgICAgcmV0dXJuIGYgKyByLnNvdXJjZTsKICAgICAgfSwgIiIpOwogICAgICByZXR1cm4gUmVnRXhwKCJeIiArIGZ1bGwgKyAiJCIpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNvbWJpbmVFeHRyYWN0b3JzKCkgewogICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGV4dHJhY3RvcnMgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHsKICAgICAgICBleHRyYWN0b3JzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07CiAgICAgIH0KCiAgICAgIHJldHVybiBmdW5jdGlvbiAobSkgewogICAgICAgIHJldHVybiBleHRyYWN0b3JzLnJlZHVjZShmdW5jdGlvbiAoX3JlZiwgZXgpIHsKICAgICAgICAgIHZhciBtZXJnZWRWYWxzID0gX3JlZlswXSwKICAgICAgICAgICAgICBtZXJnZWRab25lID0gX3JlZlsxXSwKICAgICAgICAgICAgICBjdXJzb3IgPSBfcmVmWzJdOwoKICAgICAgICAgIHZhciBfZXggPSBleChtLCBjdXJzb3IpLAogICAgICAgICAgICAgIHZhbCA9IF9leFswXSwKICAgICAgICAgICAgICB6b25lID0gX2V4WzFdLAogICAgICAgICAgICAgIG5leHQgPSBfZXhbMl07CgogICAgICAgICAgcmV0dXJuIFtfZXh0ZW5kcyh7fSwgbWVyZ2VkVmFscywgdmFsKSwgbWVyZ2VkWm9uZSB8fCB6b25lLCBuZXh0XTsKICAgICAgICB9LCBbe30sIG51bGwsIDFdKS5zbGljZSgwLCAyKTsKICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZShzKSB7CiAgICAgIGlmIChzID09IG51bGwpIHsKICAgICAgICByZXR1cm4gW251bGwsIG51bGxdOwogICAgICB9CgogICAgICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIHBhdHRlcm5zID0gbmV3IEFycmF5KF9sZW4zID4gMSA/IF9sZW4zIC0gMSA6IDApLCBfa2V5MyA9IDE7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHsKICAgICAgICBwYXR0ZXJuc1tfa2V5MyAtIDFdID0gYXJndW1lbnRzW19rZXkzXTsKICAgICAgfQoKICAgICAgZm9yICh2YXIgX2kgPSAwLCBfcGF0dGVybnMgPSBwYXR0ZXJuczsgX2kgPCBfcGF0dGVybnMubGVuZ3RoOyBfaSsrKSB7CiAgICAgICAgdmFyIF9wYXR0ZXJucyRfaSA9IF9wYXR0ZXJuc1tfaV0sCiAgICAgICAgICAgIHJlZ2V4ID0gX3BhdHRlcm5zJF9pWzBdLAogICAgICAgICAgICBleHRyYWN0b3IgPSBfcGF0dGVybnMkX2lbMV07CiAgICAgICAgdmFyIG0gPSByZWdleC5leGVjKHMpOwoKICAgICAgICBpZiAobSkgewogICAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZnVuY3Rpb24gc2ltcGxlUGFyc2UoKSB7CiAgICAgIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwga2V5cyA9IG5ldyBBcnJheShfbGVuNCksIF9rZXk0ID0gMDsgX2tleTQgPCBfbGVuNDsgX2tleTQrKykgewogICAgICAgIGtleXNbX2tleTRdID0gYXJndW1lbnRzW19rZXk0XTsKICAgICAgfQoKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtYXRjaCwgY3Vyc29yKSB7CiAgICAgICAgdmFyIHJldCA9IHt9OwogICAgICAgIHZhciBpOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgcmV0W2tleXNbaV1dID0gcGFyc2VJbnRlZ2VyKG1hdGNoW2N1cnNvciArIGldKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbcmV0LCBudWxsLCBjdXJzb3IgKyBpXTsKICAgICAgfTsKICAgIH0gLy8gSVNPIGFuZCBTUUwgcGFyc2luZwoKCiAgICB2YXIgb2Zmc2V0UmVnZXggPSAvKD86KFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/KS8sCiAgICAgICAgaXNvVGltZUJhc2VSZWdleCA9IC8oXGRcZCkoPzo6PyhcZFxkKSg/Ojo/KFxkXGQpKD86Wy4sXShcZHsxLDMwfSkpPyk/KT8vLAogICAgICAgIGlzb1RpbWVSZWdleCA9IFJlZ0V4cCgiIiArIGlzb1RpbWVCYXNlUmVnZXguc291cmNlICsgb2Zmc2V0UmVnZXguc291cmNlICsgIj8iKSwKICAgICAgICBpc29UaW1lRXh0ZW5zaW9uUmVnZXggPSBSZWdFeHAoIig/OlQiICsgaXNvVGltZVJlZ2V4LnNvdXJjZSArICIpPyIpLAogICAgICAgIGlzb1ltZFJlZ2V4ID0gLyhbKy1dXGR7Nn18XGR7NH0pKD86LT8oXGRcZCkoPzotPyhcZFxkKSk/KT8vLAogICAgICAgIGlzb1dlZWtSZWdleCA9IC8oXGR7NH0pLT9XKFxkXGQpKD86LT8oXGQpKT8vLAogICAgICAgIGlzb09yZGluYWxSZWdleCA9IC8oXGR7NH0pLT8oXGR7M30pLywKICAgICAgICBleHRyYWN0SVNPV2Vla0RhdGEgPSBzaW1wbGVQYXJzZSgid2Vla1llYXIiLCAid2Vla051bWJlciIsICJ3ZWVrRGF5IiksCiAgICAgICAgZXh0cmFjdElTT09yZGluYWxEYXRhID0gc2ltcGxlUGFyc2UoInllYXIiLCAib3JkaW5hbCIpLAogICAgICAgIHNxbFltZFJlZ2V4ID0gLyhcZHs0fSktKFxkXGQpLShcZFxkKS8sCiAgICAgICAgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogICAgc3FsVGltZVJlZ2V4ID0gUmVnRXhwKGlzb1RpbWVCYXNlUmVnZXguc291cmNlICsgIiA/KD86IiArIG9mZnNldFJlZ2V4LnNvdXJjZSArICJ8KCIgKyBpYW5hUmVnZXguc291cmNlICsgIikpPyIpLAogICAgICAgIHNxbFRpbWVFeHRlbnNpb25SZWdleCA9IFJlZ0V4cCgiKD86ICIgKyBzcWxUaW1lUmVnZXguc291cmNlICsgIik/Iik7CgogICAgZnVuY3Rpb24gaW50KG1hdGNoLCBwb3MsIGZhbGxiYWNrKSB7CiAgICAgIHZhciBtID0gbWF0Y2hbcG9zXTsKICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKG0pID8gZmFsbGJhY2sgOiBwYXJzZUludGVnZXIobSk7CiAgICB9CgogICAgZnVuY3Rpb24gZXh0cmFjdElTT1ltZChtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciBpdGVtID0gewogICAgICAgIHllYXI6IGludChtYXRjaCwgY3Vyc29yKSwKICAgICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgICBkYXk6IGludChtYXRjaCwgY3Vyc29yICsgMiwgMSkKICAgICAgfTsKICAgICAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyAzXTsKICAgIH0KCiAgICBmdW5jdGlvbiBleHRyYWN0SVNPVGltZShtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciBpdGVtID0gewogICAgICAgIGhvdXJzOiBpbnQobWF0Y2gsIGN1cnNvciwgMCksCiAgICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgICBzZWNvbmRzOiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDApLAogICAgICAgIG1pbGxpc2Vjb25kczogcGFyc2VNaWxsaXMobWF0Y2hbY3Vyc29yICsgM10pCiAgICAgIH07CiAgICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgICB9CgogICAgZnVuY3Rpb24gZXh0cmFjdElTT09mZnNldChtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciBsb2NhbCA9ICFtYXRjaFtjdXJzb3JdICYmICFtYXRjaFtjdXJzb3IgKyAxXSwKICAgICAgICAgIGZ1bGxPZmZzZXQgPSBzaWduZWRPZmZzZXQobWF0Y2hbY3Vyc29yICsgMV0sIG1hdGNoW2N1cnNvciArIDJdKSwKICAgICAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICAgIHJldHVybiBbe30sIHpvbmUsIGN1cnNvciArIDNdOwogICAgfQoKICAgIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICAgIHJldHVybiBbe30sIHpvbmUsIGN1cnNvciArIDFdOwogICAgfSAvLyBJU08gdGltZSBwYXJzaW5nCgoKICAgIHZhciBpc29UaW1lT25seSA9IFJlZ0V4cCgiXlQ/IiArIGlzb1RpbWVCYXNlUmVnZXguc291cmNlICsgIiQiKTsgLy8gSVNPIGR1cmF0aW9uIHBhcnNpbmcKCiAgICB2YXIgaXNvRHVyYXRpb24gPSAvXi0/UCg/Oig/OigtP1xkezEsOX0pWSk/KD86KC0/XGR7MSw5fSlNKT8oPzooLT9cZHsxLDl9KVcpPyg/OigtP1xkezEsOX0pRCk/KD86VCg/OigtP1xkezEsOX0pSCk/KD86KC0/XGR7MSw5fSlNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSw5fSkpP1MpPyk/KSQvOwoKICAgIGZ1bmN0aW9uIGV4dHJhY3RJU09EdXJhdGlvbihtYXRjaCkgewogICAgICB2YXIgcyA9IG1hdGNoWzBdLAogICAgICAgICAgeWVhclN0ciA9IG1hdGNoWzFdLAogICAgICAgICAgbW9udGhTdHIgPSBtYXRjaFsyXSwKICAgICAgICAgIHdlZWtTdHIgPSBtYXRjaFszXSwKICAgICAgICAgIGRheVN0ciA9IG1hdGNoWzRdLAogICAgICAgICAgaG91clN0ciA9IG1hdGNoWzVdLAogICAgICAgICAgbWludXRlU3RyID0gbWF0Y2hbNl0sCiAgICAgICAgICBzZWNvbmRTdHIgPSBtYXRjaFs3XSwKICAgICAgICAgIG1pbGxpc2Vjb25kc1N0ciA9IG1hdGNoWzhdOwogICAgICB2YXIgaGFzTmVnYXRpdmVQcmVmaXggPSBzWzBdID09PSAiLSI7CiAgICAgIHZhciBuZWdhdGl2ZVNlY29uZHMgPSBzZWNvbmRTdHIgJiYgc2Vjb25kU3RyWzBdID09PSAiLSI7CgogICAgICB2YXIgbWF5YmVOZWdhdGUgPSBmdW5jdGlvbiBtYXliZU5lZ2F0ZShudW0sIGZvcmNlKSB7CiAgICAgICAgaWYgKGZvcmNlID09PSB2b2lkIDApIHsKICAgICAgICAgIGZvcmNlID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVtICE9PSB1bmRlZmluZWQgJiYgKGZvcmNlIHx8IG51bSAmJiBoYXNOZWdhdGl2ZVByZWZpeCkgPyAtbnVtIDogbnVtOwogICAgICB9OwoKICAgICAgcmV0dXJuIFt7CiAgICAgICAgeWVhcnM6IG1heWJlTmVnYXRlKHBhcnNlSW50ZWdlcih5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUludGVnZXIobW9udGhTdHIpKSwKICAgICAgICB3ZWVrczogbWF5YmVOZWdhdGUocGFyc2VJbnRlZ2VyKHdlZWtTdHIpKSwKICAgICAgICBkYXlzOiBtYXliZU5lZ2F0ZShwYXJzZUludGVnZXIoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlSW50ZWdlcihob3VyU3RyKSksCiAgICAgICAgbWludXRlczogbWF5YmVOZWdhdGUocGFyc2VJbnRlZ2VyKG1pbnV0ZVN0cikpLAogICAgICAgIHNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKQogICAgICB9XTsKICAgIH0gLy8gVGhlc2UgYXJlIGEgbGl0dGxlIGJyYWluZGVhZC4gRURUICpzaG91bGQqIHRlbGwgdXMgdGhhdCB3ZSdyZSBpbiwgc2F5LCBBbWVyaWNhL05ld19Zb3JrCiAgICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgICAvLyBJJ20ganVzdCBnb2luZyB0byBpZ25vcmUgdGhhdAoKCiAgICB2YXIgb2JzT2Zmc2V0cyA9IHsKICAgICAgR01UOiAwLAogICAgICBFRFQ6IC00ICogNjAsCiAgICAgIEVTVDogLTUgKiA2MCwKICAgICAgQ0RUOiAtNSAqIDYwLAogICAgICBDU1Q6IC02ICogNjAsCiAgICAgIE1EVDogLTYgKiA2MCwKICAgICAgTVNUOiAtNyAqIDYwLAogICAgICBQRFQ6IC03ICogNjAsCiAgICAgIFBTVDogLTggKiA2MAogICAgfTsKCiAgICBmdW5jdGlvbiBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikgewogICAgICB2YXIgcmVzdWx0ID0gewogICAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgICBtb250aDogbW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0cikgKyAxLAogICAgICAgIGRheTogcGFyc2VJbnRlZ2VyKGRheVN0ciksCiAgICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICAgIG1pbnV0ZTogcGFyc2VJbnRlZ2VyKG1pbnV0ZVN0cikKICAgICAgfTsKICAgICAgaWYgKHNlY29uZFN0cikgcmVzdWx0LnNlY29uZCA9IHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpOwoKICAgICAgaWYgKHdlZWtkYXlTdHIpIHsKICAgICAgICByZXN1bHQud2Vla2RheSA9IHdlZWtkYXlTdHIubGVuZ3RoID4gMyA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMSA6IHdlZWtkYXlzU2hvcnQuaW5kZXhPZih3ZWVrZGF5U3RyKSArIDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9IC8vIFJGQyAyODIyLzUzMjIKCgogICAgdmFyIHJmYzI4MjIgPSAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICAgIGZ1bmN0aW9uIGV4dHJhY3RSRkMyODIyKG1hdGNoKSB7CiAgICAgIHZhciB3ZWVrZGF5U3RyID0gbWF0Y2hbMV0sCiAgICAgICAgICBkYXlTdHIgPSBtYXRjaFsyXSwKICAgICAgICAgIG1vbnRoU3RyID0gbWF0Y2hbM10sCiAgICAgICAgICB5ZWFyU3RyID0gbWF0Y2hbNF0sCiAgICAgICAgICBob3VyU3RyID0gbWF0Y2hbNV0sCiAgICAgICAgICBtaW51dGVTdHIgPSBtYXRjaFs2XSwKICAgICAgICAgIHNlY29uZFN0ciA9IG1hdGNoWzddLAogICAgICAgICAgb2JzT2Zmc2V0ID0gbWF0Y2hbOF0sCiAgICAgICAgICBtaWxPZmZzZXQgPSBtYXRjaFs5XSwKICAgICAgICAgIG9mZkhvdXJTdHIgPSBtYXRjaFsxMF0sCiAgICAgICAgICBvZmZNaW51dGVTdHIgPSBtYXRjaFsxMV0sCiAgICAgICAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7CiAgICAgIHZhciBvZmZzZXQ7CgogICAgICBpZiAob2JzT2Zmc2V0KSB7CiAgICAgICAgb2Zmc2V0ID0gb2JzT2Zmc2V0c1tvYnNPZmZzZXRdOwogICAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICAgIG9mZnNldCA9IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICAgIH0KCiAgICAgIHJldHVybiBbcmVzdWx0LCBuZXcgRml4ZWRPZmZzZXRab25lKG9mZnNldCldOwogICAgfQoKICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHsKICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2UKICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXChbXildKlwpfFtcblx0XS9nLCAiICIpLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKS50cmltKCk7CiAgICB9IC8vIGh0dHAgZGF0ZQoKCiAgICB2YXIgcmZjMTEyMyA9IC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksIChcZFxkKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpIChcZHs0fSkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICAgICAgcmZjODUwID0gL14oTW9uZGF5fFR1ZXNkYXl8V2Vkc2RheXxUaHVyc2RheXxGcmlkYXl8U2F0dXJkYXl8U3VuZGF5KSwgKFxkXGQpLShKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYyktKFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgICAgIGFzY2lpID0gL14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpICggXGR8XGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgKFxkezR9KSQvOwoKICAgIGZ1bmN0aW9uIGV4dHJhY3RSRkMxMTIzT3I4NTAobWF0Y2gpIHsKICAgICAgdmFyIHdlZWtkYXlTdHIgPSBtYXRjaFsxXSwKICAgICAgICAgIGRheVN0ciA9IG1hdGNoWzJdLAogICAgICAgICAgbW9udGhTdHIgPSBtYXRjaFszXSwKICAgICAgICAgIHllYXJTdHIgPSBtYXRjaFs0XSwKICAgICAgICAgIGhvdXJTdHIgPSBtYXRjaFs1XSwKICAgICAgICAgIG1pbnV0ZVN0ciA9IG1hdGNoWzZdLAogICAgICAgICAgc2Vjb25kU3RyID0gbWF0Y2hbN10sCiAgICAgICAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7CiAgICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogICAgfQoKICAgIGZ1bmN0aW9uIGV4dHJhY3RBU0NJSShtYXRjaCkgewogICAgICB2YXIgd2Vla2RheVN0ciA9IG1hdGNoWzFdLAogICAgICAgICAgbW9udGhTdHIgPSBtYXRjaFsyXSwKICAgICAgICAgIGRheVN0ciA9IG1hdGNoWzNdLAogICAgICAgICAgaG91clN0ciA9IG1hdGNoWzRdLAogICAgICAgICAgbWludXRlU3RyID0gbWF0Y2hbNV0sCiAgICAgICAgICBzZWNvbmRTdHIgPSBtYXRjaFs2XSwKICAgICAgICAgIHllYXJTdHIgPSBtYXRjaFs3XSwKICAgICAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgICB9CgogICAgdmFyIGlzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29ZbWRSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBpc29XZWVrV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1dlZWtSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb09yZGluYWxSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBpc29UaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1RpbWVSZWdleCk7CiAgICB2YXIgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhleHRyYWN0SVNPWW1kLCBleHRyYWN0SVNPVGltZSwgZXh0cmFjdElTT09mZnNldCk7CiAgICB2YXIgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1dlZWtEYXRhLCBleHRyYWN0SVNPVGltZSwgZXh0cmFjdElTT09mZnNldCk7CiAgICB2YXIgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZSA9IGNvbWJpbmVFeHRyYWN0b3JzKGV4dHJhY3RJU09PcmRpbmFsRGF0YSwgZXh0cmFjdElTT1RpbWUsIGV4dHJhY3RJU09PZmZzZXQpOwogICAgdmFyIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUsIGV4dHJhY3RJU09PZmZzZXQpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgogICAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldF0sIFtpc29XZWVrV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0XSwgW2lzb09yZGluYWxXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPT3JkaW5hbERhdGVBbmRUaW1lXSwgW2lzb1RpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZUFuZE9mZnNldF0pOwogICAgfQogICAgZnVuY3Rpb24gcGFyc2VSRkMyODIyRGF0ZShzKSB7CiAgICAgIHJldHVybiBwYXJzZShwcmVwcm9jZXNzUkZDMjgyMihzKSwgW3JmYzI4MjIsIGV4dHJhY3RSRkMyODIyXSk7CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUhUVFBEYXRlKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtyZmMxMTIzLCBleHRyYWN0UkZDMTEyM09yODUwXSwgW3JmYzg1MCwgZXh0cmFjdFJGQzExMjNPcjg1MF0sIFthc2NpaSwgZXh0cmFjdEFTQ0lJXSk7CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtpc29EdXJhdGlvbiwgZXh0cmFjdElTT0R1cmF0aW9uXSk7CiAgICB9CiAgICB2YXIgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwogICAgZnVuY3Rpb24gcGFyc2VJU09UaW1lT25seShzKSB7CiAgICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogICAgfQogICAgdmFyIHNxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhzcWxZbWRSZWdleCwgc3FsVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBzcWxUaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFRpbWVSZWdleCk7CiAgICB2YXIgZXh0cmFjdElTT1ltZFRpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKGV4dHJhY3RJU09ZbWQsIGV4dHJhY3RJU09UaW1lLCBleHRyYWN0SVNPT2Zmc2V0LCBleHRyYWN0SUFOQVpvbmUpOwogICAgdmFyIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhleHRyYWN0SVNPVGltZSwgZXh0cmFjdElTT09mZnNldCwgZXh0cmFjdElBTkFab25lKTsKICAgIGZ1bmN0aW9uIHBhcnNlU1FMKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtzcWxZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZU9mZnNldEFuZElBTkFab25lXSwgW3NxbFRpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZU9mZnNldEFuZElBTkFab25lXSk7CiAgICB9CgogICAgdmFyIElOVkFMSUQkMiA9ICJJbnZhbGlkIER1cmF0aW9uIjsgLy8gdW5pdCBjb252ZXJzaW9uIGNvbnN0YW50cwoKICAgIHZhciBsb3dPcmRlck1hdHJpeCA9IHsKICAgICAgd2Vla3M6IHsKICAgICAgICBkYXlzOiA3LAogICAgICAgIGhvdXJzOiA3ICogMjQsCiAgICAgICAgbWludXRlczogNyAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogNyAqIDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIGRheXM6IHsKICAgICAgICBob3VyczogMjQsCiAgICAgICAgbWludXRlczogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7CiAgICAgICAgbWludXRlczogNjAsCiAgICAgICAgc2Vjb25kczogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIG1pbnV0ZXM6IHsKICAgICAgICBzZWNvbmRzOiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDYwICogMTAwMAogICAgICB9LAogICAgICBzZWNvbmRzOiB7CiAgICAgICAgbWlsbGlzZWNvbmRzOiAxMDAwCiAgICAgIH0KICAgIH0sCiAgICAgICAgY2FzdWFsTWF0cml4ID0gX2V4dGVuZHMoewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIHF1YXJ0ZXJzOiB7CiAgICAgICAgbW9udGhzOiAzLAogICAgICAgIHdlZWtzOiAxMywKICAgICAgICBkYXlzOiA5MSwKICAgICAgICBob3VyczogOTEgKiAyNCwKICAgICAgICBtaW51dGVzOiA5MSAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA5MSAqIDI0ICogNjAgKiA2MCAqIDEwMDAKICAgICAgfSwKICAgICAgbW9udGhzOiB7CiAgICAgICAgd2Vla3M6IDQsCiAgICAgICAgZGF5czogMzAsCiAgICAgICAgaG91cnM6IDMwICogMjQsCiAgICAgICAgbWludXRlczogMzAgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDMwICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0KICAgIH0sIGxvd09yZGVyTWF0cml4KSwKICAgICAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgICAgICBkYXlzSW5Nb250aEFjY3VyYXRlID0gMTQ2MDk3LjAgLyA0ODAwLAogICAgICAgIGFjY3VyYXRlTWF0cml4ID0gX2V4dGVuZHMoewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlLAogICAgICAgIGhvdXJzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCwKICAgICAgICBtaW51dGVzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAKICAgICAgfSwKICAgICAgcXVhcnRlcnM6IHsKICAgICAgICBtb250aHM6IDMsCiAgICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDI4LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSAvIDQsCiAgICAgICAgaG91cnM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0IC8gNCwKICAgICAgICBtaW51dGVzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwIC8gNCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgLyA0LAogICAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCAvIDQKICAgICAgfSwKICAgICAgbW9udGhzOiB7CiAgICAgICAgd2Vla3M6IGRheXNJbk1vbnRoQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJbk1vbnRoQWNjdXJhdGUsCiAgICAgICAgaG91cnM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCwKICAgICAgICBtaW51dGVzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAKICAgICAgfQogICAgfSwgbG93T3JkZXJNYXRyaXgpOyAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKCgogICAgdmFyIG9yZGVyZWRVbml0cyQxID0gWyJ5ZWFycyIsICJxdWFydGVycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIl07CiAgICB2YXIgcmV2ZXJzZVVuaXRzID0gb3JkZXJlZFVuaXRzJDEuc2xpY2UoMCkucmV2ZXJzZSgpOyAvLyBjbG9uZSByZWFsbHkgbWVhbnMgImNyZWF0ZSBhbm90aGVyIGluc3RhbmNlIGp1c3QgbGlrZSB0aGlzIG9uZSwgYnV0IHdpdGggdGhlc2UgY2hhbmdlcyIKCiAgICBmdW5jdGlvbiBjbG9uZSQxKGR1ciwgYWx0cywgY2xlYXIpIHsKICAgICAgaWYgKGNsZWFyID09PSB2b2lkIDApIHsKICAgICAgICBjbGVhciA9IGZhbHNlOwogICAgICB9CgogICAgICAvLyBkZWVwIG1lcmdlIGZvciB2YWxzCiAgICAgIHZhciBjb25mID0gewogICAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IF9leHRlbmRzKHt9LCBkdXIudmFsdWVzLCBhbHRzLnZhbHVlcyB8fCB7fSksCiAgICAgICAgbG9jOiBkdXIubG9jLmNsb25lKGFsdHMubG9jKSwKICAgICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3kKICAgICAgfTsKICAgICAgcmV0dXJuIG5ldyBEdXJhdGlvbihjb25mKTsKICAgIH0KCiAgICBmdW5jdGlvbiBhbnRpVHJ1bmMobikgewogICAgICByZXR1cm4gbiA8IDAgPyBNYXRoLmZsb29yKG4pIDogTWF0aC5jZWlsKG4pOwogICAgfSAvLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzCgoKICAgIGZ1bmN0aW9uIGNvbnZlcnQobWF0cml4LCBmcm9tTWFwLCBmcm9tVW5pdCwgdG9NYXAsIHRvVW5pdCkgewogICAgICB2YXIgY29udiA9IG1hdHJpeFt0b1VuaXRdW2Zyb21Vbml0XSwKICAgICAgICAgIHJhdyA9IGZyb21NYXBbZnJvbVVuaXRdIC8gY29udiwKICAgICAgICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSwKICAgICAgICAgIC8vIG9rLCBzbyB0aGlzIGlzIHdpbGQsIGJ1dCBzZWUgdGhlIG1hdHJpeCBpbiB0aGUgdGVzdHMKICAgICAgYWRkZWQgPSAhc2FtZVNpZ24gJiYgdG9NYXBbdG9Vbml0XSAhPT0gMCAmJiBNYXRoLmFicyhyYXcpIDw9IDEgPyBhbnRpVHJ1bmMocmF3KSA6IE1hdGgudHJ1bmMocmF3KTsKICAgICAgdG9NYXBbdG9Vbml0XSArPSBhZGRlZDsKICAgICAgZnJvbU1hcFtmcm9tVW5pdF0gLT0gYWRkZWQgKiBjb252OwogICAgfSAvLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzCgoKICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlcyhtYXRyaXgsIHZhbHMpIHsKICAgICAgcmV2ZXJzZVVuaXRzLnJlZHVjZShmdW5jdGlvbiAocHJldmlvdXMsIGN1cnJlbnQpIHsKICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgICBpZiAocHJldmlvdXMpIHsKICAgICAgICAgICAgY29udmVydChtYXRyaXgsIHZhbHMsIHByZXZpb3VzLCB2YWxzLCBjdXJyZW50KTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gY3VycmVudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICAgIH0KICAgICAgfSwgbnVsbCk7CiAgICB9CiAgICAvKioKICAgICAqIEEgRHVyYXRpb24gb2JqZWN0IHJlcHJlc2VudHMgYSBwZXJpb2Qgb2YgdGltZSwgbGlrZSAiMiBtb250aHMiIG9yICIxIGRheSwgMSBob3VyIi4gQ29uY2VwdHVhbGx5LCBpdCdzIGp1c3QgYSBtYXAgb2YgdW5pdHMgdG8gdGhlaXIgcXVhbnRpdGllcywgYWNjb21wYW5pZWQgYnkgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gYW5kIG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uIFRoZXkgY2FuIGJlIHVzZWQgb24gdGhlaXIgb3duIG9yIGluIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgTHV4b24gdHlwZXM7IGZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB7QGxpbmsgRGF0ZVRpbWUucGx1c30gdG8gYWRkIGEgRHVyYXRpb24gb2JqZWN0IHRvIGEgRGF0ZVRpbWUsIHByb2R1Y2luZyBhbm90aGVyIERhdGVUaW1lLgogICAgICoKICAgICAqIEhlcmUgaXMgYSBicmllZiBvdmVydmlldyBvZiBjb21tb25seSB1c2VkIG1ldGhvZHMgYW5kIGdldHRlcnMgaW4gRHVyYXRpb246CiAgICAgKgogICAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAgICogKiAqKlVuaXQgdmFsdWVzKiogU2VlIHRoZSB7QGxpbmsgRHVyYXRpb24jeWVhcnN9LCB7QGxpbmsgRHVyYXRpb24ubW9udGhzfSwge0BsaW5rIER1cmF0aW9uI3dlZWtzfSwge0BsaW5rIER1cmF0aW9uI2RheXN9LCB7QGxpbmsgRHVyYXRpb24jaG91cnN9LCB7QGxpbmsgRHVyYXRpb24jbWludXRlc30sIHtAbGluayBEdXJhdGlvbiNzZWNvbmRzfSwge0BsaW5rIER1cmF0aW9uI21pbGxpc2Vjb25kc30gYWNjZXNzb3JzLgogICAgICogKiAqKkNvbmZpZ3VyYXRpb24qKiBTZWUgIHtAbGluayBEdXJhdGlvbiNsb2NhbGV9IGFuZCB7QGxpbmsgRHVyYXRpb24jbnVtYmVyaW5nU3lzdGVtfSBhY2Nlc3NvcnMuCiAgICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgICAqICogKipPdXRwdXQqKiBUbyBjb252ZXJ0IHRoZSBEdXJhdGlvbiBpbnRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgc2VlIHtAbGluayBEdXJhdGlvbiNhc30sIHtAbGluayBEdXJhdGlvbiN0b0lTT30sIHtAbGluayBEdXJhdGlvbiN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgRHVyYXRpb24jdG9KU09OfQogICAgICoKICAgICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgICAqLwoKCiAgICB2YXIgRHVyYXRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAvKioKICAgICAgICogQHByaXZhdGUKICAgICAgICovCiAgICAgIGZ1bmN0aW9uIER1cmF0aW9uKGNvbmZpZykgewogICAgICAgIHZhciBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMudmFsdWVzID0gY29uZmlnLnZhbHVlczsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5jb252ZXJzaW9uQWNjdXJhY3kgPSBhY2N1cmF0ZSA/ICJsb25ndGVybSIgOiAiY2FzdWFsIjsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5pbnZhbGlkID0gY29uZmlnLmludmFsaWQgfHwgbnVsbDsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5tYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBEdXJhdGlvbiBmcm9tIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IG9mIG1pbGxpc2Vjb25kcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwoKCiAgICAgIER1cmF0aW9uLmZyb21NaWxsaXMgPSBmdW5jdGlvbiBmcm9tTWlsbGlzKGNvdW50LCBvcHRzKSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoewogICAgICAgICAgbWlsbGlzZWNvbmRzOiBjb3VudAogICAgICAgIH0sIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAgICogSWYgdGhpcyBvYmplY3QgaXMgZW1wdHkgdGhlbiBhIHplcm8gbWlsbGlzZWNvbmRzIGR1cmF0aW9uIGlzIHJldHVybmVkLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnF1YXJ0ZXJzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubW9udGhzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXlzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91cnMKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouc2Vjb25kcwogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbGxpc2Vjb25kcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIER1cmF0aW9uLmZyb21PYmplY3QgPSBmdW5jdGlvbiBmcm9tT2JqZWN0KG9iaiwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAib2JqZWN0IikgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJEdXJhdGlvbi5mcm9tT2JqZWN0OiBhcmd1bWVudCBleHBlY3RlZCB0byBiZSBhbiBvYmplY3QsIGdvdCAiICsgKG9iaiA9PT0gbnVsbCA/ICJudWxsIiA6IHR5cGVvZiBvYmopKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oewogICAgICAgICAgdmFsdWVzOiBub3JtYWxpemVPYmplY3Qob2JqLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IG9wdHMuY29udmVyc2lvbkFjY3VyYWN5CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYW4gSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1AzWTZNMVc0RFQxMkgzME01UycpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAzLCBtb250aHM6IDYsIHdlZWtzOiAxLCBkYXlzOiA0LCBob3VyczogMTIsIG1pbnV0ZXM6IDMwLCBzZWNvbmRzOiA1IH0KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQNVkzTScpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiA1LCBtb250aHM6IDMgfQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIER1cmF0aW9uLmZyb21JU08gPSBmdW5jdGlvbiBmcm9tSVNPKHRleHQsIG9wdHMpIHsKICAgICAgICB2YXIgX3BhcnNlSVNPRHVyYXRpb24gPSBwYXJzZUlTT0R1cmF0aW9uKHRleHQpLAogICAgICAgICAgICBwYXJzZWQgPSBfcGFyc2VJU09EdXJhdGlvblswXTsKCiAgICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QocGFyc2VkLCBvcHRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCAidGhlIGlucHV0IFwiIiArIHRleHQgKyAiXCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxIik7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGFuIElTTyA4NjAxIHRpbWUgc3RyaW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZXMKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICAgKi8KICAgICAgOwoKICAgICAgRHVyYXRpb24uZnJvbUlTT1RpbWUgPSBmdW5jdGlvbiBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgICAgdmFyIF9wYXJzZUlTT1RpbWVPbmx5ID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KSwKICAgICAgICAgICAgcGFyc2VkID0gX3BhcnNlSVNPVGltZU9ubHlbMF07CgogICAgICAgIGlmIChwYXJzZWQpIHsKICAgICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJ1bnBhcnNhYmxlIiwgInRoZSBpbnB1dCBcIiIgKyB0ZXh0ICsgIlwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMSIpOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIGRhdGV0aW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIER1cmF0aW9uLmludmFsaWQgPSBmdW5jdGlvbiBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pIHsKICAgICAgICBpZiAoZXhwbGFuYXRpb24gPT09IHZvaWQgMCkgewogICAgICAgICAgZXhwbGFuYXRpb24gPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkIik7CiAgICAgICAgfQoKICAgICAgICB2YXIgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZER1cmF0aW9uRXJyb3IoaW52YWxpZCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oewogICAgICAgICAgICBpbnZhbGlkOiBpbnZhbGlkCiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICA7CgogICAgICBEdXJhdGlvbi5ub3JtYWxpemVVbml0ID0gZnVuY3Rpb24gbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgICAgdmFyIG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgICB5ZWFyOiAieWVhcnMiLAogICAgICAgICAgeWVhcnM6ICJ5ZWFycyIsCiAgICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgICAgcXVhcnRlcnM6ICJxdWFydGVycyIsCiAgICAgICAgICBtb250aDogIm1vbnRocyIsCiAgICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgICAgd2VlazogIndlZWtzIiwKICAgICAgICAgIHdlZWtzOiAid2Vla3MiLAogICAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgICBkYXlzOiAiZGF5cyIsCiAgICAgICAgICBob3VyOiAiaG91cnMiLAogICAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgICBtaW51dGU6ICJtaW51dGVzIiwKICAgICAgICAgIG1pbnV0ZXM6ICJtaW51dGVzIiwKICAgICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgICAgc2Vjb25kczogInNlY29uZHMiLAogICAgICAgICAgbWlsbGlzZWNvbmQ6ICJtaWxsaXNlY29uZHMiLAogICAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIgogICAgICAgIH1bdW5pdCA/IHVuaXQudG9Mb3dlckNhc2UoKSA6IHVuaXRdOwogICAgICAgIGlmICghbm9ybWFsaXplZCkgdGhyb3cgbmV3IEludmFsaWRVbml0RXJyb3IodW5pdCk7CiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhIER1cmF0aW9uLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBEdXJhdGlvbi5pc0R1cmF0aW9uID0gZnVuY3Rpb24gaXNEdXJhdGlvbihvKSB7CiAgICAgICAgcmV0dXJuIG8gJiYgby5pc0x1eG9uRHVyYXRpb24gfHwgZmFsc2U7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIHZhciBfcHJvdG8gPSBEdXJhdGlvbi5wcm90b3R5cGU7CgogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLiBZb3UgbWF5IHVzZSB0aGVzZSB0b2tlbnM6CiAgICAgICAqICogYFNgIGZvciBtaWxsaXNlY29uZHMKICAgICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAgICogKiBgbWAgZm9yIG1pbnV0ZXMKICAgICAgICogKiBgaGAgZm9yIGhvdXJzCiAgICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAgICogKiBgeWAgZm9yIHllYXJzCiAgICAgICAqIE5vdGVzOgogICAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgICAqICogVGhlIGR1cmF0aW9uIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBzZXQgb2YgdW5pdHMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgdXNpbmcge0BsaW5rIER1cmF0aW9uLnNoaWZ0VG99IGFuZCB0aGUgRHVyYXRpb25zJ3MgY29udmVyc2lvbiBhY2N1cmFjeSBzZXR0aW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCBzdHJpbmcKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZmxvb3I9dHJ1ZV0gLSBmbG9vciBudW1lcmljYWwgdmFsdWVzCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdCgieSBkIHMiKSAvLz0+ICIxIDYgMiIKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdCgiTSBTIikgLy89PiAiMTIgNTE4NDAyMDAwIgogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICBfcHJvdG8udG9Gb3JtYXQgPSBmdW5jdGlvbiB0b0Zvcm1hdChmbXQsIG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICAvLyByZXZlcnNlLWNvbXBhdCBzaW5jZSAxLjI7IHdlIGFsd2F5cyByb3VuZCBkb3duIG5vdywgbmV2ZXIgdXAsIGFuZCB3ZSBkbyBpdCBieSBkZWZhdWx0CiAgICAgICAgdmFyIGZtdE9wdHMgPSBfZXh0ZW5kcyh7fSwgb3B0cywgewogICAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlCiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KSA6IElOVkFMSUQkMjsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEdXJhdGlvbidzIHZhbHVlcy4KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0KICAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvT2JqZWN0ID0gZnVuY3Rpb24gdG9PYmplY3QoKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHRoaXMudmFsdWVzKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiA0LCBzZWNvbmRzOiA0NSB9KS50b0lTTygpIC8vPT4gJ1A0TVQ0NVMnCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDUgfSkudG9JU08oKSAvLz0+ICdQNU0nCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogNiB9KS50b0lTTygpIC8vPT4gJ1BUMC4wMDZTJwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9JU08gPSBmdW5jdGlvbiB0b0lTTygpIHsKICAgICAgICAvLyB3ZSBjb3VsZCB1c2UgdGhlIGZvcm1hdHRlciwgYnV0IHRoaXMgaXMgYW4gZWFzaWVyIHdheSB0byBnZXQgdGhlIG1pbmltdW0gc3RyaW5nCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICAgIHZhciBzID0gIlAiOwogICAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgICAgaWYgKHRoaXMubW9udGhzICE9PSAwIHx8IHRoaXMucXVhcnRlcnMgIT09IDApIHMgKz0gdGhpcy5tb250aHMgKyB0aGlzLnF1YXJ0ZXJzICogMyArICJNIjsKICAgICAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgIlciOwogICAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICAgIGlmICh0aGlzLmhvdXJzICE9PSAwIHx8IHRoaXMubWludXRlcyAhPT0gMCB8fCB0aGlzLnNlY29uZHMgIT09IDAgfHwgdGhpcy5taWxsaXNlY29uZHMgIT09IDApIHMgKz0gIlQiOwogICAgICAgIGlmICh0aGlzLmhvdXJzICE9PSAwKSBzICs9IHRoaXMuaG91cnMgKyAiSCI7CiAgICAgICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyAiTSI7CiAgICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkgLy8gdGhpcyB3aWxsIGhhbmRsZSAiZmxvYXRpbmcgcG9pbnQgbWFkbmVzcyIgYnkgcmVtb3ZpbmcgZXh0cmEgZGVjaW1hbCBwbGFjZXMKICAgICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgICAgcyArPSByb3VuZFRvKHRoaXMuc2Vjb25kcyArIHRoaXMubWlsbGlzZWNvbmRzIC8gMTAwMCwgMykgKyAiUyI7CiAgICAgICAgaWYgKHMgPT09ICJQIikgcyArPSAiVDBTIjsKICAgICAgICByZXR1cm4gczsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24sIGZvcm1hdHRlZCBhcyBhIHRpbWUgb2YgZGF5LgogICAgICAgKiBOb3RlIHRoYXQgdGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZSBkdXJhdGlvbiBpcyBpbnZhbGlkLCBuZWdhdGl2ZSwgb3IgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDI0IGhvdXJzLgogICAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzTWlsbGlzZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwOjAwJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMCcKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzExMDAwMC4wMDAnCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b0lTT1RpbWUgPSBmdW5jdGlvbiB0b0lTT1RpbWUob3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKICAgICAgICB2YXIgbWlsbGlzID0gdGhpcy50b01pbGxpcygpOwogICAgICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7CiAgICAgICAgb3B0cyA9IF9leHRlbmRzKHsKICAgICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzOiBmYWxzZSwKICAgICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgICBpbmNsdWRlUHJlZml4OiBmYWxzZSwKICAgICAgICAgIGZvcm1hdDogImV4dGVuZGVkIgogICAgICAgIH0sIG9wdHMpOwogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuc2hpZnRUbygiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIiwgIm1pbGxpc2Vjb25kcyIpOwogICAgICAgIHZhciBmbXQgPSBvcHRzLmZvcm1hdCA9PT0gImJhc2ljIiA/ICJoaG1tIiA6ICJoaDptbSI7CgogICAgICAgIGlmICghb3B0cy5zdXBwcmVzc1NlY29uZHMgfHwgdmFsdWUuc2Vjb25kcyAhPT0gMCB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHsKICAgICAgICAgIGZtdCArPSBvcHRzLmZvcm1hdCA9PT0gImJhc2ljIiA/ICJzcyIgOiAiOnNzIjsKCiAgICAgICAgICBpZiAoIW9wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHMgfHwgdmFsdWUubWlsbGlzZWNvbmRzICE9PSAwKSB7CiAgICAgICAgICAgIGZtdCArPSAiLlNTUyI7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RyID0gdmFsdWUudG9Gb3JtYXQoZm10KTsKCiAgICAgICAgaWYgKG9wdHMuaW5jbHVkZVByZWZpeCkgewogICAgICAgICAgc3RyID0gIlQiICsgc3RyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHsKICAgICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBkZWJ1Z2dpbmcuCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgewogICAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b01pbGxpcyA9IGZ1bmN0aW9uIHRvTWlsbGlzKCkgewogICAgICAgIHJldHVybiB0aGlzLmFzKCJtaWxsaXNlY29uZHMiKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi4gQWxpYXMgb2Yge0BsaW5rIHRvTWlsbGlzfQogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udmFsdWVPZiA9IGZ1bmN0aW9uIHZhbHVlT2YoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogTWFrZSB0aGlzIER1cmF0aW9uIGxvbmdlciBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uCiAgICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ucGx1cyA9IGZ1bmN0aW9uIHBsdXMoZHVyYXRpb24pIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIGR1ciA9IGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb24pLAogICAgICAgICAgICByZXN1bHQgPSB7fTsKCiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJMb29zZShvcmRlcmVkVW5pdHMkMSksIF9zdGVwOyAhKF9zdGVwID0gX2l0ZXJhdG9yKCkpLmRvbmU7KSB7CiAgICAgICAgICB2YXIgayA9IF9zdGVwLnZhbHVlOwoKICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShkdXIudmFsdWVzLCBrKSB8fCBoYXNPd25Qcm9wZXJ0eSh0aGlzLnZhbHVlcywgaykpIHsKICAgICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgewogICAgICAgICAgdmFsdWVzOiByZXN1bHQKICAgICAgICB9LCB0cnVlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ubWludXMgPSBmdW5jdGlvbiBtaW51cyhkdXJhdGlvbikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgZHVyID0gZnJpZW5kbHlEdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgcmV0dXJuIHRoaXMucGx1cyhkdXIubmVnYXRlKCkpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLgogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKHggPT4geCAqIDIpIC8vPT4geyBob3VyczogMiwgbWludXRlczogNjAgfQogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91ciIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5tYXBVbml0cyA9IGZ1bmN0aW9uIG1hcFVuaXRzKGZuKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciByZXN1bHQgPSB7fTsKCiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfT2JqZWN0JGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcyk7IF9pIDwgX09iamVjdCRrZXlzLmxlbmd0aDsgX2krKykgewogICAgICAgICAgdmFyIGsgPSBfT2JqZWN0JGtleXNbX2ldOwogICAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogcmVzdWx0CiAgICAgICAgfSwgdHJ1ZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDIKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ21vbnRocycpIC8vPT4gMAogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZ2V0ID0gZnVuY3Rpb24gZ2V0KHVuaXQpIHsKICAgICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgICAgfQogICAgICAvKioKICAgICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnMKICAgICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc2V0ID0gZnVuY3Rpb24gc2V0KHZhbHVlcykgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgICAgdmFyIG1peGVkID0gX2V4dGVuZHMoe30sIHRoaXMudmFsdWVzLCBub3JtYWxpemVPYmplY3QodmFsdWVzLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSk7CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogbWl4ZWQKICAgICAgICB9KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogIlNldCIgdGhlIGxvY2FsZSBhbmQvb3IgbnVtYmVyaW5nU3lzdGVtLiAgUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICAgKiBAZXhhbXBsZSBkdXIucmVjb25maWd1cmUoeyBsb2NhbGU6ICdlbi1HQicgfSkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ucmVjb25maWd1cmUgPSBmdW5jdGlvbiByZWNvbmZpZ3VyZShfdGVtcCkgewogICAgICAgIHZhciBfcmVmID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYubG9jYWxlLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5ID0gX3JlZi5jb252ZXJzaW9uQWNjdXJhY3k7CgogICAgICAgIHZhciBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtCiAgICAgICAgfSksCiAgICAgICAgICAgIG9wdHMgPSB7CiAgICAgICAgICBsb2M6IGxvYwogICAgICAgIH07CgogICAgICAgIGlmIChjb252ZXJzaW9uQWNjdXJhY3kpIHsKICAgICAgICAgIG9wdHMuY29udmVyc2lvbkFjY3VyYWN5ID0gY29udmVyc2lvbkFjY3VyYWN5OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgb3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBkdXJhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdkYXlzJykgLy89PiAzNjUKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnbW9udGhzJykgLy89PiAxMgogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5hcyA9IGZ1bmN0aW9uIGFzKHVuaXQpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5zaGlmdFRvKHVuaXQpLmdldCh1bml0KSA6IE5hTjsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmVkdWNlIHRoaXMgRHVyYXRpb24gdG8gaXRzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpbiBpdHMgY3VycmVudCB1bml0cy4KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAyLCBkYXlzOiA1MDAwIH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxNSwgZGF5czogMjU1IH0KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgdmFscyk7CiAgICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgewogICAgICAgICAgdmFsdWVzOiB2YWxzCiAgICAgICAgfSwgdHJ1ZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgc2Vjb25kczogMzAgfSkuc2hpZnRUbygnbWludXRlcycsICdtaWxsaXNlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiA2MCwgbWlsbGlzZWNvbmRzOiAzMDAwMCB9CiAgICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnNoaWZ0VG8gPSBmdW5jdGlvbiBzaGlmdFRvKCkgewogICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCB1bml0cyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKICAgICAgICAgIHVuaXRzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICAgIH0KCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgICBpZiAodW5pdHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9CgogICAgICAgIHVuaXRzID0gdW5pdHMubWFwKGZ1bmN0aW9uICh1KSB7CiAgICAgICAgICByZXR1cm4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KTsKICAgICAgICB9KTsKICAgICAgICB2YXIgYnVpbHQgPSB7fSwKICAgICAgICAgICAgYWNjdW11bGF0ZWQgPSB7fSwKICAgICAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgICB2YXIgbGFzdFVuaXQ7CgogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG9yZGVyZWRVbml0cyQxKSwgX3N0ZXAyOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIoKSkuZG9uZTspIHsKICAgICAgICAgIHZhciBrID0gX3N0ZXAyLnZhbHVlOwoKICAgICAgICAgIGlmICh1bml0cy5pbmRleE9mKGspID49IDApIHsKICAgICAgICAgICAgbGFzdFVuaXQgPSBrOwogICAgICAgICAgICB2YXIgb3duID0gMDsgLy8gYW55dGhpbmcgd2UgaGF2ZW4ndCBib2lsZWQgZG93biB5ZXQgc2hvdWxkIGdldCBib2lsZWQgdG8gdGhpcyB1bml0CgogICAgICAgICAgICBmb3IgKHZhciBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICAgIG93biArPSB0aGlzLm1hdHJpeFtha11ba10gKiBhY2N1bXVsYXRlZFtha107CiAgICAgICAgICAgICAgYWNjdW11bGF0ZWRbYWtdID0gMDsKICAgICAgICAgICAgfSAvLyBwbHVzIGFueXRoaW5nIHRoYXQncyBhbHJlYWR5IGluIHRoaXMgdW5pdAoKCiAgICAgICAgICAgIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgICAgIG93biArPSB2YWxzW2tdOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgaSA9IE1hdGgudHJ1bmMob3duKTsKICAgICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IG93biAtIGk7IC8vIHdlJ2QgbGlrZSB0byBhYnNvcmIgdGhlc2UgZnJhY3Rpb25zIGluIGFub3RoZXIgdW5pdAogICAgICAgICAgICAvLyBwbHVzIGFueXRoaW5nIGZ1cnRoZXIgZG93biB0aGUgY2hhaW4gdGhhdCBzaG91bGQgYmUgcm9sbGVkIHVwIGluIHRvIHRoaXMKCiAgICAgICAgICAgIGZvciAodmFyIGRvd24gaW4gdmFscykgewogICAgICAgICAgICAgIGlmIChvcmRlcmVkVW5pdHMkMS5pbmRleE9mKGRvd24pID4gb3JkZXJlZFVuaXRzJDEuaW5kZXhPZihrKSkgewogICAgICAgICAgICAgICAgY29udmVydCh0aGlzLm1hdHJpeCwgdmFscywgZG93biwgYnVpbHQsIGspOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAvLyBvdGhlcndpc2UsIGtlZXAgaXQgaW4gdGhlIHdpbmdzIHRvIGJvaWwgaXQgbGF0ZXIKCiAgICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7CiAgICAgICAgICAgIGFjY3VtdWxhdGVkW2tdID0gdmFsc1trXTsKICAgICAgICAgIH0KICAgICAgICB9IC8vIGFueXRoaW5nIGxlZnRvdmVyIGJlY29tZXMgdGhlIGRlY2ltYWwgZm9yIHRoZSBsYXN0IHVuaXQKICAgICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CgoKICAgICAgICBmb3IgKHZhciBrZXkgaW4gYWNjdW11bGF0ZWQpIHsKICAgICAgICAgIGlmIChhY2N1bXVsYXRlZFtrZXldICE9PSAwKSB7CiAgICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPSBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogYnVpbHQKICAgICAgICB9LCB0cnVlKS5ub3JtYWxpemUoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLm5lZ2F0ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAtMSwgc2Vjb25kczogLTMwIH0KICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ubmVnYXRlID0gZnVuY3Rpb24gbmVnYXRlKCkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgbmVnYXRlZCA9IHt9OwoKICAgICAgICBmb3IgKHZhciBfaTIgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXModGhpcy52YWx1ZXMpOyBfaTIgPCBfT2JqZWN0JGtleXMyLmxlbmd0aDsgX2kyKyspIHsKICAgICAgICAgIHZhciBrID0gX09iamVjdCRrZXlzMltfaTJdOwogICAgICAgICAgbmVnYXRlZFtrXSA9IC10aGlzLnZhbHVlc1trXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogbmVnYXRlZAogICAgICAgIH0sIHRydWUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgKi8KICAgICAgOwoKICAgICAgLyoqCiAgICAgICAqIEVxdWFsaXR5IGNoZWNrCiAgICAgICAqIFR3byBEdXJhdGlvbnMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgdW5pdHMgYW5kIHRoZSBzYW1lIHZhbHVlcyBmb3IgZWFjaCB1bml0LgogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAgIC8vIENvbnNpZGVyIDAgYW5kIHVuZGVmaW5lZCBhcyBlcXVhbAogICAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwOwogICAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgICB9CgogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG9yZGVyZWRVbml0cyQxKSwgX3N0ZXAzOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMoKSkuZG9uZTspIHsKICAgICAgICAgIHZhciB1ID0gX3N0ZXAzLnZhbHVlOwoKICAgICAgICAgIGlmICghZXEodGhpcy52YWx1ZXNbdV0sIG90aGVyLnZhbHVlc1t1XSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH07CgogICAgICBfY3JlYXRlQ2xhc3MoRHVyYXRpb24sIFt7CiAgICAgICAga2V5OiAibG9jYWxlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEdXJhdGlvbiwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEdXJhdGlvbgogICAgICAgICAqCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJudW1iZXJpbmdTeXN0ZW0iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbSA6IG51bGw7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAga2V5OiAieWVhcnMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJxdWFydGVycyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtb250aHMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ3ZWVrcyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBkYXlzLgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGF5cyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaG91cnMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm1pbnV0ZXMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJzZWNvbmRzIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtaWxsaXNlY29uZHMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAgICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuCiAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1ZhbGlkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPT09IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpbnZhbGlkUmVhc29uIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQucmVhc29uIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWQKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImludmFsaWRFeHBsYW5hdGlvbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uIDogbnVsbDsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBEdXJhdGlvbjsKICAgIH0oKTsKICAgIGZ1bmN0aW9uIGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb25pc2gpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uaXNoKSkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tTWlsbGlzKGR1cmF0aW9uaXNoKTsKICAgICAgfSBlbHNlIGlmIChEdXJhdGlvbi5pc0R1cmF0aW9uKGR1cmF0aW9uaXNoKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbmlzaDsKICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZHVyYXRpb25pc2ggPT09ICJvYmplY3QiKSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoZHVyYXRpb25pc2gpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigiVW5rbm93biBkdXJhdGlvbiBhcmd1bWVudCAiICsgZHVyYXRpb25pc2ggKyAiIG9mIHR5cGUgIiArIHR5cGVvZiBkdXJhdGlvbmlzaCk7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgSU5WQUxJRCQxID0gIkludmFsaWQgSW50ZXJ2YWwiOyAvLyBjaGVja3MgaWYgdGhlIHN0YXJ0IGlzIGVxdWFsIHRvIG9yIGJlZm9yZSB0aGUgZW5kCgogICAgZnVuY3Rpb24gdmFsaWRhdGVTdGFydEVuZChzdGFydCwgZW5kKSB7CiAgICAgIGlmICghc3RhcnQgfHwgIXN0YXJ0LmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICAgIH0gZWxzZSBpZiAoIWVuZCB8fCAhZW5kLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIGVuZCIpOwogICAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoImVuZCBiZWZvcmUgc3RhcnQiLCAiVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9IiArIHN0YXJ0LnRvSVNPKCkgKyAiIGFuZCBlbmQ9IiArIGVuZC50b0lTTygpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQogICAgLyoqCiAgICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICAgKgogICAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBJbnRlcnZhbDoKICAgICAqCiAgICAgKiAqICoqQ3JlYXRpb24qKiBUbyBjcmVhdGUgYW4gSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwuZnJvbURhdGVUaW1lc30sIHtAbGluayBJbnRlcnZhbC5hZnRlcn0sIHtAbGluayBJbnRlcnZhbC5iZWZvcmV9LCBvciB7QGxpbmsgSW50ZXJ2YWwuZnJvbUlTT30uCiAgICAgKiAqICoqQWNjZXNzb3JzKiogVXNlIHtAbGluayBJbnRlcnZhbCNzdGFydH0gYW5kIHtAbGluayBJbnRlcnZhbCNlbmR9IHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZC4KICAgICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgb3RoZXIgSW50ZXJ2YWxzIG91dCBvZiB0aGlzIG9uZSwgdXNlIHtAbGluayBJbnRlcnZhbCNzZXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRBdH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEJ5fSwge0BsaW5rIEludGVydmFsI2RpdmlkZUVxdWFsbHl9LCB7QGxpbmsgSW50ZXJ2YWwjbWVyZ2V9LCB7QGxpbmsgSW50ZXJ2YWwjeG9yfSwge0BsaW5rIEludGVydmFsI3VuaW9ufSwge0BsaW5rIEludGVydmFsI2ludGVyc2VjdGlvbn0sIG9yIHtAbGluayBJbnRlcnZhbCNkaWZmZXJlbmNlfS4KICAgICAqICogKipDb21wYXJpc29uKiogVG8gY29tcGFyZSB0aGlzIEludGVydmFsIHRvIGFub3RoZXIgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI2VxdWFsc30sIHtAbGluayBJbnRlcnZhbCNvdmVybGFwc30sIHtAbGluayBJbnRlcnZhbCNhYnV0c1N0YXJ0fSwge0BsaW5rIEludGVydmFsI2FidXRzRW5kfSwge0BsaW5rIEludGVydmFsI2VuZ3VsZnN9CiAgICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICAgKi8KCgogICAgdmFyIEludGVydmFsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgLyoqCiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICBmdW5jdGlvbiBJbnRlcnZhbChjb25maWcpIHsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KICAgICAgICB0aGlzLnMgPSBjb25maWcuc3RhcnQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuZSA9IGNvbmZpZy5lbmQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuaXNMdXhvbkludGVydmFsID0gdHJ1ZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIGludmFsaWQgSW50ZXJ2YWwuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAgICovCgoKICAgICAgSW50ZXJ2YWwuaW52YWxpZCA9IGZ1bmN0aW9uIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbikgewogICAgICAgIGlmIChleHBsYW5hdGlvbiA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBleHBsYW5hdGlvbiA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXJlYXNvbikgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIEludGVydmFsIGlzIGludmFsaWQiKTsKICAgICAgICB9CgogICAgICAgIHZhciBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkSW50ZXJ2YWxFcnJvcihpbnZhbGlkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICAgIGludmFsaWQ6IGludmFsaWQKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYW4gZW5kIERhdGVUaW1lLiBJbmNsdXNpdmUgb2YgdGhlIHN0YXJ0IGJ1dCBub3QgdGhlIGVuZC4KICAgICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyA9IGZ1bmN0aW9uIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICAgIHZhciBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwogICAgICAgIHZhciB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICAgIGlmICh2YWxpZGF0ZUVycm9yID09IG51bGwpIHsKICAgICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoewogICAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgICAgZW5kOiBidWlsdEVuZAogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgdG8uCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0CiAgICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgICAqLwogICAgICA7CgogICAgICBJbnRlcnZhbC5hZnRlciA9IGZ1bmN0aW9uIGFmdGVyKHN0YXJ0LCBkdXJhdGlvbikgewogICAgICAgIHZhciBkdXIgPSBmcmllbmRseUR1cmF0aW9uKGR1cmF0aW9uKSwKICAgICAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKHN0YXJ0KTsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdCwgZHQucGx1cyhkdXIpKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZAogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW50ZXJ2YWwuYmVmb3JlID0gZnVuY3Rpb24gYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgICB2YXIgZHVyID0gZnJpZW5kbHlEdXJhdGlvbihkdXJhdGlvbiksCiAgICAgICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwogICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gSVNPIDg2MDEgc3RyaW5nLgogICAgICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gb3B0aW9ucyB0byBwYXNzIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSBhbmQgb3B0aW9uYWxseSB7QGxpbmsgRHVyYXRpb24uZnJvbUlTT30KICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLmZyb21JU08gPSBmdW5jdGlvbiBmcm9tSVNPKHRleHQsIG9wdHMpIHsKICAgICAgICB2YXIgX3NwbGl0ID0gKHRleHQgfHwgIiIpLnNwbGl0KCIvIiwgMiksCiAgICAgICAgICAgIHMgPSBfc3BsaXRbMF0sCiAgICAgICAgICAgIGUgPSBfc3BsaXRbMV07CgogICAgICAgIGlmIChzICYmIGUpIHsKICAgICAgICAgIHZhciBzdGFydCwgc3RhcnRJc1ZhbGlkOwoKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHN0YXJ0ID0gRGF0ZVRpbWUuZnJvbUlTTyhzLCBvcHRzKTsKICAgICAgICAgICAgc3RhcnRJc1ZhbGlkID0gc3RhcnQuaXNWYWxpZDsKICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgc3RhcnRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGVuZCwgZW5kSXNWYWxpZDsKCiAgICAgICAgICB0cnkgewogICAgICAgICAgICBlbmQgPSBEYXRlVGltZS5mcm9tSVNPKGUsIG9wdHMpOwogICAgICAgICAgICBlbmRJc1ZhbGlkID0gZW5kLmlzVmFsaWQ7CiAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGVuZElzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCk7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgICB2YXIgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKCiAgICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5hZnRlcihzdGFydCwgZHVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICAgIHZhciBfZHVyID0gRHVyYXRpb24uZnJvbUlTTyhzLCBvcHRzKTsKCiAgICAgICAgICAgIGlmIChfZHVyLmlzVmFsaWQpIHsKICAgICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgX2R1cik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJ1bnBhcnNhYmxlIiwgInRoZSBpbnB1dCBcIiIgKyB0ZXh0ICsgIlwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMSIpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gSW50ZXJ2YWwuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXMKICAgICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLmlzSW50ZXJ2YWwgPSBmdW5jdGlvbiBpc0ludGVydmFsKG8pIHsKICAgICAgICByZXR1cm4gbyAmJiBvLmlzTHV4b25JbnRlcnZhbCB8fCBmYWxzZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgICAqIEB0eXBlIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIHZhciBfcHJvdG8gPSBJbnRlcnZhbC5wcm90b3R5cGU7CgogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICBfcHJvdG8ubGVuZ3RoID0gZnVuY3Rpb24gbGVuZ3RoKHVuaXQpIHsKICAgICAgICBpZiAodW5pdCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICB1bml0ID0gIm1pbGxpc2Vjb25kcyI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uLmFwcGx5KHRoaXMsIFt1bml0XSkuZ2V0KHVuaXQpIDogTmFOOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAgICogVW5saWtlIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9IHRoaXMgY291bnRzIHNlY3Rpb25zIG9mIHRoZSBjYWxlbmRhciwgbm90IHBlcmlvZHMgb2YgdGltZSwgZS5nLiBzcGVjaWZ5aW5nICdkYXknCiAgICAgICAqIGFza3MgJ3doYXQgZGF0ZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJ2YWw/Jywgbm90ICdob3cgbWFueSBkYXlzIGxvbmcgaXMgdGhpcyBpbnRlcnZhbD8nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uY291bnQgPSBmdW5jdGlvbiBjb3VudCh1bml0KSB7CiAgICAgICAgaWYgKHVuaXQgPT09IHZvaWQgMCkgewogICAgICAgICAgdW5pdCA9ICJtaWxsaXNlY29uZHMiOwogICAgICAgIH0KCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpOwogICAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgMTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBhbmQgZW5kIGFyZSBib3RoIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5oYXNTYW1lID0gZnVuY3Rpb24gaGFzU2FtZSh1bml0KSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuZS5taW51cygxKS5oYXNTYW1lKHRoaXMucywgdW5pdCkgOiBmYWxzZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucy52YWx1ZU9mKCkgPT09IHRoaXMuZS52YWx1ZU9mKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBkYXRlVGltZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmlzQWZ0ZXIgPSBmdW5jdGlvbiBpc0FmdGVyKGRhdGVUaW1lKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gdGhpcy5zID4gZGF0ZVRpbWU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYmVmb3JlIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uaXNCZWZvcmUgPSBmdW5jdGlvbiBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRoaXMuZSA8PSBkYXRlVGltZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBkYXRlVGltZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmNvbnRhaW5zID0gZnVuY3Rpb24gY29udGFpbnMoZGF0ZVRpbWUpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXRzIiB0aGUgc3RhcnQgYW5kL29yIGVuZCBkYXRlcy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIEludGVydmFsLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gdGhlIHZhbHVlcyB0byBzZXQKICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IHZhbHVlcy5lbmQgLSB0aGUgZW5kaW5nIERhdGVUaW1lCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnNldCA9IGZ1bmN0aW9uIHNldChfdGVtcCkgewogICAgICAgIHZhciBfcmVmID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAsCiAgICAgICAgICAgIHN0YXJ0ID0gX3JlZi5zdGFydCwKICAgICAgICAgICAgZW5kID0gX3JlZi5lbmQ7CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCB8fCB0aGlzLnMsIGVuZCB8fCB0aGlzLmUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGF0IGVhY2ggb2YgdGhlIHNwZWNpZmllZCBEYXRlVGltZXMKICAgICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc3BsaXRBdCA9IGZ1bmN0aW9uIHNwbGl0QXQoKSB7CiAgICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBbXTsKCiAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGRhdGVUaW1lcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKICAgICAgICAgIGRhdGVUaW1lc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTsKICAgICAgICB9CgogICAgICAgIHZhciBzb3J0ZWQgPSBkYXRlVGltZXMubWFwKGZyaWVuZGx5RGF0ZVRpbWUpLmZpbHRlcihmdW5jdGlvbiAoZCkgewogICAgICAgICAgcmV0dXJuIF90aGlzLmNvbnRhaW5zKGQpOwogICAgICAgIH0pLnNvcnQoKSwKICAgICAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIHZhciBzID0gdGhpcy5zLAogICAgICAgICAgICBpID0gMDsKCiAgICAgICAgd2hpbGUgKHMgPCB0aGlzLmUpIHsKICAgICAgICAgIHZhciBhZGRlZCA9IHNvcnRlZFtpXSB8fCB0aGlzLmUsCiAgICAgICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIG5leHQpKTsKICAgICAgICAgIHMgPSBuZXh0OwogICAgICAgICAgaSArPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAgICogTGVmdCBvdmVyIHRpbWUgaXMgZ3JvdXBlZCBpbnRvIGEgc21hbGxlciBpbnRlcnZhbAogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGxlbmd0aCBvZiBlYWNoIHJlc3VsdGluZyBpbnRlcnZhbC4KICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc3BsaXRCeSA9IGZ1bmN0aW9uIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgICB2YXIgZHVyID0gZnJpZW5kbHlEdXJhdGlvbihkdXJhdGlvbik7CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFkdXIuaXNWYWxpZCB8fCBkdXIuYXMoIm1pbGxpc2Vjb25kcyIpID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICB2YXIgcyA9IHRoaXMucywKICAgICAgICAgICAgaWR4ID0gMSwKICAgICAgICAgICAgbmV4dDsKICAgICAgICB2YXIgcmVzdWx0cyA9IFtdOwoKICAgICAgICB3aGlsZSAocyA8IHRoaXMuZSkgewogICAgICAgICAgdmFyIGFkZGVkID0gdGhpcy5zdGFydC5wbHVzKGR1ci5tYXBVbml0cyhmdW5jdGlvbiAoeCkgewogICAgICAgICAgICByZXR1cm4geCAqIGlkeDsKICAgICAgICAgIH0pKTsKICAgICAgICAgIG5leHQgPSArYWRkZWQgPiArdGhpcy5lID8gdGhpcy5lIDogYWRkZWQ7CiAgICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgICBzID0gbmV4dDsKICAgICAgICAgIGlkeCArPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzbWFsbGVyIGludGVydmFscy4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmRpdmlkZUVxdWFsbHkgPSBmdW5jdGlvbiBkaXZpZGVFcXVhbGx5KG51bWJlck9mUGFydHMpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIG92ZXJsYXBzIHdpdGggdGhlIHNwZWNpZmllZCBJbnRlcnZhbAogICAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLm92ZXJsYXBzID0gZnVuY3Rpb24gb3ZlcmxhcHMob3RoZXIpIHsKICAgICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBzdGFydC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5hYnV0c1N0YXJ0ID0gZnVuY3Rpb24gYWJ1dHNTdGFydChvdGhlcikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuICt0aGlzLmUgPT09ICtvdGhlci5zOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5hYnV0c0VuZCA9IGZ1bmN0aW9uIGFidXRzRW5kKG90aGVyKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgZW5ndWxmcyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFsLgogICAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVuZ3VsZnMgPSBmdW5jdGlvbiBlbmd1bGZzKG90aGVyKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gdGhpcy5zIDw9IG90aGVyLnMgJiYgdGhpcy5lID49IG90aGVyLmU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMob3RoZXIpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMucy5lcXVhbHMob3RoZXIucykgJiYgdGhpcy5lLmVxdWFscyhvdGhlci5lKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgaW50ZXJzZWN0aW9uIGlzIGVtcHR5LCBtZWFuaW5nLCB0aGUgaW50ZXJ2YWxzIGRvbid0IGludGVyc2VjdC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gaW50ZXJzZWN0aW9uKG90aGVyKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciBzID0gdGhpcy5zID4gb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsCiAgICAgICAgICAgIGUgPSB0aGlzLmUgPCBvdGhlci5lID8gdGhpcy5lIDogb3RoZXIuZTsKCiAgICAgICAgaWYgKHMgPj0gZSkgewogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWluaW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWF4aW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udW5pb24gPSBmdW5jdGlvbiB1bmlvbihvdGhlcikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgcyA9IHRoaXMucyA8IG90aGVyLnMgPyB0aGlzLnMgOiBvdGhlci5zLAogICAgICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIE1lcmdlIGFuIGFycmF5IG9mIEludGVydmFscyBpbnRvIGEgZXF1aXZhbGVudCBtaW5pbWFsIHNldCBvZiBJbnRlcnZhbHMuCiAgICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLm1lcmdlID0gZnVuY3Rpb24gbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgICAgdmFyIF9pbnRlcnZhbHMkc29ydCRyZWR1YyA9IGludGVydmFscy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgICByZXR1cm4gYS5zIC0gYi5zOwogICAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAoX3JlZjIsIGl0ZW0pIHsKICAgICAgICAgIHZhciBzb2ZhciA9IF9yZWYyWzBdLAogICAgICAgICAgICAgIGN1cnJlbnQgPSBfcmVmMlsxXTsKCiAgICAgICAgICBpZiAoIWN1cnJlbnQpIHsKICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQub3ZlcmxhcHMoaXRlbSkgfHwgY3VycmVudC5hYnV0c1N0YXJ0KGl0ZW0pKSB7CiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGN1cnJlbnQudW5pb24oaXRlbSldOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIFtzb2Zhci5jb25jYXQoW2N1cnJlbnRdKSwgaXRlbV07CiAgICAgICAgICB9CiAgICAgICAgfSwgW1tdLCBudWxsXSksCiAgICAgICAgICAgIGZvdW5kID0gX2ludGVydmFscyRzb3J0JHJlZHVjWzBdLAogICAgICAgICAgICBmaW5hbCA9IF9pbnRlcnZhbHMkc29ydCRyZWR1Y1sxXTsKCiAgICAgICAgaWYgKGZpbmFsKSB7CiAgICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmb3VuZDsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIEludGVydmFscyByZXByZXNlbnRpbmcgdGhlIHNwYW5zIG9mIHRpbWUgdGhhdCBvbmx5IGFwcGVhciBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbHMuCiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLnhvciA9IGZ1bmN0aW9uIHhvcihpbnRlcnZhbHMpIHsKICAgICAgICB2YXIgX0FycmF5JHByb3RvdHlwZTsKCiAgICAgICAgdmFyIHN0YXJ0ID0gbnVsbCwKICAgICAgICAgICAgY3VycmVudENvdW50ID0gMDsKCiAgICAgICAgdmFyIHJlc3VsdHMgPSBbXSwKICAgICAgICAgICAgZW5kcyA9IGludGVydmFscy5tYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBbewogICAgICAgICAgICB0aW1lOiBpLnMsCiAgICAgICAgICAgIHR5cGU6ICJzIgogICAgICAgICAgfSwgewogICAgICAgICAgICB0aW1lOiBpLmUsCiAgICAgICAgICAgIHR5cGU6ICJlIgogICAgICAgICAgfV07CiAgICAgICAgfSksCiAgICAgICAgICAgIGZsYXR0ZW5lZCA9IChfQXJyYXkkcHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlKS5jb25jYXQuYXBwbHkoX0FycmF5JHByb3RvdHlwZSwgZW5kcyksCiAgICAgICAgICAgIGFyciA9IGZsYXR0ZW5lZC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgICByZXR1cm4gYS50aW1lIC0gYi50aW1lOwogICAgICAgIH0pOwoKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKGFyciksIF9zdGVwOyAhKF9zdGVwID0gX2l0ZXJhdG9yKCkpLmRvbmU7KSB7CiAgICAgICAgICB2YXIgaSA9IF9zdGVwLnZhbHVlOwogICAgICAgICAgY3VycmVudENvdW50ICs9IGkudHlwZSA9PT0gInMiID8gMSA6IC0xOwoKICAgICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgICAgc3RhcnQgPSBpLnRpbWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGkudGltZSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHNwYW4gb2YgdGltZSBpbiB0aGlzIEludGVydmFsIHRoYXQgZG9lc24ndCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxzLgogICAgICAgKiBAcGFyYW0gey4uLkludGVydmFsfSBpbnRlcnZhbHMKICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZGlmZmVyZW5jZSA9IGZ1bmN0aW9uIGRpZmZlcmVuY2UoKSB7CiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgaW50ZXJ2YWxzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7CiAgICAgICAgICBpbnRlcnZhbHNbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKS5tYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBfdGhpczIuaW50ZXJzZWN0aW9uKGkpOwogICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoaSkgewogICAgICAgICAgcmV0dXJuIGkgJiYgIWkuaXNFbXB0eSgpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgYXBwcm9wcmlhdGUgZm9yIGRlYnVnZ2luZy4KICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgICAgcmV0dXJuICJbIiArIHRoaXMucy50b0lTTygpICsgIiBcdTIwMTMgIiArIHRoaXMuZS50b0lTTygpICsgIikiOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbC4KICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9JU08gPSBmdW5jdGlvbiB0b0lTTyhvcHRzKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgICAgcmV0dXJuIHRoaXMucy50b0lTTyhvcHRzKSArICIvIiArIHRoaXMuZS50b0lTTyhvcHRzKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGRhdGUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAgICogVGhlIHRpbWUgY29tcG9uZW50cyBhcmUgaWdub3JlZC4KICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9JU09EYXRlID0gZnVuY3Rpb24gdG9JU09EYXRlKCkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICAgIHJldHVybiB0aGlzLnMudG9JU09EYXRlKCkgKyAiLyIgKyB0aGlzLmUudG9JU09EYXRlKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aW1lIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHMKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZS50b0lTT30KICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSVNPVGltZSA9IGZ1bmN0aW9uIHRvSVNPVGltZShvcHRzKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgICAgcmV0dXJuIHRoaXMucy50b0lTT1RpbWUob3B0cykgKyAiLyIgKyB0aGlzLmUudG9JU09UaW1lKG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlRm9ybWF0IC0gdGhlIGZvcm1hdCBzdHJpbmcuIFRoaXMgc3RyaW5nIGZvcm1hdHMgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZS4gU2VlIHtAbGluayBEYXRlVGltZS50b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gYSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCByZXByZXNlbnRhdGlvbnMKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvRm9ybWF0ID0gZnVuY3Rpb24gdG9Gb3JtYXQoZGF0ZUZvcm1hdCwgX3RlbXAyKSB7CiAgICAgICAgdmFyIF9yZWYzID0gX3RlbXAyID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMiwKICAgICAgICAgICAgX3JlZjMkc2VwYXJhdG9yID0gX3JlZjMuc2VwYXJhdG9yLAogICAgICAgICAgICBzZXBhcmF0b3IgPSBfcmVmMyRzZXBhcmF0b3IgPT09IHZvaWQgMCA/ICIg4oCTICIgOiBfcmVmMyRzZXBhcmF0b3I7CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICAgIHJldHVybiAiIiArIHRoaXMucy50b0Zvcm1hdChkYXRlRm9ybWF0KSArIHNlcGFyYXRvciArIHRoaXMuZS50b0Zvcm1hdChkYXRlRm9ybWF0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGEgRHVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSB0aW1lIHNwYW5uZWQgYnkgdGhpcyBpbnRlcnZhbC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIHRoZSBEdXJhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKCdkYXlzJykudG9PYmplY3QoKSAvLz0+IHsgZGF5czogMS4wMjQxODEyMTUyNzc3Nzc4IH0KICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbihbJ2hvdXJzJywgJ21pbnV0ZXMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNC44MjA5NSB9CiAgICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignc2Vjb25kcycpLnRvT2JqZWN0KCkgLy89PiB7IHNlY29uZHM6IDg4NDg5LjI1NyB9CiAgICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvRHVyYXRpb24gPSBmdW5jdGlvbiB0b0R1cmF0aW9uKHVuaXQsIG9wdHMpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQodGhpcy5pbnZhbGlkUmVhc29uKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmUuZGlmZih0aGlzLnMsIHVuaXQsIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1hcEZuCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnBsdXMoeyBob3VyczogMiB9KSkKICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5tYXBFbmRwb2ludHMgPSBmdW5jdGlvbiBtYXBFbmRwb2ludHMobWFwRm4pIHsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgICAgfTsKCiAgICAgIF9jcmVhdGVDbGFzcyhJbnRlcnZhbCwgW3sKICAgICAgICBrZXk6ICJzdGFydCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5zIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbAogICAgICAgICAqIEB0eXBlIHtEYXRlVGltZX0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJlbmQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuZSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy4KICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1ZhbGlkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWRSZWFzb24gPT09IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpbnZhbGlkUmVhc29uIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQucmVhc29uIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImludmFsaWRFeHBsYW5hdGlvbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uIDogbnVsbDsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBJbnRlcnZhbDsKICAgIH0oKTsKCiAgICAvKioKICAgICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICAgKi8KCiAgICB2YXIgSW5mbyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIEluZm8oKSB7fQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBab25lIHRvIGNoZWNrLiBEZWZhdWx0cyB0byB0aGUgZW52aXJvbm1lbnQncyBsb2NhbCB6b25lLgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgSW5mby5oYXNEU1QgPSBmdW5jdGlvbiBoYXNEU1Qoem9uZSkgewogICAgICAgIGlmICh6b25lID09PSB2b2lkIDApIHsKICAgICAgICAgIHpvbmUgPSBTZXR0aW5ncy5kZWZhdWx0Wm9uZTsKICAgICAgICB9CgogICAgICAgIHZhciBwcm90byA9IERhdGVUaW1lLm5vdygpLnNldFpvbmUoem9uZSkuc2V0KHsKICAgICAgICAgIG1vbnRoOiAxMgogICAgICAgIH0pOwogICAgICAgIHJldHVybiAhem9uZS5pc1VuaXZlcnNhbCAmJiBwcm90by5vZmZzZXQgIT09IHByb3RvLnNldCh7CiAgICAgICAgICBtb250aDogNgogICAgICAgIH0pLm9mZnNldDsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHNwZWNpZmllZCB6b25lIGlzIGEgdmFsaWQgSUFOQSBzcGVjaWZpZXIuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby5pc1ZhbGlkSUFOQVpvbmUgPSBmdW5jdGlvbiBpc1ZhbGlkSUFOQVpvbmUoem9uZSkgewogICAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkU3BlY2lmaWVyKHpvbmUpICYmIElBTkFab25lLmlzVmFsaWRab25lKHpvbmUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDb252ZXJ0cyB0aGUgaW5wdXQgaW50byBhIHtAbGluayBab25lfSBpbnN0YW5jZS4KICAgICAgICoKICAgICAgICogKiBJZiBgaW5wdXRgIGlzIGFscmVhZHkgYSBab25lIGluc3RhbmNlLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCiAgICAgICAqICogSWYgYGlucHV0YCBpcyBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgdGltZSB6b25lIG5hbWUsIGEgWm9uZSBpbnN0YW5jZQogICAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICAgKiAqIElmIGBpbnB1dGAgaXMgYSBzdHJpbmcgdGhhdCBkb2Vzbid0IHJlZmVyIHRvIGEga25vd24gdGltZSB6b25lLCBhIFpvbmUKICAgICAgICogICBpbnN0YW5jZSB3aXRoIHtAbGluayBab25lLmlzVmFsaWR9ID09IGZhbHNlIGlzIHJldHVybmVkLgogICAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAgICogICBpbiBtaW51dGVzIGlzIHJldHVybmVkLgogICAgICAgKiAqIElmIGBpbnB1dGAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGUgZGVmYXVsdCB6b25lIGlzIHJldHVybmVkLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAgICogQHJldHVybiB7Wm9uZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ubm9ybWFsaXplWm9uZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZVpvbmUkMShpbnB1dCkgewogICAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIG1vbnRoIG5hbWVzLgogICAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhcgogICAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdzaG9ydCcpWzBdIC8vPT4gJ0phbicKICAgICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ251bWVyaWMnKVswXSAvLz0+ICcxJwogICAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdudW1lcmljJywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2aEnCiAgICAgICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdsb25nJywgeyBvdXRwdXRDYWxlbmRhcjogJ2lzbGFtaWMnIH0pWzBdIC8vPT4gJ1JhYmnKuyBJJwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ubW9udGhzID0gZnVuY3Rpb24gbW9udGhzKGxlbmd0aCwgX3RlbXApIHsKICAgICAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHsKICAgICAgICAgIGxlbmd0aCA9ICJsb25nIjsKICAgICAgICB9CgogICAgICAgIHZhciBfcmVmID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAsCiAgICAgICAgICAgIF9yZWYkbG9jYWxlID0gX3JlZi5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYkbG9jYWxlID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRsb2NhbGUsCiAgICAgICAgICAgIF9yZWYkbnVtYmVyaW5nU3lzdGVtID0gX3JlZi5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSA9IF9yZWYkbnVtYmVyaW5nU3lzdGVtID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIF9yZWYkbG9jT2JqID0gX3JlZi5sb2NPYmosCiAgICAgICAgICAgIGxvY09iaiA9IF9yZWYkbG9jT2JqID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRsb2NPYmosCiAgICAgICAgICAgIF9yZWYkb3V0cHV0Q2FsZW5kYXIgPSBfcmVmLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgICBvdXRwdXRDYWxlbmRhciA9IF9yZWYkb3V0cHV0Q2FsZW5kYXIgPT09IHZvaWQgMCA/ICJncmVnb3J5IiA6IF9yZWYkb3V0cHV0Q2FsZW5kYXI7CgogICAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgbW9udGggbmFtZXMuCiAgICAgICAqIEZvcm1hdCBtb250aHMgZGlmZmVyIGZyb20gc3RhbmRhbG9uZSBtb250aHMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIHRoZSBkYXkgb2YgdGhlIG1vbnRoLiBJbiBzb21lIGxhbmd1YWdlcywgdGhhdAogICAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgICAqIFNlZSB7QGxpbmsgSW5mbyNtb250aHN9CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhcgogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ubW9udGhzRm9ybWF0ID0gZnVuY3Rpb24gbW9udGhzRm9ybWF0KGxlbmd0aCwgX3RlbXAyKSB7CiAgICAgICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBsZW5ndGggPSAibG9uZyI7CiAgICAgICAgfQoKICAgICAgICB2YXIgX3JlZjIgPSBfdGVtcDIgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAyLAogICAgICAgICAgICBfcmVmMiRsb2NhbGUgPSBfcmVmMi5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYyJGxvY2FsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYyJGxvY2FsZSwKICAgICAgICAgICAgX3JlZjIkbnVtYmVyaW5nU3lzdGVtID0gX3JlZjIubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmMiRudW1iZXJpbmdTeXN0ZW0gPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmMiRudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIF9yZWYyJGxvY09iaiA9IF9yZWYyLmxvY09iaiwKICAgICAgICAgICAgbG9jT2JqID0gX3JlZjIkbG9jT2JqID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjIkbG9jT2JqLAogICAgICAgICAgICBfcmVmMiRvdXRwdXRDYWxlbmRhciA9IF9yZWYyLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgICBvdXRwdXRDYWxlbmRhciA9IF9yZWYyJG91dHB1dENhbGVuZGFyID09PSB2b2lkIDAgPyAiZ3JlZ29yeSIgOiBfcmVmMiRvdXRwdXRDYWxlbmRhcjsKCiAgICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIHN0YW5kYWxvbmUgd2VlayBuYW1lcy4KICAgICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKClbMF0gLy89PiAnTW9uZGF5JwogICAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9KVswXSAvLz0+ICdsdW4uJwogICAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9in2YTYp9ir2YbZitmGJwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ud2Vla2RheXMgPSBmdW5jdGlvbiB3ZWVrZGF5cyhsZW5ndGgsIF90ZW1wMykgewogICAgICAgIGlmIChsZW5ndGggPT09IHZvaWQgMCkgewogICAgICAgICAgbGVuZ3RoID0gImxvbmciOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9yZWYzID0gX3RlbXAzID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMywKICAgICAgICAgICAgX3JlZjMkbG9jYWxlID0gX3JlZjMubG9jYWxlLAogICAgICAgICAgICBsb2NhbGUgPSBfcmVmMyRsb2NhbGUgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmMyRsb2NhbGUsCiAgICAgICAgICAgIF9yZWYzJG51bWJlcmluZ1N5c3RlbSA9IF9yZWYzLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX3JlZjMkbnVtYmVyaW5nU3lzdGVtID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjMkbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBfcmVmMyRsb2NPYmogPSBfcmVmMy5sb2NPYmosCiAgICAgICAgICAgIGxvY09iaiA9IF9yZWYzJGxvY09iaiA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYzJGxvY09iajsKCiAgICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgbnVsbCkpLndlZWtkYXlzKGxlbmd0aCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAgICogRm9ybWF0IHdlZWtkYXlzIGRpZmZlciBmcm9tIHN0YW5kYWxvbmUgd2Vla2RheXMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIG1vcmUgZGF0ZSBpbmZvcm1hdGlvbi4gSW4gc29tZSBsYW5ndWFnZXMsIHRoYXQKICAgICAgICogY2hhbmdlcyB0aGUgc3RyaW5nLgogICAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlCiAgICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby53ZWVrZGF5c0Zvcm1hdCA9IGZ1bmN0aW9uIHdlZWtkYXlzRm9ybWF0KGxlbmd0aCwgX3RlbXA0KSB7CiAgICAgICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBsZW5ndGggPSAibG9uZyI7CiAgICAgICAgfQoKICAgICAgICB2YXIgX3JlZjQgPSBfdGVtcDQgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA0LAogICAgICAgICAgICBfcmVmNCRsb2NhbGUgPSBfcmVmNC5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWY0JGxvY2FsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWY0JGxvY2FsZSwKICAgICAgICAgICAgX3JlZjQkbnVtYmVyaW5nU3lzdGVtID0gX3JlZjQubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmNCRudW1iZXJpbmdTeXN0ZW0gPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmNCRudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIF9yZWY0JGxvY09iaiA9IF9yZWY0LmxvY09iaiwKICAgICAgICAgICAgbG9jT2JqID0gX3JlZjQkbG9jT2JqID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjQkbG9jT2JqOwoKICAgICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoLCB0cnVlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICAgKiBAZXhhbXBsZSBJbmZvLm1lcmlkaWVtcyh7IGxvY2FsZTogJ215JyB9KSAvLz0+IFsgJ+GAlOGAtuGAlOGAgOGAuicsICfhgIrhgJThgLEnIF0KICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBJbmZvLm1lcmlkaWVtcyA9IGZ1bmN0aW9uIG1lcmlkaWVtcyhfdGVtcDUpIHsKICAgICAgICB2YXIgX3JlZjUgPSBfdGVtcDUgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA1LAogICAgICAgICAgICBfcmVmNSRsb2NhbGUgPSBfcmVmNS5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWY1JGxvY2FsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWY1JGxvY2FsZTsKCiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlKS5tZXJpZGllbXMoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIGVyYXMsIHN1Y2ggYXMgWydCQycsICdBRCddLiBUaGUgbG9jYWxlIGNhbiBiZSBzcGVjaWZpZWQsIGJ1dCB0aGUgY2FsZW5kYXIgc3lzdGVtIGlzIGFsd2F5cyBHcmVnb3JpYW4uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnKSAvLz0+IFsgJ0JlZm9yZSBDaHJpc3QnLCAnQW5ubyBEb21pbmknIF0KICAgICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJywgeyBsb2NhbGU6ICdmcicgfSkgLy89PiBbICdhdmFudCBKw6lzdXMtQ2hyaXN0JywgJ2FwcsOocyBKw6lzdXMtQ2hyaXN0JyBdCiAgICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby5lcmFzID0gZnVuY3Rpb24gZXJhcyhsZW5ndGgsIF90ZW1wNikgewogICAgICAgIGlmIChsZW5ndGggPT09IHZvaWQgMCkgewogICAgICAgICAgbGVuZ3RoID0gInNob3J0IjsKICAgICAgICB9CgogICAgICAgIHZhciBfcmVmNiA9IF90ZW1wNiA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDYsCiAgICAgICAgICAgIF9yZWY2JGxvY2FsZSA9IF9yZWY2LmxvY2FsZSwKICAgICAgICAgICAgbG9jYWxlID0gX3JlZjYkbG9jYWxlID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjYkbG9jYWxlOwoKICAgICAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bGwsICJncmVnb3J5IikuZXJhcyhsZW5ndGgpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAgICogU29tZSBmZWF0dXJlcyBvZiBMdXhvbiBhcmUgbm90IGF2YWlsYWJsZSBpbiBhbGwgZW52aXJvbm1lbnRzLiBGb3IgZXhhbXBsZSwgb24gb2xkZXIgYnJvd3NlcnMsIHRpbWV6b25lIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gZmlndXJlIG91dCBpZiB0aGF0J3MgdGhlIGNhc2UuCiAgICAgICAqIEtleXM6CiAgICAgICAqICogYHJlbGF0aXZlYDogd2hldGhlciB0aGlzIGVudmlyb25tZW50IHN1cHBvcnRzIHJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZwogICAgICAgKiBAZXhhbXBsZSBJbmZvLmZlYXR1cmVzKCkgLy89PiB7IGludGw6IHRydWUsIGludGxUb2tlbnM6IGZhbHNlLCB6b25lczogdHJ1ZSwgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby5mZWF0dXJlcyA9IGZ1bmN0aW9uIGZlYXR1cmVzKCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKQogICAgICAgIH07CiAgICAgIH07CgogICAgICByZXR1cm4gSW5mbzsKICAgIH0oKTsKCiAgICBmdW5jdGlvbiBkYXlEaWZmKGVhcmxpZXIsIGxhdGVyKSB7CiAgICAgIHZhciB1dGNEYXlTdGFydCA9IGZ1bmN0aW9uIHV0Y0RheVN0YXJ0KGR0KSB7CiAgICAgICAgcmV0dXJuIGR0LnRvVVRDKDAsIHsKICAgICAgICAgIGtlZXBMb2NhbFRpbWU6IHRydWUKICAgICAgICB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCk7CiAgICAgIH0sCiAgICAgICAgICBtcyA9IHV0Y0RheVN0YXJ0KGxhdGVyKSAtIHV0Y0RheVN0YXJ0KGVhcmxpZXIpOwoKICAgICAgcmV0dXJuIE1hdGguZmxvb3IoRHVyYXRpb24uZnJvbU1pbGxpcyhtcykuYXMoImRheXMiKSk7CiAgICB9CgogICAgZnVuY3Rpb24gaGlnaE9yZGVyRGlmZnMoY3Vyc29yLCBsYXRlciwgdW5pdHMpIHsKICAgICAgdmFyIGRpZmZlcnMgPSBbWyJ5ZWFycyIsIGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIueWVhciAtIGEueWVhcjsKICAgICAgfV0sIFsicXVhcnRlcnMiLCBmdW5jdGlvbiAoYSwgYikgewogICAgICAgIHJldHVybiBiLnF1YXJ0ZXIgLSBhLnF1YXJ0ZXI7CiAgICAgIH1dLCBbIm1vbnRocyIsIGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIubW9udGggLSBhLm1vbnRoICsgKGIueWVhciAtIGEueWVhcikgKiAxMjsKICAgICAgfV0sIFsid2Vla3MiLCBmdW5jdGlvbiAoYSwgYikgewogICAgICAgIHZhciBkYXlzID0gZGF5RGlmZihhLCBiKTsKICAgICAgICByZXR1cm4gKGRheXMgLSBkYXlzICUgNykgLyA3OwogICAgICB9XSwgWyJkYXlzIiwgZGF5RGlmZl1dOwogICAgICB2YXIgcmVzdWx0cyA9IHt9OwogICAgICB2YXIgbG93ZXN0T3JkZXIsIGhpZ2hXYXRlcjsKCiAgICAgIGZvciAodmFyIF9pID0gMCwgX2RpZmZlcnMgPSBkaWZmZXJzOyBfaSA8IF9kaWZmZXJzLmxlbmd0aDsgX2krKykgewogICAgICAgIHZhciBfZGlmZmVycyRfaSA9IF9kaWZmZXJzW19pXSwKICAgICAgICAgICAgdW5pdCA9IF9kaWZmZXJzJF9pWzBdLAogICAgICAgICAgICBkaWZmZXIgPSBfZGlmZmVycyRfaVsxXTsKCiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YodW5pdCkgPj0gMCkgewogICAgICAgICAgdmFyIF9jdXJzb3IkcGx1czsKCiAgICAgICAgICBsb3dlc3RPcmRlciA9IHVuaXQ7CiAgICAgICAgICB2YXIgZGVsdGEgPSBkaWZmZXIoY3Vyc29yLCBsYXRlcik7CiAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3IucGx1cygoX2N1cnNvciRwbHVzID0ge30sIF9jdXJzb3IkcGx1c1t1bml0XSA9IGRlbHRhLCBfY3Vyc29yJHBsdXMpKTsKCiAgICAgICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHsKICAgICAgICAgICAgdmFyIF9jdXJzb3IkcGx1czI7CgogICAgICAgICAgICBjdXJzb3IgPSBjdXJzb3IucGx1cygoX2N1cnNvciRwbHVzMiA9IHt9LCBfY3Vyc29yJHBsdXMyW3VuaXRdID0gZGVsdGEgLSAxLCBfY3Vyc29yJHBsdXMyKSk7CiAgICAgICAgICAgIGRlbHRhIC09IDE7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjdXJzb3IgPSBoaWdoV2F0ZXI7CiAgICAgICAgICB9CgogICAgICAgICAgcmVzdWx0c1t1bml0XSA9IGRlbHRhOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdOwogICAgfQoKICAgIGZ1bmN0aW9uIF9kaWZmIChlYXJsaWVyLCBsYXRlciwgdW5pdHMsIG9wdHMpIHsKICAgICAgdmFyIF9oaWdoT3JkZXJEaWZmcyA9IGhpZ2hPcmRlckRpZmZzKGVhcmxpZXIsIGxhdGVyLCB1bml0cyksCiAgICAgICAgICBjdXJzb3IgPSBfaGlnaE9yZGVyRGlmZnNbMF0sCiAgICAgICAgICByZXN1bHRzID0gX2hpZ2hPcmRlckRpZmZzWzFdLAogICAgICAgICAgaGlnaFdhdGVyID0gX2hpZ2hPcmRlckRpZmZzWzJdLAogICAgICAgICAgbG93ZXN0T3JkZXIgPSBfaGlnaE9yZGVyRGlmZnNbM107CgogICAgICB2YXIgcmVtYWluaW5nTWlsbGlzID0gbGF0ZXIgLSBjdXJzb3I7CiAgICAgIHZhciBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoZnVuY3Rpb24gKHUpIHsKICAgICAgICByZXR1cm4gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIl0uaW5kZXhPZih1KSA+PSAwOwogICAgICB9KTsKCiAgICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgICB2YXIgX2N1cnNvciRwbHVzMzsKCiAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3IucGx1cygoX2N1cnNvciRwbHVzMyA9IHt9LCBfY3Vyc29yJHBsdXMzW2xvd2VzdE9yZGVyXSA9IDEsIF9jdXJzb3IkcGx1czMpKTsKICAgICAgICB9CgogICAgICAgIGlmIChoaWdoV2F0ZXIgIT09IGN1cnNvcikgewogICAgICAgICAgcmVzdWx0c1tsb3dlc3RPcmRlcl0gPSAocmVzdWx0c1tsb3dlc3RPcmRlcl0gfHwgMCkgKyByZW1haW5pbmdNaWxsaXMgLyAoaGlnaFdhdGVyIC0gY3Vyc29yKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHZhciBkdXJhdGlvbiA9IER1cmF0aW9uLmZyb21PYmplY3QocmVzdWx0cywgb3B0cyk7CgogICAgICBpZiAobG93ZXJPcmRlclVuaXRzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgX0R1cmF0aW9uJGZyb21NaWxsaXM7CgogICAgICAgIHJldHVybiAoX0R1cmF0aW9uJGZyb21NaWxsaXMgPSBEdXJhdGlvbi5mcm9tTWlsbGlzKHJlbWFpbmluZ01pbGxpcywgb3B0cykpLnNoaWZ0VG8uYXBwbHkoX0R1cmF0aW9uJGZyb21NaWxsaXMsIGxvd2VyT3JkZXJVbml0cykucGx1cyhkdXJhdGlvbik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGR1cmF0aW9uOwogICAgICB9CiAgICB9CgogICAgdmFyIG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICAgIGFyYWI6ICJbXHUwNjYwLVx1MDY2OV0iLAogICAgICBhcmFiZXh0OiAiW1x1MDZGMC1cdTA2RjldIiwKICAgICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICAgIGJlbmc6ICJbXHUwOUU2LVx1MDlFRl0iLAogICAgICBkZXZhOiAiW1x1MDk2Ni1cdTA5NkZdIiwKICAgICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgICBndWpyOiAiW1x1MEFFNi1cdTBBRUZdIiwKICAgICAgaGFuaWRlYzogIlvjgId85LiAfOS6jHzkuIl85ZubfOS6lHzlha185LiDfOWFq3zkuZ1dIiwKICAgICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICAgIGtuZGE6ICJbXHUwQ0U2LVx1MENFRl0iLAogICAgICBsYW9vOiAiW1x1MEVEMC1cdTBFRDldIiwKICAgICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICAgIG1seW06ICJbXHUwRDY2LVx1MEQ2Rl0iLAogICAgICBtb25nOiAiW1x1MTgxMC1cdTE4MTldIiwKICAgICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICAgIG9yeWE6ICJbXHUwQjY2LVx1MEI2Rl0iLAogICAgICB0YW1sZGVjOiAiW1x1MEJFNi1cdTBCRUZdIiwKICAgICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICAgIHRoYWk6ICJbXHUwRTUwLVx1MEU1OV0iLAogICAgICB0aWJ0OiAiW1x1MEYyMC1cdTBGMjldIiwKICAgICAgbGF0bjogIlxcZCIKICAgIH07CiAgICB2YXIgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgICBhcmFiOiBbMTYzMiwgMTY0MV0sCiAgICAgIGFyYWJleHQ6IFsxNzc2LCAxNzg1XSwKICAgICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgICBiZW5nOiBbMjUzNCwgMjU0M10sCiAgICAgIGRldmE6IFsyNDA2LCAyNDE1XSwKICAgICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgICBndWpyOiBbMjc5MCwgMjc5OV0sCiAgICAgIGtobXI6IFs2MTEyLCA2MTIxXSwKICAgICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgICBsYW9vOiBbMzc5MiwgMzgwMV0sCiAgICAgIGxpbWI6IFs2NDcwLCA2NDc5XSwKICAgICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgICBtb25nOiBbNjE2MCwgNjE2OV0sCiAgICAgIG15bXI6IFs0MTYwLCA0MTY5XSwKICAgICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgICB0YW1sZGVjOiBbMzA0NiwgMzA1NV0sCiAgICAgIHRlbHU6IFszMTc0LCAzMTgzXSwKICAgICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgICB0aWJ0OiBbMzg3MiwgMzg4MV0KICAgIH07CiAgICB2YXIgaGFuaWRlY0NoYXJzID0gbnVtYmVyaW5nU3lzdGVtcy5oYW5pZGVjLnJlcGxhY2UoL1tcW3xcXV0vZywgIiIpLnNwbGl0KCIiKTsKICAgIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgICB2YXIgdmFsdWUgPSBwYXJzZUludChzdHIsIDEwKTsKCiAgICAgIGlmIChpc05hTih2YWx1ZSkpIHsKICAgICAgICB2YWx1ZSA9ICIiOwoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTsKCiAgICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgICB2YWx1ZSArPSBoYW5pZGVjQ2hhcnMuaW5kZXhPZihzdHJbaV0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG51bWJlcmluZ1N5c3RlbXNVVEYxNikgewogICAgICAgICAgICAgIHZhciBfbnVtYmVyaW5nU3lzdGVtc1VURiA9IG51bWJlcmluZ1N5c3RlbXNVVEYxNltrZXldLAogICAgICAgICAgICAgICAgICBtaW4gPSBfbnVtYmVyaW5nU3lzdGVtc1VURlswXSwKICAgICAgICAgICAgICAgICAgbWF4ID0gX251bWJlcmluZ1N5c3RlbXNVVEZbMV07CgogICAgICAgICAgICAgIGlmIChjb2RlID49IG1pbiAmJiBjb2RlIDw9IG1heCkgewogICAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gZGlnaXRSZWdleChfcmVmLCBhcHBlbmQpIHsKICAgICAgdmFyIG51bWJlcmluZ1N5c3RlbSA9IF9yZWYubnVtYmVyaW5nU3lzdGVtOwoKICAgICAgaWYgKGFwcGVuZCA9PT0gdm9pZCAwKSB7CiAgICAgICAgYXBwZW5kID0gIiI7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgUmVnRXhwKCIiICsgbnVtYmVyaW5nU3lzdGVtc1tudW1iZXJpbmdTeXN0ZW0gfHwgImxhdG4iXSArIGFwcGVuZCk7CiAgICB9CgogICAgdmFyIE1JU1NJTkdfRlRQID0gIm1pc3NpbmcgSW50bC5EYXRlVGltZUZvcm1hdC5mb3JtYXRUb1BhcnRzIHN1cHBvcnQiOwoKICAgIGZ1bmN0aW9uIGludFVuaXQocmVnZXgsIHBvc3QpIHsKICAgICAgaWYgKHBvc3QgPT09IHZvaWQgMCkgewogICAgICAgIHBvc3QgPSBmdW5jdGlvbiBwb3N0KGkpIHsKICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgcmVnZXg6IHJlZ2V4LAogICAgICAgIGRlc2VyOiBmdW5jdGlvbiBkZXNlcihfcmVmKSB7CiAgICAgICAgICB2YXIgcyA9IF9yZWZbMF07CiAgICAgICAgICByZXR1cm4gcG9zdChwYXJzZURpZ2l0cyhzKSk7CiAgICAgICAgfQogICAgICB9OwogICAgfQoKICAgIHZhciBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogICAgdmFyIHNwYWNlT3JOQlNQID0gIiggfCIgKyBOQlNQICsgIikiOwogICAgdmFyIHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgICBmdW5jdGlvbiBmaXhMaXN0UmVnZXgocykgewogICAgICAvLyBtYWtlIGRvdHMgb3B0aW9uYWwgYW5kIGFsc28gbWFrZSB0aGVtIGxpdGVyYWwKICAgICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgICByZXR1cm4gcy5yZXBsYWNlKC9cLi9nLCAiXFwuPyIpLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIHNwYWNlT3JOQlNQKTsKICAgIH0KCiAgICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICAgIHJldHVybiBzLnJlcGxhY2UoL1wuL2csICIiKSAvLyBpZ25vcmUgZG90cyB0aGF0IHdlcmUgbWFkZSBvcHRpb25hbAogICAgICAucmVwbGFjZShzcGFjZU9yTkJTUFJlZ0V4cCwgIiAiKSAvLyBpbnRlcmNoYW5nZSBzcGFjZSBhbmQgbmJzcAogICAgICAudG9Mb3dlckNhc2UoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVPZihzdHJpbmdzLCBzdGFydEluZGV4KSB7CiAgICAgIGlmIChzdHJpbmdzID09PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgICAgZGVzZXI6IGZ1bmN0aW9uIGRlc2VyKF9yZWYyKSB7CiAgICAgICAgICAgIHZhciBzID0gX3JlZjJbMF07CiAgICAgICAgICAgIHJldHVybiBzdHJpbmdzLmZpbmRJbmRleChmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgIHJldHVybiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSA9PT0gc3RyaXBJbnNlbnNpdGl2aXRpZXMoaSk7CiAgICAgICAgICAgIH0pICsgc3RhcnRJbmRleDsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICByZWdleDogcmVnZXgsCiAgICAgICAgZGVzZXI6IGZ1bmN0aW9uIGRlc2VyKF9yZWYzKSB7CiAgICAgICAgICB2YXIgaCA9IF9yZWYzWzFdLAogICAgICAgICAgICAgIG0gPSBfcmVmM1syXTsKICAgICAgICAgIHJldHVybiBzaWduZWRPZmZzZXQoaCwgbSk7CiAgICAgICAgfSwKICAgICAgICBncm91cHM6IGdyb3VwcwogICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHNpbXBsZShyZWdleCkgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiByZWdleCwKICAgICAgICBkZXNlcjogZnVuY3Rpb24gZGVzZXIoX3JlZjQpIHsKICAgICAgICAgIHZhciBzID0gX3JlZjRbMF07CiAgICAgICAgICByZXR1cm4gczsKICAgICAgICB9CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gZXNjYXBlVG9rZW4odmFsdWUpIHsKICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1tcLVxbXF17fSgpKis/LixcXFxeJHwjXHNdL2csICJcXCQmIik7CiAgICB9CgogICAgZnVuY3Rpb24gdW5pdEZvclRva2VuKHRva2VuLCBsb2MpIHsKICAgICAgdmFyIG9uZSA9IGRpZ2l0UmVnZXgobG9jKSwKICAgICAgICAgIHR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezJ9IiksCiAgICAgICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgICAgICBmb3VyID0gZGlnaXRSZWdleChsb2MsICJ7NH0iKSwKICAgICAgICAgIHNpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezZ9IiksCiAgICAgICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgICAgIG9uZVRvVGhyZWUgPSBkaWdpdFJlZ2V4KGxvYywgInsxLDN9IiksCiAgICAgICAgICBvbmVUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezEsNn0iKSwKICAgICAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgICAgIHR3b1RvRm91ciA9IGRpZ2l0UmVnZXgobG9jLCAiezIsNH0iKSwKICAgICAgICAgIGZvdXJUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezQsNn0iKSwKICAgICAgICAgIGxpdGVyYWwgPSBmdW5jdGlvbiBsaXRlcmFsKHQpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLAogICAgICAgICAgZGVzZXI6IGZ1bmN0aW9uIGRlc2VyKF9yZWY1KSB7CiAgICAgICAgICAgIHZhciBzID0gX3JlZjVbMF07CiAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgfSwKICAgICAgICAgIGxpdGVyYWw6IHRydWUKICAgICAgICB9OwogICAgICB9LAogICAgICAgICAgdW5pdGF0ZSA9IGZ1bmN0aW9uIHVuaXRhdGUodCkgewogICAgICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgICAgICByZXR1cm4gbGl0ZXJhbCh0KTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAodC52YWwpIHsKICAgICAgICAgIC8vIGVyYQogICAgICAgICAgY2FzZSAiRyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcygic2hvcnQiLCBmYWxzZSksIDApOwoKICAgICAgICAgIGNhc2UgIkdHIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5lcmFzKCJsb25nIiwgZmFsc2UpLCAwKTsKICAgICAgICAgIC8vIHllYXJzCgogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKCiAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwoKICAgICAgICAgIGNhc2UgInl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTsKCiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CgogICAgICAgICAgY2FzZSAieXl5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTsKICAgICAgICAgIC8vIG1vbnRocwoKICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgIk1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CgogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwoKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKCiAgICAgICAgICBjYXNlICJMTEwiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLm1vbnRocygic2hvcnQiLCBmYWxzZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSwgZmFsc2UpLCAxKTsKICAgICAgICAgIC8vIGRhdGVzCgogICAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwoKICAgICAgICAgIGNhc2UgIm8iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTsKCiAgICAgICAgICBjYXNlICJvb28iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICAvLyB0aW1lCgogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAiaGgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAibW0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJxcSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CgogICAgICAgICAgY2FzZSAicyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CgogICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwoKICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTsKCiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgLy8gbWVyaWRpZW0KCiAgICAgICAgICBjYXNlICJhIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7CiAgICAgICAgICAvLyB3ZWVrWWVhciAoaykKCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CgogICAgICAgICAgY2FzZSAia2siOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTsKICAgICAgICAgIC8vIHdlZWtOdW1iZXIgKFcpCgogICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwoKICAgICAgICAgIGNhc2UgIkUiOgogICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CgogICAgICAgICAgY2FzZSAiRUVFIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygic2hvcnQiLCBmYWxzZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJFRUVFIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygibG9uZyIsIGZhbHNlLCBmYWxzZSksIDEpOwoKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJjY2NjIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygibG9uZyIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQoKICAgICAgICAgIGNhc2UgIloiOgogICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICByZXR1cm4gb2Zmc2V0KG5ldyBSZWdFeHAoIihbKy1dIiArIG9uZU9yVHdvLnNvdXJjZSArICIpKD86OigiICsgdHdvLnNvdXJjZSArICIpKT8iKSwgMik7CgogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKCIoWystXSIgKyBvbmVPclR3by5zb3VyY2UgKyAiKSgiICsgdHdvLnNvdXJjZSArICIpPyIpLCAyKTsKICAgICAgICAgIC8vIHdlIGRvbid0IHN1cHBvcnQgWlpaWiAoUFNUKSBvciBaWlpaWiAoUGFjaWZpYyBTdGFuZGFyZCBUaW1lKSBpbiBwYXJzaW5nCiAgICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55IHdheSB0byBmaWd1cmUgb3V0IHdoYXQgdGhleSBhcmUKCiAgICAgICAgICBjYXNlICJ6IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZSgvW2Etel8rLS9dezEsMjU2fT8vaSk7CgogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgdmFyIHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7CiAgICAgICAgaW52YWxpZFJlYXNvbjogTUlTU0lOR19GVFAKICAgICAgfTsKICAgICAgdW5pdC50b2tlbiA9IHRva2VuOwogICAgICByZXR1cm4gdW5pdDsKICAgIH0KCiAgICB2YXIgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICAgIHllYXI6IHsKICAgICAgICAiMi1kaWdpdCI6ICJ5eSIsCiAgICAgICAgbnVtZXJpYzogInl5eXl5IgogICAgICB9LAogICAgICBtb250aDogewogICAgICAgIG51bWVyaWM6ICJNIiwKICAgICAgICAiMi1kaWdpdCI6ICJNTSIsCiAgICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICAgIGxvbmc6ICJNTU1NIgogICAgICB9LAogICAgICBkYXk6IHsKICAgICAgICBudW1lcmljOiAiZCIsCiAgICAgICAgIjItZGlnaXQiOiAiZGQiCiAgICAgIH0sCiAgICAgIHdlZWtkYXk6IHsKICAgICAgICBzaG9ydDogIkVFRSIsCiAgICAgICAgbG9uZzogIkVFRUUiCiAgICAgIH0sCiAgICAgIGRheXBlcmlvZDogImEiLAogICAgICBkYXlQZXJpb2Q6ICJhIiwKICAgICAgaG91cjogewogICAgICAgIG51bWVyaWM6ICJoIiwKICAgICAgICAiMi1kaWdpdCI6ICJoaCIKICAgICAgfSwKICAgICAgbWludXRlOiB7CiAgICAgICAgbnVtZXJpYzogIm0iLAogICAgICAgICIyLWRpZ2l0IjogIm1tIgogICAgICB9LAogICAgICBzZWNvbmQ6IHsKICAgICAgICBudW1lcmljOiAicyIsCiAgICAgICAgIjItZGlnaXQiOiAic3MiCiAgICAgIH0KICAgIH07CgogICAgZnVuY3Rpb24gdG9rZW5Gb3JQYXJ0KHBhcnQsIGxvY2FsZSwgZm9ybWF0T3B0cykgewogICAgICB2YXIgdHlwZSA9IHBhcnQudHlwZSwKICAgICAgICAgIHZhbHVlID0gcGFydC52YWx1ZTsKCiAgICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgbGl0ZXJhbDogdHJ1ZSwKICAgICAgICAgIHZhbDogdmFsdWUKICAgICAgICB9OwogICAgICB9CgogICAgICB2YXIgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwogICAgICB2YXIgdmFsID0gcGFydFR5cGVTdHlsZVRvVG9rZW5WYWxbdHlwZV07CgogICAgICBpZiAodHlwZW9mIHZhbCA9PT0gIm9iamVjdCIpIHsKICAgICAgICB2YWwgPSB2YWxbc3R5bGVdOwogICAgICB9CgogICAgICBpZiAodmFsKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgICAgdmFsOiB2YWwKICAgICAgICB9OwogICAgICB9CgogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1aWxkUmVnZXgodW5pdHMpIHsKICAgICAgdmFyIHJlID0gdW5pdHMubWFwKGZ1bmN0aW9uICh1KSB7CiAgICAgICAgcmV0dXJuIHUucmVnZXg7CiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAoZiwgcikgewogICAgICAgIHJldHVybiBmICsgIigiICsgci5zb3VyY2UgKyAiKSI7CiAgICAgIH0sICIiKTsKICAgICAgcmV0dXJuIFsiXiIgKyByZSArICIkIiwgdW5pdHNdOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgICAgdmFyIG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgICBpZiAobWF0Y2hlcykgewogICAgICAgIHZhciBhbGwgPSB7fTsKICAgICAgICB2YXIgbWF0Y2hJbmRleCA9IDE7CgogICAgICAgIGZvciAodmFyIGkgaW4gaGFuZGxlcnMpIHsKICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShoYW5kbGVycywgaSkpIHsKICAgICAgICAgICAgdmFyIGggPSBoYW5kbGVyc1tpXSwKICAgICAgICAgICAgICAgIGdyb3VwcyA9IGguZ3JvdXBzID8gaC5ncm91cHMgKyAxIDogMTsKCiAgICAgICAgICAgIGlmICghaC5saXRlcmFsICYmIGgudG9rZW4pIHsKICAgICAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW21hdGNoZXMsIGFsbF07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIFttYXRjaGVzLCB7fV07CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpIHsKICAgICAgdmFyIHRvRmllbGQgPSBmdW5jdGlvbiB0b0ZpZWxkKHRva2VuKSB7CiAgICAgICAgc3dpdGNoICh0b2tlbikgewogICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwoKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gInNlY29uZCI7CgogICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgIHJldHVybiAibWludXRlIjsKCiAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgICByZXR1cm4gImhvdXIiOwoKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gImRheSI7CgogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CgogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuICJtb250aCI7CgogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiAieWVhciI7CgogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuICJ3ZWVrZGF5IjsKCiAgICAgICAgICBjYXNlICJXIjoKICAgICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKCiAgICAgICAgICBjYXNlICJrIjoKICAgICAgICAgICAgcmV0dXJuICJ3ZWVrWWVhciI7CgogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiAicXVhcnRlciI7CgogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgdmFyIHpvbmU7CgogICAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgICB6b25lID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZShtYXRjaGVzLlopOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgICAgem9uZSA9IElBTkFab25lLmNyZWF0ZShtYXRjaGVzLnopOwogICAgICB9IGVsc2UgewogICAgICAgIHpvbmUgPSBudWxsOwogICAgICB9CgogICAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgICBtYXRjaGVzLk0gPSAobWF0Y2hlcy5xIC0gMSkgKiAzICsgMTsKICAgICAgfQoKICAgICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgICAgaWYgKG1hdGNoZXMuaCA8IDEyICYmIG1hdGNoZXMuYSA9PT0gMSkgewogICAgICAgICAgbWF0Y2hlcy5oICs9IDEyOwogICAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICAgIG1hdGNoZXMuaCA9IDA7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAobWF0Y2hlcy5HID09PSAwICYmIG1hdGNoZXMueSkgewogICAgICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7CiAgICAgIH0KCiAgICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy51KSkgewogICAgICAgIG1hdGNoZXMuUyA9IHBhcnNlTWlsbGlzKG1hdGNoZXMudSk7CiAgICAgIH0KCiAgICAgIHZhciB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKGZ1bmN0aW9uIChyLCBrKSB7CiAgICAgICAgdmFyIGYgPSB0b0ZpZWxkKGspOwoKICAgICAgICBpZiAoZikgewogICAgICAgICAgcltmXSA9IG1hdGNoZXNba107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcjsKICAgICAgfSwge30pOwogICAgICByZXR1cm4gW3ZhbHMsIHpvbmVdOwogICAgfQoKICAgIHZhciBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICAgIGZ1bmN0aW9uIGdldER1bW15RGF0ZVRpbWUoKSB7CiAgICAgIGlmICghZHVtbXlEYXRlVGltZUNhY2hlKSB7CiAgICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgICAgfQoKICAgICAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTsKICAgIH0KCiAgICBmdW5jdGlvbiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odG9rZW4sIGxvY2FsZSkgewogICAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfQoKICAgICAgdmFyIGZvcm1hdE9wdHMgPSBGb3JtYXR0ZXIubWFjcm9Ub2tlblRvRm9ybWF0T3B0cyh0b2tlbi52YWwpOwoKICAgICAgaWYgKCFmb3JtYXRPcHRzKSB7CiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICB9CgogICAgICB2YXIgZm9ybWF0dGVyID0gRm9ybWF0dGVyLmNyZWF0ZShsb2NhbGUsIGZvcm1hdE9wdHMpOwogICAgICB2YXIgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0RGF0ZVRpbWVQYXJ0cyhnZXREdW1teURhdGVUaW1lKCkpOwogICAgICB2YXIgdG9rZW5zID0gcGFydHMubWFwKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgcmV0dXJuIHRva2VuRm9yUGFydChwLCBsb2NhbGUsIGZvcm1hdE9wdHMpOwogICAgICB9KTsKCiAgICAgIGlmICh0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfQoKICAgICAgcmV0dXJuIHRva2VuczsKICAgIH0KCiAgICBmdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkgewogICAgICB2YXIgX0FycmF5JHByb3RvdHlwZTsKCiAgICAgIHJldHVybiAoX0FycmF5JHByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZSkuY29uY2F0LmFwcGx5KF9BcnJheSRwcm90b3R5cGUsIHRva2Vucy5tYXAoZnVuY3Rpb24gKHQpIHsKICAgICAgICByZXR1cm4gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHQsIGxvY2FsZSk7CiAgICAgIH0pKTsKICAgIH0KICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKCiAgICBmdW5jdGlvbiBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHsKICAgICAgdmFyIHRva2VucyA9IGV4cGFuZE1hY3JvVG9rZW5zKEZvcm1hdHRlci5wYXJzZUZvcm1hdChmb3JtYXQpLCBsb2NhbGUpLAogICAgICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgcmV0dXJuIHVuaXRGb3JUb2tlbih0LCBsb2NhbGUpOwogICAgICB9KSwKICAgICAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZChmdW5jdGlvbiAodCkgewogICAgICAgIHJldHVybiB0LmludmFsaWRSZWFzb247CiAgICAgIH0pOwoKICAgICAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGlucHV0OiBpbnB1dCwKICAgICAgICAgIHRva2VuczogdG9rZW5zLAogICAgICAgICAgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbgogICAgICAgIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIF9idWlsZFJlZ2V4ID0gYnVpbGRSZWdleCh1bml0cyksCiAgICAgICAgICAgIHJlZ2V4U3RyaW5nID0gX2J1aWxkUmVnZXhbMF0sCiAgICAgICAgICAgIGhhbmRsZXJzID0gX2J1aWxkUmVnZXhbMV0sCiAgICAgICAgICAgIHJlZ2V4ID0gUmVnRXhwKHJlZ2V4U3RyaW5nLCAiaSIpLAogICAgICAgICAgICBfbWF0Y2ggPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICAgICAgcmF3TWF0Y2hlcyA9IF9tYXRjaFswXSwKICAgICAgICAgICAgbWF0Y2hlcyA9IF9tYXRjaFsxXSwKICAgICAgICAgICAgX3JlZjYgPSBtYXRjaGVzID8gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSA6IFtudWxsLCBudWxsXSwKICAgICAgICAgICAgcmVzdWx0ID0gX3JlZjZbMF0sCiAgICAgICAgICAgIHpvbmUgPSBfcmVmNlsxXTsKCiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KG1hdGNoZXMsICJhIikgJiYgaGFzT3duUHJvcGVydHkobWF0Y2hlcywgIkgiKSkgewogICAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKCJDYW4ndCBpbmNsdWRlIG1lcmlkaWVtIHdoZW4gc3BlY2lmeWluZyAyNC1ob3VyIGZvcm1hdCIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGlucHV0OiBpbnB1dCwKICAgICAgICAgIHRva2VuczogdG9rZW5zLAogICAgICAgICAgcmVnZXg6IHJlZ2V4LAogICAgICAgICAgcmF3TWF0Y2hlczogcmF3TWF0Y2hlcywKICAgICAgICAgIG1hdGNoZXM6IG1hdGNoZXMsCiAgICAgICAgICByZXN1bHQ6IHJlc3VsdCwKICAgICAgICAgIHpvbmU6IHpvbmUKICAgICAgICB9OwogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICAgIHZhciBfZXhwbGFpbkZyb21Ub2tlbnMgPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpLAogICAgICAgICAgcmVzdWx0ID0gX2V4cGxhaW5Gcm9tVG9rZW5zLnJlc3VsdCwKICAgICAgICAgIHpvbmUgPSBfZXhwbGFpbkZyb21Ub2tlbnMuem9uZSwKICAgICAgICAgIGludmFsaWRSZWFzb24gPSBfZXhwbGFpbkZyb21Ub2tlbnMuaW52YWxpZFJlYXNvbjsKCiAgICAgIHJldHVybiBbcmVzdWx0LCB6b25lLCBpbnZhbGlkUmVhc29uXTsKICAgIH0KCiAgICB2YXIgbm9uTGVhcExhZGRlciA9IFswLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNF0sCiAgICAgICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogICAgZnVuY3Rpb24gdW5pdE91dE9mUmFuZ2UodW5pdCwgdmFsdWUpIHsKICAgICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bml0IG91dCBvZiByYW5nZSIsICJ5b3Ugc3BlY2lmaWVkICIgKyB2YWx1ZSArICIgKG9mIHR5cGUgIiArIHR5cGVvZiB2YWx1ZSArICIpIGFzIGEgIiArIHVuaXQgKyAiLCB3aGljaCBpcyBpbnZhbGlkIik7CiAgICB9CgogICAgZnVuY3Rpb24gZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBkYXkpIHsKICAgICAgdmFyIGpzID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKS5nZXRVVENEYXkoKTsKICAgICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogICAgfQoKICAgIGZ1bmN0aW9uIGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpIHsKICAgICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgICB9CgogICAgZnVuY3Rpb24gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKSB7CiAgICAgIHZhciB0YWJsZSA9IGlzTGVhcFllYXIoeWVhcikgPyBsZWFwTGFkZGVyIDogbm9uTGVhcExhZGRlciwKICAgICAgICAgIG1vbnRoMCA9IHRhYmxlLmZpbmRJbmRleChmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpIDwgb3JkaW5hbDsKICAgICAgfSksCiAgICAgICAgICBkYXkgPSBvcmRpbmFsIC0gdGFibGVbbW9udGgwXTsKICAgICAgcmV0dXJuIHsKICAgICAgICBtb250aDogbW9udGgwICsgMSwKICAgICAgICBkYXk6IGRheQogICAgICB9OwogICAgfQogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIGZ1bmN0aW9uIGdyZWdvcmlhblRvV2VlayhncmVnT2JqKSB7CiAgICAgIHZhciB5ZWFyID0gZ3JlZ09iai55ZWFyLAogICAgICAgICAgbW9udGggPSBncmVnT2JqLm1vbnRoLAogICAgICAgICAgZGF5ID0gZ3JlZ09iai5kYXksCiAgICAgICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgICAgICB3ZWVrZGF5ID0gZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBkYXkpOwogICAgICB2YXIgd2Vla051bWJlciA9IE1hdGguZmxvb3IoKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyksCiAgICAgICAgICB3ZWVrWWVhcjsKCiAgICAgIGlmICh3ZWVrTnVtYmVyIDwgMSkgewogICAgICAgIHdlZWtZZWFyID0geWVhciAtIDE7CiAgICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICAgIH0gZWxzZSBpZiAod2Vla051bWJlciA+IHdlZWtzSW5XZWVrWWVhcih5ZWFyKSkgewogICAgICAgIHdlZWtZZWFyID0geWVhciArIDE7CiAgICAgICAgd2Vla051bWJlciA9IDE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2Vla1llYXIgPSB5ZWFyOwogICAgICB9CgogICAgICByZXR1cm4gX2V4dGVuZHMoewogICAgICAgIHdlZWtZZWFyOiB3ZWVrWWVhciwKICAgICAgICB3ZWVrTnVtYmVyOiB3ZWVrTnVtYmVyLAogICAgICAgIHdlZWtkYXk6IHdlZWtkYXkKICAgICAgfSwgdGltZU9iamVjdChncmVnT2JqKSk7CiAgICB9CiAgICBmdW5jdGlvbiB3ZWVrVG9HcmVnb3JpYW4od2Vla0RhdGEpIHsKICAgICAgdmFyIHdlZWtZZWFyID0gd2Vla0RhdGEud2Vla1llYXIsCiAgICAgICAgICB3ZWVrTnVtYmVyID0gd2Vla0RhdGEud2Vla051bWJlciwKICAgICAgICAgIHdlZWtkYXkgPSB3ZWVrRGF0YS53ZWVrZGF5LAogICAgICAgICAgd2Vla2RheU9mSmFuNCA9IGRheU9mV2Vlayh3ZWVrWWVhciwgMSwgNCksCiAgICAgICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CiAgICAgIHZhciBvcmRpbmFsID0gd2Vla051bWJlciAqIDcgKyB3ZWVrZGF5IC0gd2Vla2RheU9mSmFuNCAtIDMsCiAgICAgICAgICB5ZWFyOwoKICAgICAgaWYgKG9yZGluYWwgPCAxKSB7CiAgICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgICBvcmRpbmFsICs9IGRheXNJblllYXIoeWVhcik7CiAgICAgIH0gZWxzZSBpZiAob3JkaW5hbCA+IHllYXJJbkRheXMpIHsKICAgICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICAgIG9yZGluYWwgLT0gZGF5c0luWWVhcih3ZWVrWWVhcik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgICB9CgogICAgICB2YXIgX3VuY29tcHV0ZU9yZGluYWwgPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpLAogICAgICAgICAgbW9udGggPSBfdW5jb21wdXRlT3JkaW5hbC5tb250aCwKICAgICAgICAgIGRheSA9IF91bmNvbXB1dGVPcmRpbmFsLmRheTsKCiAgICAgIHJldHVybiBfZXh0ZW5kcyh7CiAgICAgICAgeWVhcjogeWVhciwKICAgICAgICBtb250aDogbW9udGgsCiAgICAgICAgZGF5OiBkYXkKICAgICAgfSwgdGltZU9iamVjdCh3ZWVrRGF0YSkpOwogICAgfQogICAgZnVuY3Rpb24gZ3JlZ29yaWFuVG9PcmRpbmFsKGdyZWdEYXRhKSB7CiAgICAgIHZhciB5ZWFyID0gZ3JlZ0RhdGEueWVhciwKICAgICAgICAgIG1vbnRoID0gZ3JlZ0RhdGEubW9udGgsCiAgICAgICAgICBkYXkgPSBncmVnRGF0YS5kYXk7CiAgICAgIHZhciBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICAgIHJldHVybiBfZXh0ZW5kcyh7CiAgICAgICAgeWVhcjogeWVhciwKICAgICAgICBvcmRpbmFsOiBvcmRpbmFsCiAgICAgIH0sIHRpbWVPYmplY3QoZ3JlZ0RhdGEpKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9yZGluYWxUb0dyZWdvcmlhbihvcmRpbmFsRGF0YSkgewogICAgICB2YXIgeWVhciA9IG9yZGluYWxEYXRhLnllYXIsCiAgICAgICAgICBvcmRpbmFsID0gb3JkaW5hbERhdGEub3JkaW5hbDsKCiAgICAgIHZhciBfdW5jb21wdXRlT3JkaW5hbDIgPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpLAogICAgICAgICAgbW9udGggPSBfdW5jb21wdXRlT3JkaW5hbDIubW9udGgsCiAgICAgICAgICBkYXkgPSBfdW5jb21wdXRlT3JkaW5hbDIuZGF5OwoKICAgICAgcmV0dXJuIF9leHRlbmRzKHsKICAgICAgICB5ZWFyOiB5ZWFyLAogICAgICAgIG1vbnRoOiBtb250aCwKICAgICAgICBkYXk6IGRheQogICAgICB9LCB0aW1lT2JqZWN0KG9yZGluYWxEYXRhKSk7CiAgICB9CiAgICBmdW5jdGlvbiBoYXNJbnZhbGlkV2Vla0RhdGEob2JqKSB7CiAgICAgIHZhciB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLndlZWtZZWFyKSwKICAgICAgICAgIHZhbGlkV2VlayA9IGludGVnZXJCZXR3ZWVuKG9iai53ZWVrTnVtYmVyLCAxLCB3ZWVrc0luV2Vla1llYXIob2JqLndlZWtZZWFyKSksCiAgICAgICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgICBpZiAoIXZhbGlkWWVhcikgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla1llYXIiLCBvYmoud2Vla1llYXIpOwogICAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIndlZWsiLCBvYmoud2Vlayk7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkV2Vla2RheSkgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZ1bmN0aW9uIGhhc0ludmFsaWRPcmRpbmFsRGF0YShvYmopIHsKICAgICAgdmFyIHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoueWVhciksCiAgICAgICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoInllYXIiLCBvYmoueWVhcik7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgib3JkaW5hbCIsIG9iai5vcmRpbmFsKTsKICAgICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZ1bmN0aW9uIGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG9iaikgewogICAgICB2YXIgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai55ZWFyKSwKICAgICAgICAgIHZhbGlkTW9udGggPSBpbnRlZ2VyQmV0d2VlbihvYmoubW9udGgsIDEsIDEyKSwKICAgICAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoInllYXIiLCBvYmoueWVhcik7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1vbnRoIiwgb2JqLm1vbnRoKTsKICAgICAgfSBlbHNlIGlmICghdmFsaWREYXkpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZnVuY3Rpb24gaGFzSW52YWxpZFRpbWVEYXRhKG9iaikgewogICAgICB2YXIgaG91ciA9IG9iai5ob3VyLAogICAgICAgICAgbWludXRlID0gb2JqLm1pbnV0ZSwKICAgICAgICAgIHNlY29uZCA9IG9iai5zZWNvbmQsCiAgICAgICAgICBtaWxsaXNlY29uZCA9IG9iai5taWxsaXNlY29uZDsKICAgICAgdmFyIHZhbGlkSG91ciA9IGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fCBob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwLAogICAgICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgICAgIHZhbGlkU2Vjb25kID0gaW50ZWdlckJldHdlZW4oc2Vjb25kLCAwLCA1OSksCiAgICAgICAgICB2YWxpZE1pbGxpc2Vjb25kID0gaW50ZWdlckJldHdlZW4obWlsbGlzZWNvbmQsIDAsIDk5OSk7CgogICAgICBpZiAoIXZhbGlkSG91cikgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgICB9IGVsc2UgaWYgKCF2YWxpZE1pbnV0ZSkgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgibWludXRlIiwgbWludXRlKTsKICAgICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoInNlY29uZCIsIHNlY29uZCk7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkTWlsbGlzZWNvbmQpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHZhciBJTlZBTElEID0gIkludmFsaWQgRGF0ZVRpbWUiOwogICAgdmFyIE1BWF9EQVRFID0gOC42NGUxNTsKCiAgICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgICByZXR1cm4gbmV3IEludmFsaWQoInVuc3VwcG9ydGVkIHpvbmUiLCAidGhlIHpvbmUgXCIiICsgem9uZS5uYW1lICsgIlwiIGlzIG5vdCBzdXBwb3J0ZWQiKTsKICAgIH0gLy8gd2UgY2FjaGUgd2VlayBkYXRhIG9uIHRoZSBEVCBvYmplY3QgYW5kIHRoaXMgaW50ZXJtZWRpYXRlcyB0aGUgY2FjaGUKCgogICAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgICBpZiAoZHQud2Vla0RhdGEgPT09IG51bGwpIHsKICAgICAgICBkdC53ZWVrRGF0YSA9IGdyZWdvcmlhblRvV2VlayhkdC5jKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGR0LndlZWtEYXRhOwogICAgfSAvLyBjbG9uZSByZWFsbHkgbWVhbnMsICJtYWtlIGEgbmV3IG9iamVjdCB3aXRoIHRoZXNlIG1vZGlmaWNhdGlvbnMiLiBhbGwgInNldHRlcnMiIHJlYWxseSB1c2UgdGhpcwogICAgLy8gdG8gY3JlYXRlIGEgbmV3IG9iamVjdCB3aGlsZSBvbmx5IGNoYW5naW5nIHNvbWUgb2YgdGhlIHByb3BlcnRpZXMKCgogICAgZnVuY3Rpb24gY2xvbmUoaW5zdCwgYWx0cykgewogICAgICB2YXIgY3VycmVudCA9IHsKICAgICAgICB0czogaW5zdC50cywKICAgICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgICAgYzogaW5zdC5jLAogICAgICAgIG86IGluc3QubywKICAgICAgICBsb2M6IGluc3QubG9jLAogICAgICAgIGludmFsaWQ6IGluc3QuaW52YWxpZAogICAgICB9OwogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKF9leHRlbmRzKHt9LCBjdXJyZW50LCBhbHRzLCB7CiAgICAgICAgb2xkOiBjdXJyZW50CiAgICAgIH0pKTsKICAgIH0gLy8gZmluZCB0aGUgcmlnaHQgb2Zmc2V0IGEgZ2l2ZW4gbG9jYWwgdGltZS4gVGhlIG8gaW5wdXQgaXMgb3VyIGd1ZXNzLCB3aGljaCBkZXRlcm1pbmVzIHdoaWNoCiAgICAvLyBvZmZzZXQgd2UnbGwgcGljayBpbiBhbWJpZ3VvdXMgY2FzZXMgKGUuZy4gdGhlcmUgYXJlIHR3byAzIEFNcyBiL2MgRmFsbGJhY2sgRFNUKQoKCiAgICBmdW5jdGlvbiBmaXhPZmZzZXQobG9jYWxUUywgbywgdHopIHsKICAgICAgLy8gT3VyIFVUQyB0aW1lIGlzIGp1c3QgYSBndWVzcyBiZWNhdXNlIG91ciBvZmZzZXQgaXMganVzdCBhIGd1ZXNzCiAgICAgIHZhciB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOyAvLyBUZXN0IHdoZXRoZXIgdGhlIHpvbmUgbWF0Y2hlcyB0aGUgb2Zmc2V0IGZvciB0aGlzIHRzCgogICAgICB2YXIgbzIgPSB0ei5vZmZzZXQodXRjR3Vlc3MpOyAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKCiAgICAgIGlmIChvID09PSBvMikgewogICAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG9dOwogICAgICB9IC8vIElmIG5vdCwgY2hhbmdlIHRoZSB0cyBieSB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgb2Zmc2V0CgoKICAgICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7IC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZQoKICAgICAgdmFyIG8zID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAgIGlmIChvMiA9PT0gbzMpIHsKICAgICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvMl07CiAgICAgIH0gLy8gSWYgaXQncyBkaWZmZXJlbnQsIHdlJ3JlIGluIGEgaG9sZSB0aW1lLiBUaGUgb2Zmc2V0IGhhcyBjaGFuZ2VkLCBidXQgdGhlIHdlIGRvbid0IGFkanVzdCB0aGUgdGltZQoKCiAgICAgIHJldHVybiBbbG9jYWxUUyAtIE1hdGgubWluKG8yLCBvMykgKiA2MCAqIDEwMDAsIE1hdGgubWF4KG8yLCBvMyldOwogICAgfSAvLyBjb252ZXJ0IGFuIGVwb2NoIHRpbWVzdGFtcCBpbnRvIGEgY2FsZW5kYXIgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG9mZnNldAoKCiAgICBmdW5jdGlvbiB0c1RvT2JqKHRzLCBvZmZzZXQpIHsKICAgICAgdHMgKz0gb2Zmc2V0ICogNjAgKiAxMDAwOwogICAgICB2YXIgZCA9IG5ldyBEYXRlKHRzKTsKICAgICAgcmV0dXJuIHsKICAgICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgICAgbW9udGg6IGQuZ2V0VVRDTW9udGgoKSArIDEsCiAgICAgICAgZGF5OiBkLmdldFVUQ0RhdGUoKSwKICAgICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgICAgbWludXRlOiBkLmdldFVUQ01pbnV0ZXMoKSwKICAgICAgICBzZWNvbmQ6IGQuZ2V0VVRDU2Vjb25kcygpLAogICAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpCiAgICAgIH07CiAgICB9IC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKCgogICAgZnVuY3Rpb24gb2JqVG9UUyhvYmosIG9mZnNldCwgem9uZSkgewogICAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogICAgfSAvLyBjcmVhdGUgYSBuZXcgRFQgaW5zdGFuY2UgYnkgYWRkaW5nIGEgZHVyYXRpb24sIGFkanVzdGluZyBmb3IgRFNUcwoKCiAgICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgICB2YXIgb1ByZSA9IGluc3QubywKICAgICAgICAgIHllYXIgPSBpbnN0LmMueWVhciArIE1hdGgudHJ1bmMoZHVyLnllYXJzKSwKICAgICAgICAgIG1vbnRoID0gaW5zdC5jLm1vbnRoICsgTWF0aC50cnVuYyhkdXIubW9udGhzKSArIE1hdGgudHJ1bmMoZHVyLnF1YXJ0ZXJzKSAqIDMsCiAgICAgICAgICBjID0gX2V4dGVuZHMoe30sIGluc3QuYywgewogICAgICAgIHllYXI6IHllYXIsCiAgICAgICAgbW9udGg6IG1vbnRoLAogICAgICAgIGRheTogTWF0aC5taW4oaW5zdC5jLmRheSwgZGF5c0luTW9udGgoeWVhciwgbW9udGgpKSArIE1hdGgudHJ1bmMoZHVyLmRheXMpICsgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNwogICAgICB9KSwKICAgICAgICAgIG1pbGxpc1RvQWRkID0gRHVyYXRpb24uZnJvbU9iamVjdCh7CiAgICAgICAgeWVhcnM6IGR1ci55ZWFycyAtIE1hdGgudHJ1bmMoZHVyLnllYXJzKSwKICAgICAgICBxdWFydGVyczogZHVyLnF1YXJ0ZXJzIC0gTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpLAogICAgICAgIG1vbnRoczogZHVyLm1vbnRocyAtIE1hdGgudHJ1bmMoZHVyLm1vbnRocyksCiAgICAgICAgd2Vla3M6IGR1ci53ZWVrcyAtIE1hdGgudHJ1bmMoZHVyLndlZWtzKSwKICAgICAgICBkYXlzOiBkdXIuZGF5cyAtIE1hdGgudHJ1bmMoZHVyLmRheXMpLAogICAgICAgIGhvdXJzOiBkdXIuaG91cnMsCiAgICAgICAgbWludXRlczogZHVyLm1pbnV0ZXMsCiAgICAgICAgc2Vjb25kczogZHVyLnNlY29uZHMsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkdXIubWlsbGlzZWNvbmRzCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgICAgIGxvY2FsVFMgPSBvYmpUb0xvY2FsVFMoYyk7CgogICAgICB2YXIgX2ZpeE9mZnNldCA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpLAogICAgICAgICAgdHMgPSBfZml4T2Zmc2V0WzBdLAogICAgICAgICAgbyA9IF9maXhPZmZzZXRbMV07CgogICAgICBpZiAobWlsbGlzVG9BZGQgIT09IDApIHsKICAgICAgICB0cyArPSBtaWxsaXNUb0FkZDsgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQoKICAgICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgdHM6IHRzLAogICAgICAgIG86IG8KICAgICAgfTsKICAgIH0gLy8gaGVscGVyIHVzZWZ1bCBpbiB0dXJuaW5nIHRoZSByZXN1bHRzIG9mIHBhcnNpbmcgaW50byByZWFsIGRhdGVzCiAgICAvLyBieSBoYW5kbGluZyB0aGUgem9uZSBvcHRpb25zCgoKICAgIGZ1bmN0aW9uIHBhcnNlRGF0YVRvRGF0ZVRpbWUocGFyc2VkLCBwYXJzZWRab25lLCBvcHRzLCBmb3JtYXQsIHRleHQpIHsKICAgICAgdmFyIHNldFpvbmUgPSBvcHRzLnNldFpvbmUsCiAgICAgICAgICB6b25lID0gb3B0cy56b25lOwoKICAgICAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkgewogICAgICAgIHZhciBpbnRlcnByZXRhdGlvblpvbmUgPSBwYXJzZWRab25lIHx8IHpvbmUsCiAgICAgICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgX2V4dGVuZHMoe30sIG9wdHMsIHsKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZQogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQobmV3IEludmFsaWQoInVucGFyc2FibGUiLCAidGhlIGlucHV0IFwiIiArIHRleHQgKyAiXCIgY2FuJ3QgYmUgcGFyc2VkIGFzICIgKyBmb3JtYXQpKTsKICAgICAgfQogICAgfSAvLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXIKICAgIC8vIGhlbHBzIGhhbmRsZSB0aGUgZGV0YWlscwoKCiAgICBmdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daKSB7CiAgICAgIGlmIChhbGxvd1ogPT09IHZvaWQgMCkgewogICAgICAgIGFsbG93WiA9IHRydWU7CiAgICAgIH0KCiAgICAgIHJldHVybiBkdC5pc1ZhbGlkID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgYWxsb3daOiBhbGxvd1osCiAgICAgICAgZm9yY2VTaW1wbGU6IHRydWUKICAgICAgfSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmb3JtYXQpIDogbnVsbDsKICAgIH0gLy8gdGVjaG5pY2FsIHRpbWUgZm9ybWF0cyAoZS5nLiB0aGUgdGltZSBwYXJ0IG9mIElTTyA4NjAxKSwgdGFrZSBzb21lIG9wdGlvbnMKICAgIC8vIGFuZCB0aGlzIGNvbW1vbml6ZXMgdGhlaXIgaGFuZGxpbmcKCgogICAgZnVuY3Rpb24gdG9UZWNoVGltZUZvcm1hdChkdCwgX3JlZikgewogICAgICB2YXIgX3JlZiRzdXBwcmVzc1NlY29uZHMgPSBfcmVmLnN1cHByZXNzU2Vjb25kcywKICAgICAgICAgIHN1cHByZXNzU2Vjb25kcyA9IF9yZWYkc3VwcHJlc3NTZWNvbmRzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgX3JlZiRzdXBwcmVzc01pbGxpc2VjID0gX3JlZi5zdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gX3JlZiRzdXBwcmVzc01pbGxpc2VjID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkc3VwcHJlc3NNaWxsaXNlYywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQgPSBfcmVmLmluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBfcmVmJGluY2x1ZGVQcmVmaXggPSBfcmVmLmluY2x1ZGVQcmVmaXgsCiAgICAgICAgICBpbmNsdWRlUHJlZml4ID0gX3JlZiRpbmNsdWRlUHJlZml4ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkaW5jbHVkZVByZWZpeCwKICAgICAgICAgIF9yZWYkaW5jbHVkZVpvbmUgPSBfcmVmLmluY2x1ZGVab25lLAogICAgICAgICAgaW5jbHVkZVpvbmUgPSBfcmVmJGluY2x1ZGVab25lID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkaW5jbHVkZVpvbmUsCiAgICAgICAgICBfcmVmJHNwYWNlWm9uZSA9IF9yZWYuc3BhY2Vab25lLAogICAgICAgICAgc3BhY2Vab25lID0gX3JlZiRzcGFjZVpvbmUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRzcGFjZVpvbmUsCiAgICAgICAgICBfcmVmJGZvcm1hdCA9IF9yZWYuZm9ybWF0LAogICAgICAgICAgZm9ybWF0ID0gX3JlZiRmb3JtYXQgPT09IHZvaWQgMCA/ICJleHRlbmRlZCIgOiBfcmVmJGZvcm1hdDsKICAgICAgdmFyIGZtdCA9IGZvcm1hdCA9PT0gImJhc2ljIiA/ICJISG1tIiA6ICJISDptbSI7CgogICAgICBpZiAoIXN1cHByZXNzU2Vjb25kcyB8fCBkdC5zZWNvbmQgIT09IDAgfHwgZHQubWlsbGlzZWNvbmQgIT09IDApIHsKICAgICAgICBmbXQgKz0gZm9ybWF0ID09PSAiYmFzaWMiID8gInNzIiA6ICI6c3MiOwoKICAgICAgICBpZiAoIXN1cHByZXNzTWlsbGlzZWNvbmRzIHx8IGR0Lm1pbGxpc2Vjb25kICE9PSAwKSB7CiAgICAgICAgICBmbXQgKz0gIi5TU1MiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKChpbmNsdWRlWm9uZSB8fCBpbmNsdWRlT2Zmc2V0KSAmJiBzcGFjZVpvbmUpIHsKICAgICAgICBmbXQgKz0gIiAiOwogICAgICB9CgogICAgICBpZiAoaW5jbHVkZVpvbmUpIHsKICAgICAgICBmbXQgKz0gInoiOwogICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICBmbXQgKz0gZm9ybWF0ID09PSAiYmFzaWMiID8gIlpaWiIgOiAiWloiOwogICAgICB9CgogICAgICB2YXIgc3RyID0gdG9UZWNoRm9ybWF0KGR0LCBmbXQpOwoKICAgICAgaWYgKGluY2x1ZGVQcmVmaXgpIHsKICAgICAgICBzdHIgPSAiVCIgKyBzdHI7CiAgICAgIH0KCiAgICAgIHJldHVybiBzdHI7CiAgICB9IC8vIGRlZmF1bHRzIGZvciB1bnNwZWNpZmllZCB1bml0cyBpbiB0aGUgc3VwcG9ydGVkIGNhbGVuZGFycwoKCiAgICB2YXIgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMAogICAgfSwKICAgICAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMAogICAgfSwKICAgICAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMAogICAgfTsgLy8gVW5pdHMgaW4gdGhlIHN1cHBvcnRlZCBjYWxlbmRhcnMsIHNvcnRlZCBieSBiaWduZXNzCgogICAgdmFyIG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICAgICAgb3JkZXJlZFdlZWtVbml0cyA9IFsid2Vla1llYXIiLCAid2Vla051bWJlciIsICJ3ZWVrZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdLAogICAgICAgIG9yZGVyZWRPcmRpbmFsVW5pdHMgPSBbInllYXIiLCAib3JkaW5hbCIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWlsbGlzZWNvbmQiXTsgLy8gc3RhbmRhcmRpemUgY2FzZSBhbmQgcGx1cmFsaXR5IGluIHVuaXRzCgogICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIHZhciBub3JtYWxpemVkID0gewogICAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgICB5ZWFyczogInllYXIiLAogICAgICAgIG1vbnRoOiAibW9udGgiLAogICAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgICBkYXk6ICJkYXkiLAogICAgICAgIGRheXM6ICJkYXkiLAogICAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgICBob3VyczogImhvdXIiLAogICAgICAgIG1pbnV0ZTogIm1pbnV0ZSIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgICAgcXVhcnRlcjogInF1YXJ0ZXIiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlciIsCiAgICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgICBzZWNvbmRzOiAic2Vjb25kIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kIiwKICAgICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgICAgd2Vla2RheTogIndlZWtkYXkiLAogICAgICAgIHdlZWtkYXlzOiAid2Vla2RheSIsCiAgICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICAgIHdlZWtzbnVtYmVyOiAid2Vla051bWJlciIsCiAgICAgICAgd2Vla251bWJlcnM6ICJ3ZWVrTnVtYmVyIiwKICAgICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgICB3ZWVreWVhcnM6ICJ3ZWVrWWVhciIsCiAgICAgICAgb3JkaW5hbDogIm9yZGluYWwiCiAgICAgIH1bdW5pdC50b0xvd2VyQ2FzZSgpXTsKICAgICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9IC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogICAgLy8gYnV0IGRvZXNuJ3QgZG8gYW55IHZhbGlkYXRpb24sIG1ha2VzIGEgYnVuY2ggb2YgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCB1bml0cwogICAgLy8gYXJlIHByZXNlbnQsIGFuZCBzbyBvbi4KICAgIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogICAgLy8gYnV0IGRvZXNuJ3QgZG8gYW55IHZhbGlkYXRpb24sIG1ha2VzIGEgYnVuY2ggb2YgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCB1bml0cwogICAgLy8gYXJlIHByZXNlbnQsIGFuZCBzbyBvbi4KCgogICAgZnVuY3Rpb24gcXVpY2tEVChvYmosIG9wdHMpIHsKICAgICAgdmFyIHpvbmUgPSBub3JtYWxpemVab25lKG9wdHMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpLAogICAgICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgICB0c05vdyA9IFNldHRpbmdzLm5vdygpOwogICAgICB2YXIgdHMsIG87IC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKCiAgICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJMb29zZShvcmRlcmVkVW5pdHMpLCBfc3RlcDsgIShfc3RlcCA9IF9pdGVyYXRvcigpKS5kb25lOykgewogICAgICAgICAgdmFyIHUgPSBfc3RlcC52YWx1ZTsKCiAgICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgICBvYmpbdV0gPSBkZWZhdWx0VW5pdFZhbHVlc1t1XTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKCiAgICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9mZnNldFByb3ZpcyA9IHpvbmUub2Zmc2V0KHRzTm93KTsKCiAgICAgICAgdmFyIF9vYmpUb1RTID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CgogICAgICAgIHRzID0gX29ialRvVFNbMF07CiAgICAgICAgbyA9IF9vYmpUb1RTWzFdOwogICAgICB9IGVsc2UgewogICAgICAgIHRzID0gdHNOb3c7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgIHRzOiB0cywKICAgICAgICB6b25lOiB6b25lLAogICAgICAgIGxvYzogbG9jLAogICAgICAgIG86IG8KICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgICAgdmFyIHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgICAgIGZvcm1hdCA9IGZ1bmN0aW9uIGZvcm1hdChjLCB1bml0KSB7CiAgICAgICAgYyA9IHJvdW5kVG8oYywgcm91bmQgfHwgb3B0cy5jYWxlbmRhcnkgPyAwIDogMiwgdHJ1ZSk7CiAgICAgICAgdmFyIGZvcm1hdHRlciA9IGVuZC5sb2MuY2xvbmUob3B0cykucmVsRm9ybWF0dGVyKG9wdHMpOwogICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGMsIHVuaXQpOwogICAgICB9LAogICAgICAgICAgZGlmZmVyID0gZnVuY3Rpb24gZGlmZmVyKHVuaXQpIHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgaWYgKG9wdHMudW5pdCkgewogICAgICAgIHJldHVybiBmb3JtYXQoZGlmZmVyKG9wdHMudW5pdCksIG9wdHMudW5pdCk7CiAgICAgIH0KCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG9wdHMudW5pdHMpLCBfc3RlcDI7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMigpKS5kb25lOykgewogICAgICAgIHZhciB1bml0ID0gX3N0ZXAyLnZhbHVlOwogICAgICAgIHZhciBjb3VudCA9IGRpZmZlcih1bml0KTsKCiAgICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgICByZXR1cm4gZm9ybWF0KGNvdW50LCB1bml0KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgICB9CgogICAgZnVuY3Rpb24gbGFzdE9wdHMoYXJnTGlzdCkgewogICAgICB2YXIgb3B0cyA9IHt9LAogICAgICAgICAgYXJnczsKCiAgICAgIGlmIChhcmdMaXN0Lmxlbmd0aCA+IDAgJiYgdHlwZW9mIGFyZ0xpc3RbYXJnTGlzdC5sZW5ndGggLSAxXSA9PT0gIm9iamVjdCIpIHsKICAgICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpLnNsaWNlKDAsIGFyZ0xpc3QubGVuZ3RoIC0gMSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICAgIH0KCiAgICAgIHJldHVybiBbb3B0cywgYXJnc107CiAgICB9CiAgICAvKioKICAgICAqIEEgRGF0ZVRpbWUgaXMgYW4gaW1tdXRhYmxlIGRhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIGRhdGUgYW5kIHRpbWUgYW5kIGFjY29tcGFueWluZyBtZXRob2RzLiBJdCBjb250YWlucyBjbGFzcyBhbmQgaW5zdGFuY2UgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4KICAgICAqCiAgICAgKiBBIERhdGVUaW1lIGNvbXByaXNlcyBvZjoKICAgICAqICogQSB0aW1lc3RhbXAuIEVhY2ggRGF0ZVRpbWUgaW5zdGFuY2UgcmVmZXJzIHRvIGEgc3BlY2lmaWMgbWlsbGlzZWNvbmQgb2YgdGhlIFVuaXggZXBvY2guCiAgICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgICAqICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHRoYXQgZWZmZWN0IGhvdyBvdXRwdXQgc3RyaW5ncyBhcmUgZm9ybWF0dGVkLCBzdWNoIGFzIGBsb2NhbGVgLCBgbnVtYmVyaW5nU3lzdGVtYCwgYW5kIGBvdXRwdXRDYWxlbmRhcmAuCiAgICAgKgogICAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgICAqCiAgICAgKiAqICoqQ3JlYXRpb24qKjogVG8gY3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBpdHMgY29tcG9uZW50cywgdXNlIG9uZSBvZiBpdHMgZmFjdG9yeSBjbGFzcyBtZXRob2RzOiB7QGxpbmsgRGF0ZVRpbWUubG9jYWx9LCB7QGxpbmsgRGF0ZVRpbWUudXRjfSwgYW5kIChtb3N0IGZsZXhpYmx5KSB7QGxpbmsgRGF0ZVRpbWUuZnJvbU9iamVjdH0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIHN0YW5kYXJkIHN0cmluZyBmb3JtYXQsIHVzZSB7QGxpbmsgRGF0ZVRpbWUuZnJvbUlTT30sIHtAbGluayBEYXRlVGltZS5mcm9tSFRUUH0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUuZnJvbVJGQzI4MjJ9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBjdXN0b20gc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tRm9ybWF0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgbmF0aXZlIEpTIGRhdGUsIHVzZSB7QGxpbmsgRGF0ZVRpbWUuZnJvbUpTRGF0ZX0uCiAgICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjZGF5fSwge0BsaW5rIERhdGVUaW1lI2hvdXJ9LCB7QGxpbmsgRGF0ZVRpbWUjbWludXRlfSwge0BsaW5rIERhdGVUaW1lI3NlY29uZH0sIHtAbGluayBEYXRlVGltZSNtaWxsaXNlY29uZH0gYWNjZXNzb3JzLgogICAgICogKiAqKldlZWsgY2FsZW5kYXIqKjogRm9yIElTTyB3ZWVrIGNhbGVuZGFyIGF0dHJpYnV0ZXMsIHNlZSB0aGUge0BsaW5rIERhdGVUaW1lI3dlZWtZZWFyfSwge0BsaW5rIERhdGVUaW1lI3dlZWtOdW1iZXJ9LCBhbmQge0BsaW5rIERhdGVUaW1lI3dlZWtkYXl9IGFjY2Vzc29ycy4KICAgICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAgICogKiAqKlRyYW5zZm9ybWF0aW9uKio6IFRvIHRyYW5zZm9ybSB0aGUgRGF0ZVRpbWUgaW50byBvdGhlciBEYXRlVGltZXMsIHVzZSB7QGxpbmsgRGF0ZVRpbWUjc2V0fSwge0BsaW5rIERhdGVUaW1lI3JlY29uZmlndXJlfSwge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9LCB7QGxpbmsgRGF0ZVRpbWUjc2V0TG9jYWxlfSwge0BsaW5rIERhdGVUaW1lLnBsdXN9LCB7QGxpbmsgRGF0ZVRpbWUjbWludXN9LCB7QGxpbmsgRGF0ZVRpbWUjZW5kT2Z9LCB7QGxpbmsgRGF0ZVRpbWUjc3RhcnRPZn0sIHtAbGluayBEYXRlVGltZSN0b1VUQ30sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0uCiAgICAgKiAqICoqT3V0cHV0Kio6IFRvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjdG9SZWxhdGl2ZX0sIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlQ2FsZW5kYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjdG9KU09OfSwge0BsaW5rIERhdGVUaW1lI3RvSVNPfSwge0BsaW5rIERhdGVUaW1lI3RvSFRUUH0sIHtAbGluayBEYXRlVGltZSN0b09iamVjdH0sIHtAbGluayBEYXRlVGltZSN0b1JGQzI4MjJ9LCB7QGxpbmsgRGF0ZVRpbWUjdG9TdHJpbmd9LCB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgRGF0ZVRpbWUjdG9Gb3JtYXR9LCB7QGxpbmsgRGF0ZVRpbWUjdG9NaWxsaXN9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjdG9KU0RhdGV9LgogICAgICoKICAgICAqIFRoZXJlJ3MgcGxlbnR5IG90aGVycyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiwgdGltZSB6b25lcywgYWx0ZXJuYXRpdmUgY2FsZW5kYXJzLCB2YWxpZGl0eSwgYW5kIHNvIG9uLCBzZWUgdGhlIGV4dGVybmFsIGRvY3VtZW50YXRpb24uCiAgICAgKi8KCgogICAgdmFyIERhdGVUaW1lID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgZnVuY3Rpb24gRGF0ZVRpbWUoY29uZmlnKSB7CiAgICAgICAgdmFyIHpvbmUgPSBjb25maWcuem9uZSB8fCBTZXR0aW5ncy5kZWZhdWx0Wm9uZTsKICAgICAgICB2YXIgaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IChOdW1iZXIuaXNOYU4oY29uZmlnLnRzKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsKSB8fCAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwogICAgICAgIHZhciBjID0gbnVsbCwKICAgICAgICAgICAgbyA9IG51bGw7CgogICAgICAgIGlmICghaW52YWxpZCkgewogICAgICAgICAgdmFyIHVuY2hhbmdlZCA9IGNvbmZpZy5vbGQgJiYgY29uZmlnLm9sZC50cyA9PT0gdGhpcy50cyAmJiBjb25maWcub2xkLnpvbmUuZXF1YWxzKHpvbmUpOwoKICAgICAgICAgIGlmICh1bmNoYW5nZWQpIHsKICAgICAgICAgICAgdmFyIF9yZWYyID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICAgICAgYyA9IF9yZWYyWzBdOwogICAgICAgICAgICBvID0gX3JlZjJbMV07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgICAgYyA9IHRzVG9PYmoodGhpcy50cywgb3QpOwogICAgICAgICAgICBpbnZhbGlkID0gTnVtYmVyLmlzTmFOKGMueWVhcikgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbDsKICAgICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgICAgbyA9IGludmFsaWQgPyBudWxsIDogb3Q7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKCiAgICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLmMgPSBjOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLm8gPSBvOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICAgIH0gLy8gQ09OU1RSVUNUCgogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZm9yIHRoZSBjdXJyZW50IGluc3RhbnQsIGluIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgICAqCiAgICAgICAqIFVzZSBTZXR0aW5ncyB0byBvdmVycmlkZSB0aGVzZSBkZWZhdWx0IHZhbHVlcyBpZiBuZWVkZWQuCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy9+PiBub3cgaW4gdGhlIElTTyBmb3JtYXQKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwoKCiAgICAgIERhdGVUaW1lLm5vdyA9IGZ1bmN0aW9uIG5vdygpIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHt9KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgbG9jYWwoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICAgKiBAcGFyYW0ge251bWJlcn0gW21vbnRoPTFdIC0gVGhlIG1vbnRoLCAxLWluZGV4ZWQKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZQogICAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OQogICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUpICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDAKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIHsgem9uZTogInV0YyIgfSkgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDAsIGluIFVUQwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwLCA3NjUpICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjUKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5sb2NhbCA9IGZ1bmN0aW9uIGxvY2FsKCkgewogICAgICAgIHZhciBfbGFzdE9wdHMgPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgICAgICBvcHRzID0gX2xhc3RPcHRzWzBdLAogICAgICAgICAgICBhcmdzID0gX2xhc3RPcHRzWzFdLAogICAgICAgICAgICB5ZWFyID0gYXJnc1swXSwKICAgICAgICAgICAgbW9udGggPSBhcmdzWzFdLAogICAgICAgICAgICBkYXkgPSBhcmdzWzJdLAogICAgICAgICAgICBob3VyID0gYXJnc1szXSwKICAgICAgICAgICAgbWludXRlID0gYXJnc1s0XSwKICAgICAgICAgICAgc2Vjb25kID0gYXJnc1s1XSwKICAgICAgICAgICAgbWlsbGlzZWNvbmQgPSBhcmdzWzZdOwoKICAgICAgICByZXR1cm4gcXVpY2tEVCh7CiAgICAgICAgICB5ZWFyOiB5ZWFyLAogICAgICAgICAgbW9udGg6IG1vbnRoLAogICAgICAgICAgZGF5OiBkYXksCiAgICAgICAgICBob3VyOiBob3VyLAogICAgICAgICAgbWludXRlOiBtaW51dGUsCiAgICAgICAgICBzZWNvbmQ6IHNlY29uZCwKICAgICAgICAgIG1pbGxpc2Vjb25kOiBtaWxsaXNlY29uZAogICAgICAgIH0sIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBpbiBVVEMKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgdXRjKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGgKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtob3VyPTBdIC0gVGhlIGhvdXIgb2YgdGhlIGRheSwgaW4gMjQtaG91ciB0aW1lCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2Vjb25kPTBdIC0gVGhlIHNlY29uZCBvZiB0aGUgbWludXRlLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTkKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFttaWxsaXNlY29uZD0wXSAtIFRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgOTk5CiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFoKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDBaCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFoKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCB7IGxvY2FsZTogImZyIiB9KSAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBaIHdpdGggYSBGcmVuY2ggbG9jYWxlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFoKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS51dGMgPSBmdW5jdGlvbiB1dGMoKSB7CiAgICAgICAgdmFyIF9sYXN0T3B0czIgPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgICAgICBvcHRzID0gX2xhc3RPcHRzMlswXSwKICAgICAgICAgICAgYXJncyA9IF9sYXN0T3B0czJbMV0sCiAgICAgICAgICAgIHllYXIgPSBhcmdzWzBdLAogICAgICAgICAgICBtb250aCA9IGFyZ3NbMV0sCiAgICAgICAgICAgIGRheSA9IGFyZ3NbMl0sCiAgICAgICAgICAgIGhvdXIgPSBhcmdzWzNdLAogICAgICAgICAgICBtaW51dGUgPSBhcmdzWzRdLAogICAgICAgICAgICBzZWNvbmQgPSBhcmdzWzVdLAogICAgICAgICAgICBtaWxsaXNlY29uZCA9IGFyZ3NbNl07CgogICAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgICByZXR1cm4gcXVpY2tEVCh7CiAgICAgICAgICB5ZWFyOiB5ZWFyLAogICAgICAgICAgbW9udGg6IG1vbnRoLAogICAgICAgICAgZGF5OiBkYXksCiAgICAgICAgICBob3VyOiBob3VyLAogICAgICAgICAgbWludXRlOiBtaW51dGUsCiAgICAgICAgICBzZWNvbmQ6IHNlY29uZCwKICAgICAgICAgIG1pbGxpc2Vjb25kOiBtaWxsaXNlY29uZAogICAgICAgIH0sIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICAgKiBAcGFyYW0ge0RhdGV9IGRhdGUgLSBhIEphdmFTY3JpcHQgRGF0ZSBvYmplY3QKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tSlNEYXRlID0gZnVuY3Rpb24gZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zKSB7CiAgICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIHRzID0gaXNEYXRlKGRhdGUpID8gZGF0ZS52YWx1ZU9mKCkgOiBOYU47CgogICAgICAgIGlmIChOdW1iZXIuaXNOYU4odHMpKSB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CgogICAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lVG9Vc2UpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHRzLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRpb25zKQogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggKG1lYW5pbmcgc2luY2UgMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICAgKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAgVVRDCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuZnJvbU1pbGxpcyA9IGZ1bmN0aW9uIGZyb21NaWxsaXMobWlsbGlzZWNvbmRzLCBvcHRpb25zKSB7CiAgICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc051bWJlcihtaWxsaXNlY29uZHMpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoImZyb21NaWxsaXMgcmVxdWlyZXMgYSBudW1lcmljYWwgaW5wdXQsIGJ1dCByZWNlaXZlZCBhICIgKyB0eXBlb2YgbWlsbGlzZWNvbmRzICsgIiB3aXRoIHZhbHVlICIgKyBtaWxsaXNlY29uZHMpOwogICAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgICAvLyB0aGlzIGlzbid0IHBlcmZlY3QgYmVjYXVzZSBiZWNhdXNlIHdlIGNhbiBzdGlsbCBlbmQgdXAgb3V0IG9mIHJhbmdlIGJlY2F1c2Ugb2YgYWRkaXRpb25hbCBzaGlmdGluZywgYnV0IGl0J3MgYSBzdGFydAogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoIlRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7CiAgICAgICAgICAgIHRzOiBtaWxsaXNlY29uZHMsCiAgICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucykKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21TZWNvbmRzID0gZnVuY3Rpb24gZnJvbVNlY29uZHMoc2Vjb25kcywgb3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNOdW1iZXIoc2Vjb25kcykpIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigiZnJvbVNlY29uZHMgcmVxdWlyZXMgYSBudW1lcmljYWwgaW5wdXQiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7CiAgICAgICAgICAgIHRzOiBzZWNvbmRzICogMTAwMCwKICAgICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRpb25zKQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXInIGFuZCAnaG91cicgd2l0aCByZWFzb25hYmxlIGRlZmF1bHRzLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFyIC0gYSB5ZWFyLCBzdWNoIGFzIDE5ODcKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aCAtIGEgbW9udGgsIDEtMTIKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5vcmRpbmFsIC0gZGF5IG9mIHRoZSB5ZWFyLCAxLTM2NSBvciAzNjYKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrWWVhciAtIGFuIElTTyB3ZWVrIHllYXIKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrZGF5IC0gYW4gSVNPIHdlZWtkYXksIDEtNywgd2hlcmUgMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91ciAtIGhvdXIgb2YgdGhlIGRheSwgMC0yMwogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZCAtIHNlY29uZCBvZiB0aGUgbWludXRlLCAwLTU5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmQgLSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCAwLTk5OQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGludGVycHJldCB0aGUgbnVtYmVycyBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgem9uZS4gQ2FuIHRha2UgYW55IHZhbHVlIHRha2VuIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzZXRab25lKCkKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIsIG1vbnRoOiA1LCBkYXk6IDI1fSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSkgLy9+PiB0b2RheSBhdCAxMDoyNjowNgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICd1dGMnIH0pLAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnQW1lcmljYS9OZXdfWW9yaycgfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHdlZWtZZWFyOiAyMDE2LCB3ZWVrTnVtYmVyOiAyLCB3ZWVrZGF5OiAzIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzIwMTYtMDEtMTMnCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuZnJvbU9iamVjdCA9IGZ1bmN0aW9uIGZyb21PYmplY3Qob2JqLCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgb2JqID0gb2JqIHx8IHt9OwogICAgICAgIHZhciB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdHMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwoKICAgICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgdHNOb3cgPSBTZXR0aW5ncy5ub3coKSwKICAgICAgICAgICAgb2Zmc2V0UHJvdmlzID0gem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3Qob2JqLCBub3JtYWxpemVVbml0KSwKICAgICAgICAgICAgY29udGFpbnNPcmRpbmFsID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCksCiAgICAgICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgICAgIGNvbnRhaW5zR3JlZ29yID0gY29udGFpbnNHcmVnb3JZZWFyIHx8IGNvbnRhaW5zR3JlZ29yTUQsCiAgICAgICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgICAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKTsgLy8gY2FzZXM6CiAgICAgICAgLy8ganVzdCBhIHdlZWtkYXkgLT4gdGhpcyB3ZWVrJ3MgaW5zdGFuY2Ugb2YgdGhhdCB3ZWVrZGF5LCBubyB3b3JyaWVzCiAgICAgICAgLy8gKGdyZWdvcmlhbiBkYXRhIG9yIG9yZGluYWwpICsgKHdlZWtZZWFyIG9yIHdlZWtOdW1iZXIpIC0+IGVycm9yCiAgICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAgIC8vIG90aGVyd2lzZSBqdXN0IHVzZSB3ZWVrcyBvciBvcmRpbmFscyBvciBncmVnb3JpYW4sIGRlcGVuZGluZyBvbiB3aGF0J3Mgc3BlY2lmaWVkCgogICAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgICAgfQoKICAgICAgICB2YXIgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgbm9ybWFsaXplZC53ZWVrZGF5ICYmICFjb250YWluc0dyZWdvcjsgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKCiAgICAgICAgdmFyIHVuaXRzLAogICAgICAgICAgICBkZWZhdWx0VmFsdWVzLAogICAgICAgICAgICBvYmpOb3cgPSB0c1RvT2JqKHRzTm93LCBvZmZzZXRQcm92aXMpOwoKICAgICAgICBpZiAodXNlV2Vla0RhdGEpIHsKICAgICAgICAgIHVuaXRzID0gb3JkZXJlZFdlZWtVbml0czsKICAgICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgICBvYmpOb3cgPSBncmVnb3JpYW5Ub1dlZWsob2JqTm93KTsKICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRPcmRpbmFsVW5pdFZhbHVlczsKICAgICAgICAgIG9iak5vdyA9IGdyZWdvcmlhblRvT3JkaW5hbChvYmpOb3cpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB1bml0cyA9IG9yZGVyZWRVbml0czsKICAgICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0VW5pdFZhbHVlczsKICAgICAgICB9IC8vIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBzdHVmZgoKCiAgICAgICAgdmFyIGZvdW5kRmlyc3QgPSBmYWxzZTsKCiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyTG9vc2UodW5pdHMpLCBfc3RlcDM7ICEoX3N0ZXAzID0gX2l0ZXJhdG9yMygpKS5kb25lOykgewogICAgICAgICAgdmFyIHUgPSBfc3RlcDMudmFsdWU7CiAgICAgICAgICB2YXIgdiA9IG5vcm1hbGl6ZWRbdV07CgogICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgICBmb3VuZEZpcnN0ID0gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRGaXJzdCkgewogICAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5vcm1hbGl6ZWRbdV0gPSBvYmpOb3dbdV07CiAgICAgICAgICB9CiAgICAgICAgfSAvLyBtYWtlIHN1cmUgdGhlIHZhbHVlcyB3ZSBoYXZlIGFyZSBpbiByYW5nZQoKCiAgICAgICAgdmFyIGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhID8gaGFzSW52YWxpZFdlZWtEYXRhKG5vcm1hbGl6ZWQpIDogY29udGFpbnNPcmRpbmFsID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpIDogaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEobm9ybWFsaXplZCksCiAgICAgICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgICBpZiAoaW52YWxpZCkgewogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgICAgfSAvLyBjb21wdXRlIHRoZSBhY3R1YWwgdGltZQoKCiAgICAgICAgdmFyIGdyZWdvcmlhbiA9IHVzZVdlZWtEYXRhID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpIDogY29udGFpbnNPcmRpbmFsID8gb3JkaW5hbFRvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpIDogbm9ybWFsaXplZCwKICAgICAgICAgICAgX29ialRvVFMyID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICAgICAgdHNGaW5hbCA9IF9vYmpUb1RTMlswXSwKICAgICAgICAgICAgb2Zmc2V0RmluYWwgPSBfb2JqVG9UUzJbMV0sCiAgICAgICAgICAgIGluc3QgPSBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHRzRmluYWwsCiAgICAgICAgICB6b25lOiB6b25lVG9Vc2UsCiAgICAgICAgICBvOiBvZmZzZXRGaW5hbCwKICAgICAgICAgIGxvYzogbG9jCiAgICAgICAgfSk7IC8vIGdyZWdvcmlhbiBkYXRhICsgd2Vla2RheSBzZXJ2ZXMgb25seSB0byB2YWxpZGF0ZQoKCiAgICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgibWlzbWF0Y2hlZCB3ZWVrZGF5IiwgInlvdSBjYW4ndCBzcGVjaWZ5IGJvdGggYSB3ZWVrZGF5IG9mICIgKyBub3JtYWxpemVkLndlZWtkYXkgKyAiIGFuZCBhIGRhdGUgb2YgIiArIGluc3QudG9JU08oKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW5zdDsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBJU08gODYwMSBzdHJpbmcKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmUKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMrMDY6MDAnKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnLCB7em9uZTogJ3V0Yyd9KQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LVcwNS00JykKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tSVNPID0gZnVuY3Rpb24gZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9wYXJzZUlTT0RhdGUgPSBwYXJzZUlTT0RhdGUodGV4dCksCiAgICAgICAgICAgIHZhbHMgPSBfcGFyc2VJU09EYXRlWzBdLAogICAgICAgICAgICBwYXJzZWRab25lID0gX3BhcnNlSVNPRGF0ZVsxXTsKCiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIklTTyA4NjAxIiwgdGV4dCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gUkZDIDI4MjIgc3RyaW5nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmUuIFNpbmNlIHRoZSBvZmZzZXQgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi4KICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzOjEyIEdNVCcpCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCdGcmksIDI1IE5vdiAyMDE2IDEzOjIzOjEyICswNjAwJykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21SRkMyODIyID0gZnVuY3Rpb24gZnJvbVJGQzI4MjIodGV4dCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHZhciBfcGFyc2VSRkMyODIyRGF0ZSA9IHBhcnNlUkZDMjgyMkRhdGUodGV4dCksCiAgICAgICAgICAgIHZhbHMgPSBfcGFyc2VSRkMyODIyRGF0ZVswXSwKICAgICAgICAgICAgcGFyc2VkWm9uZSA9IF9wYXJzZVJGQzI4MjJEYXRlWzFdOwoKICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiUkZDIDI4MjIiLCB0ZXh0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBIVFRQIGhlYWRlciBkYXRlCiAgICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIEhUVFAgaGVhZGVyIGRhdGUKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCB0aGUgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcuIEZvciBIVFRQIGRhdGVzLCB0aGlzIGlzIGFsd2F5cyBVVEMsIHNvIHRoaXMgb3B0aW9uIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGUgYHpvbmVgIG9wdGlvbiB0byAndXRjJywgYnV0IHRoaXMgb3B0aW9uIGlzIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHNpbWlsYXIgbWV0aG9kcy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UJykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQnKQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21IVFRQID0gZnVuY3Rpb24gZnJvbUhUVFAodGV4dCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHZhciBfcGFyc2VIVFRQRGF0ZSA9IHBhcnNlSFRUUERhdGUodGV4dCksCiAgICAgICAgICAgIHZhbHMgPSBfcGFyc2VIVFRQRGF0ZVswXSwKICAgICAgICAgICAgcGFyc2VkWm9uZSA9IF9wYXJzZUhUVFBEYXRlWzFdOwoKICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiSFRUUCIsIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLiBGb3IgYSB0YWJsZSBvZiB0b2tlbnMgYW5kIHRoZWlyIGludGVycHJldGF0aW9ucywgc2VlIFtoZXJlXShodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9wYXJzaW5nP2lkPXRhYmxlLW9mLXRva2VucykuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21Gb3JtYXQgPSBmdW5jdGlvbiBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoImZyb21Gb3JtYXQgcmVxdWlyZXMgYW4gaW5wdXQgc3RyaW5nIGFuZCBhIGZvcm1hdCIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcHRzID0gb3B0cywKICAgICAgICAgICAgX29wdHMkbG9jYWxlID0gX29wdHMubG9jYWxlLAogICAgICAgICAgICBsb2NhbGUgPSBfb3B0cyRsb2NhbGUgPT09IHZvaWQgMCA/IG51bGwgOiBfb3B0cyRsb2NhbGUsCiAgICAgICAgICAgIF9vcHRzJG51bWJlcmluZ1N5c3RlbSA9IF9vcHRzLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX29wdHMkbnVtYmVyaW5nU3lzdGVtID09PSB2b2lkIDAgPyBudWxsIDogX29wdHMkbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgZGVmYXVsdFRvRU46IHRydWUKICAgICAgICB9KSwKICAgICAgICAgICAgX3BhcnNlRnJvbVRva2VucyA9IHBhcnNlRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KSwKICAgICAgICAgICAgdmFscyA9IF9wYXJzZUZyb21Ub2tlbnNbMF0sCiAgICAgICAgICAgIHBhcnNlZFpvbmUgPSBfcGFyc2VGcm9tVG9rZW5zWzFdLAogICAgICAgICAgICBpbnZhbGlkID0gX3BhcnNlRnJvbVRva2Vuc1syXTsKCiAgICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiZm9ybWF0ICIgKyBmbXQsIHRleHQpOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXQgaW5zdGVhZAogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIFNRTCBkYXRlLCB0aW1lLCBvciBkYXRldGltZQogICAgICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gYSBsb2NhbGUgc3RyaW5nIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIERhdGVUaW1lIHRvIHRoaXMgbG9jYWxlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUnKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0JykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiswNjowMCcpCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyIEFtZXJpY2EvTG9zX0FuZ2VsZXMnKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJywgeyB6b25lOiAnQW1lcmljYS9Mb3NfQW5nZWxlcycgfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMDk6MTI6MzQuMzQyJykKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tU1FMID0gZnVuY3Rpb24gZnJvbVNRTCh0ZXh0LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9wYXJzZVNRTCA9IHBhcnNlU1FMKHRleHQpLAogICAgICAgICAgICB2YWxzID0gX3BhcnNlU1FMWzBdLAogICAgICAgICAgICBwYXJzZWRab25lID0gX3BhcnNlU1FMWzFdOwoKICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiU1FMIiwgdGV4dCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBhbiBpbnZhbGlkIERhdGVUaW1lLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5pbnZhbGlkID0gZnVuY3Rpb24gaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgICAgaWYgKGV4cGxhbmF0aW9uID09PSB2b2lkIDApIHsKICAgICAgICAgIGV4cGxhbmF0aW9uID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRGF0ZVRpbWUgaXMgaW52YWxpZCIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWREYXRlVGltZUVycm9yKGludmFsaWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICAgICAgaW52YWxpZDogaW52YWxpZAogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEYXRlVGltZS4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuaXNEYXRlVGltZSA9IGZ1bmN0aW9uIGlzRGF0ZVRpbWUobykgewogICAgICAgIHJldHVybiBvICYmIG8uaXNMdXhvbkRhdGVUaW1lIHx8IGZhbHNlOwogICAgICB9IC8vIElORk8KCiAgICAgIC8qKgogICAgICAgKiBHZXQgdGhlIHZhbHVlIG9mIHVuaXQuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZScgb3IgJ2RheScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdkYXknKTsgLy89PiA0CiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIHZhciBfcHJvdG8gPSBEYXRlVGltZS5wcm90b3R5cGU7CgogICAgICBfcHJvdG8uZ2V0ID0gZnVuY3Rpb24gZ2V0KHVuaXQpIHsKICAgICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEYXRlVGltZSBpcyB2YWxpZC4gSW52YWxpZCBEYXRlVGltZXMgb2NjdXIgd2hlbjoKICAgICAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgZnJvbSBpbnZhbGlkIGNhbGVuZGFyIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSAxM3RoIG1vbnRoIG9yIEZlYnJ1YXJ5IDMwCiAgICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIFRoaXMgaXMgdXNlZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIGZvcm1hdHRpbmcgbWV0aG9kcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmcKICAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAgKi8KICAgICAgX3Byb3RvLnJlc29sdmVkTG9jYWxlT3B0aW9ucyA9IGZ1bmN0aW9uIHJlc29sdmVkTG9jYWxlT3B0aW9ucyhvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9Gb3JtYXR0ZXIkY3JlYXRlJHJlcyA9IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIG9wdHMpLnJlc29sdmVkT3B0aW9ucyh0aGlzKSwKICAgICAgICAgICAgbG9jYWxlID0gX0Zvcm1hdHRlciRjcmVhdGUkcmVzLmxvY2FsZSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX0Zvcm1hdHRlciRjcmVhdGUkcmVzLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgY2FsZW5kYXIgPSBfRm9ybWF0dGVyJGNyZWF0ZSRyZXMuY2FsZW5kYXI7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgb3V0cHV0Q2FsZW5kYXI6IGNhbGVuZGFyCiAgICAgICAgfTsKICAgICAgfSAvLyBUUkFOU0ZPUk0KCiAgICAgIC8qKgogICAgICAgKiAiU2V0IiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIFVUQy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICAgKgogICAgICAgKiBFcXVpdmFsZW50IHRvIHtAbGluayBEYXRlVGltZS5zZXRab25lfSgndXRjJykKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtvZmZzZXQ9MF0gLSBvcHRpb25hbGx5LCBhbiBvZmZzZXQgZnJvbSBVVEMgaW4gbWludXRlcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvVVRDID0gZnVuY3Rpb24gdG9VVEMob2Zmc2V0LCBvcHRzKSB7CiAgICAgICAgaWYgKG9mZnNldCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvZmZzZXQgPSAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Wm9uZShGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2Uob2Zmc2V0KSwgb3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gdGhlIGhvc3QncyBsb2NhbCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgICAqCiAgICAgICAqIEVxdWl2YWxlbnQgdG8gYHNldFpvbmUoJ2xvY2FsJylgCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvTG9jYWwgPSBmdW5jdGlvbiB0b0xvY2FsKCkgewogICAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiAiU2V0IiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIHNwZWNpZmllZCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgICAqCiAgICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lLnBsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZS50b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lLnRvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBhIHpvbmUgaWRlbnRpZmllci4gQXMgYSBzdHJpbmcsIHRoYXQgY2FuIGJlIGFueSBJQU5BIHpvbmUgc3VwcG9ydGVkIGJ5IHRoZSBob3N0IGVudmlyb25tZW50LCBvciBhIGZpeGVkLW9mZnNldCBuYW1lIG9mIHRoZSBmb3JtICdVVEMrMycsIG9yIHRoZSBzdHJpbmdzICdsb2NhbCcgb3IgJ3V0YycuIFlvdSBtYXkgYWxzbyBzdXBwbHkgYW4gaW5zdGFuY2Ugb2YgYSB7QGxpbmsgRGF0ZVRpbWUuWm9uZX0gY2xhc3MuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5zZXRab25lID0gZnVuY3Rpb24gc2V0Wm9uZSh6b25lLCBfdGVtcCkgewogICAgICAgIHZhciBfcmVmMyA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wLAogICAgICAgICAgICBfcmVmMyRrZWVwTG9jYWxUaW1lID0gX3JlZjMua2VlcExvY2FsVGltZSwKICAgICAgICAgICAga2VlcExvY2FsVGltZSA9IF9yZWYzJGtlZXBMb2NhbFRpbWUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjMka2VlcExvY2FsVGltZSwKICAgICAgICAgICAgX3JlZjMka2VlcENhbGVuZGFyVGltID0gX3JlZjMua2VlcENhbGVuZGFyVGltZSwKICAgICAgICAgICAga2VlcENhbGVuZGFyVGltZSA9IF9yZWYzJGtlZXBDYWxlbmRhclRpbSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmMyRrZWVwQ2FsZW5kYXJUaW07CgogICAgICAgIHpvbmUgPSBub3JtYWxpemVab25lKHpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTsKCiAgICAgICAgaWYgKHpvbmUuZXF1YWxzKHRoaXMuem9uZSkpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0gZWxzZSBpZiAoIXpvbmUuaXNWYWxpZCkgewogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmUpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIG5ld1RTID0gdGhpcy50czsKCiAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSB8fCBrZWVwQ2FsZW5kYXJUaW1lKSB7CiAgICAgICAgICAgIHZhciBvZmZzZXRHdWVzcyA9IHpvbmUub2Zmc2V0KHRoaXMudHMpOwogICAgICAgICAgICB2YXIgYXNPYmogPSB0aGlzLnRvT2JqZWN0KCk7CgogICAgICAgICAgICB2YXIgX29ialRvVFMzID0gb2JqVG9UUyhhc09iaiwgb2Zmc2V0R3Vlc3MsIHpvbmUpOwoKICAgICAgICAgICAgbmV3VFMgPSBfb2JqVG9UUzNbMF07CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsKICAgICAgICAgICAgdHM6IG5ld1RTLAogICAgICAgICAgICB6b25lOiB6b25lCiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3Igb3V0cHV0Q2FsZW5kYXIuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXQKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnJlY29uZmlndXJlID0gZnVuY3Rpb24gcmVjb25maWd1cmUoX3RlbXAyKSB7CiAgICAgICAgdmFyIF9yZWY0ID0gX3RlbXAyID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMiwKICAgICAgICAgICAgbG9jYWxlID0gX3JlZjQubG9jYWxlLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmNC5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIG91dHB1dENhbGVuZGFyID0gX3JlZjQub3V0cHV0Q2FsZW5kYXI7CgogICAgICAgIHZhciBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgb3V0cHV0Q2FsZW5kYXI6IG91dHB1dENhbGVuZGFyCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsKICAgICAgICAgIGxvYzogbG9jCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSBsb2NhbGUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAgICogSnVzdCBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIHJlY29uZmlndXJlKHsgbG9jYWxlIH0pCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc2V0TG9jYWxlID0gZnVuY3Rpb24gc2V0TG9jYWxlKGxvY2FsZSkgewogICAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsKICAgICAgICAgIGxvY2FsZTogbG9jYWxlCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZS5yZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZS5zZXRab25lfS4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGEgbWFwcGluZyBvZiB1bml0cyB0byBudW1iZXJzCiAgICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMTcgfSkKICAgICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICAgKiBAZXhhbXBsZSBkdC5zZXQoeyB3ZWVrZGF5OiA1IH0pCiAgICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMDUsIG9yZGluYWw6IDIzNCB9KQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5zZXQgPSBmdW5jdGlvbiBzZXQodmFsdWVzKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla051bWJlcikgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksCiAgICAgICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLAogICAgICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgICB9CgogICAgICAgIHZhciBtaXhlZDsKCiAgICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICAgIG1peGVkID0gd2Vla1RvR3JlZ29yaWFuKF9leHRlbmRzKHt9LCBncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgbm9ybWFsaXplZCkpOwogICAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCkpIHsKICAgICAgICAgIG1peGVkID0gb3JkaW5hbFRvR3JlZ29yaWFuKF9leHRlbmRzKHt9LCBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgbm9ybWFsaXplZCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBtaXhlZCA9IF9leHRlbmRzKHt9LCB0aGlzLnRvT2JqZWN0KCksIG5vcm1hbGl6ZWQpOyAvLyBpZiB3ZSBkaWRuJ3Qgc2V0IHRoZSBkYXkgYnV0IHdlIGVuZGVkIHVwIG9uIGFuIG92ZXJmbG93IGRhdGUsCiAgICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAoKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgICAgbWl4ZWQuZGF5ID0gTWF0aC5taW4oZGF5c0luTW9udGgobWl4ZWQueWVhciwgbWl4ZWQubW9udGgpLCBtaXhlZC5kYXkpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIF9vYmpUb1RTNCA9IG9ialRvVFMobWl4ZWQsIHRoaXMubywgdGhpcy56b25lKSwKICAgICAgICAgICAgdHMgPSBfb2JqVG9UUzRbMF0sCiAgICAgICAgICAgIG8gPSBfb2JqVG9UUzRbMV07CgogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7CiAgICAgICAgICB0czogdHMsCiAgICAgICAgICBvOiBvCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgICAqCiAgICAgICAqIEFkZGluZyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzIGluY3JlYXNlcyB0aGUgdGltZXN0YW1wIGJ5IHRoZSByaWdodCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLiBBZGRpbmcgZGF5cywgbW9udGhzLCBvciB5ZWFycyBzaGlmdHMgdGhlIGNhbGVuZGFyLCBhY2NvdW50aW5nIGZvciBEU1RzIGFuZCBsZWFwIHllYXJzIGFsb25nIHRoZSB3YXkuIFRodXMsIGBkdC5wbHVzKHsgaG91cnM6IDI0IH0pYCBtYXkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHRpbWUgdGhhbiBgZHQucGx1cyh7IGRheXM6IDEgfSlgIGlmIHRoZXJlJ3MgYSBEU1Qgc2hpZnQgaW4gYmV0d2Vlbi4KICAgICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBtaW51dGVzOiAxNSB9KSAvL34+IGluIDE1IG1pbnV0ZXMKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3cKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pIC8vfj4gaW4gMyBociwgMTMgbWluCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ucGx1cyA9IGZ1bmN0aW9uIHBsdXMoZHVyYXRpb24pIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIGR1ciA9IGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb24pOwogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUucGx1c30KICAgICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLm1pbnVzID0gZnVuY3Rpb24gbWludXMoZHVyYXRpb24pIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIGR1ciA9IGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb24pLm5lZ2F0ZSgpOwogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gVGhlIHVuaXQgdG8gZ28gdG8gdGhlIGJlZ2lubmluZyBvZi4gQ2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgb3IgJ21pbGxpc2Vjb25kJy4KICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCd3ZWVrJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDMtMDMnLCB3ZWVrcyBhbHdheXMgc3RhcnQgb24gTW9uZGF5cwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5zdGFydE9mID0gZnVuY3Rpb24gc3RhcnRPZih1bml0KSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciBvID0ge30sCiAgICAgICAgICAgIG5vcm1hbGl6ZWRVbml0ID0gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1bml0KTsKCiAgICAgICAgc3dpdGNoIChub3JtYWxpemVkVW5pdCkgewogICAgICAgICAgY2FzZSAieWVhcnMiOgogICAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAgIC8vIGZhbGxzIHRocm91Z2gKCiAgICAgICAgICBjYXNlICJxdWFydGVycyI6CiAgICAgICAgICBjYXNlICJtb250aHMiOgogICAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgY2FzZSAid2Vla3MiOgogICAgICAgICAgY2FzZSAiZGF5cyI6CiAgICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgY2FzZSAiaG91cnMiOgogICAgICAgICAgICBvLm1pbnV0ZSA9IDA7CiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICAgIG8uc2Vjb25kID0gMDsKICAgICAgICAgIC8vIGZhbGxzIHRocm91Z2gKCiAgICAgICAgICBjYXNlICJzZWNvbmRzIjoKICAgICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KCkKICAgICAgICB9CgogICAgICAgIGlmIChub3JtYWxpemVkVW5pdCA9PT0gIndlZWtzIikgewogICAgICAgICAgby53ZWVrZGF5ID0gMTsKICAgICAgICB9CgogICAgICAgIGlmIChub3JtYWxpemVkVW5pdCA9PT0gInF1YXJ0ZXJzIikgewogICAgICAgICAgdmFyIHEgPSBNYXRoLmNlaWwodGhpcy5tb250aCAvIDMpOwogICAgICAgICAgby5tb250aCA9IChxIC0gMSkgKiAzICsgMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLnNldChvKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgZW5kIChtZWFuaW5nIHRoZSBsYXN0IG1pbGxpc2Vjb25kKSBvZiBhIHVuaXQgb2YgdGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCdtb250aCcpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMzFUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZigneWVhcicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMTItMzFUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdkYXknKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdob3VyJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QwNTo1OTo1OS45OTktMDU6MDAnCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVuZE9mID0gZnVuY3Rpb24gZW5kT2YodW5pdCkgewogICAgICAgIHZhciBfdGhpcyRwbHVzOwoKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5wbHVzKChfdGhpcyRwbHVzID0ge30sIF90aGlzJHBsdXNbdW5pdF0gPSAxLCBfdGhpcyRwbHVzKSkuc3RhcnRPZih1bml0KS5taW51cygxKSA6IHRoaXM7CiAgICAgIH0gLy8gT1VUUFVUCgogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLgogICAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGUuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcpIC8vPT4gJzIwMTcgQXByIDIyJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCJISCAnaG91cnMgYW5kJyBtbSAnbWludXRlcyciKSAvLz0+ICcyMCBob3VycyBhbmQgNTUgbWludXRlcycKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvRm9ybWF0ID0gZnVuY3Rpb24gdG9Gb3JtYXQoZm10LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkgOiBJTlZBTElEOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAgICogVGhlIGV4YWN0IGJlaGF2aW9yIG9mIHRoaXMgbWV0aG9kIGlzIGJyb3dzZXItc3BlY2lmaWMsIGJ1dCBpbiBnZW5lcmFsIGl0IHdpbGwgcmV0dXJuIGFuIGFwcHJvcHJpYXRlIHJlcHJlc2VudGF0aW9uCiAgICAgICAqIG9mIHRoZSBEYXRlVGltZSBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLgogICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICAgKiBAcGFyYW0gZm9ybWF0T3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiA0LzIwLzIwMTcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdlbi1nYicpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gJzIwLzA0LzIwMTcnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgbG9jYWxlOiAnZW4tZ2InIH0pOyAvLz0+ICcyMC8wNC8yMDE3JwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwpOyAvLz0+ICdBcHJpbCAyMCwgMjAxNycKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+ICcxMTozMiBBTScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURVRJTUVfU0hPUlQpOyAvLz0+ICc0LzIwLzIwMTcsIDExOjMyIEFNJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodSwgQXByIDIwLCAxMToyNyBBTScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBob3VyQ3ljbGU6ICdoMjMnIH0pOyAvLz0+ICcxMTozMicKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoZm9ybWF0T3B0cywgb3B0cykgewogICAgICAgIGlmIChmb3JtYXRPcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIGZvcm1hdE9wdHMgPSBEQVRFX1NIT1JUOwogICAgICAgIH0KCiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpIDogSU5WQUxJRDsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdC9mb3JtYXRUb1BhcnRzCiAgICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlUGFydHMoKTsgLy89PiBbCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnZGF5JywgdmFsdWU6ICcyNScgfSwKICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ21vbnRoJywgdmFsdWU6ICcwNScgfSwKICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gXQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvTG9jYWxlUGFydHMgPSBmdW5jdGlvbiB0b0xvY2FsZVBhcnRzKG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKSA6IFtdOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUtMDQ6MDAnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSVNPID0gZnVuY3Rpb24gdG9JU08ob3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLnRvSVNPRGF0ZShvcHRzKSArICJUIiArIHRoaXMudG9JU09UaW1lKG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIGRhdGUgY29tcG9uZW50CiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxOTgyMDUyNScKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSVNPRGF0ZSA9IGZ1bmN0aW9uIHRvSVNPRGF0ZShfdGVtcDMpIHsKICAgICAgICB2YXIgX3JlZjUgPSBfdGVtcDMgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAzLAogICAgICAgICAgICBfcmVmNSRmb3JtYXQgPSBfcmVmNS5mb3JtYXQsCiAgICAgICAgICAgIGZvcm1hdCA9IF9yZWY1JGZvcm1hdCA9PT0gdm9pZCAwID8gImV4dGVuZGVkIiA6IF9yZWY1JGZvcm1hdDsKCiAgICAgICAgdmFyIGZtdCA9IGZvcm1hdCA9PT0gImJhc2ljIiA/ICJ5eXl5TU1kZCIgOiAieXl5eS1NTS1kZCI7CgogICAgICAgIGlmICh0aGlzLnllYXIgPiA5OTk5KSB7CiAgICAgICAgICBmbXQgPSAiKyIgKyBmbXQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIGZtdCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3Mgd2VlayBkYXRlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b0lTT1dlZWtEYXRlID0gZnVuY3Rpb24gdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsICJra2trLSdXJ1dXLWMiKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB0aW1lIGNvbXBvbmVudAogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKCkgLy89PiAnMDc6MzQ6MTkuMzYxWicKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzA3MzQxOS4zNjFaJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDA3OjM0OjE5LjM2MVonCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b0lTT1RpbWUgPSBmdW5jdGlvbiB0b0lTT1RpbWUoX3RlbXA0KSB7CiAgICAgICAgdmFyIF9yZWY2ID0gX3RlbXA0ID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wNCwKICAgICAgICAgICAgX3JlZjYkc3VwcHJlc3NNaWxsaXNlID0gX3JlZjYuc3VwcHJlc3NNaWxsaXNlY29uZHMsCiAgICAgICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gX3JlZjYkc3VwcHJlc3NNaWxsaXNlID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWY2JHN1cHByZXNzTWlsbGlzZSwKICAgICAgICAgICAgX3JlZjYkc3VwcHJlc3NTZWNvbmRzID0gX3JlZjYuc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgICBzdXBwcmVzc1NlY29uZHMgPSBfcmVmNiRzdXBwcmVzc1NlY29uZHMgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjYkc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgICBfcmVmNiRpbmNsdWRlT2Zmc2V0ID0gX3JlZjYuaW5jbHVkZU9mZnNldCwKICAgICAgICAgICAgaW5jbHVkZU9mZnNldCA9IF9yZWY2JGluY2x1ZGVPZmZzZXQgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmNiRpbmNsdWRlT2Zmc2V0LAogICAgICAgICAgICBfcmVmNiRpbmNsdWRlUHJlZml4ID0gX3JlZjYuaW5jbHVkZVByZWZpeCwKICAgICAgICAgICAgaW5jbHVkZVByZWZpeCA9IF9yZWY2JGluY2x1ZGVQcmVmaXggPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjYkaW5jbHVkZVByZWZpeCwKICAgICAgICAgICAgX3JlZjYkZm9ybWF0ID0gX3JlZjYuZm9ybWF0LAogICAgICAgICAgICBmb3JtYXQgPSBfcmVmNiRmb3JtYXQgPT09IHZvaWQgMCA/ICJleHRlbmRlZCIgOiBfcmVmNiRmb3JtYXQ7CgogICAgICAgIHJldHVybiB0b1RlY2hUaW1lRm9ybWF0KHRoaXMsIHsKICAgICAgICAgIHN1cHByZXNzU2Vjb25kczogc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IHN1cHByZXNzTWlsbGlzZWNvbmRzLAogICAgICAgICAgaW5jbHVkZU9mZnNldDogaW5jbHVkZU9mZnNldCwKICAgICAgICAgIGluY2x1ZGVQcmVmaXg6IGluY2x1ZGVQcmVmaXgsCiAgICAgICAgICBmb3JtYXQ6IGZvcm1hdAogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUsIGFsd2F5cyBpbiBVVEMKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwICswMDAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCAtMDQwMCcKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvUkZDMjgyMiA9IGZ1bmN0aW9uIHRvUkZDMjgyMigpIHsKICAgICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzIFpaWiIsIGZhbHNlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLgogICAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSBzdHJpbmcgY29uZm9ybXMgdG8gUkZDIDExMjMuCiAgICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMywgMTkpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMTk6MDA6MDAgR01UJwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9IVFRQID0gZnVuY3Rpb24gdG9IVFRQKCkgewogICAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcy50b1VUQygpLCAiRUVFLCBkZCBMTEwgeXl5eSBISDptbTpzcyAnR01UJyIpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1NRTERhdGUgPSBmdW5jdGlvbiB0b1NRTERhdGUoKSB7CiAgICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAieXl5eS1NTS1kZCIpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgVGltZQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcwNToxNToxNi4zNDUnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSBBbWVyaWNhL05ld19Zb3JrJwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9TUUxUaW1lID0gZnVuY3Rpb24gdG9TUUxUaW1lKF90ZW1wNSkgewogICAgICAgIHZhciBfcmVmNyA9IF90ZW1wNSA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDUsCiAgICAgICAgICAgIF9yZWY3JGluY2x1ZGVPZmZzZXQgPSBfcmVmNy5pbmNsdWRlT2Zmc2V0LAogICAgICAgICAgICBpbmNsdWRlT2Zmc2V0ID0gX3JlZjckaW5jbHVkZU9mZnNldCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWY3JGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICAgIF9yZWY3JGluY2x1ZGVab25lID0gX3JlZjcuaW5jbHVkZVpvbmUsCiAgICAgICAgICAgIGluY2x1ZGVab25lID0gX3JlZjckaW5jbHVkZVpvbmUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjckaW5jbHVkZVpvbmU7CgogICAgICAgIHJldHVybiB0b1RlY2hUaW1lRm9ybWF0KHRoaXMsIHsKICAgICAgICAgIGluY2x1ZGVPZmZzZXQ6IGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBpbmNsdWRlWm9uZTogaW5jbHVkZVpvbmUsCiAgICAgICAgICBzcGFjZVpvbmU6IHRydWUKICAgICAgICB9KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC4KICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgWicKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IHRydWUgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgQW1lcmljYS9OZXdfWW9yaycKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvU1FMID0gZnVuY3Rpb24gdG9TUUwob3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLnRvU1FMRGF0ZSgpICsgIiAiICsgdGhpcy50b1NRTFRpbWUob3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS4gQWxpYXMgb2Yge0BsaW5rIERhdGVUaW1lLnRvTWlsbGlzfQogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udmFsdWVPZiA9IGZ1bmN0aW9uIHZhbHVlT2YoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b01pbGxpcyA9IGZ1bmN0aW9uIHRvTWlsbGlzKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1NlY29uZHMgPSBmdW5jdGlvbiB0b1NlY29uZHMoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkgewogICAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge0RhdGV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9CU09OID0gZnVuY3Rpb24gdG9CU09OKCkgewogICAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRGF0ZVRpbWUncyB5ZWFyLCBtb250aCwgZGF5LCBhbmQgc28gb24uCiAgICAgICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0CiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvT2JqZWN0KCkgLy89PiB7IHllYXI6IDIwMTcsIG1vbnRoOiA0LCBkYXk6IDIyLCBob3VyOiAyMCwgbWludXRlOiA0OSwgc2Vjb25kOiA0MiwgbWlsbGlzZWNvbmQ6IDI2OCB9CiAgICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b09iamVjdCA9IGZ1bmN0aW9uIHRvT2JqZWN0KG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHt9OwoKICAgICAgICB2YXIgYmFzZSA9IF9leHRlbmRzKHt9LCB0aGlzLmMpOwoKICAgICAgICBpZiAob3B0cy5pbmNsdWRlQ29uZmlnKSB7CiAgICAgICAgICBiYXNlLm91dHB1dENhbGVuZGFyID0gdGhpcy5vdXRwdXRDYWxlbmRhcjsKICAgICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgICAgYmFzZS5sb2NhbGUgPSB0aGlzLmxvYy5sb2NhbGU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYmFzZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge0RhdGV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9KU0RhdGUgPSBmdW5jdGlvbiB0b0pTRGF0ZSgpIHsKICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTik7CiAgICAgIH0gLy8gQ09NUEFSRQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBEYXRlVGltZSB0byBjb21wYXJlIHRoaXMgb25lIHRvCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBleGFtcGxlCiAgICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAgICogICAgIGkyID0gRGF0ZVRpbWUuZnJvbUlTTygnMTk4My0xMC0xNFQxMDozMCcpOwogICAgICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH0KICAgICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOS4wMzEyNSB9CiAgICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH0KICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZGlmZiA9IGZ1bmN0aW9uIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCwgb3B0cykgewogICAgICAgIGlmICh1bml0ID09PSB2b2lkIDApIHsKICAgICAgICAgIHVuaXQgPSAibWlsbGlzZWNvbmRzIjsKICAgICAgICB9CgogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlckRhdGVUaW1lLmlzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGR1ck9wdHMgPSBfZXh0ZW5kcyh7CiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgICAgbnVtYmVyaW5nU3lzdGVtOiB0aGlzLm51bWJlcmluZ1N5c3RlbQogICAgICAgIH0sIG9wdHMpOwoKICAgICAgICB2YXIgdW5pdHMgPSBtYXliZUFycmF5KHVuaXQpLm1hcChEdXJhdGlvbi5ub3JtYWxpemVVbml0KSwKICAgICAgICAgICAgb3RoZXJJc0xhdGVyID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCkgPiB0aGlzLnZhbHVlT2YoKSwKICAgICAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgICAgICBsYXRlciA9IG90aGVySXNMYXRlciA/IG90aGVyRGF0ZVRpbWUgOiB0aGlzLAogICAgICAgICAgICBkaWZmZWQgPSBfZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgICByZXR1cm4gb3RoZXJJc0xhdGVyID8gZGlmZmVkLm5lZ2F0ZSgpIDogZGlmZmVkOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCByaWdodCBub3cuCiAgICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUuZGlmZn0KICAgICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5kaWZmTm93ID0gZnVuY3Rpb24gZGlmZk5vdyh1bml0LCBvcHRzKSB7CiAgICAgICAgaWYgKHVuaXQgPT09IHZvaWQgMCkgewogICAgICAgICAgdW5pdCA9ICJtaWxsaXNlY29uZHMiOwogICAgICAgIH0KCiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCBzcGFubmluZyBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIGFub3RoZXIgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBlbmQgcG9pbnQgb2YgdGhlIEludGVydmFsCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnVudGlsID0gZnVuY3Rpb24gdW50aWwob3RoZXJEYXRlVGltZSkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBEYXRlVGltZSBpcyBpbiB0aGUgc2FtZSB1bml0IG9mIHRpbWUgYXMgYW5vdGhlciBEYXRlVGltZS4KICAgICAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC4KICAgICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lLnNldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmhhc1NhbWUgPSBmdW5jdGlvbiBoYXNTYW1lKG90aGVyRGF0ZVRpbWUsIHVuaXQpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICAgIHZhciBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgICAgdmFyIG90aGVyWm9uZURhdGVUaW1lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgewogICAgICAgICAga2VlcExvY2FsVGltZTogdHJ1ZQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBvdGhlclpvbmVEYXRlVGltZS5zdGFydE9mKHVuaXQpIDw9IGlucHV0TXMgJiYgaW5wdXRNcyA8PSBvdGhlclpvbmVEYXRlVGltZS5lbmRPZih1bml0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWZmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIG1pbGxpc2Vjb25kLCBoYXZlIHRoZSBzYW1lIHpvbmUgYW5kIGxvY2F0aW9uLCBhbmQgYXJlIGJvdGggdmFsaWQuCiAgICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlciAtIHRoZSBvdGhlciBEYXRlVGltZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgJiYgb3RoZXIuaXNWYWxpZCAmJiB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmIHRoaXMuem9uZS5lcXVhbHMob3RoZXIuem9uZSkgJiYgdGhpcy5sb2MuZXF1YWxzKG90aGVyLmxvYyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB0aGlzIHRpbWUgcmVsYXRpdmUgdG8gbm93LCBzdWNoIGFzICJpbiB0d28gZGF5cyIuIENhbiBvbmx5IGludGVybmF0aW9uYWxpemUgaWYgeW91cgogICAgICAgKiBwbGF0Zm9ybSBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4gUm91bmRzIGRvd24gYnkgZGVmYXVsdC4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gW29wdGlvbnMuYmFzZT1EYXRlVGltZS5ub3coKV0gLSB0aGUgRGF0ZVRpbWUgdG8gdXNlIGFzIHRoZSBiYXNpcyB0byB3aGljaCB0aGlzIHRpbWUgaXMgY29tcGFyZWQuIERlZmF1bHRzIHRvIG5vdy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnN0eWxlPSJsb25nIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgImxvbmciLCAic2hvcnQiLCBvciAibmFycm93IgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5yb3VuZD10cnVlXSAtIHdoZXRoZXIgdG8gcm91bmQgdGhlIG51bWJlcnMgaW4gdGhlIG91dHB1dC4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnBhZGRpbmc9MF0gLSBwYWRkaW5nIGluIG1pbGxpc2Vjb25kcy4gVGhpcyBhbGxvd3MgeW91IHRvIHJvdW5kIHVwIHRoZSByZXN1bHQgaWYgaXQgZml0cyBpbnNpZGUgdGhlIHRocmVzaG9sZC4gRG9uJ3QgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGgge3JvdW5kOiBmYWxzZX0gYmVjYXVzZSB0aGUgZGVjaW1hbCBvdXRwdXQgd2lsbCBpbmNsdWRlIHRoZSBwYWRkaW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpcwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiaW4gMSBkYXkiCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKHsgbG9jYWxlOiAiZnIiIH0pIC8vPT4gImRhbnMgMjMgaGV1cmVzIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgaG91cnM6IDM2IH0pLnRvUmVsYXRpdmUoeyByb3VuZDogZmFsc2UgfSkgLy89PiAiMS41IGRheXMgYWdvIgogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvUmVsYXRpdmUgPSBmdW5jdGlvbiB0b1JlbGF0aXZlKG9wdGlvbnMpIHsKICAgICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRpb25zID0ge307CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIGJhc2UgPSBvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgewogICAgICAgICAgem9uZTogdGhpcy56b25lCiAgICAgICAgfSksCiAgICAgICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyB0aGlzIDwgYmFzZSA/IC1vcHRpb25zLnBhZGRpbmcgOiBvcHRpb25zLnBhZGRpbmcgOiAwOwogICAgICAgIHZhciB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgICAgdmFyIHVuaXQgPSBvcHRpb25zLnVuaXQ7CgogICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMudW5pdCkpIHsKICAgICAgICAgIHVuaXRzID0gb3B0aW9ucy51bml0OwogICAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBkaWZmUmVsYXRpdmUoYmFzZSwgdGhpcy5wbHVzKHBhZGRpbmcpLCBfZXh0ZW5kcyh7fSwgb3B0aW9ucywgewogICAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgICB1bml0czogdW5pdHMsCiAgICAgICAgICB1bml0OiB1bml0CiAgICAgICAgfSkpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgICAqIE9ubHkgaW50ZXJuYXRpb25hbGl6ZXMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmxvY2FsZSAtIG92ZXJyaWRlIHRoZSBsb2NhbGUgb2YgdGhpcyBEYXRlVGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdDsgaWYgb21pdHRlZCwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIHVuaXQuIFVzZSBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsIG9yICJkYXlzIgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gInRvbW9ycm93IgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIiJtYcOxYW5hIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1JlbGF0aXZlQ2FsZW5kYXIgPSBmdW5jdGlvbiB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKICAgICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7CiAgICAgICAgICB6b25lOiB0aGlzLnpvbmUKICAgICAgICB9KSwgdGhpcywgX2V4dGVuZHMoe30sIG9wdGlvbnMsIHsKICAgICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICAgIHVuaXRzOiBbInllYXJzIiwgIm1vbnRocyIsICJkYXlzIl0sCiAgICAgICAgICBjYWxlbmRhcnk6IHRydWUKICAgICAgICB9KSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgbWluIG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtaW5pbXVtCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLm1pbiA9IGZ1bmN0aW9uIG1pbigpIHsKICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZGF0ZVRpbWVzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykgewogICAgICAgICAgZGF0ZVRpbWVzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWluIHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBpLnZhbHVlT2YoKTsKICAgICAgICB9LCBNYXRoLm1pbik7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtYXhpbXVtCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWF4IERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLm1heCA9IGZ1bmN0aW9uIG1heCgpIHsKICAgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGRhdGVUaW1lcyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykgewogICAgICAgICAgZGF0ZVRpbWVzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07CiAgICAgICAgfQoKICAgICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJtYXggcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXMiKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCBmdW5jdGlvbiAoaSkgewogICAgICAgICAgcmV0dXJuIGkudmFsdWVPZigpOwogICAgICAgIH0sIE1hdGgubWF4KTsKICAgICAgfSAvLyBNSVNDCgogICAgICAvKioKICAgICAgICogRXhwbGFpbiBob3cgYSBzdHJpbmcgd291bGQgYmUgcGFyc2VkIGJ5IGZyb21Gb3JtYXQoKQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGFrZW4gYnkgZnJvbUZvcm1hdCgpCiAgICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluID0gZnVuY3Rpb24gZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zKSB7CiAgICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucywKICAgICAgICAgICAgX29wdGlvbnMkbG9jYWxlID0gX29wdGlvbnMubG9jYWxlLAogICAgICAgICAgICBsb2NhbGUgPSBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IG51bGwgOiBfb3B0aW9ucyRsb2NhbGUsCiAgICAgICAgICAgIF9vcHRpb25zJG51bWJlcmluZ1N5cyA9IF9vcHRpb25zLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX29wdGlvbnMkbnVtYmVyaW5nU3lzID09PSB2b2lkIDAgPyBudWxsIDogX29wdGlvbnMkbnVtYmVyaW5nU3lzLAogICAgICAgICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgZGVmYXVsdFRvRU46IHRydWUKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0RXhwbGFpbiBpbnN0ZWFkCiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tU3RyaW5nRXhwbGFpbiA9IGZ1bmN0aW9uIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMpOwogICAgICB9IC8vIEZPUk1BVCBQUkVTRVRTCgogICAgICAvKioKICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAxMC8xNC8xOTgzCiAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAqLwogICAgICA7CgogICAgICBfY3JlYXRlQ2xhc3MoRGF0ZVRpbWUsIFt7CiAgICAgICAga2V5OiAiaXNWYWxpZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaW52YWxpZFJlYXNvbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgRGF0ZVRpbWUgYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpbnZhbGlkRXhwbGFuYXRpb24iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgbG9jYWxlIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2VuLUdCJy4gVGhlIGxvY2FsZSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWUKICAgICAgICAgKgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibG9jYWxlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICAgICAqCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJudW1iZXJpbmdTeXN0ZW0iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgb3V0cHV0IGNhbGVuZGFyIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2lzbGFtaWMnLiBUaGUgb3V0cHV0IGNhbGVuZGFyIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICAgICAqCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJvdXRwdXRDYWxlbmRhciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIHRpbWUgem9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBEYXRlVGltZS4KICAgICAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ6b25lIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHRpbWUgem9uZS4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogInpvbmVOYW1lIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgeWVhcgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAieWVhciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnllYXIgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5xdWFydGVyIC8vPT4gMgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAicXVhcnRlciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gTWF0aC5jZWlsKHRoaXMuYy5tb250aCAvIDMpIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG1vbnRoICgxLTEyKS4KICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkubW9udGggLy89PiA1CiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtb250aCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggKDEtMzBpc2gpLgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGF5IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuZGF5IDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDkpLmhvdXIgLy89PiA5CiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJob3VyIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuaG91ciA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBtaW51dGUgb2YgdGhlIGhvdXIgKDAtNTkpLgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCkubWludXRlIC8vPT4gMzAKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm1pbnV0ZSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSAoMC01OSkuCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogInNlY29uZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnNlY29uZCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1MiwgNjU0KS5taWxsaXNlY29uZCAvLz0+IDY1NAogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibWlsbGlzZWNvbmQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5taWxsaXNlY29uZCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSB3ZWVrIHllYXIKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla1llYXIiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla1llYXIgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLndlZWtOdW1iZXIgLy89PiAyMQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla051bWJlciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgd2Vlay4KICAgICAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMSwgMzEpLndlZWtkYXkgLy89PiA0CiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ3ZWVrZGF5IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgb3JkaW5hbCAobWVhbmluZyB0aGUgZGF5IG9mIHRoZSB5ZWFyKQogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgICAgICogQHR5cGUge251bWJlcnxEYXRlVGltZX0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJvcmRpbmFsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKS5vcmRpbmFsIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aFNob3J0IC8vPT4gT2N0CiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtb250aFNob3J0IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7CiAgICAgICAgICAgIGxvY09iajogdGhpcy5sb2MKICAgICAgICAgIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoTG9uZyAvLz0+IE9jdG9iZXIKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm1vbnRoTG9uZyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7CiAgICAgICAgICAgIGxvY09iajogdGhpcy5sb2MKICAgICAgICAgIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLndlZWtkYXlTaG9ydCAvLz0+IE1vbgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla2RheVNob3J0IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsKICAgICAgICAgICAgbG9jT2JqOiB0aGlzLmxvYwogICAgICAgICAgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLndlZWtkYXlMb25nIC8vPT4gTW9uZGF5CiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ3ZWVrZGF5TG9uZyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsKICAgICAgICAgICAgbG9jT2JqOiB0aGlzLmxvYwogICAgICAgICAgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkub2Zmc2V0IC8vPT4gLTI0MAogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLm9mZnNldCAvLz0+IDAKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm9mZnNldCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBzaG9ydCBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSAiRVNUIiBvciAiRURUIi4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm9mZnNldE5hbWVTaG9ydCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnpvbmUub2Zmc2V0TmFtZSh0aGlzLnRzLCB7CiAgICAgICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAib2Zmc2V0TmFtZUxvbmciLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgICAgIGZvcm1hdDogImxvbmciLAogICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHdoZXRoZXIgdGhpcyB6b25lJ3Mgb2Zmc2V0IGV2ZXIgY2hhbmdlcywgYXMgaW4gYSBEU1QuCiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNPZmZzZXRGaXhlZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLmlzVW5pdmVyc2FsIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIGluIGEgRFNULgogICAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzSW5EU1QiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHRoaXMuaXNPZmZzZXRGaXhlZCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7CiAgICAgICAgICAgICAgbW9udGg6IDEKICAgICAgICAgICAgfSkub2Zmc2V0IHx8IHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoewogICAgICAgICAgICAgIG1vbnRoOiA1CiAgICAgICAgICAgIH0pLm9mZnNldDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW4gYSBsZWFwIHllYXIsIGZhbHNlIG90aGVyd2lzZQogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZQogICAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzSW5MZWFwWWVhciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih0aGlzLnllYXIpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGgKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2LCAyKS5kYXlzSW5Nb250aCAvLz0+IDI5CiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGF5c0luTW9udGgiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmRheXNJblllYXIgLy89PiAzNjUKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImRheXNJblllYXIiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTMKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS53ZWVrc0luV2Vla1llYXIgLy89PiA1MgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla3NJbldlZWtZZWFyIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICAgICAgfQogICAgICB9XSwgW3sKICAgICAgICBrZXk6ICJEQVRFX1NIT1JUIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFX1NIT1JUOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMnCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFX01FRCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURV9NRUQ7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURV9NRURfV0lUSF9XRUVLREFZIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMnCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFX0ZVTEwiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVfRlVMTDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnVHVlc2RheSwgT2N0b2JlciAxNCwgMTk4MycKICAgICAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIkRBVEVfSFVHRSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURV9IVUdFOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV9TSU1QTEUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV9XSVRIX1NFQ09ORFMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfV0lUSF9TRUNPTkRTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJUSU1FXzI0X1NJTVBMRSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gVElNRV8yNF9TSU1QTEU7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJUSU1FXzI0X1dJVEhfU0VDT05EUyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NFQ09ORFM7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgRWFzdGVybiBEYXlsaWdodCBUaW1lJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfU0hPUlQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9NRUQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX01FRDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfRlVMTCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURVRJTUVfRlVMTDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUzsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfSFVHRSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTOwogICAgICAgIH0KICAgICAgfV0pOwoKICAgICAgcmV0dXJuIERhdGVUaW1lOwogICAgfSgpOwogICAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgICBpZiAoRGF0ZVRpbWUuaXNEYXRlVGltZShkYXRlVGltZWlzaCkpIHsKICAgICAgICByZXR1cm4gZGF0ZVRpbWVpc2g7CiAgICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZVRpbWVpc2gpOwogICAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIHR5cGVvZiBkYXRlVGltZWlzaCA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJVbmtub3duIGRhdGV0aW1lIGFyZ3VtZW50OiAiICsgZGF0ZVRpbWVpc2ggKyAiLCBvZiB0eXBlICIgKyB0eXBlb2YgZGF0ZVRpbWVpc2gpOwogICAgICB9CiAgICB9CgogICAgdmFyIFZFUlNJT04gPSAiMi4wLjIiOwoKICAgIHZhciBEYXRlVGltZV8xID0gbHV4b24uRGF0ZVRpbWUgPSBEYXRlVGltZTsKICAgIHZhciBEdXJhdGlvbl8xID0gbHV4b24uRHVyYXRpb24gPSBEdXJhdGlvbjsKICAgIGx1eG9uLkZpeGVkT2Zmc2V0Wm9uZSA9IEZpeGVkT2Zmc2V0Wm9uZTsKICAgIGx1eG9uLklBTkFab25lID0gSUFOQVpvbmU7CiAgICBsdXhvbi5JbmZvID0gSW5mbzsKICAgIGx1eG9uLkludGVydmFsID0gSW50ZXJ2YWw7CiAgICBsdXhvbi5JbnZhbGlkWm9uZSA9IEludmFsaWRab25lOwogICAgbHV4b24uU2V0dGluZ3MgPSBTZXR0aW5nczsKICAgIGx1eG9uLlN5c3RlbVpvbmUgPSBTeXN0ZW1ab25lOwogICAgbHV4b24uVkVSU0lPTiA9IFZFUlNJT047CiAgICBsdXhvbi5ab25lID0gWm9uZTsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAgIC8vIFF1ZXJ5IFNldHRpbmdzIC8vDQogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8NCiAgICBjb25zdCBERUZBVUxUX1FVRVJZX1NFVFRJTkdTID0gew0KICAgICAgICByZW5kZXJOdWxsQXM6ICJcXC0iLA0KICAgICAgICB0YXNrTGlua0xvY2F0aW9uOiAiZW5kIiwNCiAgICAgICAgdGFza0xpbmtUZXh0OiAi8J+UlyIsDQogICAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLA0KICAgICAgICB0YXNrQ29tcGxldGlvblRleHQ6ICJjb21wbGV0aW9uIiwNCiAgICAgICAgd2Fybk9uRW1wdHlSZXN1bHQ6IHRydWUsDQogICAgICAgIHJlZnJlc2hJbnRlcnZhbDogMjUwLA0KICAgICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLA0KICAgICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwNCiAgICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDYsDQogICAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsDQogICAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLA0KICAgIH07DQogICAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovDQogICAgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX1FVRVJZX1NFVFRJTkdTKSwgew0KICAgICAgICBpbmxpbmVRdWVyeVByZWZpeDogIj0iLA0KICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLA0KICAgICAgICBlbmFibGVEYXRhdmlld0pzOiBmYWxzZSwNCiAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwNCiAgICAgICAgc2NoZW1hVmVyc2lvbjogMSwNCiAgICB9KTsKCiAgICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovDQogICAgY2xhc3MgU3VjY2VzcyB7DQogICAgICAgIGNvbnN0cnVjdG9yKHZhbHVlKSB7DQogICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7DQogICAgICAgICAgICB0aGlzLnN1Y2Nlc3NmdWwgPSB0cnVlOw0KICAgICAgICB9DQogICAgICAgIG1hcChmKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFN1Y2Nlc3MoZih0aGlzLnZhbHVlKSk7DQogICAgICAgIH0NCiAgICAgICAgZmxhdE1hcChmKSB7DQogICAgICAgICAgICByZXR1cm4gZih0aGlzLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBvckVsc2UoX3ZhbHVlKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsNCiAgICAgICAgfQ0KICAgICAgICBvckVsc2VUaHJvdyhfbWVzc2FnZSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7DQogICAgICAgIH0NCiAgICB9DQogICAgY2xhc3MgRmFpbHVyZSB7DQogICAgICAgIGNvbnN0cnVjdG9yKGVycm9yKSB7DQogICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7DQogICAgICAgICAgICB0aGlzLnN1Y2Nlc3NmdWwgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBtYXAoX2YpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzOw0KICAgICAgICB9DQogICAgICAgIGZsYXRNYXAoX2YpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzOw0KICAgICAgICB9DQogICAgICAgIG9yRWxzZSh2YWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIHZhbHVlOw0KICAgICAgICB9DQogICAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsNCiAgICAgICAgICAgIGlmIChtZXNzYWdlKQ0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyB0aGlzLmVycm9yKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICB2YXIgUmVzdWx0Ow0KICAgIChmdW5jdGlvbiAoUmVzdWx0KSB7DQogICAgICAgIGZ1bmN0aW9uIHN1Y2Nlc3ModmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgU3VjY2Vzcyh2YWx1ZSk7DQogICAgICAgIH0NCiAgICAgICAgUmVzdWx0LnN1Y2Nlc3MgPSBzdWNjZXNzOw0KICAgICAgICBmdW5jdGlvbiBmYWlsdXJlKGVycm9yKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IEZhaWx1cmUoZXJyb3IpOw0KICAgICAgICB9DQogICAgICAgIFJlc3VsdC5mYWlsdXJlID0gZmFpbHVyZTsNCiAgICAgICAgZnVuY3Rpb24gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgZikgew0KICAgICAgICAgICAgaWYgKGZpcnN0LnN1Y2Nlc3NmdWwpIHsNCiAgICAgICAgICAgICAgICBpZiAoc2Vjb25kLnN1Y2Nlc3NmdWwpDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmKGZpcnN0LnZhbHVlLCBzZWNvbmQudmFsdWUpOw0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoc2Vjb25kLmVycm9yKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKGZpcnN0LmVycm9yKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBSZXN1bHQuZmxhdE1hcDIgPSBmbGF0TWFwMjsNCiAgICAgICAgZnVuY3Rpb24gbWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7DQogICAgICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpOw0KICAgICAgICB9DQogICAgICAgIFJlc3VsdC5tYXAyID0gbWFwMjsNCiAgICB9KShSZXN1bHQgfHwgKFJlc3VsdCA9IHt9KSk7CgogICAgdmFyIHBhcnNpbW1vbl91bWRfbWluID0ge2V4cG9ydHM6IHt9fTsKCiAgICAoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogICAgIWZ1bmN0aW9uKG4sdCl7bW9kdWxlLmV4cG9ydHM9dCgpO30oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6Y29tbW9uanNHbG9iYWwsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9e307ZnVuY3Rpb24gcihlKXtpZih0W2VdKXJldHVybiB0W2VdLmV4cG9ydHM7dmFyIHU9dFtlXT17aTplLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bZV0uY2FsbCh1LmV4cG9ydHMsdSx1LmV4cG9ydHMsciksdS5sPSEwLHUuZXhwb3J0c31yZXR1cm4gci5tPW4sci5jPXQsci5kPWZ1bmN0aW9uKG4sdCxlKXtyLm8obix0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OmV9KTt9LHIucj1mdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7fSxyLm49ZnVuY3Rpb24obil7dmFyIHQ9biYmbi5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gbn07cmV0dXJuIHIuZCh0LCJhIix0KSx0fSxyLm89ZnVuY3Rpb24obix0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCl9LHIucD0iIixyKHIucz0wKX0oW2Z1bmN0aW9uKG4sdCxyKXtmdW5jdGlvbiBlKG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgZShuKTt0aGlzLl89bjt9dmFyIHU9ZS5wcm90b3R5cGU7ZnVuY3Rpb24gbyhuLHQpe2Zvcih2YXIgcj0wO3I8bjtyKyspdChyKTt9ZnVuY3Rpb24gaShuLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7byh0Lmxlbmd0aCxmdW5jdGlvbihyKXtuKHRbcl0scix0KTt9KTt9KGZ1bmN0aW9uKHIsZSx1KXt0PW4odCxyLGUsdSk7fSxyKSx0fWZ1bmN0aW9uIGYobix0KXtyZXR1cm4gaShmdW5jdGlvbih0LHIsZSx1KXtyZXR1cm4gdC5jb25jYXQoW24ocixlLHUpXSl9LFtdLHQpfWZ1bmN0aW9uIGEobix0KXt2YXIgcj17djowLGJ1Zjp0fTtyZXR1cm4gbyhuLGZ1bmN0aW9uKCl7dmFyIG47cj17djpyLnY8PDF8KG49ci5idWYsblswXT4+NyksYnVmOmZ1bmN0aW9uKG4pe3ZhciB0PWkoZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG4uY29uY2F0KHI9PT1lLmxlbmd0aC0xP0J1ZmZlci5mcm9tKFt0LDBdKS5yZWFkVUludDE2QkUoMCk6ZS5yZWFkVUludDE2QkUocikpfSxbXSxuKTtyZXR1cm4gQnVmZmVyLmZyb20oZihmdW5jdGlvbihuKXtyZXR1cm4gKG48PDEmNjU1MzUpPj44fSx0KSl9KHIuYnVmKX07fSkscn1mdW5jdGlvbiBjKCl7cmV0dXJuICJ1bmRlZmluZWQiIT10eXBlb2YgQnVmZmVyfWZ1bmN0aW9uIHMoKXtpZighYygpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyIGdsb2JhbCBkb2VzIG5vdCBleGlzdDsgcGxlYXNlIHVzZSB3ZWJwYWNrIGlmIHlvdSBuZWVkIHRvIHBhcnNlIEJ1ZmZlcnMgaW4gdGhlIGJyb3dzZXIuIil9ZnVuY3Rpb24gbChuKXtzKCk7dmFyIHQ9aShmdW5jdGlvbihuLHQpe3JldHVybiBuK3R9LDAsbik7aWYodCU4IT0wKXRocm93IG5ldyBFcnJvcigiVGhlIGJpdHMgWyIrbi5qb2luKCIsICIpKyJdIGFkZCB1cCB0byAiK3QrIiB3aGljaCBpcyBub3QgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXM7IHRoZSB0b3RhbCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDgiKTt2YXIgcix1PXQvOCxvPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuPjQ4fSxpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG58fChyKHQpP3Q6bil9LG51bGwsbikpO2lmKG8pdGhyb3cgbmV3IEVycm9yKG8rIiBiaXQgcmFuZ2UgcmVxdWVzdGVkIGV4Y2VlZHMgNDggYml0ICg2IGJ5dGUpIE51bWJlciBtYXguIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHQscil7dmFyIGU9dStyO3JldHVybiBlPnQubGVuZ3RoP3gocix1LnRvU3RyaW5nKCkrIiBieXRlcyIpOmIoZSxpKGZ1bmN0aW9uKG4sdCl7dmFyIHI9YSh0LG4uYnVmKTtyZXR1cm4ge2NvbGw6bi5jb2xsLmNvbmNhdChyLnYpLGJ1ZjpyLmJ1Zn19LHtjb2xsOltdLGJ1Zjp0LnNsaWNlKHIsZSl9LG4pLmNvbGwpfSl9ZnVuY3Rpb24gcChuLHQpe3JldHVybiBuZXcgZShmdW5jdGlvbihyLGUpe3JldHVybiBzKCksZSt0PnIubGVuZ3RoP3goZSx0KyIgYnl0ZXMgZm9yICIrbik6YihlK3Qsci5zbGljZShlLGUrdCkpfSl9ZnVuY3Rpb24gaChuLHQpe2lmKCJudW1iZXIiIT10eXBlb2Yocj10KXx8TWF0aC5mbG9vcihyKSE9PXJ8fHQ8MHx8dD42KXRocm93IG5ldyBFcnJvcihuKyIgcmVxdWlyZXMgaW50ZWdlciBsZW5ndGggaW4gcmFuZ2UgWzAsIDZdLiIpO3ZhciByO31mdW5jdGlvbiBkKG4pe3JldHVybiBoKCJ1aW50QkUiLG4pLHAoInVpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludEJFKDAsbil9KX1mdW5jdGlvbiB2KG4pe3JldHVybiBoKCJ1aW50TEUiLG4pLHAoInVpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludExFKDAsbil9KX1mdW5jdGlvbiBnKG4pe3JldHVybiBoKCJpbnRCRSIsbikscCgiaW50QkUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludEJFKDAsbil9KX1mdW5jdGlvbiBtKG4pe3JldHVybiBoKCJpbnRMRSIsbikscCgiaW50TEUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludExFKDAsbil9KX1mdW5jdGlvbiB5KG4pe3JldHVybiBuIGluc3RhbmNlb2YgZX1mdW5jdGlvbiBFKG4pe3JldHVybiAiW29iamVjdCBBcnJheV0iPT09e30udG9TdHJpbmcuY2FsbChuKX1mdW5jdGlvbiB3KG4pe3JldHVybiBjKCkmJkJ1ZmZlci5pc0J1ZmZlcihuKX1mdW5jdGlvbiBiKG4sdCl7cmV0dXJuIHtzdGF0dXM6ITAsaW5kZXg6bix2YWx1ZTp0LGZ1cnRoZXN0Oi0xLGV4cGVjdGVkOltdfX1mdW5jdGlvbiB4KG4sdCl7cmV0dXJuIEUodCl8fCh0PVt0XSkse3N0YXR1czohMSxpbmRleDotMSx2YWx1ZTpudWxsLGZ1cnRoZXN0Om4sZXhwZWN0ZWQ6dH19ZnVuY3Rpb24gQihuLHQpe2lmKCF0KXJldHVybiBuO2lmKG4uZnVydGhlc3Q+dC5mdXJ0aGVzdClyZXR1cm4gbjt2YXIgcj1uLmZ1cnRoZXN0PT09dC5mdXJ0aGVzdD9mdW5jdGlvbihuLHQpe2lmKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09ZS5fc3VwcG9ydHNTZXQpcmV0dXJuIGUuX3N1cHBvcnRzU2V0O3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU2V0O3JldHVybiBlLl9zdXBwb3J0c1NldD1uLG59KCkmJkFycmF5LmZyb20pe2Zvcih2YXIgcj1uZXcgU2V0KG4pLHU9MDt1PHQubGVuZ3RoO3UrKylyLmFkZCh0W3VdKTt2YXIgbz1BcnJheS5mcm9tKHIpO3JldHVybiBvLnNvcnQoKSxvfWZvcih2YXIgaT17fSxmPTA7ZjxuLmxlbmd0aDtmKyspaVtuW2ZdXT0hMDtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKylpW3RbYV1dPSEwO3ZhciBjPVtdO2Zvcih2YXIgcyBpbiBpKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiZjLnB1c2gocyk7cmV0dXJuIGMuc29ydCgpLGN9KG4uZXhwZWN0ZWQsdC5leHBlY3RlZCk6dC5leHBlY3RlZDtyZXR1cm4ge3N0YXR1czpuLnN0YXR1cyxpbmRleDpuLmluZGV4LHZhbHVlOm4udmFsdWUsZnVydGhlc3Q6dC5mdXJ0aGVzdCxleHBlY3RlZDpyfX12YXIgaj17fTtmdW5jdGlvbiBTKG4sdCl7aWYodyhuKSlyZXR1cm4ge29mZnNldDp0LGxpbmU6LTEsY29sdW1uOi0xfTtuIGluIGp8fChqW25dPXt9KTtmb3IodmFyIHI9altuXSxlPTAsdT0wLG89MCxpPXQ7aT49MDspe2lmKGkgaW4gcil7ZT1yW2ldLmxpbmUsMD09PW8mJihvPXJbaV0ubGluZVN0YXJ0KTticmVha30iXG4iPT09bi5jaGFyQXQoaSkmJih1KyssMD09PW8mJihvPWkrMSkpLGktLTt9dmFyIGY9ZSt1LGE9dC1vO3JldHVybiByW3RdPXtsaW5lOmYsbGluZVN0YXJ0Om99LHtvZmZzZXQ6dCxsaW5lOmYrMSxjb2x1bW46YSsxfX1mdW5jdGlvbiBfKG4pe2lmKCF5KG4pKXRocm93IG5ldyBFcnJvcigibm90IGEgcGFyc2VyOiAiK24pfWZ1bmN0aW9uIEwobix0KXtyZXR1cm4gInN0cmluZyI9PXR5cGVvZiBuP24uY2hhckF0KHQpOm5bdF19ZnVuY3Rpb24gTyhuKXtpZigibnVtYmVyIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBudW1iZXI6ICIrbil9ZnVuY3Rpb24gayhuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIGZ1bmN0aW9uOiAiK24pfWZ1bmN0aW9uIFAobil7aWYoInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgc3RyaW5nOiAiK24pfXZhciBxPTIsQT0zLEk9OCxGPTUqSSxNPTQqSSx6PSIgICI7ZnVuY3Rpb24gUihuLHQpe3JldHVybiBuZXcgQXJyYXkodCsxKS5qb2luKG4pfWZ1bmN0aW9uIFUobix0LHIpe3ZhciBlPXQtbi5sZW5ndGg7cmV0dXJuIGU8PTA/bjpSKHIsZSkrbn1mdW5jdGlvbiBXKG4sdCxyLGUpe3JldHVybiB7ZnJvbTpuLXQ+MD9uLXQ6MCx0bzpuK3I+ZT9lOm4rcn19ZnVuY3Rpb24gRChuLHQpe3ZhciByLGUsdSxvLGEsYz10LmluZGV4LHM9Yy5vZmZzZXQsbD0xO2lmKHM9PT1uLmxlbmd0aClyZXR1cm4gIkdvdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCI7aWYodyhuKSl7dmFyIHA9cy1zJUksaD1zLXAsZD1XKHAsRixNK0ksbi5sZW5ndGgpLHY9ZihmdW5jdGlvbihuKXtyZXR1cm4gZihmdW5jdGlvbihuKXtyZXR1cm4gVShuLnRvU3RyaW5nKDE2KSwyLCIwIil9LG4pfSxmdW5jdGlvbihuLHQpe3ZhciByPW4ubGVuZ3RoLGU9W10sdT0wO2lmKHI8PXQpcmV0dXJuIFtuLnNsaWNlKCldO2Zvcih2YXIgbz0wO288cjtvKyspZVt1XXx8ZS5wdXNoKFtdKSxlW3VdLnB1c2gobltvXSksKG8rMSkldD09MCYmdSsrO3JldHVybiBlfShuLnNsaWNlKGQuZnJvbSxkLnRvKS50b0pTT04oKS5kYXRhLEkpKTtvPWZ1bmN0aW9uKG4pe3JldHVybiAwPT09bi5mcm9tJiYxPT09bi50bz97ZnJvbTpuLmZyb20sdG86bi50b306e2Zyb206bi5mcm9tL0ksdG86TWF0aC5mbG9vcihuLnRvL0kpfX0oZCksZT1wL0kscj0zKmgsaD49NCYmKHIrPTEpLGw9Mix1PWYoZnVuY3Rpb24obil7cmV0dXJuIG4ubGVuZ3RoPD00P24uam9pbigiICIpOm4uc2xpY2UoMCw0KS5qb2luKCIgIikrIiAgIituLnNsaWNlKDQpLmpvaW4oIiAiKX0sdiksKGE9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihhPTIpO31lbHNlIHt2YXIgZz1uLnNwbGl0KC9cclxufFtcblxyXHUyMDI4XHUyMDI5XS8pO3I9Yy5jb2x1bW4tMSxlPWMubGluZS0xLG89VyhlLHEsQSxnLmxlbmd0aCksdT1nLnNsaWNlKG8uZnJvbSxvLnRvKSxhPW8udG8udG9TdHJpbmcoKS5sZW5ndGg7fXZhciBtPWUtby5mcm9tO3JldHVybiB3KG4pJiYoYT0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGE9MiksaShmdW5jdGlvbih0LGUsdSl7dmFyIGksZj11PT09bSxjPWY/Ij4gIjp6O3JldHVybiBpPXcobik/VSgoOCooby5mcm9tK3UpKS50b1N0cmluZygxNiksYSwiMCIpOlUoKG8uZnJvbSt1KzEpLnRvU3RyaW5nKCksYSwiICIpLFtdLmNvbmNhdCh0LFtjK2krIiB8ICIrZV0sZj9beitSKCIgIixhKSsiIHwgIitVKCIiLHIsIiAiKStSKCJeIixsKV06W10pfSxbXSx1KS5qb2luKCJcbiIpfWZ1bmN0aW9uIE4obix0KXtyZXR1cm4gWyJcbiIsIi0tIFBBUlNJTkcgRkFJTEVEICIrUigiLSIsNTApLCJcblxuIixEKG4sdCksIlxuXG4iLChyPXQuZXhwZWN0ZWQsMT09PXIubGVuZ3RoPyJFeHBlY3RlZDpcblxuIityWzBdOiJFeHBlY3RlZCBvbmUgb2YgdGhlIGZvbGxvd2luZzogXG5cbiIrci5qb2luKCIsICIpKSwiXG4iXS5qb2luKCIiKTt2YXIgcjt9ZnVuY3Rpb24gRyhuKXtyZXR1cm4gdm9pZCAwIT09bi5mbGFncz9uLmZsYWdzOltuLmdsb2JhbD8iZyI6IiIsbi5pZ25vcmVDYXNlPyJpIjoiIixuLm11bHRpbGluZT8ibSI6IiIsbi51bmljb2RlPyJ1IjoiIixuLnN0aWNreT8ieSI6IiJdLmpvaW4oIiIpfWZ1bmN0aW9uIEMoKXtmb3IodmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHQ9bi5sZW5ndGgscj0wO3I8dDtyKz0xKV8obltyXSk7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXtmb3IodmFyIHUsbz1uZXcgQXJyYXkodCksaT0wO2k8dDtpKz0xKXtpZighKHU9QihuW2ldLl8ocixlKSx1KSkuc3RhdHVzKXJldHVybiB1O29baV09dS52YWx1ZSxlPXUuaW5kZXg7fXJldHVybiBCKGIoZSxvKSx1KX0pfWZ1bmN0aW9uIEooKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYoMD09PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigic2VxTWFwIG5lZWRzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3ZhciB0PW4ucG9wKCk7cmV0dXJuIGsodCksQy5hcHBseShudWxsLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdC5hcHBseShudWxsLG4pfSl9ZnVuY3Rpb24gVCgpe3ZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoO2lmKDA9PT10KXJldHVybiBZKCJ6ZXJvIGFsdGVybmF0ZXMiKTtmb3IodmFyIHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlLHU9MDt1PG4ubGVuZ3RoO3UrPTEpaWYoKGU9QihuW3VdLl8odCxyKSxlKSkuc3RhdHVzKXJldHVybiBlO3JldHVybiBlfSl9ZnVuY3Rpb24gVihuLHQpe3JldHVybiBIKG4sdCkub3IoWChbXSkpfWZ1bmN0aW9uIEgobix0KXtyZXR1cm4gXyhuKSxfKHQpLEoobix0LnRoZW4obikubWFueSgpLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIFtuXS5jb25jYXQodCl9KX1mdW5jdGlvbiBLKG4pe1Aobik7dmFyIHQ9IiciK24rIiciO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9ZStuLmxlbmd0aCxvPXIuc2xpY2UoZSx1KTtyZXR1cm4gbz09PW4/Yih1LG8pOngoZSx0KX0pfWZ1bmN0aW9uIFEobix0KXshZnVuY3Rpb24obil7aWYoIShuIGluc3RhbmNlb2YgUmVnRXhwKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHJlZ2V4cDogIituKTtmb3IodmFyIHQ9RyhuKSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBlPXQuY2hhckF0KHIpO2lmKCJpIiE9PWUmJiJtIiE9PWUmJiJ1IiE9PWUmJiJzIiE9PWUpdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCByZWdleHAgZmxhZyAiJytlKyciOiAnK24pfX0obiksYXJndW1lbnRzLmxlbmd0aD49Mj9PKHQpOnQ9MDt2YXIgcj1mdW5jdGlvbihuKXtyZXR1cm4gUmVnRXhwKCJeKD86IituLnNvdXJjZSsiKSIsRyhuKSl9KG4pLHU9IiIrbjtyZXR1cm4gZShmdW5jdGlvbihuLGUpe3ZhciBvPXIuZXhlYyhuLnNsaWNlKGUpKTtpZihvKXtpZigwPD10JiZ0PD1vLmxlbmd0aCl7dmFyIGk9b1swXSxmPW9bdF07cmV0dXJuIGIoZStpLmxlbmd0aCxmKX1yZXR1cm4geChlLCJ2YWxpZCBtYXRjaCBncm91cCAoMCB0byAiK28ubGVuZ3RoKyIpIGluICIrdSl9cmV0dXJuIHgoZSx1KX0pfWZ1bmN0aW9uIFgobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4gYihyLG4pfSl9ZnVuY3Rpb24gWShuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiB4KHIsbil9KX1mdW5jdGlvbiBaKG4pe2lmKHkobikpcmV0dXJuIGUoZnVuY3Rpb24odCxyKXt2YXIgZT1uLl8odCxyKTtyZXR1cm4gZS5pbmRleD1yLGUudmFsdWU9IiIsZX0pO2lmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gWihLKG4pKTtpZihuIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBaKFEobikpO3Rocm93IG5ldyBFcnJvcigibm90IGEgc3RyaW5nLCByZWdleHAsIG9yIHBhcnNlcjogIituKX1mdW5jdGlvbiAkKG4pe3JldHVybiBfKG4pLGUoZnVuY3Rpb24odCxyKXt2YXIgZT1uLl8odCxyKSx1PXQuc2xpY2UocixlLmluZGV4KTtyZXR1cm4gZS5zdGF0dXM/eChyLCdub3QgIicrdSsnIicpOmIocixudWxsKX0pfWZ1bmN0aW9uIG5uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXt2YXIgZT1MKHQscik7cmV0dXJuIHI8dC5sZW5ndGgmJm4oZSk/YihyKzEsZSk6eChyLCJhIGNoYXJhY3Rlci9ieXRlIG1hdGNoaW5nICIrbil9KX1mdW5jdGlvbiB0bihuLHQpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9bixuPXZvaWQgMCk7dmFyIHI9ZShmdW5jdGlvbihuLGUpe3JldHVybiByLl89dCgpLl8sci5fKG4sZSl9KTtyZXR1cm4gbj9yLmRlc2Mobik6cn1mdW5jdGlvbiBybigpe3JldHVybiBZKCJmYW50YXN5LWxhbmQvZW1wdHkiKX11LnBhcnNlPWZ1bmN0aW9uKG4pe2lmKCJzdHJpbmciIT10eXBlb2YgbiYmIXcobikpdGhyb3cgbmV3IEVycm9yKCIucGFyc2UgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHN0cmluZyBvciBCdWZmZXIgYXMgaXRzIGFyZ3VtZW50Iik7dmFyIHQscj10aGlzLnNraXAoZm4pLl8obiwwKTtyZXR1cm4gdD1yLnN0YXR1cz97c3RhdHVzOiEwLHZhbHVlOnIudmFsdWV9OntzdGF0dXM6ITEsaW5kZXg6UyhuLHIuZnVydGhlc3QpLGV4cGVjdGVkOnIuZXhwZWN0ZWR9LGRlbGV0ZSBqW25dLHR9LHUudHJ5UGFyc2U9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5wYXJzZShuKTtpZih0LnN0YXR1cylyZXR1cm4gdC52YWx1ZTt2YXIgcj1OKG4sdCksZT1uZXcgRXJyb3Iocik7dGhyb3cgZS50eXBlPSJQYXJzaW1tb25FcnJvciIsZS5yZXN1bHQ9dCxlfSx1LmFzc2VydD1mdW5jdGlvbihuLHQpe3JldHVybiB0aGlzLmNoYWluKGZ1bmN0aW9uKHIpe3JldHVybiBuKHIpP1gocik6WSh0KX0pfSx1Lm9yPWZ1bmN0aW9uKG4pe3JldHVybiBUKHRoaXMsbil9LHUudHJpbT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy53cmFwKG4sbil9LHUud3JhcD1mdW5jdGlvbihuLHQpe3JldHVybiBKKG4sdGhpcyx0LGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHR9KX0sdS50aHJ1PWZ1bmN0aW9uKG4pe3JldHVybiBuKHRoaXMpfSx1LnRoZW49ZnVuY3Rpb24obil7cmV0dXJuIF8obiksQyh0aGlzLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gblsxXX0pfSx1Lm1hbnk9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPVtdLHU9dm9pZCAwOzspe2lmKCEodT1CKG4uXyh0LHIpLHUpKS5zdGF0dXMpcmV0dXJuIEIoYihyLGUpLHUpO2lmKHI9PT11LmluZGV4KXRocm93IG5ldyBFcnJvcigiaW5maW5pdGUgbG9vcCBkZXRlY3RlZCBpbiAubWFueSgpIHBhcnNlciAtLS0gY2FsbGluZyAubWFueSgpIG9uIGEgcGFyc2VyIHdoaWNoIGNhbiBhY2NlcHQgemVybyBjaGFyYWN0ZXJzIGlzIHVzdWFsbHkgdGhlIGNhdXNlIik7cj11LmluZGV4LGUucHVzaCh1LnZhbHVlKTt9fSl9LHUudGllV2l0aD1mdW5jdGlvbihuKXtyZXR1cm4gUChuKSx0aGlzLm1hcChmdW5jdGlvbih0KXtpZihmdW5jdGlvbihuKXtpZighRShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhbiBhcnJheTogIituKX0odCksdC5sZW5ndGgpe1AodFswXSk7Zm9yKHZhciByPXRbMF0sZT0xO2U8dC5sZW5ndGg7ZSsrKVAodFtlXSkscis9bit0W2VdO3JldHVybiByfXJldHVybiAiIn0pfSx1LnRpZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpZVdpdGgoIiIpfSx1LnRpbWVzPWZ1bmN0aW9uKG4sdCl7dmFyIHI9dGhpcztyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD1uKSxPKG4pLE8odCksZShmdW5jdGlvbihlLHUpe2Zvcih2YXIgbz1bXSxpPXZvaWQgMCxmPXZvaWQgMCxhPTA7YTxuO2ErPTEpe2lmKGY9QihpPXIuXyhlLHUpLGYpLCFpLnN0YXR1cylyZXR1cm4gZjt1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO31mb3IoO2E8dCYmKGY9QihpPXIuXyhlLHUpLGYpLGkuc3RhdHVzKTthKz0xKXU9aS5pbmRleCxvLnB1c2goaS52YWx1ZSk7cmV0dXJuIEIoYih1LG8pLGYpfSl9LHUucmVzdWx0PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBufSl9LHUuYXRNb3N0PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnRpbWVzKDAsbil9LHUuYXRMZWFzdD1mdW5jdGlvbihuKXtyZXR1cm4gSih0aGlzLnRpbWVzKG4pLHRoaXMubWFueSgpLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4uY29uY2F0KHQpfSl9LHUubWFwPWZ1bmN0aW9uKG4pe2sobik7dmFyIHQ9dGhpcztyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PXQuXyhyLGUpO3JldHVybiB1LnN0YXR1cz9CKGIodS5pbmRleCxuKHUudmFsdWUpKSx1KTp1fSl9LHUuY29udHJhbWFwPWZ1bmN0aW9uKG4pe2sobik7dmFyIHQ9dGhpcztyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PXQucGFyc2UobihyLnNsaWNlKGUpKSk7cmV0dXJuIHUuc3RhdHVzP2IoZStyLmxlbmd0aCx1LnZhbHVlKTp1fSl9LHUucHJvbWFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGsobiksayh0KSx0aGlzLmNvbnRyYW1hcChuKS5tYXAodCl9LHUuc2tpcD1mdW5jdGlvbihuKXtyZXR1cm4gQyh0aGlzLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gblswXX0pfSx1Lm1hcms9ZnVuY3Rpb24oKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4ge3N0YXJ0Om4sdmFsdWU6dCxlbmQ6cn19KX0sdS5ub2RlPWZ1bmN0aW9uKG4pe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24odCxyLGUpe3JldHVybiB7bmFtZTpuLHZhbHVlOnIsc3RhcnQ6dCxlbmQ6ZX19KX0sdS5zZXBCeT1mdW5jdGlvbihuKXtyZXR1cm4gVih0aGlzLG4pfSx1LnNlcEJ5MT1mdW5jdGlvbihuKXtyZXR1cm4gSCh0aGlzLG4pfSx1Lmxvb2thaGVhZD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKFoobikpfSx1Lm5vdEZvbGxvd2VkQnk9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcCgkKG4pKX0sdS5kZXNjPWZ1bmN0aW9uKG4pe0Uobil8fChuPVtuXSk7dmFyIHQ9dGhpcztyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PXQuXyhyLGUpO3JldHVybiB1LnN0YXR1c3x8KHUuZXhwZWN0ZWQ9biksdX0pfSx1LmZhbGxiYWNrPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLm9yKFgobikpfSx1LmFwPWZ1bmN0aW9uKG4pe3JldHVybiBKKG4sdGhpcyxmdW5jdGlvbihuLHQpe3JldHVybiBuKHQpfSl9LHUuY2hhaW49ZnVuY3Rpb24obil7dmFyIHQ9dGhpcztyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PXQuXyhyLGUpO3JldHVybiB1LnN0YXR1cz9CKG4odS52YWx1ZSkuXyhyLHUuaW5kZXgpLHUpOnV9KX0sdS5jb25jYXQ9dS5vcix1LmVtcHR5PXJuLHUub2Y9WCx1WyJmYW50YXN5LWxhbmQvYXAiXT11LmFwLHVbImZhbnRhc3ktbGFuZC9jaGFpbiJdPXUuY2hhaW4sdVsiZmFudGFzeS1sYW5kL2NvbmNhdCJdPXUuY29uY2F0LHVbImZhbnRhc3ktbGFuZC9lbXB0eSJdPXUuZW1wdHksdVsiZmFudGFzeS1sYW5kL29mIl09dS5vZix1WyJmYW50YXN5LWxhbmQvbWFwIl09dS5tYXA7dmFyIGVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gYih0LFMobix0KSl9KSx1bj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ+PW4ubGVuZ3RoP3godCwiYW55IGNoYXJhY3Rlci9ieXRlIik6Yih0KzEsTChuLHQpKX0pLG9uPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gYihuLmxlbmd0aCxuLnNsaWNlKHQpKX0pLGZuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gdDxuLmxlbmd0aD94KHQsIkVPRiIpOmIodCxudWxsKX0pLGFuPVEoL1swLTldLykuZGVzYygiYSBkaWdpdCIpLGNuPVEoL1swLTldKi8pLmRlc2MoIm9wdGlvbmFsIGRpZ2l0cyIpLHNuPVEoL1thLXpdL2kpLmRlc2MoImEgbGV0dGVyIiksbG49USgvW2Etel0qL2kpLmRlc2MoIm9wdGlvbmFsIGxldHRlcnMiKSxwbj1RKC9ccyovKS5kZXNjKCJvcHRpb25hbCB3aGl0ZXNwYWNlIiksaG49USgvXHMrLykuZGVzYygid2hpdGVzcGFjZSIpLGRuPUsoIlxyIiksdm49SygiXG4iKSxnbj1LKCJcclxuIiksbW49VChnbix2bixkbikuZGVzYygibmV3bGluZSIpLHluPVQobW4sZm4pO2UuYWxsPW9uLGUuYWx0PVQsZS5hbnk9dW4sZS5jcj1kbixlLmNyZWF0ZUxhbmd1YWdlPWZ1bmN0aW9uKG4pe3ZhciB0PXt9O2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiZmdW5jdGlvbihyKXt0W3JdPXRuKGZ1bmN0aW9uKCl7cmV0dXJuIG5bcl0odCl9KTt9KHIpO3JldHVybiB0fSxlLmNybGY9Z24sZS5jdXN0b209ZnVuY3Rpb24obil7cmV0dXJuIGUobihiLHgpKX0sZS5kaWdpdD1hbixlLmRpZ2l0cz1jbixlLmVtcHR5PXJuLGUuZW5kPXluLGUuZW9mPWZuLGUuZmFpbD1ZLGUuZm9ybWF0RXJyb3I9TixlLmluZGV4PWVuLGUuaXNQYXJzZXI9eSxlLmxhenk9dG4sZS5sZXR0ZXI9c24sZS5sZXR0ZXJzPWxuLGUubGY9dm4sZS5sb29rYWhlYWQ9WixlLm1ha2VGYWlsdXJlPXgsZS5tYWtlU3VjY2Vzcz1iLGUubmV3bGluZT1tbixlLm5vbmVPZj1mdW5jdGlvbihuKXtyZXR1cm4gbm4oZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5kZXhPZih0KTwwfSkuZGVzYygibm9uZSBvZiAnIituKyInIil9LGUubm90Rm9sbG93ZWRCeT0kLGUub2Y9WCxlLm9uZU9mPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLnNwbGl0KCIiKSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT0iJyIrdFtyXSsiJyI7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk+PTB9KS5kZXNjKHQpfSxlLm9wdFdoaXRlc3BhY2U9cG4sZS5QYXJzZXI9ZSxlLnJhbmdlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG5uKGZ1bmN0aW9uKHIpe3JldHVybiBuPD1yJiZyPD10fSkuZGVzYyhuKyItIit0KX0sZS5yZWdleD1RLGUucmVnZXhwPVEsZS5zZXBCeT1WLGUuc2VwQnkxPUgsZS5zZXE9QyxlLnNlcU1hcD1KLGUuc2VxT2JqPWZ1bmN0aW9uKCl7Zm9yKHZhciBuLHQ9e30scj0wLHU9KG49YXJndW1lbnRzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4pKSxvPXUubGVuZ3RoLGk9MDtpPG87aSs9MSl7dmFyIGY9dVtpXTtpZigheShmKSl7aWYoRShmKSYmMj09PWYubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIGZbMF0mJnkoZlsxXSkpe3ZhciBhPWZbMF07aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsYSkpdGhyb3cgbmV3IEVycm9yKCJzZXFPYmo6IGR1cGxpY2F0ZSBrZXkgIithKTt0W2FdPSEwLHIrKztjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBhcmd1bWVudHMgbXVzdCBiZSBwYXJzZXJzIG9yIFtzdHJpbmcsIHBhcnNlcl0gYXJyYXkgcGFpcnMuIil9fWlmKDA9PT1yKXRocm93IG5ldyBFcnJvcigic2VxT2JqIGV4cGVjdHMgYXQgbGVhc3Qgb25lIG5hbWVkIHBhcnNlciwgZm91bmQgemVybyIpO3JldHVybiBlKGZ1bmN0aW9uKG4sdCl7Zm9yKHZhciByLGU9e30saT0wO2k8bztpKz0xKXt2YXIgZixhO2lmKEUodVtpXSk/KGY9dVtpXVswXSxhPXVbaV1bMV0pOihmPW51bGwsYT11W2ldKSwhKHI9QihhLl8obix0KSxyKSkuc3RhdHVzKXJldHVybiByO2YmJihlW2ZdPXIudmFsdWUpLHQ9ci5pbmRleDt9cmV0dXJuIEIoYih0LGUpLHIpfSl9LGUuc3RyaW5nPUssZS5zdWNjZWVkPVgsZS50YWtlV2hpbGU9ZnVuY3Rpb24obil7cmV0dXJuIGsobiksZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1yO2U8dC5sZW5ndGgmJm4oTCh0LGUpKTspZSsrO3JldHVybiBiKGUsdC5zbGljZShyLGUpKX0pfSxlLnRlc3Q9bm4sZS53aGl0ZXNwYWNlPWhuLGVbImZhbnRhc3ktbGFuZC9lbXB0eSJdPXJuLGVbImZhbnRhc3ktbGFuZC9vZiJdPVgsZS5CaW5hcnk9e2JpdFNlcTpsLGJpdFNlcU9iajpmdW5jdGlvbihuKXtzKCk7dmFyIHQ9e30scj0wLGU9ZihmdW5jdGlvbihuKXtpZihFKG4pKXt2YXIgZT1uO2lmKDIhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlsiK2Uuam9pbigiLCAiKSsiXSBzaG91bGQgYmUgbGVuZ3RoIDIsIGdvdCBsZW5ndGggIitlLmxlbmd0aCk7aWYoUChlWzBdKSxPKGVbMV0pLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGVbMF0pKXRocm93IG5ldyBFcnJvcigiZHVwbGljYXRlIGtleSBpbiBiaXRTZXFPYmo6ICIrZVswXSk7cmV0dXJuIHRbZVswXV09ITAscisrLGV9cmV0dXJuIE8obiksW251bGwsbl19LG4pO2lmKHI8MSl0aHJvdyBuZXcgRXJyb3IoImJpdFNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYWlyLCBnb3QgWyIrbi5qb2luKCIsICIpKyJdIik7dmFyIHU9ZihmdW5jdGlvbihuKXtyZXR1cm4gblswXX0sZSk7cmV0dXJuIGwoZihmdW5jdGlvbihuKXtyZXR1cm4gblsxXX0sZSkpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gaShmdW5jdGlvbihuLHQpe3JldHVybiBudWxsIT09dFswXSYmKG5bdFswXV09dFsxXSksbn0se30sZihmdW5jdGlvbih0LHIpe3JldHVybiBbdCxuW3JdXX0sdSkpfSl9LGJ5dGU6ZnVuY3Rpb24obil7aWYocygpLE8obiksbj4yNTUpdGhyb3cgbmV3IEVycm9yKCJWYWx1ZSBzcGVjaWZpZWQgdG8gYnl0ZSBjb25zdHJ1Y3RvciAoIituKyI9MHgiK24udG9TdHJpbmcoMTYpKyIpIGlzIGxhcmdlciBpbiB2YWx1ZSB0aGFuIGEgc2luZ2xlIGJ5dGUuIik7dmFyIHQ9KG4+MTU/IjB4IjoiMHgwIikrbi50b1N0cmluZygxNik7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT1MKHIsZSk7cmV0dXJuIHU9PT1uP2IoZSsxLHUpOngoZSx0KX0pfSxidWZmZXI6ZnVuY3Rpb24obil7cmV0dXJuIHAoImJ1ZmZlciIsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBCdWZmZXIuZnJvbShuKX0pfSxlbmNvZGVkU3RyaW5nOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIHAoInN0cmluZyIsdCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKG4pfSl9LHVpbnRCRTpkLHVpbnQ4QkU6ZCgxKSx1aW50MTZCRTpkKDIpLHVpbnQzMkJFOmQoNCksdWludExFOnYsdWludDhMRTp2KDEpLHVpbnQxNkxFOnYoMiksdWludDMyTEU6dig0KSxpbnRCRTpnLGludDhCRTpnKDEpLGludDE2QkU6ZygyKSxpbnQzMkJFOmcoNCksaW50TEU6bSxpbnQ4TEU6bSgxKSxpbnQxNkxFOm0oMiksaW50MzJMRTptKDQpLGZsb2F0QkU6cCgiZmxvYXRCRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdEJFKDApfSksZmxvYXRMRTpwKCJmbG9hdExFIiw0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZEZsb2F0TEUoMCl9KSxkb3VibGVCRTpwKCJkb3VibGVCRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVCRSgwKX0pLGRvdWJsZUxFOnAoImRvdWJsZUxFIiw4KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZERvdWJsZUxFKDApfSl9LG4uZXhwb3J0cz1lO31dKX0pOwogICAgfShwYXJzaW1tb25fdW1kX21pbikpOwoKICAgIHZhciBlbW9qaVJlZ2V4ID0gKCkgPT4gewogICAgCS8vIGh0dHBzOi8vbXRocy5iZS9lbW9qaQogICAgCXJldHVybiAvXHVEODNDXHVERkY0XHVEQjQwXHVEQzY3XHVEQjQwXHVEQzYyKD86XHVEQjQwXHVEQzc3XHVEQjQwXHVEQzZDXHVEQjQwXHVEQzczfFx1REI0MFx1REM3M1x1REI0MFx1REM2M1x1REI0MFx1REM3NHxcdURCNDBcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjcpXHVEQjQwXHVEQzdGfCg/Olx1RDgzRVx1REREMVx1RDgzQ1x1REZGRlx1MjAwRFx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/fFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/KVx1RDgzRVx1REREMXxcdUQ4M0RcdURDNjlcdUQ4M0NcdURGRkZcdTIwMERcdUQ4M0VcdUREMURcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNFXHVERUYxXHVEODNDXHVERkZGXHUyMDBEXHVEODNFXHVERUYyKSg/Olx1RDgzQ1tcdURGRkItXHVERkZFXSl8KD86XHVEODNFXHVEREQxXHVEODNDXHVERkZFXHUyMDBEXHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT98XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT8pXHVEODNFXHVEREQxfFx1RDgzRFx1REM2OVx1RDgzQ1x1REZGRVx1MjAwRFx1RDgzRVx1REQxRFx1MjAwRCg/Olx1RDgzRFtcdURDNjhcdURDNjldKXxcdUQ4M0VcdURFRjFcdUQ4M0NcdURGRkVcdTIwMERcdUQ4M0VcdURFRjIpKD86XHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKXwoPzpcdUQ4M0VcdURERDFcdUQ4M0NcdURGRkRcdTIwMERcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP3xcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpPylcdUQ4M0VcdURERDF8XHVEODNEXHVEQzY5XHVEODNDXHVERkZEXHUyMDBEXHVEODNFXHVERDFEXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRVx1REVGMVx1RDgzQ1x1REZGRFx1MjAwRFx1RDgzRVx1REVGMikoPzpcdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSl8KD86XHVEODNFXHVEREQxXHVEODNDXHVERkZDXHUyMDBEXHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT98XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT8pXHVEODNFXHVEREQxfFx1RDgzRFx1REM2OVx1RDgzQ1x1REZGQ1x1MjAwRFx1RDgzRVx1REQxRFx1MjAwRCg/Olx1RDgzRFtcdURDNjhcdURDNjldKXxcdUQ4M0VcdURFRjFcdUQ4M0NcdURGRkNcdTIwMERcdUQ4M0VcdURFRjIpKD86XHVEODNDW1x1REZGQlx1REZGRC1cdURGRkZdKXwoPzpcdUQ4M0VcdURERDFcdUQ4M0NcdURGRkJcdTIwMERcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP3xcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpPylcdUQ4M0VcdURERDF8XHVEODNEXHVEQzY5XHVEODNDXHVERkZCXHUyMDBEXHVEODNFXHVERDFEXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRVx1REVGMVx1RDgzQ1x1REZGQlx1MjAwRFx1RDgzRVx1REVGMikoPzpcdUQ4M0NbXHVERkZDLVx1REZGRl0pfFx1RDgzRFx1REM2OCg/Olx1RDgzQ1x1REZGQig/Olx1MjAwRCg/Olx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkZdKSl8XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEXHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkZdKXxcdUQ4M0RcdURDNjgoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSl8XHVEODNFXHVERDFEXHUyMDBEXHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQy1cdURGRkZdKXxbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRnxbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pKT98KD86XHVEODNDW1x1REZGQy1cdURGRkZdKVx1MjAwRFx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkZdKSl8XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEXHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkZdKXxcdUQ4M0RcdURDNjgoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSl8XHUyMDBEKD86XHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT98XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT8pXHVEODNEXHVEQzY4fCg/Olx1RDgzRFtcdURDNjhcdURDNjldKVx1MjAwRCg/Olx1RDgzRFx1REM2Nlx1MjAwRFx1RDgzRFx1REM2NnxcdUQ4M0RcdURDNjdcdTIwMEQoPzpcdUQ4M0RbXHVEQzY2XHVEQzY3XSkpfFx1RDgzRFx1REM2Nlx1MjAwRFx1RDgzRFx1REM2NnxcdUQ4M0RcdURDNjdcdTIwMEQoPzpcdUQ4M0RbXHVEQzY2XHVEQzY3XSl8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkZcdTIwMEQoPzpcdUQ4M0VcdUREMURcdTIwMERcdUQ4M0RcdURDNjgoPzpcdUQ4M0NbXHVERkZCLVx1REZGRV0pfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZFXHUyMDBEKD86XHVEODNFXHVERDFEXHUyMDBEXHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGRFx1MjAwRCg/Olx1RDgzRVx1REQxRFx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGQ1x1MjAwRCg/Olx1RDgzRVx1REQxRFx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSl8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXwoPzpcdUQ4M0NcdURGRkZcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkVcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkRcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkNcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XSlcdUZFMEZ8XHUyMDBEKD86KD86XHVEODNEW1x1REM2OFx1REM2OV0pXHUyMDBEKD86XHVEODNEW1x1REM2Nlx1REM2N10pfFx1RDgzRFtcdURDNjZcdURDNjddKXxcdUQ4M0NcdURGRkZcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkVcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkRcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkNcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkZ8XHVEODNDXHVERkZFfFx1RDgzQ1x1REZGRHxcdUQ4M0NcdURGRkN8XHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF0pP3woPzpcdUQ4M0RcdURDNjkoPzpcdUQ4M0NcdURGRkJcdTIwMERcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNEW1x1REM2OFx1REM2OV0pfFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCg/Olx1RDgzRFtcdURDNjhcdURDNjldKXxcdUQ4M0RbXHVEQzY4XHVEQzY5XSkpfCg/Olx1RDgzQ1tcdURGRkMtXHVERkZGXSlcdTIwMERcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNEW1x1REM2OFx1REM2OV0pfFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCg/Olx1RDgzRFtcdURDNjhcdURDNjldKXxcdUQ4M0RbXHVEQzY4XHVEQzY5XSkpKXxcdUQ4M0VcdURERDEoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pXHUyMDBEXHVEODNFXHVERDFEXHUyMDBEXHVEODNFXHVEREQxKSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHVEODNEXHVEQzY5XHUyMDBEXHVEODNEXHVEQzY5XHUyMDBEKD86XHVEODNEXHVEQzY2XHUyMDBEXHVEODNEXHVEQzY2fFx1RDgzRFx1REM2N1x1MjAwRCg/Olx1RDgzRFtcdURDNjZcdURDNjddKSl8XHVEODNEXHVEQzY5KD86XHUyMDBEKD86XHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRFtcdURDNjhcdURDNjldKXxcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNEW1x1REM2OFx1REM2OV0pKXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGRlx1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZFXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkRcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGQ1x1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZCXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKSl8XHVEODNFXHVEREQxKD86XHUyMDBEKD86XHVEODNFXHVERDFEXHUyMDBEXHVEODNFXHVEREQxfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZGXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkVcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGRFx1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZDXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkJcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pKXxcdUQ4M0RcdURDNjlcdTIwMERcdUQ4M0RcdURDNjZcdTIwMERcdUQ4M0RcdURDNjZ8XHVEODNEXHVEQzY5XHUyMDBEXHVEODNEXHVEQzY5XHUyMDBEKD86XHVEODNEW1x1REM2Nlx1REM2N10pfFx1RDgzRFx1REM2OVx1MjAwRFx1RDgzRFx1REM2N1x1MjAwRCg/Olx1RDgzRFtcdURDNjZcdURDNjddKXwoPzpcdUQ4M0RcdURDNDFcdUZFMEY/XHUyMDBEXHVEODNEXHVEREU4fFx1RDgzRVx1REREMSg/Olx1RDgzQ1x1REZGRlx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGRVx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGRFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGQ1x1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGQlx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdKXxcdUQ4M0RcdURDNjkoPzpcdUQ4M0NcdURGRkZcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkVcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkRcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkNcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkJcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XSl8XHVEODNEXHVERTM2XHUyMDBEXHVEODNDXHVERjJCfFx1RDgzQ1x1REZGM1x1RkUwRj9cdTIwMERcdTI2QTd8XHVEODNEXHVEQzNCXHUyMDBEXHUyNzQ0fCg/Oig/Olx1RDgzQ1tcdURGQzNcdURGQzRcdURGQ0FdfFx1RDgzRFtcdURDNkVcdURDNzBcdURDNzFcdURDNzNcdURDNzdcdURDODFcdURDODJcdURDODZcdURDODdcdURFNDUtXHVERTQ3XHVERTRCXHVERTREXHVERTRFXHVERUEzXHVERUI0LVx1REVCNl18XHVEODNFW1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0RcdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0pKD86XHVEODNDW1x1REZGQi1cdURGRkZdKXxcdUQ4M0RcdURDNkZ8XHVEODNFW1x1RERERVx1RERERl0pXHUyMDBEW1x1MjY0MFx1MjY0Ml18KD86XHUyNkY5fFx1RDgzQ1tcdURGQ0JcdURGQ0NdfFx1RDgzRFx1REQ3NSkoPzooPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKVx1MjAwRFtcdTI2NDBcdTI2NDJdfFx1MjAwRFtcdTI2NDBcdTI2NDJdKXxcdUQ4M0NcdURGRjRcdTIwMERcdTI2MjB8KD86XHVEODNDW1x1REZDM1x1REZDNFx1REZDQV18XHVEODNEW1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XXxcdUQ4M0VbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzQy1cdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0pXHUyMDBEW1x1MjY0MFx1MjY0Ml18W1x4QTlceEFFXHUyMDNDXHUyMDQ5XHUyMTIyXHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFBOVx1MjFBQVx1MjMxQVx1MjMxQlx1MjMyOFx1MjNDRlx1MjNFRC1cdTIzRUZcdTIzRjFcdTIzRjJcdTIzRjgtXHUyM0ZBXHUyNEMyXHUyNUFBXHUyNUFCXHUyNUI2XHUyNUMwXHUyNUZCXHUyNUZDXHUyNUZFXHUyNjAwLVx1MjYwNFx1MjYwRVx1MjYxMVx1MjYxNFx1MjYxNVx1MjYxOFx1MjYyMFx1MjYyMlx1MjYyM1x1MjYyNlx1MjYyQVx1MjYyRVx1MjYyRlx1MjYzOC1cdTI2M0FcdTI2NDBcdTI2NDJcdTI2NDgtXHUyNjUzXHUyNjVGXHUyNjYwXHUyNjYzXHUyNjY1XHUyNjY2XHUyNjY4XHUyNjdCXHUyNjdFXHUyNjdGXHUyNjkyXHUyNjk0LVx1MjY5N1x1MjY5OVx1MjY5Qlx1MjY5Q1x1MjZBMFx1MjZBN1x1MjZBQVx1MjZCMFx1MjZCMVx1MjZCRFx1MjZCRVx1MjZDNFx1MjZDOFx1MjZDRlx1MjZEMVx1MjZEM1x1MjZFOVx1MjZGMC1cdTI2RjVcdTI2RjdcdTI2RjhcdTI2RkFcdTI3MDJcdTI3MDhcdTI3MDlcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NjNcdTI3QTFcdTI5MzRcdTI5MzVcdTJCMDUtXHUyQjA3XHUyQjFCXHUyQjFDXHUyQjU1XHUzMDMwXHUzMDNEXHUzMjk3XHUzMjk5XXxcdUQ4M0NbXHVEQzA0XHVERDcwXHVERDcxXHVERDdFXHVERDdGXHVERTAyXHVERTM3XHVERjIxXHVERjI0LVx1REYyQ1x1REYzNlx1REY3RFx1REY5Nlx1REY5N1x1REY5OS1cdURGOUJcdURGOUVcdURGOUZcdURGQ0RcdURGQ0VcdURGRDQtXHVERkRGXHVERkY1XHVERkY3XXxcdUQ4M0RbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM10pXHVGRTBGfFx1RDgzRFx1REM0MVx1RkUwRj9cdTIwMERcdUQ4M0RcdURERTh8XHVEODNFXHVEREQxKD86XHVEODNDXHVERkZGXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZFXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZEXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZDXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZCXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF0pfFx1RDgzRFx1REM2OSg/Olx1RDgzQ1x1REZGRlx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGRVx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGRFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGQ1x1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGQlx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdKXxcdUQ4M0NcdURGRjNcdUZFMEY/XHUyMDBEXHVEODNDXHVERjA4fFx1RDgzRFx1REM2OVx1MjAwRFx1RDgzRFx1REM2N3xcdUQ4M0RcdURDNjlcdTIwMERcdUQ4M0RcdURDNjZ8XHVEODNEXHVERTM2XHUyMDBEXHVEODNDXHVERjJCfFx1RDgzQ1x1REZGM1x1RkUwRj9cdTIwMERcdTI2QTd8XHVEODNEXHVERTM1XHUyMDBEXHVEODNEXHVEQ0FCfFx1RDgzRFx1REUyRVx1MjAwRFx1RDgzRFx1RENBOHxcdUQ4M0RcdURDMTVcdTIwMERcdUQ4M0VcdUREQkF8XHVEODNFXHVERUYxKD86XHVEODNDXHVERkZGfFx1RDgzQ1x1REZGRXxcdUQ4M0NcdURGRkR8XHVEODNDXHVERkZDfFx1RDgzQ1x1REZGQik/fFx1RDgzRVx1REREMSg/Olx1RDgzQ1x1REZGRnxcdUQ4M0NcdURGRkV8XHVEODNDXHVERkZEfFx1RDgzQ1x1REZGQ3xcdUQ4M0NcdURGRkIpP3xcdUQ4M0RcdURDNjkoPzpcdUQ4M0NcdURGRkZ8XHVEODNDXHVERkZFfFx1RDgzQ1x1REZGRHxcdUQ4M0NcdURGRkN8XHVEODNDXHVERkZCKT98XHVEODNEXHVEQzNCXHUyMDBEXHUyNzQ0fCg/Oig/Olx1RDgzQ1tcdURGQzNcdURGQzRcdURGQ0FdfFx1RDgzRFtcdURDNkVcdURDNzBcdURDNzFcdURDNzNcdURDNzdcdURDODFcdURDODJcdURDODZcdURDODdcdURFNDUtXHVERTQ3XHVERTRCXHVERTREXHVERTRFXHVERUEzXHVERUI0LVx1REVCNl18XHVEODNFW1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0RcdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0pKD86XHVEODNDW1x1REZGQi1cdURGRkZdKXxcdUQ4M0RcdURDNkZ8XHVEODNFW1x1RERERVx1RERERl0pXHUyMDBEW1x1MjY0MFx1MjY0Ml18KD86XHUyNkY5fFx1RDgzQ1tcdURGQ0JcdURGQ0NdfFx1RDgzRFx1REQ3NSkoPzooPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKVx1MjAwRFtcdTI2NDBcdTI2NDJdfFx1MjAwRFtcdTI2NDBcdTI2NDJdKXxcdUQ4M0NcdURGRjRcdTIwMERcdTI2MjB8XHVEODNDXHVEREZEXHVEODNDXHVEREYwfFx1RDgzQ1x1RERGNlx1RDgzQ1x1RERFNnxcdUQ4M0NcdURERjRcdUQ4M0NcdURERjJ8XHVEODNEXHVEQzA4XHUyMDBEXHUyQjFCfFx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REQyNXxcdUQ4M0VcdURFNzkpfFx1MjAwRCg/Olx1RDgzRFx1REQyNXxcdUQ4M0VcdURFNzkpKXxcdUQ4M0RcdURDNDFcdUZFMEY/fFx1RDgzQ1x1REZGM1x1RkUwRj98KD86XHVEODNDW1x1REZDM1x1REZDNFx1REZDQV18XHVEODNEW1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XXxcdUQ4M0VbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzQy1cdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF0pXHUyMDBEW1x1MjY0MFx1MjY0Ml18XHVEODNDXHVEREZGKD86XHVEODNDW1x1RERFNlx1RERGMlx1RERGQ10pfFx1RDgzQ1x1RERGRSg/Olx1RDgzQ1tcdURERUFcdURERjldKXxcdUQ4M0NcdURERkMoPzpcdUQ4M0NbXHVEREVCXHVEREY4XSl8XHVEODNDXHVEREZCKD86XHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRVx1RERGM1x1RERGQV0pfFx1RDgzQ1x1RERGQSg/Olx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdKXxcdUQ4M0NcdURERjkoPzpcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdKXxcdUQ4M0NcdURERjgoPzpcdUQ4M0NbXHVEREU2LVx1RERFQVx1RERFQy1cdURERjRcdURERjctXHVEREY5XHVEREZCXHVEREZELVx1RERGRl0pfFx1RDgzQ1x1RERGNyg/Olx1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdKXxcdUQ4M0NcdURERjUoPzpcdUQ4M0NbXHVEREU2XHVEREVBLVx1RERFRFx1RERGMC1cdURERjNcdURERjctXHVEREY5XHVEREZDXHVEREZFXSl8XHVEODNDXHVEREYzKD86XHVEODNDW1x1RERFNlx1RERFOFx1RERFQS1cdURERUNcdURERUVcdURERjFcdURERjRcdURERjVcdURERjdcdURERkFcdURERkZdKXxcdUQ4M0NcdURERjIoPzpcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdKXxcdUQ4M0NcdURERjEoPzpcdUQ4M0NbXHVEREU2LVx1RERFOFx1RERFRVx1RERGMFx1RERGNy1cdURERkJcdURERkVdKXxcdUQ4M0NcdURERjAoPzpcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl0pfFx1RDgzQ1x1RERFRig/Olx1RDgzQ1tcdURERUFcdURERjJcdURERjRcdURERjVdKXxcdUQ4M0NcdURERUUoPzpcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XSl8XHVEODNDXHVEREVEKD86XHVEODNDW1x1RERGMFx1RERGMlx1RERGM1x1RERGN1x1RERGOVx1RERGQV0pfFx1RDgzQ1x1RERFQyg/Olx1RDgzQ1tcdURERTZcdURERTdcdURERTktXHVEREVFXHVEREYxLVx1RERGM1x1RERGNS1cdURERkFcdURERkNcdURERkVdKXxcdUQ4M0NcdURERUIoPzpcdUQ4M0NbXHVEREVFLVx1RERGMFx1RERGMlx1RERGNFx1RERGN10pfFx1RDgzQ1x1RERFQSg/Olx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERURcdURERjctXHVEREZBXSl8XHVEODNDXHVEREU5KD86XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl0pfFx1RDgzQ1x1RERFOCg/Olx1RDgzQ1tcdURERTZcdURERThcdURERTlcdURERUItXHVEREVFXHVEREYwLVx1RERGNVx1RERGN1x1RERGQS1cdURERkZdKXxcdUQ4M0NcdURERTcoPzpcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRlx1RERGMS1cdURERjRcdURERjYtXHVEREY5XHVEREZCXHVEREZDXHVEREZFXHVEREZGXSl8XHVEODNDXHVEREU2KD86XHVEODNDW1x1RERFOC1cdURERUNcdURERUVcdURERjFcdURERjJcdURERjRcdURERjYtXHVEREZBXHVEREZDXHVEREZEXHVEREZGXSl8WyNcKjAtOV1cdUZFMEY/XHUyMEUzfFx1RDgzRVx1REQzQyg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHUyNzY0XHVGRTBGP3woPzpcdUQ4M0NbXHVERkMzXHVERkM0XHVERkNBXXxcdUQ4M0RbXHVEQzZFXHVEQzcwXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdfFx1RDgzRVtcdUREMjZcdUREMzVcdUREMzctXHVERDM5XHVERDNEXHVERDNFXHVEREI4XHVEREI5XHVERENELVx1RERDRlx1RERENFx1RERENi1cdURERERdKSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8KD86XHUyNkY5fFx1RDgzQ1tcdURGQ0JcdURGQ0NdfFx1RDgzRFx1REQ3NSkoPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98XHVEODNDXHVERkY0fCg/OltcdTI3MEFcdTI3MEJdfFx1RDgzQ1tcdURGODVcdURGQzJcdURGQzddfFx1RDgzRFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzZCLVx1REM2RFx1REM3Mlx1REM3NC1cdURDNzZcdURDNzhcdURDN0NcdURDODNcdURDODVcdURDOEZcdURDOTFcdURDQUFcdUREN0FcdUREOTVcdUREOTZcdURFNENcdURFNEZcdURFQzBcdURFQ0NdfFx1RDgzRVtcdUREMENcdUREMEZcdUREMTgtXHVERDFGXHVERDMwLVx1REQzNFx1REQzNlx1REQ3N1x1RERCNVx1RERCNlx1RERCQlx1REREMlx1REREM1x1RERENVx1REVDMy1cdURFQzVcdURFRjBcdURFRjItXHVERUY2XSkoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pfCg/OltcdTI2MURcdTI3MENcdTI3MERdfFx1RDgzRFtcdURENzRcdUREOTBdKSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pfFtcdTI2MURcdTI3MEEtXHUyNzBEXXxcdUQ4M0NbXHVERjg1XHVERkMyXHVERkM3XXxcdUQ4M0RbXHVEQzA4XHVEQzE1XHVEQzNCXHVEQzQyXHVEQzQzXHVEQzQ2LVx1REM1MFx1REM2Nlx1REM2N1x1REM2Qi1cdURDNkRcdURDNzJcdURDNzQtXHVEQzc2XHVEQzc4XHVEQzdDXHVEQzgzXHVEQzg1XHVEQzhGXHVEQzkxXHVEQ0FBXHVERDc0XHVERDdBXHVERDkwXHVERDk1XHVERDk2XHVERTJFXHVERTM1XHVERTM2XHVERTRDXHVERTRGXHVERUMwXHVERUNDXXxcdUQ4M0VbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdUREM0NcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGNl18XHVEODNDW1x1REZDM1x1REZDNFx1REZDQV18XHVEODNEW1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XXxcdUQ4M0VbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXXxcdUQ4M0RcdURDNkZ8XHVEODNFW1x1RERERVx1RERERl18W1x4QTlceEFFXHUyMDNDXHUyMDQ5XHUyMTIyXHUyMTM5XHUyMTk0LVx1MjE5OVx1MjFBOVx1MjFBQVx1MjMxQVx1MjMxQlx1MjMyOFx1MjNDRlx1MjNFRC1cdTIzRUZcdTIzRjFcdTIzRjJcdTIzRjgtXHUyM0ZBXHUyNEMyXHUyNUFBXHUyNUFCXHUyNUI2XHUyNUMwXHUyNUZCXHUyNUZDXHUyNUZFXHUyNjAwLVx1MjYwNFx1MjYwRVx1MjYxMVx1MjYxNFx1MjYxNVx1MjYxOFx1MjYyMFx1MjYyMlx1MjYyM1x1MjYyNlx1MjYyQVx1MjYyRVx1MjYyRlx1MjYzOC1cdTI2M0FcdTI2NDBcdTI2NDJcdTI2NDgtXHUyNjUzXHUyNjVGXHUyNjYwXHUyNjYzXHUyNjY1XHUyNjY2XHUyNjY4XHUyNjdCXHUyNjdFXHUyNjdGXHUyNjkyXHUyNjk0LVx1MjY5N1x1MjY5OVx1MjY5Qlx1MjY5Q1x1MjZBMFx1MjZBN1x1MjZBQVx1MjZCMFx1MjZCMVx1MjZCRFx1MjZCRVx1MjZDNFx1MjZDOFx1MjZDRlx1MjZEMVx1MjZEM1x1MjZFOVx1MjZGMC1cdTI2RjVcdTI2RjdcdTI2RjhcdTI2RkFcdTI3MDJcdTI3MDhcdTI3MDlcdTI3MEZcdTI3MTJcdTI3MTRcdTI3MTZcdTI3MURcdTI3MjFcdTI3MzNcdTI3MzRcdTI3NDRcdTI3NDdcdTI3NjNcdTI3QTFcdTI5MzRcdTI5MzVcdTJCMDUtXHUyQjA3XHUyQjFCXHUyQjFDXHUyQjU1XHUzMDMwXHUzMDNEXHUzMjk3XHUzMjk5XXxcdUQ4M0NbXHVEQzA0XHVERDcwXHVERDcxXHVERDdFXHVERDdGXHVERTAyXHVERTM3XHVERjIxXHVERjI0LVx1REYyQ1x1REYzNlx1REY3RFx1REY5Nlx1REY5N1x1REY5OS1cdURGOUJcdURGOUVcdURGOUZcdURGQ0RcdURGQ0VcdURGRDQtXHVERkRGXHVERkY1XHVERkY3XXxcdUQ4M0RbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM118W1x1MjNFOS1cdTIzRUNcdTIzRjBcdTIzRjNcdTI1RkRcdTI2OTNcdTI2QTFcdTI2QUJcdTI2QzVcdTI2Q0VcdTI2RDRcdTI2RUFcdTI2RkRcdTI3MDVcdTI3MjhcdTI3NENcdTI3NEVcdTI3NTMtXHUyNzU1XHUyNzU3XHUyNzk1LVx1Mjc5N1x1MjdCMFx1MjdCRlx1MkI1MF18XHVEODNDW1x1RENDRlx1REQ4RVx1REQ5MS1cdUREOUFcdURFMDFcdURFMUFcdURFMkZcdURFMzItXHVERTM2XHVERTM4LVx1REUzQVx1REU1MFx1REU1MVx1REYwMC1cdURGMjBcdURGMkQtXHVERjM1XHVERjM3LVx1REY3Q1x1REY3RS1cdURGODRcdURGODYtXHVERjkzXHVERkEwLVx1REZDMVx1REZDNVx1REZDNlx1REZDOFx1REZDOVx1REZDRi1cdURGRDNcdURGRTAtXHVERkYwXHVERkY4LVx1REZGRl18XHVEODNEW1x1REMwMC1cdURDMDdcdURDMDktXHVEQzE0XHVEQzE2LVx1REMzQVx1REMzQy1cdURDM0VcdURDNDBcdURDNDRcdURDNDVcdURDNTEtXHVEQzY1XHVEQzZBXHVEQzc5LVx1REM3Qlx1REM3RC1cdURDODBcdURDODRcdURDODgtXHVEQzhFXHVEQzkwXHVEQzkyLVx1RENBOVx1RENBQi1cdURDRkNcdURDRkYtXHVERDNEXHVERDRCLVx1REQ0RVx1REQ1MC1cdURENjdcdUREQTRcdURERkItXHVERTJEXHVERTJGLVx1REUzNFx1REUzNy1cdURFNDRcdURFNDgtXHVERTRBXHVERTgwLVx1REVBMlx1REVBNC1cdURFQjNcdURFQjctXHVERUJGXHVERUMxLVx1REVDNVx1REVEMC1cdURFRDJcdURFRDUtXHVERUQ3XHVERURELVx1REVERlx1REVFQlx1REVFQ1x1REVGNC1cdURFRkNcdURGRTAtXHVERkVCXHVERkYwXXxcdUQ4M0VbXHVERDBEXHVERDBFXHVERDEwLVx1REQxN1x1REQyMC1cdUREMjVcdUREMjctXHVERDJGXHVERDNBXHVERDNGLVx1REQ0NVx1REQ0Ny1cdURENzZcdURENzgtXHVEREI0XHVEREI3XHVEREJBXHVEREJDLVx1RERDQ1x1REREMFx1RERFMC1cdURERkZcdURFNzAtXHVERTc0XHVERTc4LVx1REU3Q1x1REU4MC1cdURFODZcdURFOTAtXHVERUFDXHVERUIwLVx1REVCQVx1REVDMC1cdURFQzJcdURFRDAtXHVERUQ5XHVERUUwLVx1REVFN10vZzsKICAgIH07CgogICAgLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqLw0KICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cikgew0KICAgICAgICByZXR1cm4gZHVyLnNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKS5ub3JtYWxpemUoKTsNCiAgICB9DQogICAgLyoqIEdldCB0aGUgInRpdGxlIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqLw0KICAgIGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoKSB7DQogICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpDQogICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7DQogICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCIubWQiKSkNCiAgICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOw0KICAgICAgICByZXR1cm4gcGF0aDsNCiAgICB9DQogICAgLyoqIEEgcGFyc2ltbW9uIHBhcnNlciB3aGljaCBjYW5vbmljYWxpemVzIHZhcmlhYmxlIG5hbWVzIHdoaWxlIHByb3Blcmx5IHJlc3BlY3RpbmcgZW1vamkuICovDQogICAgY29uc3QgVkFSX05BTUVfQ0FOT05JQ0FMSVpFUiA9IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXgobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICIiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXgoL1swLTlccHtMZXR0ZXJ9Xy1dKy91KS5tYXAoc3RyID0+IHN0ci50b0xvY2FsZUxvd2VyQ2FzZSgpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYW55Lm1hcChfID0+ICIiKSkNCiAgICAgICAgLm1hbnkoKQ0KICAgICAgICAubWFwKHJlc3VsdCA9PiByZXN1bHQuam9pbigiIikpOw0KICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YXJpYWJsZSBuYW1lIGludG8gc29tZXRoaW5nIEpTL3F1ZXJ5IGZyaWVuZGx5LiAqLw0KICAgIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZVZhck5hbWUobmFtZSkgew0KICAgICAgICByZXR1cm4gVkFSX05BTUVfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShuYW1lKTsNCiAgICB9DQogICAgY29uc3QgSEVBREVSX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMud2hpdGVzcGFjZS5tYXAoXyA9PiAiICIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQ0KICAgICAgICAubWFueSgpDQogICAgICAgIC5tYXAocmVzdWx0ID0+IHsNCiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsNCiAgICB9KTsNCiAgICAvKioNCiAgICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcw0KICAgICAqIGhvdyBPYnNpZGlhbiBkb2VzIGl0J3Mgbm9ybWFsaXphdGlvbiwgY29sbGFwc2luZyByZXBlYXRlZCBzcGFjZXMgYW5kIHN0cmlwcGluZyBvdXQgY29udHJvbCBjaGFyYWN0ZXJzLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7DQogICAgICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpOw0KICAgIH0KCiAgICAvKiogQSBzcGVjaWZpYyB0YXNrLiAqLw0KICAgIGNsYXNzIFRhc2sgew0KICAgICAgICBjb25zdHJ1Y3Rvcihpbml0KSB7DQogICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOw0KICAgICAgICAgICAgdGhpcy5zdWJ0YXNrcyA9ICh0aGlzLnN1YnRhc2tzIHx8IFtdKS5tYXAodCA9PiBuZXcgVGFzayh0KSk7DQogICAgICAgIH0NCiAgICAgICAgLyoqIENyZWF0ZSBhIHRhc2sgZnJvbSBhIHJlY29yZC4gKi8NCiAgICAgICAgc3RhdGljIGZyb21PYmplY3Qob2JqKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFRhc2sob2JqKTsNCiAgICAgICAgfQ0KICAgICAgICBpZCgpIHsNCiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnBhdGh9LSR7dGhpcy5saW5lfWA7DQogICAgICAgIH0NCiAgICAgICAgbWFya2Rvd24oKSB7DQogICAgICAgICAgICBsZXQgcmVzdWx0ID0gYC0gWyR7dGhpcy5jb21wbGV0ZWQgPyAieCIgOiAiICJ9XSAke3RoaXMudGV4dH1gOw0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KICAgICAgICAvKiogUmV0dXJuIGEgbmV3IHRhc2sgd2hlcmUgdGhlIGNyZWF0ZWQgYW5kIGNvbXBsZXRlZCBmaWVsZHMgYXJlIGFzc2lnbmVkIHRvIHRoZSBnaXZlbiBkZWZhdWx0cyBpZiBub3QgcHJlc2VudC4gKi8NCiAgICAgICAgd2l0aERlZmF1bHREYXRlcyhkZWZhdWx0Q3JlYXRlZCwgZGVmYXVsdENvbXBsZXRlZCkgew0KICAgICAgICAgICAgdmFyIF9hLCBfYjsNCiAgICAgICAgICAgIGxldCBuZXdUYXNrID0gbmV3IFRhc2sodGhpcyk7DQogICAgICAgICAgICBuZXdUYXNrLmNyZWF0ZWQgPSAoX2EgPSBuZXdUYXNrLmNyZWF0ZWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGRlZmF1bHRDcmVhdGVkOw0KICAgICAgICAgICAgaWYgKG5ld1Rhc2suY29tcGxldGVkKQ0KICAgICAgICAgICAgICAgIG5ld1Rhc2suY29tcGxldGlvbiA9IChfYiA9IG5ld1Rhc2suY29tcGxldGlvbikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZGVmYXVsdENvbXBsZXRlZDsNCiAgICAgICAgICAgIG5ld1Rhc2suc3VidGFza3MgPSBuZXdUYXNrLnN1YnRhc2tzLm1hcCh0ID0+IHQud2l0aERlZmF1bHREYXRlcyhkZWZhdWx0Q3JlYXRlZCwgZGVmYXVsdENvbXBsZXRlZCkpOw0KICAgICAgICAgICAgcmV0dXJuIG5ld1Rhc2s7DQogICAgICAgIH0NCiAgICAgICAgdG9PYmplY3QoaW5saW5lQW5ub3RhdGlvbnMgPSB0cnVlKSB7DQogICAgICAgICAgICBsZXQgcmVzdWx0ID0gew0KICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCwNCiAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsDQogICAgICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLA0KICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogdGhpcy5jb21wbGV0ZWQsDQogICAgICAgICAgICAgICAgZnVsbHlDb21wbGV0ZWQ6IHRoaXMuZnVsbHlDb21wbGV0ZWQsDQogICAgICAgICAgICAgICAgcmVhbDogdGhpcy5yZWFsLA0KICAgICAgICAgICAgICAgIGxpbms6IHRoaXMubGluaywNCiAgICAgICAgICAgICAgICBzZWN0aW9uOiB0aGlzLnNlY3Rpb24sDQogICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnNlY3Rpb24sDQogICAgICAgICAgICAgICAgc3VidGFza3M6IHRoaXMuc3VidGFza3MubWFwKHQgPT4gdC50b09iamVjdChpbmxpbmVBbm5vdGF0aW9ucykpLA0KICAgICAgICAgICAgICAgIGFubm90YXRlZDogISF0aGlzLmR1ZSB8fCAhIXRoaXMuY29tcGxldGlvbiB8fCAoISF0aGlzLmFubm90YXRpb25zICYmIE9iamVjdC5rZXlzKHRoaXMuYW5ub3RhdGlvbnMpLmxlbmd0aCA+IDApLA0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGlmICh0aGlzLmNyZWF0ZWQpDQogICAgICAgICAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQ7DQogICAgICAgICAgICBpZiAodGhpcy5kdWUpDQogICAgICAgICAgICAgICAgcmVzdWx0LmR1ZSA9IHRoaXMuZHVlOw0KICAgICAgICAgICAgaWYgKHRoaXMuY29tcGxldGlvbikNCiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IHRoaXMuY29tcGxldGlvbjsNCiAgICAgICAgICAgIGlmICh0aGlzLmFubm90YXRpb25zKSB7DQogICAgICAgICAgICAgICAgaWYgKGlubGluZUFubm90YXRpb25zKSB7DQogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmFubm90YXRpb25zKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQuYW5ub3RhdGlvbnMgPSB0aGlzLmFubm90YXRpb25zOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQogICAgLyoqIEFuIE9ic2lkaWFuIGxpbmsgd2l0aCBhbGwgYXNzb2NpYXRlZCBtZXRhZGF0YS4gKi8NCiAgICBjbGFzcyBMaW5rIHsNCiAgICAgICAgY29uc3RydWN0b3IoZmllbGRzKSB7DQogICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGZpZWxkcyk7DQogICAgICAgIH0NCiAgICAgICAgc3RhdGljIGZpbGUocGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsNCiAgICAgICAgICAgICAgICBwYXRoLA0KICAgICAgICAgICAgICAgIGVtYmVkLA0KICAgICAgICAgICAgICAgIGRpc3BsYXksDQogICAgICAgICAgICAgICAgdHlwZTogImZpbGUiLA0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgICAgc3RhdGljIGhlYWRlcihwYXRoLCBoZWFkZXIsIGVtYmVkLCBkaXNwbGF5KSB7DQogICAgICAgICAgICAvLyBIZWFkZXJzIG5lZWQgdG8gYmUgbm9ybWFsaXplZCB0byBhbHBoYS1udW1lcmljICYgd2l0aCBleHRyYSBzcGFjaW5nIHJlbW92ZWQuDQogICAgICAgICAgICByZXR1cm4gbmV3IExpbmsoew0KICAgICAgICAgICAgICAgIHBhdGgsDQogICAgICAgICAgICAgICAgZW1iZWQsDQogICAgICAgICAgICAgICAgZGlzcGxheSwNCiAgICAgICAgICAgICAgICBzdWJwYXRoOiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlciksDQogICAgICAgICAgICAgICAgdHlwZTogImhlYWRlciIsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBzdGF0aWMgYmxvY2socGF0aCwgYmxvY2tJZCwgZW1iZWQsIGRpc3BsYXkpIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgTGluayh7DQogICAgICAgICAgICAgICAgcGF0aCwNCiAgICAgICAgICAgICAgICBlbWJlZCwNCiAgICAgICAgICAgICAgICBkaXNwbGF5LA0KICAgICAgICAgICAgICAgIHN1YnBhdGg6IGJsb2NrSWQsDQogICAgICAgICAgICAgICAgdHlwZTogImJsb2NrIiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIHN0YXRpYyBmcm9tT2JqZWN0KG9iamVjdCkgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKG9iamVjdCk7DQogICAgICAgIH0NCiAgICAgICAgLyoqIENoZWNrcyBmb3IgbGluayBlcXVhbGl0eSAoaS5lLiwgdGhhdCB0aGUgbGlua3MgYXJlIHBvaW50aW5nIHRvIHRoZSBzYW1lIGV4YWN0IGxvY2F0aW9uKS4gKi8NCiAgICAgICAgZXF1YWxzKG90aGVyKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7DQogICAgICAgIH0NCiAgICAgICAgdG9TdHJpbmcoKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5tYXJrZG93bigpOw0KICAgICAgICB9DQogICAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayB0byBhIHJhdyBvYmplY3Qgd2hpY2ggKi8NCiAgICAgICAgdG9PYmplY3QoKSB7DQogICAgICAgICAgICByZXR1cm4geyBwYXRoOiB0aGlzLnBhdGgsIHR5cGU6IHRoaXMudHlwZSwgc3VicGF0aDogdGhpcy5zdWJwYXRoLCBkaXNwbGF5OiB0aGlzLmRpc3BsYXksIGVtYmVkOiB0aGlzLmVtYmVkIH07DQogICAgICAgIH0NCiAgICAgICAgLyoqIFJldHVybiBhIG5ldyBsaW5rIHdoaWNoIHBvaW50cyB0byB0aGUgc2FtZSBsb2NhdGlvbiBidXQgd2l0aCBhIG5ldyBkaXNwbGF5IHZhbHVlLiAqLw0KICAgICAgICB3aXRoRGlzcGxheShkaXNwbGF5KSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBkaXNwbGF5IH0pKTsNCiAgICAgICAgfQ0KICAgICAgICAvKiogQ29udmVydCBhIGZpbGUgbGluayBpbnRvIGEgbGluayB0byBhIHNwZWNpZmljIGhlYWRlci4gKi8NCiAgICAgICAgd2l0aEhlYWRlcihoZWFkZXIpIHsNCiAgICAgICAgICAgIHJldHVybiBMaW5rLmhlYWRlcih0aGlzLnBhdGgsIGhlYWRlciwgdGhpcy5lbWJlZCwgdGhpcy5kaXNwbGF5KTsNCiAgICAgICAgfQ0KICAgICAgICAvKiogQ29udmVydCBhbnkgbGluayBpbnRvIGEgbGluayB0byBpdHMgZmlsZS4gKi8NCiAgICAgICAgdG9GaWxlKCkgew0KICAgICAgICAgICAgcmV0dXJuIExpbmsuZmlsZSh0aGlzLnBhdGgsIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7DQogICAgICAgIH0NCiAgICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIGludG8gYW4gZW1iZWRkZWQgbGluay4gKi8NCiAgICAgICAgdG9FbWJlZCgpIHsNCiAgICAgICAgICAgIGlmICh0aGlzLmVtYmVkKQ0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOw0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgbGV0IGxpbmsgPSBuZXcgTGluayh0aGlzKTsNCiAgICAgICAgICAgICAgICBsaW5rLmVtYmVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICByZXR1cm4gbGluazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gbWFya2Rvd24gc28gaXQgY2FuIGJlIHJlbmRlcmVkLiAqLw0KICAgICAgICBtYXJrZG93bigpIHsNCiAgICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLnBhdGg7DQogICAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJoZWFkZXIiKQ0KICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiIyIgKyB0aGlzLnN1YnBhdGg7DQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT0gImJsb2NrIikNCiAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiNeIiArIHRoaXMuc3VicGF0aDsNCiAgICAgICAgICAgIGlmICh0aGlzLmRpc3BsYXkpDQogICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJ8IiArIHRoaXMuZGlzcGxheTsNCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJoZWFkZXIiIHx8IHRoaXMudHlwZSA9PSAiYmxvY2siKQ0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiA+ICIgKyB0aGlzLnN1YnBhdGg7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXN1bHQgKz0gIl1dIjsNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgaW50by4gKi8NCiAgICAgICAgZmlsZU5hbWUoKSB7DQogICAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCkucmVwbGFjZSgiLm1kIiwgIiIpOw0KICAgICAgICB9DQogICAgfQ0KICAgIHZhciBWYWx1ZXM7DQogICAgKGZ1bmN0aW9uIChWYWx1ZXMpIHsNCiAgICAgICAgLyoqIENvbnZlcnQgYW4gYXJiaXRhcnkgdmFsdWUgaW50byBhIHJlYXNvbmFibGUsIE1hcmtkb3duLWZyaWVuZGx5IHN0cmluZyBpZiBwb3NzaWJsZS4gKi8NCiAgICAgICAgZnVuY3Rpb24gdG9TdHJpbmcoZmllbGQsIHNldHRpbmcgPSBERUZBVUxUX1FVRVJZX1NFVFRJTkdTLCByZWN1cnNpdmUgPSBmYWxzZSkgew0KICAgICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOw0KICAgICAgICAgICAgaWYgKCF3cmFwcGVkKQ0KICAgICAgICAgICAgICAgIHJldHVybiAibnVsbCI7DQogICAgICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkgew0KICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOw0KICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6DQogICAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiIiArIHdyYXBwZWQudmFsdWU7DQogICAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcmtkb3duKCk7DQogICAgICAgICAgICAgICAgY2FzZSAidGFzayI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcmtkb3duKCk7DQogICAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gIjxmdW5jdGlvbj4iOw0KICAgICAgICAgICAgICAgIGNhc2UgImFycmF5IjoNCiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICIiOw0KICAgICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJbIjsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHdyYXBwZWQudmFsdWUubWFwKGYgPT4gdG9TdHJpbmcoZiwgc2V0dGluZywgdHJ1ZSkpLmpvaW4oIiwgIik7DQogICAgICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpDQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIl0iOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoInsgIiArDQogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZSA9PiBlWzBdICsgIjogIiArIHRvU3RyaW5nKGVbMV0sIHNldHRpbmcsIHRydWUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCIsICIpICsNCiAgICAgICAgICAgICAgICAgICAgICAgICIgfSIpOw0KICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgICBpZiAod3JhcHBlZC52YWx1ZS5zZWNvbmQgPT0gMCAmJiB3cmFwcGVkLnZhbHVlLmhvdXIgPT0gMCAmJiB3cmFwcGVkLnZhbHVlLm1pbnV0ZSA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0Zvcm1hdChzZXR0aW5nLmRlZmF1bHREYXRlRm9ybWF0KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0Zvcm1hdChzZXR0aW5nLmRlZmF1bHREYXRlVGltZUZvcm1hdCk7DQogICAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0lTT1RpbWUoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsNCiAgICAgICAgLyoqIFdyYXAgYSBsaXRlcmFsIHZhbHVlIHNvIHlvdSBjYW4gc3dpdGNoIG9uIGl0IGVhc2lseS4gKi8NCiAgICAgICAgZnVuY3Rpb24gd3JhcFZhbHVlKHZhbCkgew0KICAgICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJudWxsIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic3RyaW5nIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRhdGUiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgICBlbHNlIGlmIChpc0h0bWwodmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaHRtbCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYXJyYXkiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgICBlbHNlIGlmIChpc0xpbmsodmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGluayIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzVGFzayh2YWwpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YXNrIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbih2YWwpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy53cmFwVmFsdWUgPSB3cmFwVmFsdWU7DQogICAgICAgIC8qKiBDb21wYXJlIHR3byBhcmJpdHJhcnkgSmF2YVNjcmlwdCB2YWx1ZXMuIFByb2R1Y2VzIGEgdG90YWwgb3JkZXJpbmcgb3ZlciBBTlkgcG9zc2libGUgZGF0YXZpZXcgdmFsdWUuICovDQogICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVWYWx1ZSh2YWwxLCB2YWwyLCBsaW5rTm9ybWFsaXplcikgew0KICAgICAgICAgICAgdmFyIF9hLCBfYjsNCiAgICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuDQogICAgICAgICAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgICAgIHZhbDEgPSBudWxsOw0KICAgICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICB2YWwyID0gbnVsbDsNCiAgICAgICAgICAgIGlmICh2YWwxID09PSBudWxsICYmIHZhbDIgPT09IG51bGwpDQogICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICBlbHNlIGlmICh2YWwxID09PSBudWxsKQ0KICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpDQogICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAvLyBBIG5vbi1udWxsIHZhbHVlIG5vdyB3aGljaCB3ZSBjYW4gd3JhcCAmIGNvbXBhcmUgb24uDQogICAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7DQogICAgICAgICAgICBsZXQgd3JhcDIgPSB3cmFwVmFsdWUodmFsMik7DQogICAgICAgICAgICBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCAmJiB3cmFwMiA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQogICAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkNCiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudHlwZS5sb2NhbGVDb21wYXJlKHdyYXAyLnR5cGUpOw0KICAgICAgICAgICAgc3dpdGNoICh3cmFwMS50eXBlKSB7DQogICAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlLmxvY2FsZUNvbXBhcmUod3JhcDIudmFsdWUpOw0KICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh3cmFwMS52YWx1ZSA9PSB3cmFwMi52YWx1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgICAgICAgICBjYXNlICJudWxsIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA9PSB3cmFwMi52YWx1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPyAxIDogLTE7DQogICAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICAgIGxldCBsaW5rMSA9IHdyYXAxLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICBsZXQgbGluazIgPSB3cmFwMi52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZSA9IGxpbmtOb3JtYWxpemVyICE9PSBudWxsICYmIGxpbmtOb3JtYWxpemVyICE9PSB2b2lkIDAgPyBsaW5rTm9ybWFsaXplciA6ICgoeCkgPT4geCk7DQogICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGNvbXBhcmUgYnkgZmlsZSBuYW1lIG9yIGRpc3BsYXksIHNpbmNlIHRoYXQgd291bGQgYnJlYWsgbGluayBlcXVhbGl0eS4gQ29tcGFyZSBieSBwYXRoLg0KICAgICAgICAgICAgICAgICAgICBsZXQgcGF0aENvbXBhcmUgPSBub3JtYWxpemUobGluazEucGF0aCkubG9jYWxlQ29tcGFyZShub3JtYWxpemUobGluazIucGF0aCkpOw0KICAgICAgICAgICAgICAgICAgICBpZiAocGF0aENvbXBhcmUgIT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXRoQ29tcGFyZTsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiBjb21wYXJlIGJ5IHR5cGUuDQogICAgICAgICAgICAgICAgICAgIGxldCB0eXBlQ29tcGFyZSA9IGxpbmsxLnR5cGUubG9jYWxlQ29tcGFyZShsaW5rMi50eXBlKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlICE9IDApDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUNvbXBhcmU7DQogICAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSBzdWJwYXRoIGV4aXN0ZW5jZS4NCiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmIGxpbmsyLnN1YnBhdGgpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQogICAgICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiAhbGluazIuc3VicGF0aCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBib3RoIGhhdmUgYSBzdWJwYXRoLCBjb21wYXJlIGJ5IHN1YnBhdGguDQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoKF9hID0gbGluazEuc3VicGF0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogIiIpLmxvY2FsZUNvbXBhcmUoKF9iID0gbGluazIuc3VicGF0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogIiIpOw0KICAgICAgICAgICAgICAgIGNhc2UgInRhc2siOg0KICAgICAgICAgICAgICAgICAgICBsZXQgdGFzazEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IHRhc2syID0gd3JhcDIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSBvYmplY3QgY29tcGFyaXNvbiAmIGNvbXBhcmUgdGhlIHVuaXF1ZSBpZGVudGlmaWVycyAocGF0aCwgbGluZSwgYW5kIHRleHQgYXMgYmFja3VwKS4NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVWYWx1ZSh7IHBhdGg6IHRhc2sxLnBhdGgsIGxpbmU6IHRhc2sxLmxpbmUsIHRleHQ6IHRhc2sxLnRleHQgfSwgeyBwYXRoOiB0YXNrMi5wYXRoLCBsaW5lOiB0YXNrMi5saW5lLCB0ZXh0OiB0YXNrMi50ZXh0IH0pOw0KICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgPyAtMQ0KICAgICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOw0KICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgID8gLTENCiAgICAgICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsNCiAgICAgICAgICAgICAgICBjYXNlICJhcnJheSI6DQogICAgICAgICAgICAgICAgICAgIGxldCBmMSA9IHdyYXAxLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICBsZXQgZjIgPSB3cmFwMi52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE1hdGgubWluKGYxLmxlbmd0aCwgZjIubGVuZ3RoKTsgaW5kZXgrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXAgPSBjb21wYXJlVmFsdWUoZjFbaW5kZXhdLCBmMltpbmRleF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAgIT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZjEubGVuZ3RoIC0gZjIubGVuZ3RoOw0KICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICAgIGxldCBvMSA9IHdyYXAxLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICBsZXQgbzIgPSB3cmFwMi52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpOw0KICAgICAgICAgICAgICAgICAgICBsZXQgazIgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8yKSk7DQogICAgICAgICAgICAgICAgICAgIGsxLnNvcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgazIuc29ydCgpOw0KICAgICAgICAgICAgICAgICAgICBsZXQga2V5Q29tcGFyZSA9IGNvbXBhcmVWYWx1ZShrMSwgazIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoa2V5Q29tcGFyZSAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUNvbXBhcmU7DQogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBrMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXAgPSBjb21wYXJlVmFsdWUobzFba2V5XSwgbzJba2V5XSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgIGNhc2UgImh0bWwiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5jb21wYXJlVmFsdWUgPSBjb21wYXJlVmFsdWU7DQogICAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8NCiAgICAgICAgZnVuY3Rpb24gdHlwZU9mKHZhbCkgew0KICAgICAgICAgICAgdmFyIF9hOw0KICAgICAgICAgICAgcmV0dXJuIChfYSA9IHdyYXBWYWx1ZSh2YWwpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMudHlwZU9mID0gdHlwZU9mOw0KICAgICAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyAidHJ1dGh5IiAoaS5lLiwgaXMgbm9uLW51bGwgYW5kIGhhcyBkYXRhIGluIGl0KS4gKi8NCiAgICAgICAgZnVuY3Rpb24gaXNUcnV0aHkoZmllbGQpIHsNCiAgICAgICAgICAgIGxldCB3cmFwcGVkID0gd3JhcFZhbHVlKGZpZWxkKTsNCiAgICAgICAgICAgIGlmICghd3JhcHBlZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkgew0KICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlICE9IDA7DQogICAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7DQogICAgICAgICAgICAgICAgY2FzZSAibGluayI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXdyYXBwZWQudmFsdWUucGF0aDsNCiAgICAgICAgICAgICAgICBjYXNlICJ0YXNrIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudGV4dC5sZW5ndGggPiAwOw0KICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b01pbGxpcygpICE9IDA7DQogICAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7DQogICAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHdyYXBwZWQudmFsdWUpLmxlbmd0aCA+IDA7DQogICAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOw0KICAgICAgICAgICAgICAgIGNhc2UgIm51bGwiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmlzVHJ1dGh5ID0gaXNUcnV0aHk7DQogICAgICAgIC8qKiBEZWVwIGNvcHkgYSBmaWVsZC4gKi8NCiAgICAgICAgZnVuY3Rpb24gZGVlcENvcHkoZmllbGQpIHsNCiAgICAgICAgICAgIGlmIChmaWVsZCA9PT0gbnVsbCB8fCBmaWVsZCA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZDsNCiAgICAgICAgICAgIGlmIChWYWx1ZXMuaXNBcnJheShmaWVsZCkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gW10uY29uY2F0KGZpZWxkLm1hcCh2ID0+IGRlZXBDb3B5KHYpKSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmIChWYWx1ZXMuaXNPYmplY3QoZmllbGQpKSB7DQogICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9Ow0KICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaWVsZCkpDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gZGVlcENvcHkodmFsdWUpOw0KICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmRlZXBDb3B5ID0gZGVlcENvcHk7DQogICAgICAgIGZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkgew0KICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gInN0cmluZyI7DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmlzU3RyaW5nID0gaXNTdHJpbmc7DQogICAgICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkgew0KICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gIm51bWJlciI7DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmlzTnVtYmVyID0gaXNOdW1iZXI7DQogICAgICAgIGZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlVGltZV8xOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc0RhdGUgPSBpc0RhdGU7DQogICAgICAgIGZ1bmN0aW9uIGlzRHVyYXRpb24odmFsKSB7DQogICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRHVyYXRpb25fMTsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNEdXJhdGlvbiA9IGlzRHVyYXRpb247DQogICAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsNCiAgICAgICAgZnVuY3Rpb24gaXNBcnJheSh2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmlzQXJyYXkgPSBpc0FycmF5Ow0KICAgICAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsKSB7DQogICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47DQogICAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBMaW5rOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7DQogICAgICAgIGZ1bmN0aW9uIGlzVGFzayh2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBUYXNrOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc1Rhc2sgPSBpc1Rhc2s7DQogICAgICAgIGZ1bmN0aW9uIGlzSHRtbCh2YWwpIHsNCiAgICAgICAgICAgIGlmICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICJ1bmRlZmluZWQiKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc0h0bWwgPSBpc0h0bWw7DQogICAgICAgIGZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkgew0KICAgICAgICAgICAgcmV0dXJuICh0eXBlb2YgdmFsID09ICJvYmplY3QiICYmDQogICAgICAgICAgICAgICAgIWlzSHRtbCh2YWwpICYmDQogICAgICAgICAgICAgICAgIWlzQXJyYXkodmFsKSAmJg0KICAgICAgICAgICAgICAgICFpc0R1cmF0aW9uKHZhbCkgJiYNCiAgICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYNCiAgICAgICAgICAgICAgICAhaXNMaW5rKHZhbCkgJiYNCiAgICAgICAgICAgICAgICAhaXNUYXNrKHZhbCkpOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc09iamVjdCA9IGlzT2JqZWN0Ow0KICAgICAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCkgew0KICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gImZ1bmN0aW9uIjsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247DQogICAgfSkoVmFsdWVzIHx8IChWYWx1ZXMgPSB7fSkpOw0KICAgIHZhciBHcm91cGluZ3M7DQogICAgKGZ1bmN0aW9uIChHcm91cGluZ3MpIHsNCiAgICAgICAgZnVuY3Rpb24gYmFzZSh2YWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJhc2UiLCB2YWx1ZSB9Ow0KICAgICAgICB9DQogICAgICAgIEdyb3VwaW5ncy5iYXNlID0gYmFzZTsNCiAgICAgICAgZnVuY3Rpb24gZ3JvdXBlZCh2YWx1ZXMpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJncm91cGVkIiwgZ3JvdXBzOiB2YWx1ZXMgfTsNCiAgICAgICAgfQ0KICAgICAgICBHcm91cGluZ3MuZ3JvdXBlZCA9IGdyb3VwZWQ7DQogICAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOwoKICAgIC8qKiBVdGlsaXR5IG1ldGhvZHMgZm9yIGNyZWF0aW5nICYgY29tcGFyaW5nIGZpZWxkcy4gKi8NCiAgICB2YXIgRmllbGRzOw0KICAgIChmdW5jdGlvbiAoRmllbGRzKSB7DQogICAgICAgIGZ1bmN0aW9uIHZhcmlhYmxlKG5hbWUpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ2YXJpYWJsZSIsIG5hbWUgfTsNCiAgICAgICAgfQ0KICAgICAgICBGaWVsZHMudmFyaWFibGUgPSB2YXJpYWJsZTsNCiAgICAgICAgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpdGVyYWwiLCB2YWx1ZSB9Ow0KICAgICAgICB9DQogICAgICAgIEZpZWxkcy5saXRlcmFsID0gbGl0ZXJhbDsNCiAgICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsNCiAgICAgICAgfQ0KICAgICAgICBGaWVsZHMuYmluYXJ5T3AgPSBiaW5hcnlPcDsNCiAgICAgICAgZnVuY3Rpb24gaW5kZXgob2JqLCBpbmRleCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImluZGV4Iiwgb2JqZWN0OiBvYmosIGluZGV4IH07DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLmluZGV4ID0gaW5kZXg7DQogICAgICAgIC8qKiBDb252ZXJ0cyBhIHN0cmluZyBpbiBkb3Qtbm90YXRpb24tZm9ybWF0IGludG8gYSB2YXJpYWJsZSB3aGljaCBpbmRleGVzLiAqLw0KICAgICAgICBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWUpIHsNCiAgICAgICAgICAgIGxldCBwYXJ0cyA9IG5hbWUuc3BsaXQoIi4iKTsNCiAgICAgICAgICAgIGxldCByZXN1bHQgPSBGaWVsZHMudmFyaWFibGUocGFydHNbMF0pOw0KICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykgew0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBhcnRzW2luZGV4XSkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KICAgICAgICBGaWVsZHMuaW5kZXhWYXJpYWJsZSA9IGluZGV4VmFyaWFibGU7DQogICAgICAgIGZ1bmN0aW9uIGxhbWJkYShhcmdzLCB2YWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogYXJncywgdmFsdWUgfTsNCiAgICAgICAgfQ0KICAgICAgICBGaWVsZHMubGFtYmRhID0gbGFtYmRhOw0KICAgICAgICBmdW5jdGlvbiBmdW5jKGZ1bmMsIGFyZ3MpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIGZ1bmMsIGFyZ3VtZW50czogYXJncyB9Ow0KICAgICAgICB9DQogICAgICAgIEZpZWxkcy5mdW5jID0gZnVuYzsNCiAgICAgICAgZnVuY3Rpb24gbGlzdCh2YWx1ZXMpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXN0IiwgdmFsdWVzIH07DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLmxpc3QgPSBsaXN0Ow0KICAgICAgICBmdW5jdGlvbiBvYmplY3QodmFsdWVzKSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAib2JqZWN0IiwgdmFsdWVzIH07DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLm9iamVjdCA9IG9iamVjdDsNCiAgICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlZCIsIGNoaWxkIH07DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLm5lZ2F0ZSA9IG5lZ2F0ZTsNCiAgICAgICAgZnVuY3Rpb24gaXNDb21wYXJlT3Aob3ApIHsNCiAgICAgICAgICAgIHJldHVybiBvcCA9PSAiPD0iIHx8IG9wID09ICI8IiB8fCBvcCA9PSAiPiIgfHwgb3AgPT0gIj49IiB8fCBvcCA9PSAiIT0iIHx8IG9wID09ICI9IjsNCiAgICAgICAgfQ0KICAgICAgICBGaWVsZHMuaXNDb21wYXJlT3AgPSBpc0NvbXBhcmVPcDsNCiAgICAgICAgRmllbGRzLk5VTEwgPSBGaWVsZHMubGl0ZXJhbChudWxsKTsNCiAgICB9KShGaWVsZHMgfHwgKEZpZWxkcyA9IHt9KSk7CgogICAgLyoqIEFTVCBpbXBsZW1lbnRhdGlvbiBmb3IgcXVlcmllcyBvdmVyIGRhdGEgc291cmNlcy4gKi8NCiAgICAvKiogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgc291cmNlcy4gKi8NCiAgICB2YXIgU291cmNlczsNCiAgICAoZnVuY3Rpb24gKFNvdXJjZXMpIHsNCiAgICAgICAgZnVuY3Rpb24gdGFnKHRhZykgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogInRhZyIsIHRhZyB9Ow0KICAgICAgICB9DQogICAgICAgIFNvdXJjZXMudGFnID0gdGFnOw0KICAgICAgICBmdW5jdGlvbiBjc3YocGF0aCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImNzdiIsIHBhdGggfTsNCiAgICAgICAgfQ0KICAgICAgICBTb3VyY2VzLmNzdiA9IGNzdjsNCiAgICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZvbGRlciIsIGZvbGRlcjogcHJlZml4IH07DQogICAgICAgIH0NCiAgICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7DQogICAgICAgIGZ1bmN0aW9uIGxpbmsoZmlsZSwgaW5jb21pbmcpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07DQogICAgICAgIH0NCiAgICAgICAgU291cmNlcy5saW5rID0gbGluazsNCiAgICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsNCiAgICAgICAgfQ0KICAgICAgICBTb3VyY2VzLmJpbmFyeU9wID0gYmluYXJ5T3A7DQogICAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm5lZ2F0ZSIsIGNoaWxkIH07DQogICAgICAgIH0NCiAgICAgICAgU291cmNlcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICAgIGZ1bmN0aW9uIGVtcHR5KCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImVtcHR5IiB9Ow0KICAgICAgICB9DQogICAgICAgIFNvdXJjZXMuZW1wdHkgPSBlbXB0eTsNCiAgICB9KShTb3VyY2VzIHx8IChTb3VyY2VzID0ge30pKTsKCiAgICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8NCiAgICBjb25zdCBFTU9KSV9SRUdFWCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIik7DQogICAgLyoqIFByb3ZpZGVzIGEgbG9va3VwIHRhYmxlIGZvciB1bml0IGR1cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gdHlwZS4gKi8NCiAgICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsNCiAgICAgICAgeWVhcjogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICAgIHllYXJzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwNCiAgICAgICAgeXI6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLA0KICAgICAgICB5cnM6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLA0KICAgICAgICBtb250aDogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgICBtb250aHM6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgICAgbW86IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgICAgbW9zOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksDQogICAgICAgIHdlZWs6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLA0KICAgICAgICB3ZWVrczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksDQogICAgICAgIHdrOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgICAgd2tzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgICAgdzogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksDQogICAgICAgIGRheTogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwNCiAgICAgICAgZGF5czogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwNCiAgICAgICAgZDogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwNCiAgICAgICAgaG91cjogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksDQogICAgICAgIGhvdXJzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgICAgaHI6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLA0KICAgICAgICBocnM6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLA0KICAgICAgICBoOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgICAgbWludXRlOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgICBtaW51dGVzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgICBtaW46IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICAgIG1pbnM6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICAgIG06IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksDQogICAgICAgIHNlY29uZDogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgICAgc2Vjb25kczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgICAgc2VjOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgICBzZWNzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgICAgICBzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLA0KICAgIH07DQogICAgLyoqDQogICAgICogS2V5d29yZHMgd2hpY2ggY2Fubm90IGJlIHVzZWQgYXMgdmFyaWFibGVzIGRpcmVjdGx5LiBVc2UgYHJvdy48dGhpbmc+YCBpZiBpdCBpcyBhIHZhcmlhYmxlIHlvdSBoYXZlIGRlZmluZWQgYW5kIHdhbnQNCiAgICAgKiB0byBhY2Nlc3MuDQogICAgICovDQogICAgY29uc3QgS0VZV09SRFMgPSBbIkZST00iLCAiV0hFUkUiLCAiTElNSVQiLCAiR1JPVVAiLCAiRkxBVFRFTiJdOw0KICAgIC8vLy8vLy8vLy8vLy8vLw0KICAgIC8vIFV0aWxpdGllcyAvLw0KICAgIC8vLy8vLy8vLy8vLy8vLw0KICAgIC8qKiBBdHRlbXB0IHRvIHBhcnNlIHRoZSBpbnNpZGUgb2YgYSBsaW5rIHRvIHB1bGwgb3V0IGRpc3BsYXkgbmFtZSwgc3VicGF0aCwgZXRjLiAqLw0KICAgIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKGxpbmspIHsNCiAgICAgICAgbGV0IGRpc3BsYXkgPSB1bmRlZmluZWQ7DQogICAgICAgIGlmIChsaW5rLmluY2x1ZGVzKCJ8IikpIHsNCiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmsuc3BsaXQoInwiKTsNCiAgICAgICAgICAgIGxpbmsgPSBzcGxpdFswXTsNCiAgICAgICAgICAgIGRpc3BsYXkgPSBzcGxpdFsxXTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAobGluay5pbmNsdWRlcygiIyIpKSB7DQogICAgICAgICAgICBsZXQgc3BsaXQgPSBsaW5rLnNwbGl0KCIjIik7DQogICAgICAgICAgICByZXR1cm4gTGluay5oZWFkZXIoc3BsaXRbMF0sIHNwbGl0WzFdLCBmYWxzZSwgZGlzcGxheSk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAobGluay5pbmNsdWRlcygiXiIpKSB7DQogICAgICAgICAgICBsZXQgc3BsaXQgPSBsaW5rLnNwbGl0KCJeIik7DQogICAgICAgICAgICByZXR1cm4gTGluay5ibG9jayhzcGxpdFswXSwgc3BsaXRbMV0sIGZhbHNlLCBkaXNwbGF5KTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gTGluay5maWxlKGxpbmssIGZhbHNlLCBkaXNwbGF5KTsNCiAgICB9DQogICAgLyoqIENyZWF0ZSBhIGxlZnQtYXNzb2NpYXRpdmUgYmluYXJ5IHBhcnNlciB3aGljaCBwYXJzZXMgdGhlIGdpdmVuIHN1Yi1lbGVtZW50IGFuZCBzZXBhcmF0b3IuIEhhbmRsZXMgd2hpdGVzcGFjZS4gKi8NCiAgICBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXIoY2hpbGQsIHNlcCwgY29tYmluZSkgew0KICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAoY2hpbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgc2VwLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gew0KICAgICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09IDApDQogICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Ow0KICAgICAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTsNCiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykgew0KICAgICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfSk7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoYWluT3B0KGJhc2UsIC4uLmZ1bmNzKSB7DQogICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmN1c3RvbSgoc3VjY2VzcywgZmFpbHVyZSkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIChpbnB1dCwgaSkgPT4gew0KICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBiYXNlLl8oaW5wdXQsIGkpOw0KICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIGZ1bmNzKSB7DQogICAgICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gZnVuYyhyZXN1bHQudmFsdWUpLl8oaW5wdXQsIHJlc3VsdC5pbmRleCk7DQogICAgICAgICAgICAgICAgICAgIGlmICghbmV4dC5zdGF0dXMpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXh0Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgfTsNCiAgICAgICAgfSk7DQogICAgfQ0KICAgIGNvbnN0IEVYUFJFU1NJT04gPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmNyZWF0ZUxhbmd1YWdlKHsNCiAgICAgICAgLy8gQSBmbG9hdGluZyBwb2ludCBudW1iZXI7IHRoZSBkZWNpbWFsIHBvaW50IGlzIG9wdGlvbmFsLg0KICAgICAgICBudW1iZXI6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoLy0/WzAtOV0rKFwuWzAtOV0rKT8vKQ0KICAgICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkNCiAgICAgICAgICAgIC5kZXNjKCJudW1iZXIiKSwNCiAgICAgICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1wnKS4NCiAgICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCciJykNCiAgICAgICAgICAgIC50aGVuKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHEuZXNjYXBlQ2hhcmFjdGVyLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm5vbmVPZignIlxcJykpDQogICAgICAgICAgICAuYXRMZWFzdCgwKQ0KICAgICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpDQogICAgICAgICAgICAuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygnIicpKQ0KICAgICAgICAgICAgLmRlc2MoInN0cmluZyIpLA0KICAgICAgICBlc2NhcGVDaGFyYWN0ZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlxcIikNCiAgICAgICAgICAgIC50aGVuKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYW55KQ0KICAgICAgICAgICAgLm1hcChlc2NhcGVkID0+IHsNCiAgICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQ0KICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICciJykNCiAgICAgICAgICAgICAgICByZXR1cm4gJyInOw0KICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpDQogICAgICAgICAgICAgICAgcmV0dXJuICJcXCI7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOw0KICAgICAgICB9KSwNCiAgICAgICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuDQogICAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL3RydWV8ZmFsc2V8VHJ1ZXxGYWxzZS8pDQogICAgICAgICAgICAubWFwKHN0ciA9PiBzdHIudG9Mb3dlckNhc2UoKSA9PSAidHJ1ZSIpDQogICAgICAgICAgICAuZGVzYygiYm9vbGVhbiAoJ3RydWUnIG9yICdmYWxzZScpIiksDQogICAgICAgIC8vIEEgdGFnIG9mIHRoZSBmb3JtICcjc3R1ZmYvaGVsbG8tdGhlcmUnLg0KICAgICAgICB0YWc6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiMiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1tccHtMZXR0ZXJ9MC05Xy8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpKS5tYW55KCksIChzdGFydCwgcmVzdCkgPT4gc3RhcnQgKyByZXN0LmpvaW4oIiIpKS5kZXNjKCJ0YWcgKCcjaGVsbG8vc3R1ZmYnKSIpLA0KICAgICAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yLi4uIGVtb2ppLg0KICAgICAgICBpZGVudGlmaWVyOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9ccHtMZXR0ZXJ9L3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1fLV0vdSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKEVNT0pJX1JFR0VYKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLA0KICAgICAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLiBDYW4gaW5jbHVkZSBkb3RzLg0KICAgICAgICBpZGVudGlmaWVyRG90OiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9ccHtMZXR0ZXJ9L3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cLl8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gZmlyc3QgKyByZXN0LmpvaW4oIiIpKS5kZXNjKCJ2YXJpYWJsZSBpZGVudGlmaWVyIiksDQogICAgICAgIC8vIEFuIE9ic2lkaWFuIGxpbmsgb2YgdGhlIGZvcm0gW1s8bGluaz5dXS4NCiAgICAgICAgbGluazogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQ0KICAgICAgICAgICAgLm1hcChsaW5rSW5uZXIgPT4gcGFyc2VJbm5lckxpbmsobGlua0lubmVyKSkNCiAgICAgICAgICAgIC5kZXNjKCJmaWxlIGxpbmsiKSwNCiAgICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkNCiAgICAgICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuDQogICAgICAgIGVtYmVkTGluazogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiISIpLmF0TW9zdCgxKSwgcS5saW5rLCAocCwgbCkgPT4gew0KICAgICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkNCiAgICAgICAgICAgICAgICBsLmVtYmVkID0gdHJ1ZTsNCiAgICAgICAgICAgIHJldHVybiBsOw0KICAgICAgICB9KSwNCiAgICAgICAgLy8gQmluYXJ5IHBsdXMgb3IgbWludXMgb3BlcmF0b3IuDQogICAgICAgIGJpbmFyeVBsdXNNaW51czogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXCt8LS8pDQogICAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpDQogICAgICAgICAgICAuZGVzYygiJysnIG9yICctJyIpLA0KICAgICAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLg0KICAgICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1wqfFwvLykNCiAgICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikNCiAgICAgICAgICAgIC5kZXNjKCInKicgb3IgJy8nIiksDQogICAgICAgIC8vIEJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9yLg0KICAgICAgICBiaW5hcnlDb21wYXJlT3A6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoLz49fDw9fCE9fD58PHw9LykNCiAgICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikNCiAgICAgICAgICAgIC5kZXNjKCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8JyIpLA0KICAgICAgICAvLyBCaW5hcnkgYm9vbGVhbiBjb21iaW5hdGlvbiBvcGVyYXRvci4NCiAgICAgICAgYmluYXJ5Qm9vbGVhbk9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9hbmR8b3J8JnxcfC9pKQ0KICAgICAgICAgICAgLm1hcChzdHIgPT4gew0KICAgICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJhbmQiKQ0KICAgICAgICAgICAgICAgIHJldHVybiAiJiI7DQogICAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQ0KICAgICAgICAgICAgICAgIHJldHVybiAifCI7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsNCiAgICAgICAgfSkNCiAgICAgICAgICAgIC5kZXNjKCInYW5kJyBvciAnb3InIiksDQogICAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLg0KICAgICAgICByb290RGF0ZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7NH0vKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksICh5ZWFyLCBfLCBtb250aCkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lXzEuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7DQogICAgICAgIH0pLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLA0KICAgICAgICBkYXRlOiBxID0+IGNoYWluT3B0KHEucm9vdERhdGUsICh5bSkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBkYXkpID0+IHltLnNldCh7IGRheTogTnVtYmVyLnBhcnNlSW50KGRheSkgfSkpLCAoeW1kKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiVCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIGhvdXIpID0+IHltZC5zZXQoeyBob3VyOiBOdW1iZXIucGFyc2VJbnQoaG91cikgfSkpLCAoeW1kaCkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBtaW51dGUpID0+IHltZGguc2V0KHsgbWludXRlOiBOdW1iZXIucGFyc2VJbnQobWludXRlKSB9KSksICh5bWRobSkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBzZWNvbmQpID0+IHltZGhtLnNldCh7IHNlY29uZDogTnVtYmVyLnBhcnNlSW50KHNlY29uZCkgfSkpLCAoeW1kaG1zKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7M30vKSwgKF8sIG1pbGxpc2Vjb25kKSA9PiB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN1Y2NlZWQoeW1kaG1zKSAvLyBwYXNzDQogICAgICAgICksIChkdCkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIisiKS5vcihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIloiKSwgKCkgPT4gZHQuc2V0Wm9uZSgidXRjIikpKSksDQogICAgICAgIC8vIEEgZGF0ZSwgcGx1cyB2YXJpb3VzIHNob3J0aGFuZCB0aW1lcyBvZiBkYXkgaXQgY291bGQgYmUuDQogICAgICAgIGRhdGVQbHVzOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJub3ciKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygidG9kYXkiKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkuc3RhcnRPZigiZGF5IikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygidG9tb3Jyb3ciKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkNCiAgICAgICAgICAgIC5zdGFydE9mKCJkYXkiKQ0KICAgICAgICAgICAgLnBsdXMoRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygic293IikubWFwKF8gPT4gRGF0ZVRpbWVfMS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJzb20iKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkuc3RhcnRPZigibW9udGgiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJzb3kiKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkuc3RhcnRPZigieWVhciIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoImVvdyIpLm1hcChfID0+IERhdGVUaW1lXzEubG9jYWwoKS5lbmRPZigid2VlayIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoImVvbSIpLm1hcChfID0+IERhdGVUaW1lXzEubG9jYWwoKS5lbmRPZigibW9udGgiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJlb3kiKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkuZW5kT2YoInllYXIiKSksIHEuZGF0ZSksDQogICAgICAgIC8vIEEgZHVyYXRpb24gb2YgdGltZS4NCiAgICAgICAgZHVyYXRpb25UeXBlOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KC4uLk9iamVjdC5rZXlzKERVUkFUSU9OX1RZUEVTKQ0KICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpDQogICAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKSksDQogICAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEubnVtYmVyLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSkNCiAgICAgICAgICAgIC5zZXBCeTEocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkub3IocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAgIC5tYXAoZHVyYXRpb25zID0+IGR1cmF0aW9ucy5yZWR1Y2UoKHAsIGMpID0+IHAucGx1cyhjKSkpLA0KICAgICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLg0KICAgICAgICByYXdOdWxsOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJudWxsIiksDQogICAgICAgIC8vIFNvdXJjZSBwYXJzaW5nLg0KICAgICAgICB0YWdTb3VyY2U6IHEgPT4gcS50YWcubWFwKHRhZyA9PiBTb3VyY2VzLnRhZyh0YWcpKSwNCiAgICAgICAgY3N2U291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJjc3YoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLnN0cmluZywgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBwYXRoLCBfMikgPT4gU291cmNlcy5jc3YocGF0aCkpLA0KICAgICAgICBsaW5rSW5jb21pbmdTb3VyY2U6IHEgPT4gcS5saW5rLm1hcChsaW5rID0+IFNvdXJjZXMubGluayhsaW5rLnBhdGgsIHRydWUpKSwNCiAgICAgICAgbGlua091dGdvaW5nU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJvdXRnb2luZygiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEubGluaywgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwNCiAgICAgICAgZm9sZGVyU291cmNlOiBxID0+IHEuc3RyaW5nLm1hcChzdHIgPT4gU291cmNlcy5mb2xkZXIoc3RyKSksDQogICAgICAgIHBhcmVuc1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuc291cmNlLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgXzIsIGZpZWxkLCBfMywgXzQpID0+IGZpZWxkKSwNCiAgICAgICAgbmVnYXRlU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLA0KICAgICAgICBhdG9tU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHEucGFyZW5zU291cmNlLCBxLm5lZ2F0ZVNvdXJjZSwgcS5saW5rT3V0Z29pbmdTb3VyY2UsIHEubGlua0luY29taW5nU291cmNlLCBxLmZvbGRlclNvdXJjZSwgcS50YWdTb3VyY2UsIHEuY3N2U291cmNlKSwNCiAgICAgICAgYmluYXJ5T3BTb3VyY2U6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYXRvbVNvdXJjZSwgcS5iaW5hcnlCb29sZWFuT3AubWFwKHMgPT4gcyksIFNvdXJjZXMuYmluYXJ5T3ApLA0KICAgICAgICBzb3VyY2U6IHEgPT4gcS5iaW5hcnlPcFNvdXJjZSwNCiAgICAgICAgLy8gRmllbGQgcGFyc2luZy4NCiAgICAgICAgdmFyaWFibGVGaWVsZDogcSA9PiBxLmlkZW50aWZpZXINCiAgICAgICAgICAgIC5jaGFpbihyID0+IHsNCiAgICAgICAgICAgIGlmIChLRVlXT1JEUy5pbmNsdWRlcyhyLnRvVXBwZXJDYXNlKCkpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuZmFpbCgiVmFyaWFibGUgZmllbGRzIGNhbm5vdCBiZSBhIGtleXdvcmQgKCIgKyBLRVlXT1JEUy5qb2luKCIgb3IgIikgKyAiKSIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3VjY2VlZChGaWVsZHMudmFyaWFibGUocikpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICAgICAgLmRlc2MoInZhcmlhYmxlIiksDQogICAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksDQogICAgICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygic3RyaW5nIiksDQogICAgICAgIGJvb2xGaWVsZDogcSA9PiBxLmJvb2wubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJib29sZWFuIiksDQogICAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiZGF0ZSgiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkYXRlLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZGF0ZSkpLmRlc2MoImRhdGUiKSwNCiAgICAgICAgZHVyYXRpb25GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiZHVyKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb24sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKHByZWZpeCwgXzEsIGR1ciwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGR1cikpLmRlc2MoImR1cmF0aW9uIiksDQogICAgICAgIG51bGxGaWVsZDogcSA9PiBxLnJhd051bGwubWFwKF8gPT4gRmllbGRzLk5VTEwpLA0KICAgICAgICBsaW5rRmllbGQ6IHEgPT4gcS5saW5rLm1hcChmID0+IEZpZWxkcy5saXRlcmFsKGYpKSwNCiAgICAgICAgbGlzdEZpZWxkOiBxID0+IHEuZmllbGQNCiAgICAgICAgICAgIC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpKSkNCiAgICAgICAgICAgIC5tYXAobCA9PiBGaWVsZHMubGlzdChsKSkNCiAgICAgICAgICAgIC5kZXNjKCJsaXN0ICgnWzEsIDIsIDNdJykiKSwNCiAgICAgICAgb2JqZWN0RmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuZmllbGQsIChuYW1lLCBfc2VwLCB2YWx1ZSkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgdmFsdWUgfTsNCiAgICAgICAgfSkNCiAgICAgICAgICAgIC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJ7Iikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygifSIpKSkNCiAgICAgICAgICAgIC5tYXAodmFscyA9PiB7DQogICAgICAgICAgICBsZXQgcmVzID0ge307DQogICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiB2YWxzKQ0KICAgICAgICAgICAgICAgIHJlc1tlbnRyeS5uYW1lXSA9IGVudHJ5LnZhbHVlOw0KICAgICAgICAgICAgcmV0dXJuIEZpZWxkcy5vYmplY3QocmVzKTsNCiAgICAgICAgfSkNCiAgICAgICAgICAgIC5kZXNjKCJvYmplY3QgKCd7IGE6IDEsIGI6IDIgfScpIiksDQogICAgICAgIGF0b21JbmxpbmVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRhdGUsIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLCBxLnN0cmluZywgcS5lbWJlZExpbmssIHEuYm9vbCwgcS5udW1iZXIsIHEucmF3TnVsbCksDQogICAgICAgIGlubGluZUZpZWxkTGlzdDogcSA9PiBxLmF0b21JbmxpbmVGaWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSwNCiAgICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PiBbZl0uY29uY2F0KGwpKSwgcS5hdG9tSW5saW5lRmllbGQpLA0KICAgICAgICBhdG9tRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocS5uZWdhdGVkRmllbGQsIHEubGlua0ZpZWxkLCBxLmxpc3RGaWVsZCwgcS5vYmplY3RGaWVsZCwgcS5sYW1iZGFGaWVsZCwgcS5wYXJlbnNGaWVsZCwgcS5ib29sRmllbGQsIHEubnVtYmVyRmllbGQsIHEuc3RyaW5nRmllbGQsIHEuZGF0ZUZpZWxkLCBxLmR1cmF0aW9uRmllbGQsIHEubnVsbEZpZWxkLCBxLnZhcmlhYmxlRmllbGQpLA0KICAgICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEuYXRvbUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHsNCiAgICAgICAgICAgIGxldCByZXN1bHQgPSBvYmo7DQogICAgICAgICAgICBmb3IgKGxldCBwb3N0IG9mIHBvc3RmaXhlcykgew0KICAgICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgImRvdCI6DQogICAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5mdW5jKHJlc3VsdCwgcG9zdC5maWVsZHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfSksDQogICAgICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiISIpLCBxLmluZGV4RmllbGQsIChfLCBmaWVsZCkgPT4gRmllbGRzLm5lZ2F0ZShmaWVsZCkpLmRlc2MoIm5lZ2F0ZWQgZmllbGQiKSwNCiAgICAgICAgcGFyZW5zRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIigiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgXzIsIGZpZWxkLCBfMywgXzQpID0+IGZpZWxkKSwNCiAgICAgICAgbGFtYmRhRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyDQogICAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpDQogICAgICAgICAgICAud3JhcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiPT4iKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuZmllbGQsIChpZGVudCwgX2lnbm9yZSwgdmFsdWUpID0+IHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGlkZW50LCB2YWx1ZSB9Ow0KICAgICAgICB9KSwNCiAgICAgICAgZG90UG9zdGZpeDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLiIpLCBxLmlkZW50aWZpZXIsIChfLCBmaWVsZCkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBGaWVsZHMubGl0ZXJhbChmaWVsZCkgfTsNCiAgICAgICAgfSksDQogICAgICAgIGluZGV4UG9zdGZpeDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIl0iKSwgKF8sIF8yLCBmaWVsZCwgXzMsIF80KSA9PiB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBmaWVsZCB9Ow0KICAgICAgICB9KSwNCiAgICAgICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8sIF8xLCBmaWVsZHMsIF8yLCBfMykgPT4gew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgZmllbGRzIH07DQogICAgICAgIH0pLA0KICAgICAgICAvLyBUaGUgcHJlY2VkZW5jZSBoaWVyYXJjaHkgb2Ygb3BlcmF0b3JzIC0gbXVsdGlwbHkvZGl2aWRlLCBhZGQvc3VidHJhY3QsIGNvbXBhcmUsIGFuZCB0aGVuIGJvb2xlYW4gb3BlcmF0aW9ucy4NCiAgICAgICAgYmluYXJ5TXVsRGl2RmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuaW5kZXhGaWVsZCwgcS5iaW5hcnlNdWxEaXYsIEZpZWxkcy5iaW5hcnlPcCksDQogICAgICAgIGJpbmFyeVBsdXNNaW51c0ZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeU11bERpdkZpZWxkLCBxLmJpbmFyeVBsdXNNaW51cywgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgICAgYmluYXJ5Q29tcGFyZUZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeVBsdXNNaW51c0ZpZWxkLCBxLmJpbmFyeUNvbXBhcmVPcCwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgICAgYmluYXJ5Qm9vbGVhbkZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeUNvbXBhcmVGaWVsZCwgcS5iaW5hcnlCb29sZWFuT3AsIEZpZWxkcy5iaW5hcnlPcCksDQogICAgICAgIGJpbmFyeU9wRmllbGQ6IHEgPT4gcS5iaW5hcnlCb29sZWFuRmllbGQsDQogICAgICAgIGZpZWxkOiBxID0+IHEuYmluYXJ5T3BGaWVsZCwNCiAgICB9KTsKCiAgICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLw0KICAgIC8qKiBUaGUgd3JhcHBlciBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIGlubGluZSBmaWVsZC4gKi8NCiAgICBjb25zdCBJTkxJTkVfRklFTERfV1JBUFBFUlMgPSBPYmplY3QuZnJlZXplKHsNCiAgICAgICAgIlsiOiAiXSIsDQogICAgICAgICIoIjogIikiLA0KICAgIH0pOw0KICAgIC8qKg0KICAgICAqIEZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNrZXQgdGhhdCBvY2N1cnMgYXQgb3IgYWZ0ZXIgYHN0YXJ0YCwgcmVzcGVjdGluZyBuZXN0aW5nIGFuZCBlc2NhcGVzLiBJZiBmb3VuZCwNCiAgICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGZpbmRDbG9zaW5nKGxpbmUsIHN0YXJ0LCBvcGVuLCBjbG9zZSkgew0KICAgICAgICBsZXQgbmVzdGluZyA9IDA7DQogICAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7DQogICAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHsNCiAgICAgICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpOw0KICAgICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuDQogICAgICAgICAgICBpZiAoY2hhciA9PSAiXFwiKSB7DQogICAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGVzY2FwZWQpIHsNCiAgICAgICAgICAgICAgICBlc2NhcGVkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoY2hhciA9PSBvcGVuKQ0KICAgICAgICAgICAgICAgIG5lc3RpbmcrKzsNCiAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gY2xvc2UpDQogICAgICAgICAgICAgICAgbmVzdGluZy0tOw0KICAgICAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLg0KICAgICAgICAgICAgaWYgKG5lc3RpbmcgPCAwKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBsaW5lLnN1YnN0cmluZyhzdGFydCwgaW5kZXgpLnRyaW0oKSwgZW5kSW5kZXg6IGluZGV4ICsgMSB9Ow0KICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgfQ0KICAgIC8qKiBGaW5kIHRoZSAnOjonIHNlcGFyYXRvciBpbiBhbiBpbmxpbmUgZmllbGQuICovDQogICAgZnVuY3Rpb24gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCkgew0KICAgICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsNCiAgICAgICAgbGV0IGtleSA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApOw0KICAgICAgICAvLyBGYWlsIHRoZSBtYXRjaCBpZiB3ZSBmaW5kIGFueSBzZXBhcmF0b3IgY2hhcmFjdGVycyAobm90IGFsbG93ZWQgaW4ga2V5cykuDQogICAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7DQogICAgICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKHNlcCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4geyBrZXk6IGtleS50cmltKCksIHZhbHVlSW5kZXg6IHNlcCArIDIgfTsNCiAgICB9DQogICAgLyoqIFRyeSB0byBjb21wbGV0ZWx5IHBhcnNlIGFuIGlubGluZSBmaWVsZCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIEFzc3VlbXMgYHN0YXJ0YCBpcyBvbiBhIHdyYXBwaW5nIGNoYXJhY3Rlci4gKi8NCiAgICBmdW5jdGlvbiBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBzdGFydCkgew0KICAgICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsNCiAgICAgICAgbGV0IGtleSA9IGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQgKyAxKTsNCiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgbGV0IHZhbHVlID0gZmluZENsb3NpbmcobGluZSwga2V5LnZhbHVlSW5kZXgsIG9wZW4sIElOTElORV9GSUVMRF9XUkFQUEVSU1tvcGVuXSk7DQogICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgIGtleToga2V5LmtleSwNCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwNCiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwNCiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGtleS52YWx1ZUluZGV4LA0KICAgICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwNCiAgICAgICAgICAgIHdyYXBwaW5nOiBvcGVuLA0KICAgICAgICB9Ow0KICAgIH0NCiAgICAvKiogUGFyc2UgYSB0ZXh0dWFsIGlubGluZSBmaWVsZCB2YWx1ZSBpbnRvIHNvbWV0aGluZyB3ZSBjYW4gd29yayB3aXRoLiAqLw0KICAgIGZ1bmN0aW9uIHBhcnNlSW5saW5lVmFsdWUodmFsdWUpIHsNCiAgICAgICAgLy8gVGhlIHN0cmlwcGVkIGxpdGVyYWwgZmllbGQgcGFyc2VyIHVuZGVyc3RhbmRzIGFsbCBvZiB0aGUgbm9uLWFycmF5L25vbi1vYmplY3QgZmllbGRzIGFuZCBjYW4gcGFyc2UgdGhlbSBmb3IgdXMuDQogICAgICAgIC8vIElubGluZSBmaWVsZCBvYmplY3RzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZDsgaW5saW5lIGFycmF5IG9iamVjdHMgaGF2ZSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBwYXJzZXINCiAgICAgICAgLy8gc2VwYXJhdGVseS4NCiAgICAgICAgbGV0IGlubGluZSA9IEVYUFJFU1NJT04uaW5saW5lRmllbGQucGFyc2UodmFsdWUpOw0KICAgICAgICBpZiAoaW5saW5lLnN0YXR1cykNCiAgICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICB9DQogICAgLyoqIEV4dHJhY3RzIGlubGluZSBmaWVsZHMgb2YgdGhlIGZvcm0gJ1trZXk6OiB2YWx1ZV0nIGZyb20gYSBsaW5lIG9mIHRleHQuIFRoaXMgaXMgZG9uZSBpbiBhIHJlbGF0aXZlbHkNCiAgICAgKiAicm9idXN0IiB3YXkgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gYmFkIG5lc3Rpbmcgb3Igb3RoZXIgaW50ZXJmZXJpbmcgTWFya2Rvd24gc3ltYm9sczoNCiAgICAgKg0KICAgICAqIC0gTG9vayBmb3IgYW55IHdyYXBwZXJzICgnWycgYW5kICcoJykgaW4gdGhlIGxpbmUsIHRyeWluZyB0byBwYXJzZSB3aGF0ZXZlciBjb21lcyBhZnRlciBpdCBhcyBhbiBpbmxpbmUga2V5OjouDQogICAgICogLSBJZiBzdWNjZXNzZnVsLCBzY2FuIHVudGlsIHlvdSBmaW5kIGEgbWF0Y2hpbmcgZW5kIGJyYWNrZXQsIGFuZCBwYXJzZSB3aGF0ZXZlciByZW1haW5zIGFzIGFuIGlubGluZSB2YWx1ZS4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiBleHRyYWN0SW5saW5lRmllbGRzKGxpbmUpIHsNCiAgICAgICAgbGV0IGZpZWxkcyA9IFtdOw0KICAgICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsNCiAgICAgICAgICAgIGxldCBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIpOw0KICAgICAgICAgICAgd2hpbGUgKGZvdW5kSW5kZXggPj0gMCkgew0KICAgICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOw0KICAgICAgICAgICAgICAgIGlmICghcGFyc2VkRmllbGQpIHsNCiAgICAgICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBmb3VuZEluZGV4ICsgMSk7DQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmaWVsZHMucHVzaChwYXJzZWRGaWVsZCk7DQogICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7DQogICAgICAgIHJldHVybiBmaWVsZHM7DQogICAgfQ0KICAgIGNvbnN0IENSRUFURURfREFURV9SRUdFWCA9IC9cdXsyNzk1fVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsNCiAgICBjb25zdCBEVUVfREFURV9SRUdFWCA9IC9bXHV7MUY0QzV9XHV7MUY0QzZ9XHV7MUY1RDN9XVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsNCiAgICBjb25zdCBET05FX0RBVEVfUkVHRVggPSAvXHV7MjcwNX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogICAgLyoqIFBhcnNlIHNwZWNpYWwgY29tcGxldGVkL2R1ZS9kb25lIHRhc2sgZmllbGRzIHdoaWNoIGFyZSBtYXJrZWQgdmlhIGVtb2ppLiAqLw0KICAgIGZ1bmN0aW9uIGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lLCBhbm5vdGF0aW9ucykgew0KICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfajsNCiAgICAgICAgbGV0IHJlc3VsdCA9IHt9Ow0KICAgICAgICBsZXQgY3JlYXRlZE1hdGNoID0gQ1JFQVRFRF9EQVRFX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgIGlmIChjcmVhdGVkTWF0Y2gpDQogICAgICAgICAgICByZXN1bHQuY3JlYXRlZCA9IERhdGVUaW1lXzEuZnJvbUlTTyhjcmVhdGVkTWF0Y2hbMV0pOw0KICAgICAgICBsZXQgZHVlTWF0Y2ggPSBEVUVfREFURV9SRUdFWC5leGVjKGxpbmUpOw0KICAgICAgICBpZiAoZHVlTWF0Y2gpDQogICAgICAgICAgICByZXN1bHQuZHVlID0gRGF0ZVRpbWVfMS5mcm9tSVNPKGR1ZU1hdGNoWzFdKTsNCiAgICAgICAgbGV0IGNvbXBsZXRlZE1hdGNoID0gRE9ORV9EQVRFX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgIGlmIChjb21wbGV0ZWRNYXRjaCkNCiAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZWQgPSBEYXRlVGltZV8xLmZyb21JU08oY29tcGxldGVkTWF0Y2hbMV0pOw0KICAgICAgICAvLyBBbGxvdyBmb3IgdGV4dHVhbCBmaWVsZHMgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBlbW9qaSBmb3IgbG9zZXJzIGxpa2UgbWUuDQogICAgICAgIGlmIChhbm5vdGF0aW9ucykgew0KICAgICAgICAgICAgbGV0IGFuQ3JlYXRlZCA9IChfYiA9IChfYSA9IGFubm90YXRpb25zLmNyZWF0ZWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGFubm90YXRpb25zLmN0aW1lKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBhbm5vdGF0aW9ucy5jZGF5Ow0KICAgICAgICAgICAgaWYgKGFuQ3JlYXRlZCAmJiBWYWx1ZXMuaXNEYXRlKGFuQ3JlYXRlZCkpDQogICAgICAgICAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSAoX2MgPSByZXN1bHQuY3JlYXRlZCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogYW5DcmVhdGVkOw0KICAgICAgICAgICAgbGV0IGFuQ29tcGxldGVkID0gKF9lID0gKF9kID0gYW5ub3RhdGlvbnMuY29tcGxldGlvbikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogYW5ub3RhdGlvbnMuY29tcHRpbWUpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IGFubm90YXRpb25zLmNvbXBkYXk7DQogICAgICAgICAgICBpZiAoYW5Db21wbGV0ZWQgJiYgVmFsdWVzLmlzRGF0ZShhbkNvbXBsZXRlZCkpDQogICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlZCA9IChfZiA9IHJlc3VsdC5jb21wbGV0ZWQpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IGFuQ29tcGxldGVkOw0KICAgICAgICAgICAgbGV0IGFuRHVlID0gKF9oID0gKF9nID0gYW5ub3RhdGlvbnMuZHVlKSAhPT0gbnVsbCAmJiBfZyAhPT0gdm9pZCAwID8gX2cgOiBhbm5vdGF0aW9ucy5kdWV0aW1lKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiBhbm5vdGF0aW9ucy5kdWVkYXk7DQogICAgICAgICAgICBpZiAoYW5EdWUgJiYgVmFsdWVzLmlzRGF0ZShhbkR1ZSkpDQogICAgICAgICAgICAgICAgcmVzdWx0LmR1ZSA9IChfaiA9IHJlc3VsdC5kdWUpICE9PSBudWxsICYmIF9qICE9PSB2b2lkIDAgPyBfaiA6IGFuRHVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQoKICAgIC8qKiBJbXBvcnRlciBmb3IgbWFya2Rvd24gZG9jdW1lbnRzLiAqLw0KICAgIC8qKiBNYXRjaGVzIGxpbmVzIG9mIHRoZSBmb3JtICItIFsgXSA8dGFzayB0aGluZz4iLiAqLw0KICAgIGNvbnN0IFRBU0tfUkVHRVggPSAvXihccyopWy0qXVxzKihcW1sgWHhcLl0/XF0pP1xzKihbXi0qXS4qKSQvaXU7DQogICAgLyoqIE1hdGNoZXMgT2JzaWRpYW4gYmxvY2sgSURzLCB3aGljaCBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBvZiB0aGUgZm9ybSBeYmxvY2tpZC4gKi8NCiAgICBjb25zdCBUQVNLX0JMT0NLX1JFR0VYID0gL1xeKFxTKykkLzsNCiAgICAvKiogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHByZWRpY2F0ZSBpcyB0cnVlIGZvciB0aGUgdGFzayBvciBhbnkgc3VidGFza3MuICovDQogICAgZnVuY3Rpb24gdGFza0FueSh0LCBmKSB7DQogICAgICAgIGlmIChmKHQpKQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGZvciAobGV0IHN1YiBvZiB0LnN1YnRhc2tzKQ0KICAgICAgICAgICAgaWYgKHRhc2tBbnkoc3ViLCBmKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICBmdW5jdGlvbiBhbGFzdChhcnIpIHsNCiAgICAgICAgaWYgKGFyci5sZW5ndGggPiAwKQ0KICAgICAgICAgICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgfQ0KICAgIC8qKiBGaW5kIHRoZSBoZWFkZXIgdGhhdCBpcyBtb3N0IGltbWVkaWF0ZWx5IGFib3ZlIHRoZSBnaXZlbiBsaW5lIG51bWJlci4gKi8NCiAgICBmdW5jdGlvbiBmaW5kUHJldmlvdXNIZWFkZXIobGluZSwgaGVhZGVycykgew0KICAgICAgICBpZiAoaGVhZGVycy5sZW5ndGggPT0gMCkNCiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICAgIGlmIChoZWFkZXJzWzBdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPiBsaW5lKQ0KICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgbGV0IGluZGV4ID0gaGVhZGVycy5sZW5ndGggLSAxOw0KICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBoZWFkZXJzW2luZGV4XS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkNCiAgICAgICAgICAgIGluZGV4LS07DQogICAgICAgIHJldHVybiBoZWFkZXJzW2luZGV4XS5oZWFkaW5nOw0KICAgIH0NCiAgICAvKioNCiAgICAgKiBBIGhhY2t5IGFwcHJvYWNoIHRvIHNjYW5uaW5nIGZvciBhbGwgdGFza3MgdXNpbmcgcmVnZXguIERvZXMgbm90IHN1cHBvcnQgbXVsdGlsaW5lDQogICAgICogdGFza3MgeWV0ICh0aG91Z2ggY2FuIHByb2JhYmx5IGJlIHJldHJvLWZpdHRlZCB0byBkbyBzbykuDQogICAgICovDQogICAgZnVuY3Rpb24gZmluZFRhc2tzSW5GaWxlKHBhdGgsIGZpbGUsIG1ldGFkYXRhKSB7DQogICAgICAgIHZhciBfYSwgX2IsIF9jOw0KICAgICAgICAvLyBEdW1teSB0b3Agb2YgdGhlIHN0YWNrIHRoYXQgd2UnbGwganVzdCBuZXZlciBnZXQgcmlkIG9mLg0KICAgICAgICBsZXQgc3RhY2sgPSBbXTsNCiAgICAgICAgc3RhY2sucHVzaChbDQogICAgICAgICAgICBuZXcgVGFzayh7IHRleHQ6ICJSb290IiwgbGluZTogLTEsIHBhdGgsIGNvbXBsZXRlZDogZmFsc2UsIGZ1bGx5Q29tcGxldGVkOiBmYWxzZSwgcmVhbDogZmFsc2UsIHN1YnRhc2tzOiBbXSB9KSwNCiAgICAgICAgICAgIC00LA0KICAgICAgICBdKTsNCiAgICAgICAgbGV0IGxpbmVubyA9IC0xOw0KICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGZpbGUucmVwbGFjZSgiXHIiLCAiIikuc3BsaXQoIlxuIikpIHsNCiAgICAgICAgICAgIGxpbmVubyArPSAxOw0KICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBhcmUgYWN0dWFsbHkgYSBsaXN0IGVsZW1lbnQsIHRvIHNraXAgbGluZXMgd2hpY2ggb2J2aW91c2x5IHdvbid0IG1hdGNoLg0KICAgICAgICAgICAgaWYgKCFsaW5lLmluY2x1ZGVzKCIqIikgJiYgIWxpbmUuaW5jbHVkZXMoIi0iKSkgew0KICAgICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAxKQ0KICAgICAgICAgICAgICAgICAgICBzdGFjay5wb3AoKTsNCiAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGxldCBtYXRjaCA9IFRBU0tfUkVHRVguZXhlYyhsaW5lKTsNCiAgICAgICAgICAgIGlmICghbWF0Y2gpIHsNCiAgICAgICAgICAgICAgICBpZiAobGluZS50cmltKCkubGVuZ3RoID09IDApDQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIC8vIE5vbi1lbXB0eSBsaW5lIHRoYXQgaXMgbm90IGEgdGFzaywgcmVzZXQuDQogICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDEpDQogICAgICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gTG9vayBmb3IgYmxvY2sgSURzIG9uIHRoaXMgbGluZTsgaWYgcHJlc2VudCwgbGluayB0byB0aGF0LiBPdGhlcndpc2UsIGxpbmsgdG8gdGhlIG5lYXJlc3QgaGVhZGVyDQogICAgICAgICAgICAvLyBhbmQgdGhlbiB0byBqdXN0IHRoZSBwYWdlLg0KICAgICAgICAgICAgbGV0IGxpbmsgPSBMaW5rLmZpbGUocGF0aCwgZmFsc2UpOw0KICAgICAgICAgICAgbGV0IGJsb2NrTWF0Y2ggPSBUQVNLX0JMT0NLX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgICAgICBsZXQgbGFzdEhlYWRlciA9IGZpbmRQcmV2aW91c0hlYWRlcihsaW5lbm8sIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsNCiAgICAgICAgICAgIGlmIChibG9ja01hdGNoKSB7DQogICAgICAgICAgICAgICAgbGluayA9IExpbmsuYmxvY2socGF0aCwgYmxvY2tNYXRjaFsxXSwgZmFsc2UpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAobGFzdEhlYWRlcikgew0KICAgICAgICAgICAgICAgIGxpbmsgPSBMaW5rLmhlYWRlcihwYXRoLCBsYXN0SGVhZGVyLCBmYWxzZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyBBZGQgYWxsIGlubGluZSBmaWVsZCBkZWZpbml0aW9ucy4NCiAgICAgICAgICAgIGxldCBhbm5vdGF0aW9ucyA9IHt9Ow0KICAgICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgZXh0cmFjdElubGluZUZpZWxkcyhsaW5lKSkgew0KICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlSW5saW5lVmFsdWUoZmllbGQudmFsdWUpOw0KICAgICAgICAgICAgICAgIGFubm90YXRpb25zW2ZpZWxkLmtleV0gPSB2YWx1ZTsNCiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uc1tjYW5vbmljYWxpemVWYXJOYW1lKGZpZWxkLmtleSldID0gdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBsZXQgc3BlY2lhbCA9IGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lLCBhbm5vdGF0aW9ucyk7DQogICAgICAgICAgICBsZXQgaW5kZW50ID0gbWF0Y2hbMV0ucmVwbGFjZSgiXHQiLCAiICAgICIpLmxlbmd0aDsNCiAgICAgICAgICAgIGxldCBpc1JlYWwgPSAhIW1hdGNoWzJdICYmIG1hdGNoWzJdLnRyaW0oKS5sZW5ndGggPiAwOw0KICAgICAgICAgICAgbGV0IGlzQ29tcGxldGVkID0gIWlzUmVhbCB8fCBtYXRjaFsyXSA9PSAiW1hdIiB8fCBtYXRjaFsyXSA9PSAiW3hdIjsNCiAgICAgICAgICAgIGxldCB0YXNrID0gbmV3IFRhc2soew0KICAgICAgICAgICAgICAgIHRleHQ6IG1hdGNoWzNdLA0KICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogaXNDb21wbGV0ZWQsDQogICAgICAgICAgICAgICAgZnVsbHlDb21wbGV0ZWQ6IGlzQ29tcGxldGVkLA0KICAgICAgICAgICAgICAgIHJlYWw6IGlzUmVhbCwNCiAgICAgICAgICAgICAgICBwYXRoLA0KICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVubywNCiAgICAgICAgICAgICAgICBzZWN0aW9uOiBsYXN0SGVhZGVyID8gTGluay5oZWFkZXIocGF0aCwgbGFzdEhlYWRlciwgZmFsc2UpIDogTGluay5maWxlKHBhdGgsIGZhbHNlKSwNCiAgICAgICAgICAgICAgICBsaW5rLA0KICAgICAgICAgICAgICAgIHN1YnRhc2tzOiBbXSwNCiAgICAgICAgICAgICAgICBhbm5vdGF0aW9ucywNCiAgICAgICAgICAgICAgICBjcmVhdGVkOiBzcGVjaWFsLmNyZWF0ZWQsDQogICAgICAgICAgICAgICAgZHVlOiBzcGVjaWFsLmR1ZSwNCiAgICAgICAgICAgICAgICBjb21wbGV0aW9uOiBzcGVjaWFsLmNvbXBsZXRlZCwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgd2hpbGUgKGluZGVudCA8PSAoKF9iID0gKF9hID0gYWxhc3Qoc3RhY2spKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IC00KSkNCiAgICAgICAgICAgICAgICBzdGFjay5wb3AoKTsNCiAgICAgICAgICAgIGZvciAobGV0IFtlbGVtLCBfXSBvZiBzdGFjaykNCiAgICAgICAgICAgICAgICBlbGVtLmZ1bGx5Q29tcGxldGVkID0gZWxlbS5mdWxseUNvbXBsZXRlZCAmJiB0YXNrLmZ1bGx5Q29tcGxldGVkOw0KICAgICAgICAgICAgKF9jID0gYWxhc3Qoc3RhY2spKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMF0uc3VidGFza3MucHVzaCh0YXNrKTsNCiAgICAgICAgICAgIHN0YWNrLnB1c2goW3Rhc2ssIGluZGVudF0pOw0KICAgICAgICB9DQogICAgICAgIC8vIFJldHVybiBldmVyeXRoaW5nIHVuZGVyIHRoZSByb290LCB3aGljaCBzaG91bGQgYmUgYWxsIHRhc2tzLg0KICAgICAgICAvLyBTdHJpcCB0cmVlcyBvZiB0YXNrcyB3aGljaCBhcmUgcHVyZWx5IG5vdCByZWFsIChsb2w/KS4NCiAgICAgICAgcmV0dXJuIHN0YWNrWzBdWzBdLnN1YnRhc2tzLmZpbHRlcih0ID0+IHRhc2tBbnkodCwgc3QgPT4gc3QucmVhbCkpOw0KICAgIH0NCiAgICBmdW5jdGlvbiBwYXJzZU1hcmtkb3duKHBhdGgsIG1ldGFkYXRhLCBjb250ZW50cywgaW5saW5lUmVnZXgpIHsNCiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nOw0KICAgICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOw0KICAgICAgICAvLyBUcmF3bCB0aHJvdWdoIGZpbGUgY29udGVudHMgdG8gbG9jYXRlIGN1c3RvbSBpbmxpbmUgZmlsZSBjb250ZW50Li4uDQogICAgICAgIGZvciAobGV0IGxpbmUgb2YgY29udGVudHMuc3BsaXQoIlxuIikpIHsNCiAgICAgICAgICAgIC8vIEZhc3QgYmFpbC1vdXQgZm9yIGxpbmVzIHRoYXQgYXJlIHRvbyBsb25nLg0KICAgICAgICAgICAgaWYgKCFsaW5lLmluY2x1ZGVzKCI6OiIpKQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOw0KICAgICAgICAgICAgLy8gU2tpcCByZWFsIHRhc2sgbGluZXMsIHNpbmNlIHRoZXkgY2FuIGhhdmUgdGhlaXIgb3duIGN1c3RvbSBtZXRhZGF0YS4NCiAgICAgICAgICAgIC8vIFRPRE86IEFic3RyYWN0IHRoaXMgY2hlY2sgKGkuZS4sIGltcHJvdmUgdGFzayBwYXJzaW5nIHRvIGJlIG1vcmUgZW5jYXBzdWxhdGVkKS4NCiAgICAgICAgICAgIGxldCB0YXNrUGFyc2UgPSBUQVNLX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgICAgICBpZiAodGFza1BhcnNlICYmICgoX2MgPSAoX2IgPSAoX2EgPSB0YXNrUGFyc2VbMl0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50cmltKCkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDApID4gMCkNCiAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIC8vIEhhbmRsZSBpbmxpbmUtaW5saW5lIGZpZWxkcyAoaGFoYS4uLikNCiAgICAgICAgICAgIGxldCBoYXNJbmxpbmVJbmxpbmUgPSBmYWxzZTsNCiAgICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSkpIHsNCiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUlubGluZVZhbHVlKGZpZWxkLnZhbHVlKTsNCiAgICAgICAgICAgICAgICBmaWVsZHMuc2V0KGZpZWxkLmtleSwgKChfZCA9IGZpZWxkcy5nZXQoZmllbGQua2V5KSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogW10pLmNvbmNhdChbdmFsdWVdKSk7DQogICAgICAgICAgICAgICAgbGV0IHNpbXBsZU5hbWUgPSBjYW5vbmljYWxpemVWYXJOYW1lKGZpZWxkLmtleSk7DQogICAgICAgICAgICAgICAgaWYgKHNpbXBsZU5hbWUubGVuZ3RoID4gMCAmJiBzaW1wbGVOYW1lICE9IGZpZWxkLmtleS50cmltKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgZmllbGRzLnNldChzaW1wbGVOYW1lLCAoKF9lID0gZmllbGRzLmdldChzaW1wbGVOYW1lKSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogW10pLmNvbmNhdChbdmFsdWVdKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGhhc0lubGluZUlubGluZSA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyBIYW5kbGUgZnVsbC1saW5lIGlubGluZSBmaWVsZHMgaWYgdGhlcmUgYXJlIG5vIGlubGluZS1pbmxpbmUgZmllbGRzLg0KICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVJbmxpbmUpIHsNCiAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSBpbmxpbmVSZWdleC5leGVjKGxpbmUpOw0KICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgew0KICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IG1hdGNoWzFdLnRyaW0oKTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkID0gcGFyc2VJbmxpbmVWYWx1ZShtYXRjaFsyXSk7DQogICAgICAgICAgICAgICAgICAgIGZpZWxkcy5zZXQobmFtZSwgKChfZiA9IGZpZWxkcy5nZXQobmFtZSkpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IFtdKS5jb25jYXQoW2lubGluZUZpZWxkXSkpOw0KICAgICAgICAgICAgICAgICAgICBsZXQgc2ltcGxlTmFtZSA9IGNhbm9uaWNhbGl6ZVZhck5hbWUobWF0Y2hbMV0udHJpbSgpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbXBsZU5hbWUubGVuZ3RoID4gMCAmJiBzaW1wbGVOYW1lICE9IG1hdGNoWzFdLnRyaW0oKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzLnNldChzaW1wbGVOYW1lLCAoKF9nID0gZmllbGRzLmdldChzaW1wbGVOYW1lKSkgIT09IG51bGwgJiYgX2cgIT09IHZvaWQgMCA/IF9nIDogW10pLmNvbmNhdChbaW5saW5lRmllbGRdKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy8gQW5kIGV4dHJhY3QgdGFza3MuLi4NCiAgICAgICAgbGV0IHRhc2tzID0gZmluZFRhc2tzSW5GaWxlKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSk7DQogICAgICAgIHJldHVybiB7IGZpZWxkcywgdGFza3MgfTsNCiAgICB9CgogICAgLyoqIEFjdHVhbCByYXcgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBiYWNrZ3JvdW5kIGltcG9ydGVyLiBNYWlubHkgaGFuZGxlcyBtZXNzYWdlIHBhc3NpbmcuICovDQogICAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSkgew0KICAgICAgICByZXR1cm4gcGFyc2VNYXJrZG93bihwYXRoLCBtZXRhZGF0YSwgY29udGVudHMsIC9bX1wqfmBdKihbMC05XHdccHtMZXR0ZXJ9XVstMC05XHdccHtMZXR0ZXJ9XHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxzL10qKVtfXCp+YF0qXHMqOjpccyooLispL3UpOw0KICAgIH0KCiAgICB2YXIgVHJhbnNmZXJhYmxlOw0KICAgIChmdW5jdGlvbiAoVHJhbnNmZXJhYmxlKSB7DQogICAgICAgIC8qKiBDb252ZXJ0IGEgbGl0ZXJhbCB2YWx1ZSB0byBhIHNlcmlhbGl6ZXItZnJpZW5kbHkgdHJhbnNmZXJhYmxlIHZhbHVlLiBEb2VzIG5vdCB3b3JrIGZvciBhbGwgdHlwZXMuICovDQogICAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgew0KICAgICAgICAgICAgLy8gSGFuZGxlIG5vbi1kYXRhdmlldyB2YWx1ZXMgZmlyc3QuDQogICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHsNCiAgICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOw0KICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdmFsdWUuZW50cmllcygpKQ0KICAgICAgICAgICAgICAgICAgICBjb3BpZWQuc2V0KHRyYW5zZmVyYWJsZShrZXkpLCB0cmFuc2ZlcmFibGUodmFsKSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7DQogICAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsNCiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpDQogICAgICAgICAgICAgICAgICAgIGNvcGllZC5hZGQodHJhbnNmZXJhYmxlKHZhbCkpOw0KICAgICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBsZXQgd3JhcHBlZCA9IFZhbHVlcy53cmFwVmFsdWUodmFsdWUpOw0KICAgICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSB2YWx1ZTogIiArIHZhbHVlKTsNCiAgICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7DQogICAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOg0KICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJfX190cmFuc2Zlci10eXBlIjogImRhdGUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogeyB6b25lOiB3cmFwcGVkLnZhbHVlLnpvbmVOYW1lIH0sDQogICAgICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJkdXJhdGlvbiIsIHZhbHVlOiB0cmFuc2ZlcmFibGUod3JhcHBlZC52YWx1ZS50b09iamVjdCgpKSB9Ow0KICAgICAgICAgICAgICAgIGNhc2UgImFycmF5IjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFwKHYgPT4gdHJhbnNmZXJhYmxlKHYpKTsNCiAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOg0KICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmZXJhYmxlKHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgICAgICBjYXNlICJsaW5rIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgIl9fX3RyYW5zZmVyLXR5cGUiOiAibGluayIsIHZhbHVlOiB0cmFuc2ZlcmFibGUod3JhcHBlZC52YWx1ZS50b09iamVjdCgpKSB9Ow0KICAgICAgICAgICAgICAgIGNhc2UgInRhc2siOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJ0YXNrIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KGZhbHNlKSkgfTsNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSBsaXRlcmFsIHZhbHVlOiAiICsgdmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIFRyYW5zZmVyYWJsZS50cmFuc2ZlcmFibGUgPSB0cmFuc2ZlcmFibGU7DQogICAgICAgIC8qKiBDb252ZXJ0IGEgdHJhbnNmZXJhYmxlIHZhbHVlIGJhY2sgdG8gYSBsaXRlcmFsIHZhbHVlIHdlIGNhbiB3b3JrIHdpdGguICovDQogICAgICAgIGZ1bmN0aW9uIHZhbHVlKHRyYW5zZmVyYWJsZSkgew0KICAgICAgICAgICAgaWYgKHRyYW5zZmVyYWJsZSA9PT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlID09PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgTWFwKSB7DQogICAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgTWFwKCk7DQogICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiB0cmFuc2ZlcmFibGUuZW50cmllcygpKQ0KICAgICAgICAgICAgICAgICAgICByZWFsLnNldCh2YWx1ZShrZXkpLCB2YWx1ZSh2YWwpKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gcmVhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSBpbnN0YW5jZW9mIFNldCkgew0KICAgICAgICAgICAgICAgIGxldCByZWFsID0gbmV3IFNldCgpOw0KICAgICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB0cmFuc2ZlcmFibGUpDQogICAgICAgICAgICAgICAgICAgIHJlYWwuYWRkKHZhbHVlKHZhbCkpOw0KICAgICAgICAgICAgICAgIHJldHVybiByZWFsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0cmFuc2ZlcmFibGUpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZmVyYWJsZS5tYXAodiA9PiB2YWx1ZSh2KSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdHJhbnNmZXJhYmxlID09PSAib2JqZWN0Iikgew0KICAgICAgICAgICAgICAgIGlmICgiX19fdHJhbnNmZXItdHlwZSIgaW4gdHJhbnNmZXJhYmxlKSB7DQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNmZXJhYmxlWyJfX190cmFuc2Zlci10eXBlIl0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByYXdEYXRlID0gRGF0ZVRpbWVfMS5mcm9tT2JqZWN0KHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlT3B0cyA9IHZhbHVlKHRyYW5zZmVyYWJsZS5vcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZU9wdHMuem9uZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3RGF0ZS5zZXRab25lKGRhdGVPcHRzLnpvbmUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByYXdEYXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEdXJhdGlvbl8xLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsaW5rIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGluay5mcm9tT2JqZWN0KHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFzayI6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCB0cmFuc2ZlciB0eXBlICcke3RyYW5zZmVyYWJsZVsiX19fdHJhbnNmZXItdHlwZSJdfSdgKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh0cmFuc2ZlcmFibGUpKQ0KICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlKHZhbCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlcmFibGU7DQogICAgICAgIH0NCiAgICAgICAgVHJhbnNmZXJhYmxlLnZhbHVlID0gdmFsdWU7DQogICAgfSkoVHJhbnNmZXJhYmxlIHx8IChUcmFuc2ZlcmFibGUgPSB7fSkpOwoKICAgIC8qKiBFbnRyeS1wb2ludCBzY3JpcHQgdXNlZCBieSB0aGUgaW5kZXggYXMgYSB3ZWIgd29ya2VyLiAqLw0KICAgIG9ubWVzc2FnZSA9IChldnQpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICBsZXQgcmVzdWx0ID0gcnVuSW1wb3J0KGV2dC5kYXRhLnBhdGgsIGV2dC5kYXRhLmNvbnRlbnRzLCBldnQuZGF0YS5tZXRhZGF0YSk7DQogICAgICAgIHBvc3RNZXNzYWdlKHsgcGF0aDogZXZ0LmRhdGEucGF0aCwgcmVzdWx0OiBUcmFuc2ZlcmFibGUudHJhbnNmZXJhYmxlKHJlc3VsdCkgfSk7DQogICAgfSk7Cgp9KSgpOwoK', null, false); +var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwovKiBWZXJzaW9uOiAwLjQuMjEgLSBOb3ZlbWJlciAyMCwgMjAyMSAxNDo0MToyMSAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgdmFyIGNvbW1vbmpzR2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307CgogICAgdmFyIGx1eG9uID0ge307CgogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGx1eG9uLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7CgogICAgZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsKICAgICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7CiAgICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOwogICAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOwogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsKICAgICAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7CiAgICAgIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsKICAgICAgcmV0dXJuIENvbnN0cnVjdG9yOwogICAgfQoKICAgIGZ1bmN0aW9uIF9leHRlbmRzKCkgewogICAgICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgewogICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOwoKICAgICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsKICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsKICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgICB9OwoKICAgICAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsKICAgICAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7CiAgICAgIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOwoKICAgICAgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgewogICAgICBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgewogICAgICAgIHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7CiAgICAgIH07CiAgICAgIHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7CiAgICB9CgogICAgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsKICAgICAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7CiAgICAgICAgby5fX3Byb3RvX18gPSBwOwogICAgICAgIHJldHVybiBvOwogICAgICB9OwoKICAgICAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgewogICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICJ1bmRlZmluZWQiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOwogICAgICBpZiAodHlwZW9mIFByb3h5ID09PSAiZnVuY3Rpb24iKSByZXR1cm4gdHJ1ZTsKCiAgICAgIHRyeSB7CiAgICAgICAgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7CiAgICAgIGlmIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHsKICAgICAgICBfY29uc3RydWN0ID0gUmVmbGVjdC5jb25zdHJ1Y3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2NvbnN0cnVjdCA9IGZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykgewogICAgICAgICAgdmFyIGEgPSBbbnVsbF07CiAgICAgICAgICBhLnB1c2guYXBwbHkoYSwgYXJncyk7CiAgICAgICAgICB2YXIgQ29uc3RydWN0b3IgPSBGdW5jdGlvbi5iaW5kLmFwcGx5KFBhcmVudCwgYSk7CiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29uc3RydWN0b3IoKTsKICAgICAgICAgIGlmIChDbGFzcykgX3NldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpOwogICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHJldHVybiBfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24oZm4pIHsKICAgICAgcmV0dXJuIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoZm4pLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSAhPT0gLTE7CiAgICB9CgogICAgZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgewogICAgICB2YXIgX2NhY2hlID0gdHlwZW9mIE1hcCA9PT0gImZ1bmN0aW9uIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDsKCiAgICAgIF93cmFwTmF0aXZlU3VwZXIgPSBmdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKSB7CiAgICAgICAgaWYgKENsYXNzID09PSBudWxsIHx8ICFfaXNOYXRpdmVGdW5jdGlvbihDbGFzcykpIHJldHVybiBDbGFzczsKCiAgICAgICAgaWYgKHR5cGVvZiBDbGFzcyAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTsKICAgICAgICB9CgogICAgICAgIGlmICh0eXBlb2YgX2NhY2hlICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgaWYgKF9jYWNoZS5oYXMoQ2xhc3MpKSByZXR1cm4gX2NhY2hlLmdldChDbGFzcyk7CgogICAgICAgICAgX2NhY2hlLnNldChDbGFzcywgV3JhcHBlcik7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBXcmFwcGVyKCkgewogICAgICAgICAgcmV0dXJuIF9jb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTsKICAgICAgICB9CgogICAgICAgIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHsKICAgICAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgICAgIHZhbHVlOiBXcmFwcGVyLAogICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSwKICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpOwogICAgICB9OwoKICAgICAgcmV0dXJuIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpOwogICAgfQoKICAgIGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsKICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307CiAgICAgIHZhciB0YXJnZXQgPSB7fTsKICAgICAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOwogICAgICB2YXIga2V5LCBpOwoKICAgICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBrZXkgPSBzb3VyY2VLZXlzW2ldOwogICAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7CiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKICAgICAgfQoKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KCiAgICBmdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7CiAgICAgIGlmICghbykgcmV0dXJuOwogICAgICBpZiAodHlwZW9mIG8gPT09ICJzdHJpbmciKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsKICAgICAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOwogICAgICBpZiAobiA9PT0gIk9iamVjdCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsKICAgICAgaWYgKG4gPT09ICJNYXAiIHx8IG4gPT09ICJTZXQiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsKICAgICAgaWYgKG4gPT09ICJBcmd1bWVudHMiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgewogICAgICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsKCiAgICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsKCiAgICAgIHJldHVybiBhcnIyOwogICAgfQoKICAgIGZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyTG9vc2UobywgYWxsb3dBcnJheUxpa2UpIHsKICAgICAgdmFyIGl0ID0gdHlwZW9mIFN5bWJvbCAhPT0gInVuZGVmaW5lZCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bIkBAaXRlcmF0b3IiXTsKICAgICAgaWYgKGl0KSByZXR1cm4gKGl0ID0gaXQuY2FsbChvKSkubmV4dC5iaW5kKGl0KTsKCiAgICAgIGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09ICJudW1iZXIiKSB7CiAgICAgICAgaWYgKGl0KSBvID0gaXQ7CiAgICAgICAgdmFyIGkgPSAwOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsKICAgICAgICAgICAgZG9uZTogdHJ1ZQogICAgICAgICAgfTsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGRvbmU6IGZhbHNlLAogICAgICAgICAgICB2YWx1ZTogb1tpKytdCiAgICAgICAgICB9OwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKTsKICAgIH0KCiAgICAvLyB0aGVzZSBhcmVuJ3QgcmVhbGx5IHByaXZhdGUsIGJ1dCBub3IgYXJlIHRoZXkgcmVhbGx5IHVzZWZ1bCB0byBkb2N1bWVudAoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwogICAgdmFyIEx1eG9uRXJyb3IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9FcnJvcikgewogICAgICBfaW5oZXJpdHNMb29zZShMdXhvbkVycm9yLCBfRXJyb3IpOwoKICAgICAgZnVuY3Rpb24gTHV4b25FcnJvcigpIHsKICAgICAgICByZXR1cm4gX0Vycm9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEx1eG9uRXJyb3I7CiAgICB9KCAvKiNfX1BVUkVfXyovX3dyYXBOYXRpdmVTdXBlcihFcnJvcikpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIHZhciBJbnZhbGlkRGF0ZVRpbWVFcnJvciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0x1eG9uRXJyb3IpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZERhdGVUaW1lRXJyb3IsIF9MdXhvbkVycm9yKTsKCiAgICAgIGZ1bmN0aW9uIEludmFsaWREYXRlVGltZUVycm9yKHJlYXNvbikgewogICAgICAgIHJldHVybiBfTHV4b25FcnJvci5jYWxsKHRoaXMsICJJbnZhbGlkIERhdGVUaW1lOiAiICsgcmVhc29uLnRvTWVzc2FnZSgpKSB8fCB0aGlzOwogICAgICB9CgogICAgICByZXR1cm4gSW52YWxpZERhdGVUaW1lRXJyb3I7CiAgICB9KEx1eG9uRXJyb3IpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgogICAgdmFyIEludmFsaWRJbnRlcnZhbEVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTHV4b25FcnJvcjIpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZEludGVydmFsRXJyb3IsIF9MdXhvbkVycm9yMik7CgogICAgICBmdW5jdGlvbiBJbnZhbGlkSW50ZXJ2YWxFcnJvcihyZWFzb24pIHsKICAgICAgICByZXR1cm4gX0x1eG9uRXJyb3IyLmNhbGwodGhpcywgIkludmFsaWQgSW50ZXJ2YWw6ICIgKyByZWFzb24udG9NZXNzYWdlKCkpIHx8IHRoaXM7CiAgICAgIH0KCiAgICAgIHJldHVybiBJbnZhbGlkSW50ZXJ2YWxFcnJvcjsKICAgIH0oTHV4b25FcnJvcik7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCiAgICB2YXIgSW52YWxpZER1cmF0aW9uRXJyb3IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9MdXhvbkVycm9yMykgewogICAgICBfaW5oZXJpdHNMb29zZShJbnZhbGlkRHVyYXRpb25FcnJvciwgX0x1eG9uRXJyb3IzKTsKCiAgICAgIGZ1bmN0aW9uIEludmFsaWREdXJhdGlvbkVycm9yKHJlYXNvbikgewogICAgICAgIHJldHVybiBfTHV4b25FcnJvcjMuY2FsbCh0aGlzLCAiSW52YWxpZCBEdXJhdGlvbjogIiArIHJlYXNvbi50b01lc3NhZ2UoKSkgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEludmFsaWREdXJhdGlvbkVycm9yOwogICAgfShMdXhvbkVycm9yKTsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKICAgIHZhciBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0x1eG9uRXJyb3I0KSB7CiAgICAgIF9pbmhlcml0c0xvb3NlKENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yLCBfTHV4b25FcnJvcjQpOwoKICAgICAgZnVuY3Rpb24gQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoKSB7CiAgICAgICAgcmV0dXJuIF9MdXhvbkVycm9yNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7CiAgICAgIH0KCiAgICAgIHJldHVybiBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcjsKICAgIH0oTHV4b25FcnJvcik7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCiAgICB2YXIgSW52YWxpZFVuaXRFcnJvciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0x1eG9uRXJyb3I1KSB7CiAgICAgIF9pbmhlcml0c0xvb3NlKEludmFsaWRVbml0RXJyb3IsIF9MdXhvbkVycm9yNSk7CgogICAgICBmdW5jdGlvbiBJbnZhbGlkVW5pdEVycm9yKHVuaXQpIHsKICAgICAgICByZXR1cm4gX0x1eG9uRXJyb3I1LmNhbGwodGhpcywgIkludmFsaWQgdW5pdCAiICsgdW5pdCkgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEludmFsaWRVbml0RXJyb3I7CiAgICB9KEx1eG9uRXJyb3IpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgogICAgdmFyIEludmFsaWRBcmd1bWVudEVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTHV4b25FcnJvcjYpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZEFyZ3VtZW50RXJyb3IsIF9MdXhvbkVycm9yNik7CgogICAgICBmdW5jdGlvbiBJbnZhbGlkQXJndW1lbnRFcnJvcigpIHsKICAgICAgICByZXR1cm4gX0x1eG9uRXJyb3I2LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIEludmFsaWRBcmd1bWVudEVycm9yOwogICAgfShMdXhvbkVycm9yKTsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKICAgIHZhciBab25lSXNBYnN0cmFjdEVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTHV4b25FcnJvcjcpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoWm9uZUlzQWJzdHJhY3RFcnJvciwgX0x1eG9uRXJyb3I3KTsKCiAgICAgIGZ1bmN0aW9uIFpvbmVJc0Fic3RyYWN0RXJyb3IoKSB7CiAgICAgICAgcmV0dXJuIF9MdXhvbkVycm9yNy5jYWxsKHRoaXMsICJab25lIGlzIGFuIGFic3RyYWN0IGNsYXNzIikgfHwgdGhpczsKICAgICAgfQoKICAgICAgcmV0dXJuIFpvbmVJc0Fic3RyYWN0RXJyb3I7CiAgICB9KEx1eG9uRXJyb3IpOwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwogICAgdmFyIG4gPSAibnVtZXJpYyIsCiAgICAgICAgcyA9ICJzaG9ydCIsCiAgICAgICAgbCA9ICJsb25nIjsKICAgIHZhciBEQVRFX1NIT1JUID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbiwKICAgICAgZGF5OiBuCiAgICB9OwogICAgdmFyIERBVEVfTUVEID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogcywKICAgICAgZGF5OiBuCiAgICB9OwogICAgdmFyIERBVEVfTUVEX1dJVEhfV0VFS0RBWSA9IHsKICAgICAgeWVhcjogbiwKICAgICAgbW9udGg6IHMsCiAgICAgIGRheTogbiwKICAgICAgd2Vla2RheTogcwogICAgfTsKICAgIHZhciBEQVRFX0ZVTEwgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBsLAogICAgICBkYXk6IG4KICAgIH07CiAgICB2YXIgREFURV9IVUdFID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbCwKICAgICAgZGF5OiBuLAogICAgICB3ZWVrZGF5OiBsCiAgICB9OwogICAgdmFyIFRJTUVfU0lNUExFID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4KICAgIH07CiAgICB2YXIgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuCiAgICB9OwogICAgdmFyIFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgVElNRV9XSVRIX0xPTkdfT0ZGU0VUID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbiwKICAgICAgdGltZVpvbmVOYW1lOiBsCiAgICB9OwogICAgdmFyIFRJTUVfMjRfU0lNUExFID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIGhvdXJDeWNsZTogImgyMyIKICAgIH07CiAgICB2YXIgVElNRV8yNF9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICBob3VyQ3ljbGU6ICJoMjMiCiAgICB9OwogICAgdmFyIFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUID0gewogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbiwKICAgICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgICAgdGltZVpvbmVOYW1lOiBsCiAgICB9OwogICAgdmFyIERBVEVUSU1FX1NIT1JUID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbiwKICAgICAgZGF5OiBuLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4KICAgIH07CiAgICB2YXIgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogbiwKICAgICAgZGF5OiBuLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbgogICAgfTsKICAgIHZhciBEQVRFVElNRV9NRUQgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBzLAogICAgICBkYXk6IG4sCiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbgogICAgfTsKICAgIHZhciBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogcywKICAgICAgZGF5OiBuLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4sCiAgICAgIHNlY29uZDogbgogICAgfTsKICAgIHZhciBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZID0gewogICAgICB5ZWFyOiBuLAogICAgICBtb250aDogcywKICAgICAgZGF5OiBuLAogICAgICB3ZWVrZGF5OiBzLAogICAgICBob3VyOiBuLAogICAgICBtaW51dGU6IG4KICAgIH07CiAgICB2YXIgREFURVRJTUVfRlVMTCA9IHsKICAgICAgeWVhcjogbiwKICAgICAgbW9udGg6IGwsCiAgICAgIGRheTogbiwKICAgICAgaG91cjogbiwKICAgICAgbWludXRlOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBsLAogICAgICBkYXk6IG4sCiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IHMKICAgIH07CiAgICB2YXIgREFURVRJTUVfSFVHRSA9IHsKICAgICAgeWVhcjogbiwKICAgICAgbW9udGg6IGwsCiAgICAgIGRheTogbiwKICAgICAgd2Vla2RheTogbCwKICAgICAgaG91cjogbiwKICAgICAgbWludXRlOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IGwKICAgIH07CiAgICB2YXIgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMgPSB7CiAgICAgIHllYXI6IG4sCiAgICAgIG1vbnRoOiBsLAogICAgICBkYXk6IG4sCiAgICAgIHdlZWtkYXk6IGwsCiAgICAgIGhvdXI6IG4sCiAgICAgIG1pbnV0ZTogbiwKICAgICAgc2Vjb25kOiBuLAogICAgICB0aW1lWm9uZU5hbWU6IGwKICAgIH07CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICAvLyBUWVBFUwoKICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG8pIHsKICAgICAgcmV0dXJuIHR5cGVvZiBvID09PSAidW5kZWZpbmVkIjsKICAgIH0KICAgIGZ1bmN0aW9uIGlzTnVtYmVyKG8pIHsKICAgICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICAgIH0KICAgIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICAgIHJldHVybiB0eXBlb2YgbyA9PT0gIm51bWJlciIgJiYgbyAlIDEgPT09IDA7CiAgICB9CiAgICBmdW5jdGlvbiBpc1N0cmluZyhvKSB7CiAgICAgIHJldHVybiB0eXBlb2YgbyA9PT0gInN0cmluZyI7CiAgICB9CiAgICBmdW5jdGlvbiBpc0RhdGUobykgewogICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgICB9IC8vIENBUEFCSUxJVElFUwoKICAgIGZ1bmN0aW9uIGhhc1JlbGF0aXZlKCkgewogICAgICB0cnkgewogICAgICAgIHJldHVybiB0eXBlb2YgSW50bCAhPT0gInVuZGVmaW5lZCIgJiYgISFJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSAvLyBPQkpFQ1RTIEFORCBBUlJBWVMKCiAgICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaW5nKSA/IHRoaW5nIDogW3RoaW5nXTsKICAgIH0KICAgIGZ1bmN0aW9uIGJlc3RCeShhcnIsIGJ5LCBjb21wYXJlKSB7CiAgICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQoKICAgICAgcmV0dXJuIGFyci5yZWR1Y2UoZnVuY3Rpb24gKGJlc3QsIG5leHQpIHsKICAgICAgICB2YXIgcGFpciA9IFtieShuZXh0KSwgbmV4dF07CgogICAgICAgIGlmICghYmVzdCkgewogICAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgICByZXR1cm4gYmVzdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgICAgfQogICAgICB9LCBudWxsKVsxXTsKICAgIH0KICAgIGZ1bmN0aW9uIHBpY2sob2JqLCBrZXlzKSB7CiAgICAgIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoYSwgaykgewogICAgICAgIGFba10gPSBvYmpba107CiAgICAgICAgcmV0dXJuIGE7CiAgICAgIH0sIHt9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7CiAgICB9IC8vIE5VTUJFUlMgQU5EIFNUUklOR1MKCiAgICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgICAgcmV0dXJuIGlzSW50ZWdlcih0aGluZykgJiYgdGhpbmcgPj0gYm90dG9tICYmIHRoaW5nIDw9IHRvcDsKICAgIH0gLy8geCAlIG4gYnV0IHRha2VzIHRoZSBzaWduIG9mIG4gaW5zdGVhZCBvZiB4CgogICAgZnVuY3Rpb24gZmxvb3JNb2QoeCwgbikgewogICAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICAgIH0KICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuKSB7CiAgICAgIGlmIChuID09PSB2b2lkIDApIHsKICAgICAgICBuID0gMjsKICAgICAgfQoKICAgICAgdmFyIG1pbnVzID0gaW5wdXQgPCAwID8gIi0iIDogIiI7CiAgICAgIHZhciB0YXJnZXQgPSBtaW51cyA/IGlucHV0ICogLTEgOiBpbnB1dDsKICAgICAgdmFyIHJlc3VsdDsKCiAgICAgIGlmICh0YXJnZXQudG9TdHJpbmcoKS5sZW5ndGggPCBuKSB7CiAgICAgICAgcmVzdWx0ID0gKCIwIi5yZXBlYXQobikgKyB0YXJnZXQpLnNsaWNlKC1uKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXN1bHQgPSB0YXJnZXQudG9TdHJpbmcoKTsKICAgICAgfQoKICAgICAgcmV0dXJuICIiICsgbWludXMgKyByZXN1bHQ7CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUludGVnZXIoc3RyaW5nKSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHBhcnNlTWlsbGlzKGZyYWN0aW9uKSB7CiAgICAgIC8vIFJldHVybiB1bmRlZmluZWQgKGluc3RlYWQgb2YgMCkgaW4gdGhlc2UgY2FzZXMsIHdoZXJlIGZyYWN0aW9uIGlzIG5vdCBzZXQKICAgICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBmID0gcGFyc2VGbG9hdCgiMC4iICsgZnJhY3Rpb24pICogMTAwMDsKICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gcm91bmRUbyhudW1iZXIsIGRpZ2l0cywgdG93YXJkWmVybykgewogICAgICBpZiAodG93YXJkWmVybyA9PT0gdm9pZCAwKSB7CiAgICAgICAgdG93YXJkWmVybyA9IGZhbHNlOwogICAgICB9CgogICAgICB2YXIgZmFjdG9yID0gTWF0aC5wb3coMTAsIGRpZ2l0cyksCiAgICAgICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgICByZXR1cm4gcm91bmRlcihudW1iZXIgKiBmYWN0b3IpIC8gZmFjdG9yOwogICAgfSAvLyBEQVRFIEJBU0lDUwoKICAgIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgICByZXR1cm4geWVhciAlIDQgPT09IDAgJiYgKHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMCk7CiAgICB9CiAgICBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7CiAgICB9CiAgICBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkgewogICAgICB2YXIgbW9kTW9udGggPSBmbG9vck1vZChtb250aCAtIDEsIDEyKSArIDEsCiAgICAgICAgICBtb2RZZWFyID0geWVhciArIChtb250aCAtIG1vZE1vbnRoKSAvIDEyOwoKICAgICAgaWYgKG1vZE1vbnRoID09PSAyKSB7CiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVttb2RNb250aCAtIDFdOwogICAgICB9CiAgICB9IC8vIGNvdmVydCBhIGNhbGVuZGFyIG9iamVjdCB0byBhIGxvY2FsIHRpbWVzdGFtcCAoZXBvY2gsIGJ1dCB3aXRoIHRoZSBvZmZzZXQgYmFrZWQgaW4pCgogICAgZnVuY3Rpb24gb2JqVG9Mb2NhbFRTKG9iaikgewogICAgICB2YXIgZCA9IERhdGUuVVRDKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5LCBvYmouaG91ciwgb2JqLm1pbnV0ZSwgb2JqLnNlY29uZCwgb2JqLm1pbGxpc2Vjb25kKTsgLy8gZm9yIGxlZ2FjeSByZWFzb25zLCB5ZWFycyBiZXR3ZWVuIDAgYW5kIDk5IGFyZSBpbnRlcnByZXRlZCBhcyAxOVhYOyByZXZlcnQgdGhhdAoKICAgICAgaWYgKG9iai55ZWFyIDwgMTAwICYmIG9iai55ZWFyID49IDApIHsKICAgICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgICAgfQoKICAgICAgcmV0dXJuICtkOwogICAgfQogICAgZnVuY3Rpb24gd2Vla3NJbldlZWtZZWFyKHdlZWtZZWFyKSB7CiAgICAgIHZhciBwMSA9ICh3ZWVrWWVhciArIE1hdGguZmxvb3Iod2Vla1llYXIgLyA0KSAtIE1hdGguZmxvb3Iod2Vla1llYXIgLyAxMDApICsgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUgNywKICAgICAgICAgIGxhc3QgPSB3ZWVrWWVhciAtIDEsCiAgICAgICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgICByZXR1cm4gcDEgPT09IDQgfHwgcDIgPT09IDMgPyA1MyA6IDUyOwogICAgfQogICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhcikgewogICAgICBpZiAoeWVhciA+IDk5KSB7CiAgICAgICAgcmV0dXJuIHllYXI7CiAgICAgIH0gZWxzZSByZXR1cm4geWVhciA+IDYwID8gMTkwMCArIHllYXIgOiAyMDAwICsgeWVhcjsKICAgIH0gLy8gUEFSU0lORwoKICAgIGZ1bmN0aW9uIHBhcnNlWm9uZUluZm8odHMsIG9mZnNldEZvcm1hdCwgbG9jYWxlLCB0aW1lWm9uZSkgewogICAgICBpZiAodGltZVpvbmUgPT09IHZvaWQgMCkgewogICAgICAgIHRpbWVab25lID0gbnVsbDsKICAgICAgfQoKICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0cyksCiAgICAgICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IgogICAgICB9OwoKICAgICAgaWYgKHRpbWVab25lKSB7CiAgICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgICAgfQoKICAgICAgdmFyIG1vZGlmaWVkID0gX2V4dGVuZHMoewogICAgICAgIHRpbWVab25lTmFtZTogb2Zmc2V0Rm9ybWF0CiAgICAgIH0sIGludGxPcHRzKTsKCiAgICAgIHZhciBwYXJzZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG1vZGlmaWVkKS5mb3JtYXRUb1BhcnRzKGRhdGUpLmZpbmQoZnVuY3Rpb24gKG0pIHsKICAgICAgICByZXR1cm4gbS50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICJ0aW1lem9uZW5hbWUiOwogICAgICB9KTsKICAgICAgcmV0dXJuIHBhcnNlZCA/IHBhcnNlZC52YWx1ZSA6IG51bGw7CiAgICB9IC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCgogICAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgICB2YXIgb2ZmSG91ciA9IHBhcnNlSW50KG9mZkhvdXJTdHIsIDEwKTsgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKCiAgICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgICBvZmZIb3VyID0gMDsKICAgICAgfQoKICAgICAgdmFyIG9mZk1pbiA9IHBhcnNlSW50KG9mZk1pbnV0ZVN0ciwgMTApIHx8IDAsCiAgICAgICAgICBvZmZNaW5TaWduZWQgPSBvZmZIb3VyIDwgMCB8fCBPYmplY3QuaXMob2ZmSG91ciwgLTApID8gLW9mZk1pbiA6IG9mZk1pbjsKICAgICAgcmV0dXJuIG9mZkhvdXIgKiA2MCArIG9mZk1pblNpZ25lZDsKICAgIH0gLy8gQ09FUkNJT04KCiAgICBmdW5jdGlvbiBhc051bWJlcih2YWx1ZSkgewogICAgICB2YXIgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImJvb2xlYW4iIHx8IHZhbHVlID09PSAiIiB8fCBOdW1iZXIuaXNOYU4obnVtZXJpY1ZhbHVlKSkgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJJbnZhbGlkIHVuaXQgdmFsdWUgIiArIHZhbHVlKTsKICAgICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgICAgdmFyIG5vcm1hbGl6ZWQgPSB7fTsKCiAgICAgIGZvciAodmFyIHUgaW4gb2JqKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICAgIHZhciB2ID0gb2JqW3VdOwogICAgICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplcih1KV0gPSBhc051bWJlcih2KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBub3JtYWxpemVkOwogICAgfQogICAgZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KG9mZnNldCwgZm9ybWF0KSB7CiAgICAgIHZhciBob3VycyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSwKICAgICAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgICAgICBzaWduID0gb2Zmc2V0ID49IDAgPyAiKyIgOiAiLSI7CgogICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICAgIHJldHVybiAiIiArIHNpZ24gKyBwYWRTdGFydChob3VycywgMikgKyAiOiIgKyBwYWRTdGFydChtaW51dGVzLCAyKTsKCiAgICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICAgIHJldHVybiAiIiArIHNpZ24gKyBob3VycyArIChtaW51dGVzID4gMCA/ICI6IiArIG1pbnV0ZXMgOiAiIik7CgogICAgICAgIGNhc2UgInRlY2hpZSI6CiAgICAgICAgICByZXR1cm4gIiIgKyBzaWduICsgcGFkU3RhcnQoaG91cnMsIDIpICsgcGFkU3RhcnQobWludXRlcywgMik7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVmFsdWUgZm9ybWF0ICIgKyBmb3JtYXQgKyAiIGlzIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgZm9ybWF0Iik7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICAgIHJldHVybiBwaWNrKG9iaiwgWyJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWlsbGlzZWNvbmQiXSk7CiAgICB9CiAgICB2YXIgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg6P1wvW0EtWmEtel8rLV17MSwyNTZ9KFwvW0EtWmEtel8rLV17MSwyNTZ9KT8pPy87CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIHZhciBtb250aHNMb25nID0gWyJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJKdW5lIiwgIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIl07CiAgICB2YXIgbW9udGhzU2hvcnQgPSBbIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIl07CiAgICB2YXIgbW9udGhzTmFycm93ID0gWyJKIiwgIkYiLCAiTSIsICJBIiwgIk0iLCAiSiIsICJKIiwgIkEiLCAiUyIsICJPIiwgIk4iLCAiRCJdOwogICAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgIGNhc2UgIm5hcnJvdyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KG1vbnRoc05hcnJvdyk7CgogICAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICAgIHJldHVybiBbXS5jb25jYXQobW9udGhzU2hvcnQpOwoKICAgICAgICBjYXNlICJsb25nIjoKICAgICAgICAgIHJldHVybiBbXS5jb25jYXQobW9udGhzTG9uZyk7CgogICAgICAgIGNhc2UgIm51bWVyaWMiOgogICAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKCiAgICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgICByZXR1cm4gWyIwMSIsICIwMiIsICIwMyIsICIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIwOSIsICIxMCIsICIxMSIsICIxMiJdOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KICAgIHZhciB3ZWVrZGF5c0xvbmcgPSBbIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsICJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiLCAiU3VuZGF5Il07CiAgICB2YXIgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CiAgICB2YXIgd2Vla2RheXNOYXJyb3cgPSBbIk0iLCAiVCIsICJXIiwgIlQiLCAiRiIsICJTIiwgIlMiXTsKICAgIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgIGNhc2UgIm5hcnJvdyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KHdlZWtkYXlzTmFycm93KTsKCiAgICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdCh3ZWVrZGF5c1Nob3J0KTsKCiAgICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KHdlZWtkYXlzTG9uZyk7CgogICAgICAgIGNhc2UgIm51bWVyaWMiOgogICAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KICAgIHZhciBtZXJpZGllbXMgPSBbIkFNIiwgIlBNIl07CiAgICB2YXIgZXJhc0xvbmcgPSBbIkJlZm9yZSBDaHJpc3QiLCAiQW5ubyBEb21pbmkiXTsKICAgIHZhciBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CiAgICB2YXIgZXJhc05hcnJvdyA9IFsiQiIsICJBIl07CiAgICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgIGNhc2UgIm5hcnJvdyI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KGVyYXNOYXJyb3cpOwoKICAgICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgICByZXR1cm4gW10uY29uY2F0KGVyYXNTaG9ydCk7CgogICAgICAgIGNhc2UgImxvbmciOgogICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChlcmFzTG9uZyk7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gbWVyaWRpZW1Gb3JEYXRlVGltZShkdCkgewogICAgICByZXR1cm4gbWVyaWRpZW1zW2R0LmhvdXIgPCAxMiA/IDAgOiAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIHdlZWtkYXlGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgICByZXR1cm4gbW9udGhzKGxlbmd0aClbZHQubW9udGggLSAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgICAgcmV0dXJuIGVyYXMobGVuZ3RoKVtkdC55ZWFyIDwgMCA/IDAgOiAxXTsKICAgIH0KICAgIGZ1bmN0aW9uIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgbnVtZXJpYywgbmFycm93KSB7CiAgICAgIGlmIChudW1lcmljID09PSB2b2lkIDApIHsKICAgICAgICBudW1lcmljID0gImFsd2F5cyI7CiAgICAgIH0KCiAgICAgIGlmIChuYXJyb3cgPT09IHZvaWQgMCkgewogICAgICAgIG5hcnJvdyA9IGZhbHNlOwogICAgICB9CgogICAgICB2YXIgdW5pdHMgPSB7CiAgICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgICBxdWFydGVyczogWyJxdWFydGVyIiwgInF0ci4iXSwKICAgICAgICBtb250aHM6IFsibW9udGgiLCAibW8uIl0sCiAgICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgICBkYXlzOiBbImRheSIsICJkYXkiLCAiZGF5cyJdLAogICAgICAgIGhvdXJzOiBbImhvdXIiLCAiaHIuIl0sCiAgICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICAgIHNlY29uZHM6IFsic2Vjb25kIiwgInNlYy4iXQogICAgICB9OwogICAgICB2YXIgbGFzdGFibGUgPSBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyJdLmluZGV4T2YodW5pdCkgPT09IC0xOwoKICAgICAgaWYgKG51bWVyaWMgPT09ICJhdXRvIiAmJiBsYXN0YWJsZSkgewogICAgICAgIHZhciBpc0RheSA9IHVuaXQgPT09ICJkYXlzIjsKCiAgICAgICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICByZXR1cm4gaXNEYXkgPyAidG9tb3Jyb3ciIDogIm5leHQgIiArIHVuaXRzW3VuaXRdWzBdOwoKICAgICAgICAgIGNhc2UgLTE6CiAgICAgICAgICAgIHJldHVybiBpc0RheSA/ICJ5ZXN0ZXJkYXkiIDogImxhc3QgIiArIHVuaXRzW3VuaXRdWzBdOwoKICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6ICJ0aGlzICIgKyB1bml0c1t1bml0XVswXTsKCiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgaXNJblBhc3QgPSBPYmplY3QuaXMoY291bnQsIC0wKSB8fCBjb3VudCA8IDAsCiAgICAgICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgICAgIHNpbmd1bGFyID0gZm10VmFsdWUgPT09IDEsCiAgICAgICAgICBsaWxVbml0cyA9IHVuaXRzW3VuaXRdLAogICAgICAgICAgZm10VW5pdCA9IG5hcnJvdyA/IHNpbmd1bGFyID8gbGlsVW5pdHNbMV0gOiBsaWxVbml0c1syXSB8fCBsaWxVbml0c1sxXSA6IHNpbmd1bGFyID8gdW5pdHNbdW5pdF1bMF0gOiB1bml0OwogICAgICByZXR1cm4gaXNJblBhc3QgPyBmbXRWYWx1ZSArICIgIiArIGZtdFVuaXQgKyAiIGFnbyIgOiAiaW4gIiArIGZtdFZhbHVlICsgIiAiICsgZm10VW5pdDsKICAgIH0KCiAgICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICAgIHZhciBzID0gIiI7CgogICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKHNwbGl0cyksIF9zdGVwOyAhKF9zdGVwID0gX2l0ZXJhdG9yKCkpLmRvbmU7KSB7CiAgICAgICAgdmFyIHRva2VuID0gX3N0ZXAudmFsdWU7CgogICAgICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcyArPSB0b2tlblRvU3RyaW5nKHRva2VuLnZhbCk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gczsKICAgIH0KCiAgICB2YXIgX21hY3JvVG9rZW5Ub0Zvcm1hdE9wdHMgPSB7CiAgICAgIEQ6IERBVEVfU0hPUlQsCiAgICAgIEREOiBEQVRFX01FRCwKICAgICAgREREOiBEQVRFX0ZVTEwsCiAgICAgIEREREQ6IERBVEVfSFVHRSwKICAgICAgdDogVElNRV9TSU1QTEUsCiAgICAgIHR0OiBUSU1FX1dJVEhfU0VDT05EUywKICAgICAgdHR0OiBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VULAogICAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICAgIFQ6IFRJTUVfMjRfU0lNUExFLAogICAgICBUVDogVElNRV8yNF9XSVRIX1NFQ09ORFMsCiAgICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgICAgVFRUVDogVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VULAogICAgICBmOiBEQVRFVElNRV9TSE9SVCwKICAgICAgZmY6IERBVEVUSU1FX01FRCwKICAgICAgZmZmOiBEQVRFVElNRV9GVUxMLAogICAgICBmZmZmOiBEQVRFVElNRV9IVUdFLAogICAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICAgIEZGOiBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTLAogICAgICBGRkY6IERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTLAogICAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUwogICAgfTsKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKICAgIHZhciBGb3JtYXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBGb3JtYXR0ZXIuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGxvY2FsZSwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRm9ybWF0dGVyKGxvY2FsZSwgb3B0cyk7CiAgICAgIH07CgogICAgICBGb3JtYXR0ZXIucGFyc2VGb3JtYXQgPSBmdW5jdGlvbiBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgICB2YXIgY3VycmVudCA9IG51bGwsCiAgICAgICAgICAgIGN1cnJlbnRGdWxsID0gIiIsCiAgICAgICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICAgIHZhciBzcGxpdHMgPSBbXTsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjID0gZm10LmNoYXJBdChpKTsKCiAgICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgc3BsaXRzLnB1c2goewogICAgICAgICAgICAgICAgbGl0ZXJhbDogYnJhY2tldGVkLAogICAgICAgICAgICAgICAgdmFsOiBjdXJyZW50RnVsbAogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjdXJyZW50ID0gbnVsbDsKICAgICAgICAgICAgY3VycmVudEZ1bGwgPSAiIjsKICAgICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICAgIH0gZWxzZSBpZiAoYnJhY2tldGVkKSB7CiAgICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgc3BsaXRzLnB1c2goewogICAgICAgICAgICAgICAgbGl0ZXJhbDogZmFsc2UsCiAgICAgICAgICAgICAgICB2YWw6IGN1cnJlbnRGdWxsCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgICAgY3VycmVudCA9IGM7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgc3BsaXRzLnB1c2goewogICAgICAgICAgICBsaXRlcmFsOiBicmFja2V0ZWQsCiAgICAgICAgICAgIHZhbDogY3VycmVudEZ1bGwKICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNwbGl0czsKICAgICAgfTsKCiAgICAgIEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gZnVuY3Rpb24gbWFjcm9Ub2tlblRvRm9ybWF0T3B0cyh0b2tlbikgewogICAgICAgIHJldHVybiBfbWFjcm9Ub2tlblRvRm9ybWF0T3B0c1t0b2tlbl07CiAgICAgIH07CgogICAgICBmdW5jdGlvbiBGb3JtYXR0ZXIobG9jYWxlLCBmb3JtYXRPcHRzKSB7CiAgICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgICB0aGlzLmxvYyA9IGxvY2FsZTsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IG51bGw7CiAgICAgIH0KCiAgICAgIHZhciBfcHJvdG8gPSBGb3JtYXR0ZXIucHJvdG90eXBlOwoKICAgICAgX3Byb3RvLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0ID0gZnVuY3Rpb24gZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIG9wdHMpIHsKICAgICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICAgIHRoaXMuc3lzdGVtTG9jID0gdGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKTsKICAgICAgICB9CgogICAgICAgIHZhciBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzLCBvcHRzKSk7CiAgICAgICAgcmV0dXJuIGRmLmZvcm1hdCgpOwogICAgICB9OwoKICAgICAgX3Byb3RvLmZvcm1hdERhdGVUaW1lID0gZnVuY3Rpb24gZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICB2YXIgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgX2V4dGVuZHMoe30sIHRoaXMub3B0cywgb3B0cykpOwogICAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5mb3JtYXREYXRlVGltZVBhcnRzID0gZnVuY3Rpb24gZm9ybWF0RGF0ZVRpbWVQYXJ0cyhkdCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHZhciBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGR0LCBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzLCBvcHRzKSk7CiAgICAgICAgcmV0dXJuIGRmLmZvcm1hdFRvUGFydHMoKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5yZXNvbHZlZE9wdGlvbnMgPSBmdW5jdGlvbiByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICB2YXIgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgX2V4dGVuZHMoe30sIHRoaXMub3B0cywgb3B0cykpOwogICAgICAgIHJldHVybiBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5udW0gPSBmdW5jdGlvbiBudW0obiwgcCkgewogICAgICAgIGlmIChwID09PSB2b2lkIDApIHsKICAgICAgICAgIHAgPSAwOwogICAgICAgIH0KCiAgICAgICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5CiAgICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KG4sIHApOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9wdHMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzKTsKCiAgICAgICAgaWYgKHAgPiAwKSB7CiAgICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIob3B0cykuZm9ybWF0KG4pOwogICAgICB9OwoKICAgICAgX3Byb3RvLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyA9IGZ1bmN0aW9uIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7CiAgICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgICAgdmFyIGtub3duRW5nbGlzaCA9IHRoaXMubG9jLmxpc3RpbmdNb2RlKCkgPT09ICJlbiIsCiAgICAgICAgICAgIHVzZURhdGVUaW1lRm9ybWF0dGVyID0gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgJiYgdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgIT09ICJncmVnb3J5IiwKICAgICAgICAgICAgc3RyaW5nID0gZnVuY3Rpb24gc3RyaW5nKG9wdHMsIGV4dHJhY3QpIHsKICAgICAgICAgIHJldHVybiBfdGhpcy5sb2MuZXh0cmFjdChkdCwgb3B0cywgZXh0cmFjdCk7CiAgICAgICAgfSwKICAgICAgICAgICAgZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KG9wdHMpIHsKICAgICAgICAgIGlmIChkdC5pc09mZnNldEZpeGVkICYmIGR0Lm9mZnNldCA9PT0gMCAmJiBvcHRzLmFsbG93WikgewogICAgICAgICAgICByZXR1cm4gIloiOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBkdC5pc1ZhbGlkID8gZHQuem9uZS5mb3JtYXRPZmZzZXQoZHQudHMsIG9wdHMuZm9ybWF0KSA6ICIiOwogICAgICAgIH0sCiAgICAgICAgICAgIG1lcmlkaWVtID0gZnVuY3Rpb24gbWVyaWRpZW0oKSB7CiAgICAgICAgICByZXR1cm4ga25vd25FbmdsaXNoID8gbWVyaWRpZW1Gb3JEYXRlVGltZShkdCkgOiBzdHJpbmcoewogICAgICAgICAgICBob3VyOiAibnVtZXJpYyIsCiAgICAgICAgICAgIGhvdXJDeWNsZTogImgxMiIKICAgICAgICAgIH0sICJkYXlwZXJpb2QiKTsKICAgICAgICB9LAogICAgICAgICAgICBtb250aCA9IGZ1bmN0aW9uIG1vbnRoKGxlbmd0aCwgc3RhbmRhbG9uZSkgewogICAgICAgICAgcmV0dXJuIGtub3duRW5nbGlzaCA/IG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgOiBzdHJpbmcoc3RhbmRhbG9uZSA/IHsKICAgICAgICAgICAgbW9udGg6IGxlbmd0aAogICAgICAgICAgfSA6IHsKICAgICAgICAgICAgbW9udGg6IGxlbmd0aCwKICAgICAgICAgICAgZGF5OiAibnVtZXJpYyIKICAgICAgICAgIH0sICJtb250aCIpOwogICAgICAgIH0sCiAgICAgICAgICAgIHdlZWtkYXkgPSBmdW5jdGlvbiB3ZWVrZGF5KGxlbmd0aCwgc3RhbmRhbG9uZSkgewogICAgICAgICAgcmV0dXJuIGtub3duRW5nbGlzaCA/IHdlZWtkYXlGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSA6IHN0cmluZyhzdGFuZGFsb25lID8gewogICAgICAgICAgICB3ZWVrZGF5OiBsZW5ndGgKICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgIHdlZWtkYXk6IGxlbmd0aCwKICAgICAgICAgICAgbW9udGg6ICJsb25nIiwKICAgICAgICAgICAgZGF5OiAibnVtZXJpYyIKICAgICAgICAgIH0sICJ3ZWVrZGF5Iik7CiAgICAgICAgfSwKICAgICAgICAgICAgbWF5YmVNYWNybyA9IGZ1bmN0aW9uIG1heWJlTWFjcm8odG9rZW4pIHsKICAgICAgICAgIHZhciBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwoKICAgICAgICAgIGlmIChmb3JtYXRPcHRzKSB7CiAgICAgICAgICAgIHJldHVybiBfdGhpcy5mb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgZm9ybWF0T3B0cyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAgICAgZXJhID0gZnVuY3Rpb24gZXJhKGxlbmd0aCkgewogICAgICAgICAgcmV0dXJuIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsKICAgICAgICAgICAgZXJhOiBsZW5ndGgKICAgICAgICAgIH0sICJlcmEiKTsKICAgICAgICB9LAogICAgICAgICAgICB0b2tlblRvU3RyaW5nID0gZnVuY3Rpb24gdG9rZW5Ub1N0cmluZyh0b2tlbikgewogICAgICAgICAgLy8gV2hlcmUgcG9zc2libGU6IGh0dHA6Ly9jbGRyLnVuaWNvZGUub3JnL3RyYW5zbGF0aW9uL2RhdGUtdGltZS0xL2RhdGUtdGltZSNUT0MtU3RhbmRhbG9uZS12cy4tRm9ybWF0LVN0eWxlcwogICAgICAgICAgc3dpdGNoICh0b2tlbikgewogICAgICAgICAgICAvLyBtcwogICAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0Lm1pbGxpc2Vjb25kKTsKCiAgICAgICAgICAgIGNhc2UgInUiOiAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQubWlsbGlzZWNvbmQsIDMpOwogICAgICAgICAgICAvLyBzZWNvbmRzCgogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LnNlY29uZCk7CgogICAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBtaW51dGVzCgogICAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0Lm1pbnV0ZSk7CgogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5taW51dGUsIDIpOwogICAgICAgICAgICAvLyBob3VycwoKICAgICAgICAgICAgY2FzZSAiaCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CgogICAgICAgICAgICBjYXNlICJoaCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMiwgMik7CgogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LmhvdXIpOwoKICAgICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAoKICAgICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICAgICAgLy8gbGlrZSArNgogICAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoewogICAgICAgICAgICAgICAgZm9ybWF0OiAibmFycm93IiwKICAgICAgICAgICAgICAgIGFsbG93WjogX3RoaXMub3B0cy5hbGxvd1oKICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGNhc2UgIlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlICswNjowMAogICAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoewogICAgICAgICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgICAgICAgYWxsb3daOiBfdGhpcy5vcHRzLmFsbG93WgogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlICswNjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7CiAgICAgICAgICAgICAgICBmb3JtYXQ6ICJ0ZWNoaWUiLAogICAgICAgICAgICAgICAgYWxsb3daOiBfdGhpcy5vcHRzLmFsbG93WgogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY2FzZSAiWlpaWiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBFU1QKICAgICAgICAgICAgICByZXR1cm4gZHQuem9uZS5vZmZzZXROYW1lKGR0LnRzLCB7CiAgICAgICAgICAgICAgICBmb3JtYXQ6ICJzaG9ydCIsCiAgICAgICAgICAgICAgICBsb2NhbGU6IF90aGlzLmxvYy5sb2NhbGUKICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGNhc2UgIlpaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVhc3Rlcm4gU3RhbmRhcmQgVGltZQogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsKICAgICAgICAgICAgICAgIGZvcm1hdDogImxvbmciLAogICAgICAgICAgICAgICAgbG9jYWxlOiBfdGhpcy5sb2MubG9jYWxlCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKCiAgICAgICAgICAgIGNhc2UgInoiOgogICAgICAgICAgICAgIC8vIGxpa2UgQW1lcmljYS9OZXdfWW9yawogICAgICAgICAgICAgIHJldHVybiBkdC56b25lTmFtZTsKICAgICAgICAgICAgLy8gbWVyaWRpZW1zCgogICAgICAgICAgICBjYXNlICJhIjoKICAgICAgICAgICAgICByZXR1cm4gbWVyaWRpZW0oKTsKICAgICAgICAgICAgLy8gZGF0ZXMKCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICBkYXk6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJkYXkiKSA6IF90aGlzLm51bShkdC5kYXkpOwoKICAgICAgICAgICAgY2FzZSAiZGQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICBkYXk6ICIyLWRpZ2l0IgogICAgICAgICAgICAgIH0sICJkYXkiKSA6IF90aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKCiAgICAgICAgICAgIGNhc2UgImMiOgogICAgICAgICAgICAgIC8vIGxpa2UgMQogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQud2Vla2RheSk7CgogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CgogICAgICAgICAgICBjYXNlICJjY2NjIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUdWVzZGF5JwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJsb25nIiwgdHJ1ZSk7CgogICAgICAgICAgICBjYXNlICJjY2NjYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVCcKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgibmFycm93IiwgdHJ1ZSk7CiAgICAgICAgICAgIC8vIHdlZWtkYXlzIC0gZm9ybWF0CgogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LndlZWtkYXkpOwoKICAgICAgICAgICAgY2FzZSAiRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUdWVzJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJzaG9ydCIsIGZhbHNlKTsKCiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CgogICAgICAgICAgICBjYXNlICJFRUVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVCcKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyBtb250aHMgLSBzdGFuZGFsb25lCgogICAgICAgICAgICBjYXNlICJMIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoewogICAgICAgICAgICAgICAgbW9udGg6ICJudW1lcmljIiwKICAgICAgICAgICAgICAgIGRheTogIm51bWVyaWMiCiAgICAgICAgICAgICAgfSwgIm1vbnRoIikgOiBfdGhpcy5udW0oZHQubW9udGgpOwoKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgICAgICAgICBkYXk6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJtb250aCIpIDogX3RoaXMubnVtKGR0Lm1vbnRoLCAyKTsKCiAgICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW4KICAgICAgICAgICAgICByZXR1cm4gbW9udGgoInNob3J0IiwgdHJ1ZSk7CgogICAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbnVhcnkKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoImxvbmciLCB0cnVlKTsKCiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKCiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIC8vIGxpa2UgMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICBtb250aDogIm51bWVyaWMiCiAgICAgICAgICAgICAgfSwgIm1vbnRoIikgOiBfdGhpcy5udW0oZHQubW9udGgpOwoKICAgICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoewogICAgICAgICAgICAgICAgbW9udGg6ICIyLWRpZ2l0IgogICAgICAgICAgICAgIH0sICJtb250aCIpIDogX3RoaXMubnVtKGR0Lm1vbnRoLCAyKTsKCiAgICAgICAgICAgIGNhc2UgIk1NTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW4KICAgICAgICAgICAgICByZXR1cm4gbW9udGgoInNob3J0IiwgZmFsc2UpOwoKICAgICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgZmFsc2UpOwoKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwoKICAgICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAyMDE0CiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIHllYXI6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJ5ZWFyIikgOiBfdGhpcy5udW0oZHQueWVhcik7CgogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7CiAgICAgICAgICAgICAgICB5ZWFyOiAiMi1kaWdpdCIKICAgICAgICAgICAgICB9LCAieWVhciIpIDogX3RoaXMubnVtKGR0LnllYXIudG9TdHJpbmcoKS5zbGljZSgtMiksIDIpOwoKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIHllYXI6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJ5ZWFyIikgOiBfdGhpcy5udW0oZHQueWVhciwgNCk7CgogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsKICAgICAgICAgICAgICAgIHllYXI6ICJudW1lcmljIgogICAgICAgICAgICAgIH0sICJ5ZWFyIikgOiBfdGhpcy5udW0oZHQueWVhciwgNik7CiAgICAgICAgICAgIC8vIGVyYXMKCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwoKICAgICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICAgIC8vIGxpa2UgQW5ubyBEb21pbmkKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJsb25nIik7CgogICAgICAgICAgICBjYXNlICJHR0dHRyI6CiAgICAgICAgICAgICAgcmV0dXJuIGVyYSgibmFycm93Iik7CgogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC53ZWVrWWVhci50b1N0cmluZygpLnNsaWNlKC0yKSwgMik7CgogICAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKCiAgICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQud2Vla051bWJlcik7CgogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC53ZWVrTnVtYmVyLCAyKTsKCiAgICAgICAgICAgIGNhc2UgIm8iOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQub3JkaW5hbCk7CgogICAgICAgICAgICBjYXNlICJvb28iOgogICAgICAgICAgICAgIHJldHVybiBfdGhpcy5udW0oZHQub3JkaW5hbCwgMyk7CgogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LnF1YXJ0ZXIpOwoKICAgICAgICAgICAgY2FzZSAicXEiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwoKICAgICAgICAgICAgY2FzZSAiWCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShNYXRoLmZsb29yKGR0LnRzIC8gMTAwMCkpOwoKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLm51bShkdC50cyk7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBtYXliZU1hY3JvKHRva2VuKTsKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLCB0b2tlblRvU3RyaW5nKTsKICAgICAgfTsKCiAgICAgIF9wcm90by5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcgPSBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbkZyb21TdHJpbmcoZHVyLCBmbXQpIHsKICAgICAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICAgICAgdmFyIHRva2VuVG9GaWVsZCA9IGZ1bmN0aW9uIHRva2VuVG9GaWVsZCh0b2tlbikgewogICAgICAgICAgc3dpdGNoICh0b2tlblswXSkgewogICAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgICByZXR1cm4gIm1pbGxpc2Vjb25kIjsKCiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiAibWludXRlIjsKCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiAiaG91ciI7CgogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CgogICAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKCiAgICAgICAgICAgIGNhc2UgInkiOgogICAgICAgICAgICAgIHJldHVybiAieWVhciI7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgICAgIHRva2VuVG9TdHJpbmcgPSBmdW5jdGlvbiB0b2tlblRvU3RyaW5nKGxpbGR1cikgewogICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0b2tlbikgewogICAgICAgICAgICB2YXIgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKCiAgICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLm51bShsaWxkdXIuZ2V0KG1hcHBlZCksIHRva2VuLmxlbmd0aCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICB9CiAgICAgICAgICB9OwogICAgICAgIH0sCiAgICAgICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgICAgICByZWFsVG9rZW5zID0gdG9rZW5zLnJlZHVjZShmdW5jdGlvbiAoZm91bmQsIF9yZWYpIHsKICAgICAgICAgIHZhciBsaXRlcmFsID0gX3JlZi5saXRlcmFsLAogICAgICAgICAgICAgIHZhbCA9IF9yZWYudmFsOwogICAgICAgICAgcmV0dXJuIGxpdGVyYWwgPyBmb3VuZCA6IGZvdW5kLmNvbmNhdCh2YWwpOwogICAgICAgIH0sIFtdKSwKICAgICAgICAgICAgY29sbGFwc2VkID0gZHVyLnNoaWZ0VG8uYXBwbHkoZHVyLCByZWFsVG9rZW5zLm1hcCh0b2tlblRvRmllbGQpLmZpbHRlcihmdW5jdGlvbiAodCkgewogICAgICAgICAgcmV0dXJuIHQ7CiAgICAgICAgfSkpOwoKICAgICAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKHRva2VucywgdG9rZW5Ub1N0cmluZyhjb2xsYXBzZWQpKTsKICAgICAgfTsKCiAgICAgIHJldHVybiBGb3JtYXR0ZXI7CiAgICB9KCk7CgogICAgdmFyIEludmFsaWQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pIHsKICAgICAgICB0aGlzLnJlYXNvbiA9IHJlYXNvbjsKICAgICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICAgIH0KCiAgICAgIHZhciBfcHJvdG8gPSBJbnZhbGlkLnByb3RvdHlwZTsKCiAgICAgIF9wcm90by50b01lc3NhZ2UgPSBmdW5jdGlvbiB0b01lc3NhZ2UoKSB7CiAgICAgICAgaWYgKHRoaXMuZXhwbGFuYXRpb24pIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJlYXNvbiArICI6ICIgKyB0aGlzLmV4cGxhbmF0aW9uOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFzb247CiAgICAgICAgfQogICAgICB9OwoKICAgICAgcmV0dXJuIEludmFsaWQ7CiAgICB9KCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJmYWNlCiAgICAgKi8KCiAgICB2YXIgWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIFpvbmUoKSB7fQoKICAgICAgdmFyIF9wcm90byA9IFpvbmUucHJvdG90eXBlOwoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIGNvbW1vbiBuYW1lIChzdWNoIGFzIEVTVCkgYXQgdGhlIHNwZWNpZmllZCB0aW1lc3RhbXAKICAgICAgICogQGFic3RyYWN0CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyB0byBhZmZlY3QgdGhlIGZvcm1hdAogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5mb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uIEFjY2VwdHMgJ2xvbmcnIG9yICdzaG9ydCcuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIF9wcm90by5vZmZzZXROYW1lID0gZnVuY3Rpb24gb2Zmc2V0TmFtZSh0cywgb3B0cykgewogICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgICAqIEBhYnN0cmFjdAogICAgICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgb2Zmc2V0CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHRzICduYXJyb3cnLCAnc2hvcnQnLCBvciAndGVjaGllJy4gUmV0dXJuaW5nICcrNicsICcrMDY6MDAnLCBvciAnKzA2MDAnIHJlc3BlY3RpdmVseQogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBpbiBtaW51dGVzIGZvciB0aGlzIHpvbmUgYXQgdGhlIHNwZWNpZmllZCB0aW1lc3RhbXAuCiAgICAgICAqIEBhYnN0cmFjdAogICAgICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGNvbXB1dGUgdGhlIG9mZnNldAogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KHRzKSB7CiAgICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIGVxdWFsIHRvIGFub3RoZXIgem9uZQogICAgICAgKiBAYWJzdHJhY3QKICAgICAgICogQHBhcmFtIHtab25lfSBvdGhlclpvbmUgLSB0aGUgem9uZSB0byBjb21wYXJlCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzKG90aGVyWm9uZSkgewogICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgWm9uZSBpcyB2YWxpZC4KICAgICAgICogQGFic3RyYWN0CiAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX2NyZWF0ZUNsYXNzKFpvbmUsIFt7CiAgICAgICAga2V5OiAidHlwZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKgogICAgICAgICAqIFRoZSB0eXBlIG9mIHpvbmUKICAgICAgICAgKiBAYWJzdHJhY3QKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBuYW1lIG9mIHRoaXMgem9uZS4KICAgICAgICAgKiBAYWJzdHJhY3QKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm5hbWUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBvZmZzZXQgaXMga25vd24gdG8gYmUgZml4ZWQgZm9yIHRoZSB3aG9sZSB5ZWFyLgogICAgICAgICAqIEBhYnN0cmFjdAogICAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzVW5pdmVyc2FsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNWYWxpZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgICAgIH0KICAgICAgfV0pOwoKICAgICAgcmV0dXJuIFpvbmU7CiAgICB9KCk7CgogICAgdmFyIHNpbmdsZXRvbiQxID0gbnVsbDsKICAgIC8qKgogICAgICogUmVwcmVzZW50cyB0aGUgbG9jYWwgem9uZSBmb3IgdGhpcyBKYXZhU2NyaXB0IGVudmlyb25tZW50LgogICAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICAgKi8KCiAgICB2YXIgU3lzdGVtWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoU3lzdGVtWm9uZSwgX1pvbmUpOwoKICAgICAgZnVuY3Rpb24gU3lzdGVtWm9uZSgpIHsKICAgICAgICByZXR1cm4gX1pvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwogICAgICB9CgogICAgICB2YXIgX3Byb3RvID0gU3lzdGVtWm9uZS5wcm90b3R5cGU7CgogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICBfcHJvdG8ub2Zmc2V0TmFtZSA9IGZ1bmN0aW9uIG9mZnNldE5hbWUodHMsIF9yZWYpIHsKICAgICAgICB2YXIgZm9ybWF0ID0gX3JlZi5mb3JtYXQsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYubG9jYWxlOwogICAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSk7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmZvcm1hdE9mZnNldCA9IGZ1bmN0aW9uIGZvcm1hdE9mZnNldCQxKHRzLCBmb3JtYXQpIHsKICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KHRzKSB7CiAgICAgICAgcmV0dXJuIC1uZXcgRGF0ZSh0cykuZ2V0VGltZXpvbmVPZmZzZXQoKTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8uZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzKG90aGVyWm9uZSkgewogICAgICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gInN5c3RlbSI7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX2NyZWF0ZUNsYXNzKFN5c3RlbVpvbmUsIFt7CiAgICAgICAga2V5OiAidHlwZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuICJzeXN0ZW0iOwogICAgICAgIH0KICAgICAgICAvKiogQG92ZXJyaWRlICoqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm5hbWUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7CiAgICAgICAgfQogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNVbml2ZXJzYWwiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIGtleTogImlzVmFsaWQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9XSwgW3sKICAgICAgICBrZXk6ICJpbnN0YW5jZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKgogICAgICAgICAqIEdldCBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgbG9jYWwgem9uZQogICAgICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHNpbmdsZXRvbiQxID09PSBudWxsKSB7CiAgICAgICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICAgICAgfQogICAgICB9XSk7CgogICAgICByZXR1cm4gU3lzdGVtWm9uZTsKICAgIH0oWm9uZSk7CgogICAgdmFyIG1hdGNoaW5nUmVnZXggPSBSZWdFeHAoIl4iICsgaWFuYVJlZ2V4LnNvdXJjZSArICIkIik7CiAgICB2YXIgZHRmQ2FjaGUgPSB7fTsKCiAgICBmdW5jdGlvbiBtYWtlRFRGKHpvbmUpIHsKICAgICAgaWYgKCFkdGZDYWNoZVt6b25lXSkgewogICAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgICAgICAgIHRpbWVab25lOiB6b25lLAogICAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgICAgbW9udGg6ICIyLWRpZ2l0IiwKICAgICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgICAgbWludXRlOiAiMi1kaWdpdCIsCiAgICAgICAgICBzZWNvbmQ6ICIyLWRpZ2l0IgogICAgICAgIH0pOwogICAgICB9CgogICAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgICB9CgogICAgdmFyIHR5cGVUb1BvcyA9IHsKICAgICAgeWVhcjogMCwKICAgICAgbW9udGg6IDEsCiAgICAgIGRheTogMiwKICAgICAgaG91cjogMywKICAgICAgbWludXRlOiA0LAogICAgICBzZWNvbmQ6IDUKICAgIH07CgogICAgZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7CiAgICAgIHZhciBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0KGRhdGUpLnJlcGxhY2UoL1x1MjAwRS9nLCAiIiksCiAgICAgICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSw/IChcZCspOihcZCspOihcZCspLy5leGVjKGZvcm1hdHRlZCksCiAgICAgICAgICBmTW9udGggPSBwYXJzZWRbMV0sCiAgICAgICAgICBmRGF5ID0gcGFyc2VkWzJdLAogICAgICAgICAgZlllYXIgPSBwYXJzZWRbM10sCiAgICAgICAgICBmSG91ciA9IHBhcnNlZFs0XSwKICAgICAgICAgIGZNaW51dGUgPSBwYXJzZWRbNV0sCiAgICAgICAgICBmU2Vjb25kID0gcGFyc2VkWzZdOwogICAgICByZXR1cm4gW2ZZZWFyLCBmTW9udGgsIGZEYXksIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgICAgdmFyIGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpLAogICAgICAgICAgZmlsbGVkID0gW107CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBfZm9ybWF0dGVkJGkgPSBmb3JtYXR0ZWRbaV0sCiAgICAgICAgICAgIHR5cGUgPSBfZm9ybWF0dGVkJGkudHlwZSwKICAgICAgICAgICAgdmFsdWUgPSBfZm9ybWF0dGVkJGkudmFsdWUsCiAgICAgICAgICAgIHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwb3MpKSB7CiAgICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gZmlsbGVkOwogICAgfQoKICAgIHZhciBpYW5hWm9uZUNhY2hlID0ge307CiAgICAvKioKICAgICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgICAqLwoKICAgIHZhciBJQU5BWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSUFOQVpvbmUsIF9ab25lKTsKCiAgICAgIC8qKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFpvbmUgbmFtZQogICAgICAgKiBAcmV0dXJuIHtJQU5BWm9uZX0KICAgICAgICovCiAgICAgIElBTkFab25lLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShuYW1lKSB7CiAgICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgICBpYW5hWm9uZUNhY2hlW25hbWVdID0gbmV3IElBTkFab25lKG5hbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGlhbmFab25lQ2FjaGVbbmFtZV07CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgOwoKICAgICAgSUFOQVpvbmUucmVzZXRDYWNoZSA9IGZ1bmN0aW9uIHJlc2V0Q2FjaGUoKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZSA9IHt9OwogICAgICAgIGR0ZkNhY2hlID0ge307CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgc3RyaW5nIHRvIGNoZWNrIHZhbGlkaXR5IG9uCiAgICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoIkFtZXJpY2EvTmV3X1lvcmsiKSAvLz0+IHRydWUKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiRmFudGFzaWEvQ2FzdGxlIikgLy89PiB0cnVlCiAgICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIgPSBmdW5jdGlvbiBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgICByZXR1cm4gISEocyAmJiBzLm1hdGNoKG1hdGNoaW5nUmVnZXgpKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaWRlbnRpZmllcyBhIHJlYWwgem9uZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIkFtZXJpY2EvTmV3X1lvcmsiKSAvLz0+IHRydWUKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIkZhbnRhc2lhL0Nhc3RsZSIpIC8vPT4gZmFsc2UKICAgICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIElBTkFab25lLmlzVmFsaWRab25lID0gZnVuY3Rpb24gaXNWYWxpZFpvbmUoem9uZSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgiZW4tVVMiLCB7CiAgICAgICAgICAgIHRpbWVab25lOiB6b25lCiAgICAgICAgICB9KS5mb3JtYXQoKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0gLy8gRXRjL0dNVCs4IC0+IC00ODAKCiAgICAgIC8qKiBAaWdub3JlICovCiAgICAgIDsKCiAgICAgIElBTkFab25lLnBhcnNlR01UT2Zmc2V0ID0gZnVuY3Rpb24gcGFyc2VHTVRPZmZzZXQoc3BlY2lmaWVyKSB7CiAgICAgICAgaWYgKHNwZWNpZmllcikgewogICAgICAgICAgdmFyIG1hdGNoID0gc3BlY2lmaWVyLm1hdGNoKC9eRXRjXC9HTVQoMHxbKy1dXGR7MSwyfSkkL2kpOwoKICAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICByZXR1cm4gLTYwICogcGFyc2VJbnQobWF0Y2hbMV0pOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH07CgogICAgICBmdW5jdGlvbiBJQU5BWm9uZShuYW1lKSB7CiAgICAgICAgdmFyIF90aGlzOwoKICAgICAgICBfdGhpcyA9IF9ab25lLmNhbGwodGhpcykgfHwgdGhpczsKICAgICAgICAvKiogQHByaXZhdGUgKiovCgogICAgICAgIF90aGlzLnpvbmVOYW1lID0gbmFtZTsKICAgICAgICAvKiogQHByaXZhdGUgKiovCgogICAgICAgIF90aGlzLnZhbGlkID0gSUFOQVpvbmUuaXNWYWxpZFpvbmUobmFtZSk7CiAgICAgICAgcmV0dXJuIF90aGlzOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgoKICAgICAgdmFyIF9wcm90byA9IElBTkFab25lLnByb3RvdHlwZTsKCiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIF9wcm90by5vZmZzZXROYW1lID0gZnVuY3Rpb24gb2Zmc2V0TmFtZSh0cywgX3JlZikgewogICAgICAgIHZhciBmb3JtYXQgPSBfcmVmLmZvcm1hdCwKICAgICAgICAgICAgbG9jYWxlID0gX3JlZi5sb2NhbGU7CiAgICAgICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlLCB0aGlzLm5hbWUpOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIDsKCiAgICAgIF9wcm90by5mb3JtYXRPZmZzZXQgPSBmdW5jdGlvbiBmb3JtYXRPZmZzZXQkMSh0cywgZm9ybWF0KSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLm9mZnNldCA9IGZ1bmN0aW9uIG9mZnNldCh0cykgewogICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUodHMpOwogICAgICAgIGlmIChpc05hTihkYXRlKSkgcmV0dXJuIE5hTjsKCiAgICAgICAgdmFyIGR0ZiA9IG1ha2VEVEYodGhpcy5uYW1lKSwKICAgICAgICAgICAgX3JlZjIgPSBkdGYuZm9ybWF0VG9QYXJ0cyA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkgOiBoYWNreU9mZnNldChkdGYsIGRhdGUpLAogICAgICAgICAgICB5ZWFyID0gX3JlZjJbMF0sCiAgICAgICAgICAgIG1vbnRoID0gX3JlZjJbMV0sCiAgICAgICAgICAgIGRheSA9IF9yZWYyWzJdLAogICAgICAgICAgICBob3VyID0gX3JlZjJbM10sCiAgICAgICAgICAgIG1pbnV0ZSA9IF9yZWYyWzRdLAogICAgICAgICAgICBzZWNvbmQgPSBfcmVmMls1XTsKCiAgICAgICAgdmFyIGFzVVRDID0gb2JqVG9Mb2NhbFRTKHsKICAgICAgICAgIHllYXI6IHllYXIsCiAgICAgICAgICBtb250aDogbW9udGgsCiAgICAgICAgICBkYXk6IGRheSwKICAgICAgICAgIGhvdXI6IGhvdXIsCiAgICAgICAgICBtaW51dGU6IG1pbnV0ZSwKICAgICAgICAgIHNlY29uZDogc2Vjb25kLAogICAgICAgICAgbWlsbGlzZWNvbmQ6IDAKICAgICAgICB9KTsKICAgICAgICB2YXIgYXNUUyA9ICtkYXRlOwogICAgICAgIHZhciBvdmVyID0gYXNUUyAlIDEwMDA7CiAgICAgICAgYXNUUyAtPSBvdmVyID49IDAgPyBvdmVyIDogMTAwMCArIG92ZXI7CiAgICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09ICJpYW5hIiAmJiBvdGhlclpvbmUubmFtZSA9PT0gdGhpcy5uYW1lOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIDsKCiAgICAgIF9jcmVhdGVDbGFzcyhJQU5BWm9uZSwgW3sKICAgICAgICBrZXk6ICJ0eXBlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiAiaWFuYSI7CiAgICAgICAgfQogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibmFtZSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy56b25lTmFtZTsKICAgICAgICB9CiAgICAgICAgLyoqIEBvdmVycmlkZSAqKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1VuaXZlcnNhbCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNWYWxpZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZDsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBJQU5BWm9uZTsKICAgIH0oWm9uZSk7CgogICAgdmFyIHNpbmdsZXRvbiA9IG51bGw7CiAgICAvKioKICAgICAqIEEgem9uZSB3aXRoIGEgZml4ZWQgb2Zmc2V0IChtZWFuaW5nIG5vIERTVCkKICAgICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAgICovCgogICAgdmFyIEZpeGVkT2Zmc2V0Wm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoRml4ZWRPZmZzZXRab25lLCBfWm9uZSk7CgogICAgICAvKioKICAgICAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfQogICAgICAgKi8KICAgICAgRml4ZWRPZmZzZXRab25lLmluc3RhbmNlID0gZnVuY3Rpb24gaW5zdGFuY2Uob2Zmc2V0KSB7CiAgICAgICAgcmV0dXJuIG9mZnNldCA9PT0gMCA/IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZSA6IG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBvZmZzZXQgc3RyaW5nIHRvIHBhcnNlCiAgICAgICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcigiVVRDKzYiKQogICAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcigiVVRDLTY6MDAiKQogICAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgICAqLwogICAgICA7CgogICAgICBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIgPSBmdW5jdGlvbiBwYXJzZVNwZWNpZmllcihzKSB7CiAgICAgICAgaWYgKHMpIHsKICAgICAgICAgIHZhciByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwoKICAgICAgICAgIGlmIChyKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgRml4ZWRPZmZzZXRab25lKHNpZ25lZE9mZnNldChyWzFdLCByWzJdKSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfTsKCiAgICAgIGZ1bmN0aW9uIEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpIHsKICAgICAgICB2YXIgX3RoaXM7CgogICAgICAgIF90aGlzID0gX1pvbmUuY2FsbCh0aGlzKSB8fCB0aGlzOwogICAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KCiAgICAgICAgX3RoaXMuZml4ZWQgPSBvZmZzZXQ7CiAgICAgICAgcmV0dXJuIF90aGlzOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgoKICAgICAgdmFyIF9wcm90byA9IEZpeGVkT2Zmc2V0Wm9uZS5wcm90b3R5cGU7CgogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICBfcHJvdG8ub2Zmc2V0TmFtZSA9IGZ1bmN0aW9uIG9mZnNldE5hbWUoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8uZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0JDEodHMsIGZvcm1hdCkgewogICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgZm9ybWF0KTsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KCkgewogICAgICAgIHJldHVybiB0aGlzLmZpeGVkOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIDsKCiAgICAgIF9wcm90by5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMob3RoZXJab25lKSB7CiAgICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfY3JlYXRlQ2xhc3MoRml4ZWRPZmZzZXRab25lLCBbewogICAgICAgIGtleTogInR5cGUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICAgICAgfQogICAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibmFtZSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogIlVUQyIgKyBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgIm5hcnJvdyIpOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIGtleTogImlzVW5pdmVyc2FsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgfSwgewogICAgICAgIGtleTogImlzVmFsaWQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9XSwgW3sKICAgICAgICBrZXk6ICJ1dGNJbnN0YW5jZSIsCiAgICAgICAgZ2V0OgogICAgICAgIC8qKgogICAgICAgICAqIEdldCBhIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiBVVEMKICAgICAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHNpbmdsZXRvbiA9PT0gbnVsbCkgewogICAgICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICAgICAgfQogICAgICB9XSk7CgogICAgICByZXR1cm4gRml4ZWRPZmZzZXRab25lOwogICAgfShab25lKTsKCiAgICAvKioKICAgICAqIEEgem9uZSB0aGF0IGZhaWxlZCB0byBwYXJzZS4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMuCiAgICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgICAqLwoKICAgIHZhciBJbnZhbGlkWm9uZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1pvbmUpIHsKICAgICAgX2luaGVyaXRzTG9vc2UoSW52YWxpZFpvbmUsIF9ab25lKTsKCiAgICAgIGZ1bmN0aW9uIEludmFsaWRab25lKHpvbmVOYW1lKSB7CiAgICAgICAgdmFyIF90aGlzOwoKICAgICAgICBfdGhpcyA9IF9ab25lLmNhbGwodGhpcykgfHwgdGhpczsKICAgICAgICAvKiogIEBwcml2YXRlICovCgogICAgICAgIF90aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICAgICAgcmV0dXJuIF90aGlzOwogICAgICB9CiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCgoKICAgICAgdmFyIF9wcm90byA9IEludmFsaWRab25lLnByb3RvdHlwZTsKCiAgICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICAgIF9wcm90by5vZmZzZXROYW1lID0gZnVuY3Rpb24gb2Zmc2V0TmFtZSgpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8uZm9ybWF0T2Zmc2V0ID0gZnVuY3Rpb24gZm9ybWF0T2Zmc2V0KCkgewogICAgICAgIHJldHVybiAiIjsKICAgICAgfQogICAgICAvKiogQG92ZXJyaWRlICoqLwogICAgICA7CgogICAgICBfcHJvdG8ub2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KCkgewogICAgICAgIHJldHVybiBOYU47CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscygpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLyoqIEBvdmVycmlkZSAqKi8KICAgICAgOwoKICAgICAgX2NyZWF0ZUNsYXNzKEludmFsaWRab25lLCBbewogICAgICAgIGtleTogInR5cGUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKICAgICAgICB9CiAgICAgICAgLyoqIEBvdmVycmlkZSAqKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJuYW1lIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgICAgIH0KICAgICAgICAvKiogQG92ZXJyaWRlICoqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzVW5pdmVyc2FsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1ZhbGlkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBJbnZhbGlkWm9uZTsKICAgIH0oWm9uZSk7CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgICB2YXIgb2Zmc2V0OwoKICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICAgIHJldHVybiBkZWZhdWx0Wm9uZTsKICAgICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHsKICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcoaW5wdXQpKSB7CiAgICAgICAgdmFyIGxvd2VyZWQgPSBpbnB1dC50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gZGVmYXVsdFpvbmU7ZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7ZWxzZSBpZiAoKG9mZnNldCA9IElBTkFab25lLnBhcnNlR01UT2Zmc2V0KGlucHV0KSkgIT0gbnVsbCkgewogICAgICAgICAgLy8gaGFuZGxlIEV0Yy9HTVQtNCwgd2hpY2ggVjggY2hva2VzIG9uCiAgICAgICAgICByZXR1cm4gRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCk7CiAgICAgICAgfSBlbHNlIGlmIChJQU5BWm9uZS5pc1ZhbGlkU3BlY2lmaWVyKGxvd2VyZWQpKSByZXR1cm4gSUFOQVpvbmUuY3JlYXRlKGlucHV0KTtlbHNlIHJldHVybiBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIobG93ZXJlZCkgfHwgbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgICByZXR1cm4gRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKGlucHV0KTsKICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICJvYmplY3QiICYmIGlucHV0Lm9mZnNldCAmJiB0eXBlb2YgaW5wdXQub2Zmc2V0ID09PSAibnVtYmVyIikgewogICAgICAgIC8vIFRoaXMgaXMgZHVtYiwgYnV0IHRoZSBpbnN0YW5jZW9mIGNoZWNrIGFib3ZlIGRvZXNuJ3Qgc2VlbSB0byByZWFsbHkgd29yawogICAgICAgIC8vIHNvIHdlJ3JlIGR1Y2sgY2hlY2tpbmcgaXQKICAgICAgICByZXR1cm4gaW5wdXQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnZhbGlkWm9uZShpbnB1dCk7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgbm93ID0gZnVuY3Rpb24gbm93KCkgewogICAgICByZXR1cm4gRGF0ZS5ub3coKTsKICAgIH0sCiAgICAgICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgICAgICBkZWZhdWx0TG9jYWxlID0gbnVsbCwKICAgICAgICBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtID0gbnVsbCwKICAgICAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgICAgIHRocm93T25JbnZhbGlkOwogICAgLyoqCiAgICAgKiBTZXR0aW5ncyBjb250YWlucyBzdGF0aWMgZ2V0dGVycyBhbmQgc2V0dGVycyB0aGF0IGNvbnRyb2wgTHV4b24ncyBvdmVyYWxsIGJlaGF2aW9yLiBMdXhvbiBpcyBhIHNpbXBsZSBsaWJyYXJ5IHdpdGggZmV3IG9wdGlvbnMsIGJ1dCB0aGUgb25lcyBpdCBkb2VzIGhhdmUgbGl2ZSBoZXJlLgogICAgICovCgoKICAgIHZhciBTZXR0aW5ncyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIFNldHRpbmdzKCkge30KCiAgICAgIC8qKgogICAgICAgKiBSZXNldCBMdXhvbidzIGdsb2JhbCBjYWNoZXMuIFNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBpbiB0ZXN0aW5nIHNjZW5hcmlvcy4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIFNldHRpbmdzLnJlc2V0Q2FjaGVzID0gZnVuY3Rpb24gcmVzZXRDYWNoZXMoKSB7CiAgICAgICAgTG9jYWxlLnJlc2V0Q2FjaGUoKTsKICAgICAgICBJQU5BWm9uZS5yZXNldENhY2hlKCk7CiAgICAgIH07CgogICAgICBfY3JlYXRlQ2xhc3MoU2V0dGluZ3MsIG51bGwsIFt7CiAgICAgICAga2V5OiAibm93IiwKICAgICAgICBnZXQ6CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIG5vdzsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAgICAgKiBUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhIG51bWJlciwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBFcG9jaCBtaWxsaXNlY29uZCBjb3VudAogICAgICAgICAqIEB0eXBlIHtmdW5jdGlvbn0KICAgICAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgICAgICogQGV4YW1wbGUgU2V0dGluZ3Mubm93ID0gKCkgPT4gMCAvLyBhbHdheXMgcHJldGVuZCBpdCdzIEphbiAxLCAxOTcwIGF0IG1pZG5pZ2h0IGluIFVUQyB0aW1lCiAgICAgICAgICovCiAgICAgICAgLAogICAgICAgIHNldDogZnVuY3Rpb24gc2V0KG4pIHsKICAgICAgICAgIG5vdyA9IG47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFNldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgdG8gY3JlYXRlIERhdGVUaW1lcyBpbi4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBVc2UgdGhlIHZhbHVlICJzeXN0ZW0iIHRvIHJlc2V0IHRoaXMgdmFsdWUgdG8gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImRlZmF1bHRab25lIiwKICAgICAgICBnZXQ6CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgc3lzdGVtJ3MgdGltZSB6b25lICh0aGUgb25lIHNldCBvbiB0aGUgbWFjaGluZSB0aGF0IHJ1bnMgdGhpcyBjb2RlKS4KICAgICAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gbm9ybWFsaXplWm9uZShkZWZhdWx0Wm9uZSwgU3lzdGVtWm9uZS5pbnN0YW5jZSk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCiAgICAgICAgLAogICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHpvbmUpIHsKICAgICAgICAgIGRlZmF1bHRab25lID0gem9uZTsKICAgICAgICB9CiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJkZWZhdWx0TG9jYWxlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBkZWZhdWx0TG9jYWxlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwogICAgICAgICwKICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldChsb2NhbGUpIHsKICAgICAgICAgIGRlZmF1bHRMb2NhbGUgPSBsb2NhbGU7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImRlZmF1bHROdW1iZXJpbmdTeXN0ZW0iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwogICAgICAgICwKICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICAgIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmdTeXN0ZW07CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGVmYXVsdE91dHB1dENhbGVuZGFyIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFNldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCiAgICAgICAgLAogICAgICAgIHNldDogZnVuY3Rpb24gc2V0KG91dHB1dENhbGVuZGFyKSB7CiAgICAgICAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhcjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHdoZXRoZXIgTHV4b24gd2lsbCB0aHJvdyB3aGVuIGl0IGVuY291bnRlcnMgaW52YWxpZCBEYXRlVGltZXMsIER1cmF0aW9ucywgb3IgSW50ZXJ2YWxzCiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAidGhyb3dPbkludmFsaWQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRocm93T25JbnZhbGlkOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAgICAgKi8KICAgICAgICAsCiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodCkgewogICAgICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgICAgIH0KICAgICAgfV0pOwoKICAgICAgcmV0dXJuIFNldHRpbmdzOwogICAgfSgpOwoKICAgIHZhciBfZXhjbHVkZWQgPSBbImJhc2UiXTsKICAgIHZhciBpbnRsRFRDYWNoZSA9IHt9OwoKICAgIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMpIHsKICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgIG9wdHMgPSB7fTsKICAgICAgfQoKICAgICAgdmFyIGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgICAgdmFyIGR0ZiA9IGludGxEVENhY2hlW2tleV07CgogICAgICBpZiAoIWR0ZikgewogICAgICAgIGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY1N0cmluZywgb3B0cyk7CiAgICAgICAgaW50bERUQ2FjaGVba2V5XSA9IGR0ZjsKICAgICAgfQoKICAgICAgcmV0dXJuIGR0ZjsKICAgIH0KCiAgICB2YXIgaW50bE51bUNhY2hlID0ge307CgogICAgZnVuY3Rpb24gZ2V0Q2FjaGVkSU5GKGxvY1N0cmluZywgb3B0cykgewogICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgb3B0cyA9IHt9OwogICAgICB9CgogICAgICB2YXIga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgICB2YXIgaW5mID0gaW50bE51bUNhY2hlW2tleV07CgogICAgICBpZiAoIWluZikgewogICAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICAgIGludGxOdW1DYWNoZVtrZXldID0gaW5mOwogICAgICB9CgogICAgICByZXR1cm4gaW5mOwogICAgfQoKICAgIHZhciBpbnRsUmVsQ2FjaGUgPSB7fTsKCiAgICBmdW5jdGlvbiBnZXRDYWNoZWRSVEYobG9jU3RyaW5nLCBvcHRzKSB7CiAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICBvcHRzID0ge307CiAgICAgIH0KCiAgICAgIHZhciBfb3B0cyA9IG9wdHM7CiAgICAgICAgICBfb3B0cy5iYXNlOwogICAgICAgICAgdmFyIGNhY2hlS2V5T3B0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9vcHRzLCBfZXhjbHVkZWQpOyAvLyBleGNsdWRlIGBiYXNlYCBmcm9tIHRoZSBvcHRpb25zCgoKICAgICAgdmFyIGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIGNhY2hlS2V5T3B0c10pOwogICAgICB2YXIgaW5mID0gaW50bFJlbENhY2hlW2tleV07CgogICAgICBpZiAoIWluZikgewogICAgICAgIGluZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICAgIGludGxSZWxDYWNoZVtrZXldID0gaW5mOwogICAgICB9CgogICAgICByZXR1cm4gaW5mOwogICAgfQoKICAgIHZhciBzeXNMb2NhbGVDYWNoZSA9IG51bGw7CgogICAgZnVuY3Rpb24gc3lzdGVtTG9jYWxlKCkgewogICAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgICByZXR1cm4gc3lzTG9jYWxlQ2FjaGU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgICByZXR1cm4gc3lzTG9jYWxlQ2FjaGU7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGVTdHIpIHsKICAgICAgLy8gSSByZWFsbHkgd2FudCB0byBhdm9pZCB3cml0aW5nIGEgQkNQIDQ3IHBhcnNlcgogICAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgICAgLy8gSW5zdGVhZCwgd2UnbGwgZG8gdGhpczoKICAgICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgICAvLyBiKSBpZiBpdCBkb2VzLCB1c2UgSW50bCB0byByZXNvbHZlIGV2ZXJ5dGhpbmcKICAgICAgLy8gYykgaWYgSW50bCBmYWlscywgdHJ5IGFnYWluIHdpdGhvdXQgdGhlIC11CiAgICAgIHZhciB1SW5kZXggPSBsb2NhbGVTdHIuaW5kZXhPZigiLXUtIik7CgogICAgICBpZiAodUluZGV4ID09PSAtMSkgewogICAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgb3B0aW9uczsKICAgICAgICB2YXIgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgIG9wdGlvbnMgPSBnZXRDYWNoZWREVEYobG9jYWxlU3RyKS5yZXNvbHZlZE9wdGlvbnMoKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucywKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX29wdGlvbnMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBjYWxlbmRhciA9IF9vcHRpb25zLmNhbGVuZGFyOyAvLyByZXR1cm4gdGhlIHNtYWxsZXIgb25lIHNvIHRoYXQgd2UgY2FuIGFwcGVuZCB0aGUgY2FsZW5kYXIgYW5kIG51bWJlcmluZyBvdmVycmlkZXMgdG8gaXQKCiAgICAgICAgcmV0dXJuIFtzbWFsbGVyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGlmIChvdXRwdXRDYWxlbmRhciB8fCBudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gIi11IjsKCiAgICAgICAgaWYgKG91dHB1dENhbGVuZGFyKSB7CiAgICAgICAgICBsb2NhbGVTdHIgKz0gIi1jYS0iICsgb3V0cHV0Q2FsZW5kYXI7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgICAgICBsb2NhbGVTdHIgKz0gIi1udS0iICsgbnVtYmVyaW5nU3lzdGVtOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGxvY2FsZVN0cjsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgICAgdmFyIG1zID0gW107CgogICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgICAgdmFyIGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpOwogICAgICAgIG1zLnB1c2goZihkdCkpOwogICAgICB9CgogICAgICByZXR1cm4gbXM7CiAgICB9CgogICAgZnVuY3Rpb24gbWFwV2Vla2RheXMoZikgewogICAgICB2YXIgbXMgPSBbXTsKCiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDc7IGkrKykgewogICAgICAgIHZhciBkdCA9IERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMgKyBpKTsKICAgICAgICBtcy5wdXNoKGYoZHQpKTsKICAgICAgfQoKICAgICAgcmV0dXJuIG1zOwogICAgfQoKICAgIGZ1bmN0aW9uIGxpc3RTdHVmZihsb2MsIGxlbmd0aCwgZGVmYXVsdE9LLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgICB2YXIgbW9kZSA9IGxvYy5saXN0aW5nTW9kZShkZWZhdWx0T0spOwoKICAgICAgaWYgKG1vZGUgPT09ICJlcnJvciIpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgICAgcmV0dXJuIGVuZ2xpc2hGbihsZW5ndGgpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICAgIGlmIChsb2MubnVtYmVyaW5nU3lzdGVtICYmIGxvYy5udW1iZXJpbmdTeXN0ZW0gIT09ICJsYXRuIikgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbG9jLm51bWJlcmluZ1N5c3RlbSA9PT0gImxhdG4iIHx8ICFsb2MubG9jYWxlIHx8IGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fCBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2MuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biI7CiAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKCiAgICB2YXIgUG9seU51bWJlckZvcm1hdHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIFBvbHlOdW1iZXJGb3JtYXR0ZXIoaW50bCwgZm9yY2VTaW1wbGUsIG9wdHMpIHsKICAgICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICAgIHRoaXMuZmxvb3IgPSBvcHRzLmZsb29yIHx8IGZhbHNlOwoKICAgICAgICBpZiAoIWZvcmNlU2ltcGxlKSB7CiAgICAgICAgICB2YXIgaW50bE9wdHMgPSB7CiAgICAgICAgICAgIHVzZUdyb3VwaW5nOiBmYWxzZQogICAgICAgICAgfTsKICAgICAgICAgIGlmIChvcHRzLnBhZFRvID4gMCkgaW50bE9wdHMubWluaW11bUludGVnZXJEaWdpdHMgPSBvcHRzLnBhZFRvOwogICAgICAgICAgdGhpcy5pbmYgPSBnZXRDYWNoZWRJTkYoaW50bCwgaW50bE9wdHMpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIF9wcm90byA9IFBvbHlOdW1iZXJGb3JtYXR0ZXIucHJvdG90eXBlOwoKICAgICAgX3Byb3RvLmZvcm1hdCA9IGZ1bmN0aW9uIGZvcm1hdChpKSB7CiAgICAgICAgaWYgKHRoaXMuaW5mKSB7CiAgICAgICAgICB2YXIgZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IGk7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gdG8gbWF0Y2ggdGhlIGJyb3dzZXIncyBudW1iZXJmb3JtYXR0ZXIgZGVmYXVsdHMKICAgICAgICAgIHZhciBfZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IHJvdW5kVG8oaSwgMyk7CgogICAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KF9maXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgcmV0dXJuIFBvbHlOdW1iZXJGb3JtYXR0ZXI7CiAgICB9KCk7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCgogICAgdmFyIFBvbHlEYXRlRm9ybWF0dGVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgZnVuY3Rpb24gUG9seURhdGVGb3JtYXR0ZXIoZHQsIGludGwsIG9wdHMpIHsKICAgICAgICB0aGlzLm9wdHMgPSBvcHRzOwogICAgICAgIHZhciB6OwoKICAgICAgICBpZiAoZHQuem9uZS5pc1VuaXZlcnNhbCkgewogICAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAgIC8vIFRoYXQgaXMgd2h5IGZpeGVkLW9mZnNldCBUWiBpcyBzZXQgdG8gdGhhdCB1bmxlc3MgaXQgaXM6CiAgICAgICAgICAvLyAxLiBSZXByZXNlbnRpbmcgb2Zmc2V0IDAgd2hlbiBVVEMgaXMgdXNlZCB0byBtYWludGFpbiBwcmV2aW91cyBiZWhhdmlvciBhbmQgZG9lcyBub3QgYmVjb21lIEdNVC4KICAgICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgICAgLy8gICAgLSBzb21lIGRvIG5vdCBzdXBwb3J0IEV0Yy8KICAgICAgICAgIC8vICAgIC0gPCBFdGMvR01ULTE0LCA+IEV0Yy9HTVQrMTIsIGFuZCAzMC1taW51dGUgb3IgNDUtbWludXRlIG9mZnNldHMgYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YQogICAgICAgICAgdmFyIGdtdE9mZnNldCA9IC0xICogKGR0Lm9mZnNldCAvIDYwKTsKICAgICAgICAgIHZhciBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyAiRXRjL0dNVCsiICsgZ210T2Zmc2V0IDogIkV0Yy9HTVQiICsgZ210T2Zmc2V0OwogICAgICAgICAgdmFyIGlzT2Zmc2V0Wm9uZVN1cHBvcnRlZCA9IElBTkFab25lLmlzVmFsaWRab25lKG9mZnNldFopOwoKICAgICAgICAgIGlmIChkdC5vZmZzZXQgIT09IDAgJiYgaXNPZmZzZXRab25lU3VwcG9ydGVkKSB7CiAgICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEuCiAgICAgICAgICAgIC8vIFNvIHdlIGhhdmUgdG8gbWFrZSBkby4gVHdvIGNhc2VzOgogICAgICAgICAgICAvLyAxLiBUaGUgZm9ybWF0IG9wdGlvbnMgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBXZSBjYW4ndCBkbyB0aGF0LCBzbyB0aGUgYmVzdAogICAgICAgICAgICAvLyB3ZSBjYW4gZG8gaXMgZm9ybWF0IHRoZSBkYXRlIGluIFVUQy4KICAgICAgICAgICAgLy8gMi4gVGhlIGZvcm1hdCBvcHRpb25zIGRvbid0IHRlbGwgdXMgdG8gc2hvdyB0aGUgem9uZS4gVGhlbiB3ZSBjYW4gYWRqdXN0IHRoZW0KICAgICAgICAgICAgLy8gdGhlIHRpbWUgYW5kIHRlbGwgdGhlIGZvcm1hdHRlciB0byBzaG93IGl0IHRvIHVzIGluIFVUQywgc28gdGhhdCB0aGUgdGltZSBpcyByaWdodAogICAgICAgICAgICAvLyBhbmQgdGhlIGJhZCB6b25lIGRvZXNuJ3Qgc2hvdyB1cC4KICAgICAgICAgICAgeiA9ICJVVEMiOwoKICAgICAgICAgICAgaWYgKG9wdHMudGltZVpvbmVOYW1lKSB7CiAgICAgICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuZHQgPSBkdC5vZmZzZXQgPT09IDAgPyBkdCA6IERhdGVUaW1lLmZyb21NaWxsaXMoZHQudHMgKyBkdC5vZmZzZXQgKiA2MCAqIDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJzeXN0ZW0iKSB7CiAgICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICAgIHogPSBkdC56b25lLm5hbWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgaW50bE9wdHMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5vcHRzKTsKCiAgICAgICAgaWYgKHopIHsKICAgICAgICAgIGludGxPcHRzLnRpbWVab25lID0gejsKICAgICAgICB9CgogICAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgICAgfQoKICAgICAgdmFyIF9wcm90bzIgPSBQb2x5RGF0ZUZvcm1hdHRlci5wcm90b3R5cGU7CgogICAgICBfcHJvdG8yLmZvcm1hdCA9IGZ1bmN0aW9uIGZvcm1hdCgpIHsKICAgICAgICByZXR1cm4gdGhpcy5kdGYuZm9ybWF0KHRoaXMuZHQudG9KU0RhdGUoKSk7CiAgICAgIH07CgogICAgICBfcHJvdG8yLmZvcm1hdFRvUGFydHMgPSBmdW5jdGlvbiBmb3JtYXRUb1BhcnRzKCkgewogICAgICAgIHJldHVybiB0aGlzLmR0Zi5mb3JtYXRUb1BhcnRzKHRoaXMuZHQudG9KU0RhdGUoKSk7CiAgICAgIH07CgogICAgICBfcHJvdG8yLnJlc29sdmVkT3B0aW9ucyA9IGZ1bmN0aW9uIHJlc29sdmVkT3B0aW9ucygpIHsKICAgICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICAgIH07CgogICAgICByZXR1cm4gUG9seURhdGVGb3JtYXR0ZXI7CiAgICB9KCk7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KCgogICAgdmFyIFBvbHlSZWxGb3JtYXR0ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBmdW5jdGlvbiBQb2x5UmVsRm9ybWF0dGVyKGludGwsIGlzRW5nbGlzaCwgb3B0cykgewogICAgICAgIHRoaXMub3B0cyA9IF9leHRlbmRzKHsKICAgICAgICAgIHN0eWxlOiAibG9uZyIKICAgICAgICB9LCBvcHRzKTsKCiAgICAgICAgaWYgKCFpc0VuZ2xpc2ggJiYgaGFzUmVsYXRpdmUoKSkgewogICAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgX3Byb3RvMyA9IFBvbHlSZWxGb3JtYXR0ZXIucHJvdG90eXBlOwoKICAgICAgX3Byb3RvMy5mb3JtYXQgPSBmdW5jdGlvbiBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXQoY291bnQsIHVuaXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCB0aGlzLm9wdHMubnVtZXJpYywgdGhpcy5vcHRzLnN0eWxlICE9PSAibG9uZyIpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIF9wcm90bzMuZm9ybWF0VG9QYXJ0cyA9IGZ1bmN0aW9uIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgICBpZiAodGhpcy5ydGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXRUb1BhcnRzKGNvdW50LCB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIHJldHVybiBQb2x5UmVsRm9ybWF0dGVyOwogICAgfSgpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIHZhciBMb2NhbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICBMb2NhbGUuZnJvbU9wdHMgPSBmdW5jdGlvbiBmcm9tT3B0cyhvcHRzKSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTsKICAgICAgfTsKCiAgICAgIExvY2FsZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyLCBkZWZhdWx0VG9FTikgewogICAgICAgIGlmIChkZWZhdWx0VG9FTiA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBkZWZhdWx0VG9FTiA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNwZWNpZmllZExvY2FsZSA9IGxvY2FsZSB8fCBTZXR0aW5ncy5kZWZhdWx0TG9jYWxlOyAvLyB0aGUgc3lzdGVtIGxvY2FsZSBpcyB1c2VmdWwgZm9yIGh1bWFuIHJlYWRhYmxlIHN0cmluZ3MgYnV0IGFubm95aW5nIGZvciBwYXJzaW5nL2Zvcm1hdHRpbmcga25vd24gZm9ybWF0cwoKICAgICAgICB2YXIgbG9jYWxlUiA9IHNwZWNpZmllZExvY2FsZSB8fCAoZGVmYXVsdFRvRU4gPyAiZW4tVVMiIDogc3lzdGVtTG9jYWxlKCkpOwogICAgICAgIHZhciBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07CiAgICAgICAgdmFyIG91dHB1dENhbGVuZGFyUiA9IG91dHB1dENhbGVuZGFyIHx8IFNldHRpbmdzLmRlZmF1bHRPdXRwdXRDYWxlbmRhcjsKICAgICAgICByZXR1cm4gbmV3IExvY2FsZShsb2NhbGVSLCBudW1iZXJpbmdTeXN0ZW1SLCBvdXRwdXRDYWxlbmRhclIsIHNwZWNpZmllZExvY2FsZSk7CiAgICAgIH07CgogICAgICBMb2NhbGUucmVzZXRDYWNoZSA9IGZ1bmN0aW9uIHJlc2V0Q2FjaGUoKSB7CiAgICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICAgIGludGxEVENhY2hlID0ge307CiAgICAgICAgaW50bE51bUNhY2hlID0ge307CiAgICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICAgIH07CgogICAgICBMb2NhbGUuZnJvbU9iamVjdCA9IGZ1bmN0aW9uIGZyb21PYmplY3QoX3RlbXApIHsKICAgICAgICB2YXIgX3JlZiA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wLAogICAgICAgICAgICBsb2NhbGUgPSBfcmVmLmxvY2FsZSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX3JlZi5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIG91dHB1dENhbGVuZGFyID0gX3JlZi5vdXRwdXRDYWxlbmRhcjsKCiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTsKICAgICAgfTsKCiAgICAgIGZ1bmN0aW9uIExvY2FsZShsb2NhbGUsIG51bWJlcmluZywgb3V0cHV0Q2FsZW5kYXIsIHNwZWNpZmllZExvY2FsZSkgewogICAgICAgIHZhciBfcGFyc2VMb2NhbGVTdHJpbmcgPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpLAogICAgICAgICAgICBwYXJzZWRMb2NhbGUgPSBfcGFyc2VMb2NhbGVTdHJpbmdbMF0sCiAgICAgICAgICAgIHBhcnNlZE51bWJlcmluZ1N5c3RlbSA9IF9wYXJzZUxvY2FsZVN0cmluZ1sxXSwKICAgICAgICAgICAgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgPSBfcGFyc2VMb2NhbGVTdHJpbmdbMl07CgogICAgICAgIHRoaXMubG9jYWxlID0gcGFyc2VkTG9jYWxlOwogICAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhciB8fCBwYXJzZWRPdXRwdXRDYWxlbmRhciB8fCBudWxsOwogICAgICAgIHRoaXMuaW50bCA9IGludGxDb25maWdTdHJpbmcodGhpcy5sb2NhbGUsIHRoaXMubnVtYmVyaW5nU3lzdGVtLCB0aGlzLm91dHB1dENhbGVuZGFyKTsKICAgICAgICB0aGlzLndlZWtkYXlzQ2FjaGUgPSB7CiAgICAgICAgICBmb3JtYXQ6IHt9LAogICAgICAgICAgc3RhbmRhbG9uZToge30KICAgICAgICB9OwogICAgICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7CiAgICAgICAgICBmb3JtYXQ6IHt9LAogICAgICAgICAgc3RhbmRhbG9uZToge30KICAgICAgICB9OwogICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IG51bGw7CiAgICAgICAgdGhpcy5lcmFDYWNoZSA9IHt9OwogICAgICAgIHRoaXMuc3BlY2lmaWVkTG9jYWxlID0gc3BlY2lmaWVkTG9jYWxlOwogICAgICAgIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQgPSBudWxsOwogICAgICB9CgogICAgICB2YXIgX3Byb3RvNCA9IExvY2FsZS5wcm90b3R5cGU7CgogICAgICBfcHJvdG80Lmxpc3RpbmdNb2RlID0gZnVuY3Rpb24gbGlzdGluZ01vZGUoZGVmYXVsdE9LKSB7CgogICAgICAgIHZhciBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICAgIHZhciBoYXNOb1dlaXJkbmVzcyA9ICh0aGlzLm51bWJlcmluZ1N5c3RlbSA9PT0gbnVsbCB8fCB0aGlzLm51bWJlcmluZ1N5c3RlbSA9PT0gImxhdG4iKSAmJiAodGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gbnVsbCB8fCB0aGlzLm91dHB1dENhbGVuZGFyID09PSAiZ3JlZ29yeSIpOwogICAgICAgIHJldHVybiBpc0FjdHVhbGx5RW4gJiYgaGFzTm9XZWlyZG5lc3MgPyAiZW4iIDogImludGwiOwogICAgICB9OwoKICAgICAgX3Byb3RvNC5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lKGFsdHMpIHsKICAgICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoYWx0cy5sb2NhbGUgfHwgdGhpcy5zcGVjaWZpZWRMb2NhbGUsIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLCBhbHRzLm91dHB1dENhbGVuZGFyIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIsIGFsdHMuZGVmYXVsdFRvRU4gfHwgZmFsc2UpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIF9wcm90bzQucmVkZWZhdWx0VG9FTiA9IGZ1bmN0aW9uIHJlZGVmYXVsdFRvRU4oYWx0cykgewogICAgICAgIGlmIChhbHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIGFsdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmNsb25lKF9leHRlbmRzKHt9LCBhbHRzLCB7CiAgICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZQogICAgICAgIH0pKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQucmVkZWZhdWx0VG9TeXN0ZW0gPSBmdW5jdGlvbiByZWRlZmF1bHRUb1N5c3RlbShhbHRzKSB7CiAgICAgICAgaWYgKGFsdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgYWx0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoX2V4dGVuZHMoe30sIGFsdHMsIHsKICAgICAgICAgIGRlZmF1bHRUb0VOOiBmYWxzZQogICAgICAgIH0pKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQubW9udGhzID0gZnVuY3Rpb24gbW9udGhzJDEobGVuZ3RoLCBmb3JtYXQsIGRlZmF1bHRPSykgewogICAgICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgewogICAgICAgICAgZm9ybWF0ID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGVmYXVsdE9LID09PSB2b2lkIDApIHsKICAgICAgICAgIGRlZmF1bHRPSyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBtb250aHMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBpbnRsID0gZm9ybWF0ID8gewogICAgICAgICAgICBtb250aDogbGVuZ3RoLAogICAgICAgICAgICBkYXk6ICJudW1lcmljIgogICAgICAgICAgfSA6IHsKICAgICAgICAgICAgbW9udGg6IGxlbmd0aAogICAgICAgICAgfSwKICAgICAgICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyAiZm9ybWF0IiA6ICJzdGFuZGFsb25lIjsKCiAgICAgICAgICBpZiAoIV90aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgICBfdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoZnVuY3Rpb24gKGR0KSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gX3RoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICAgIH0pOwogICAgICB9OwoKICAgICAgX3Byb3RvNC53ZWVrZGF5cyA9IGZ1bmN0aW9uIHdlZWtkYXlzJDEobGVuZ3RoLCBmb3JtYXQsIGRlZmF1bHRPSykgewogICAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsKICAgICAgICAgIGZvcm1hdCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGRlZmF1bHRPSyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBkZWZhdWx0T0sgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgd2Vla2RheXMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBpbnRsID0gZm9ybWF0ID8gewogICAgICAgICAgICB3ZWVrZGF5OiBsZW5ndGgsCiAgICAgICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICAgICAgbW9udGg6ICJsb25nIiwKICAgICAgICAgICAgZGF5OiAibnVtZXJpYyIKICAgICAgICAgIH0gOiB7CiAgICAgICAgICAgIHdlZWtkYXk6IGxlbmd0aAogICAgICAgICAgfSwKICAgICAgICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyAiZm9ybWF0IiA6ICJzdGFuZGFsb25lIjsKCiAgICAgICAgICBpZiAoIV90aGlzMi53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgICBfdGhpczIud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBXZWVrZGF5cyhmdW5jdGlvbiAoZHQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLmV4dHJhY3QoZHQsIGludGwsICJ3ZWVrZGF5Iik7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfdGhpczIud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF07CiAgICAgICAgfSk7CiAgICAgIH07CgogICAgICBfcHJvdG80Lm1lcmlkaWVtcyA9IGZ1bmN0aW9uIG1lcmlkaWVtcyQxKGRlZmF1bHRPSykgewogICAgICAgIHZhciBfdGhpczMgPSB0aGlzOwoKICAgICAgICBpZiAoZGVmYXVsdE9LID09PSB2b2lkIDApIHsKICAgICAgICAgIGRlZmF1bHRPSyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIHVuZGVmaW5lZCwgZGVmYXVsdE9LLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gbWVyaWRpZW1zOwogICAgICAgIH0sIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvCiAgICAgICAgICAvLyBmb3IgQU0gYW5kIFBNLiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLCBidXQgaXQncyBtYWtlcyBwYXJzaW5nIHdheSBlYXNpZXIuCiAgICAgICAgICBpZiAoIV90aGlzMy5tZXJpZGllbUNhY2hlKSB7CiAgICAgICAgICAgIHZhciBpbnRsID0gewogICAgICAgICAgICAgIGhvdXI6ICJudW1lcmljIiwKICAgICAgICAgICAgICBob3VyQ3ljbGU6ICJoMTIiCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIF90aGlzMy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcChmdW5jdGlvbiAoZHQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIF90aGlzMy5tZXJpZGllbUNhY2hlOwogICAgICAgIH0pOwogICAgICB9OwoKICAgICAgX3Byb3RvNC5lcmFzID0gZnVuY3Rpb24gZXJhcyQxKGxlbmd0aCwgZGVmYXVsdE9LKSB7CiAgICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CgogICAgICAgIGlmIChkZWZhdWx0T0sgPT09IHZvaWQgMCkgewogICAgICAgICAgZGVmYXVsdE9LID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIGVyYXMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHZhciBpbnRsID0gewogICAgICAgICAgICBlcmE6IGxlbmd0aAogICAgICAgICAgfTsgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgICAvLyB0byBkZWZpbml0ZWx5IGVudW1lcmF0ZSB0aGVtLgoKICAgICAgICAgIGlmICghX3RoaXM0LmVyYUNhY2hlW2xlbmd0aF0pIHsKICAgICAgICAgICAgX3RoaXM0LmVyYUNhY2hlW2xlbmd0aF0gPSBbRGF0ZVRpbWUudXRjKC00MCwgMSwgMSksIERhdGVUaW1lLnV0YygyMDE3LCAxLCAxKV0ubWFwKGZ1bmN0aW9uIChkdCkgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczQuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gX3RoaXM0LmVyYUNhY2hlW2xlbmd0aF07CiAgICAgICAgfSk7CiAgICAgIH07CgogICAgICBfcHJvdG80LmV4dHJhY3QgPSBmdW5jdGlvbiBleHRyYWN0KGR0LCBpbnRsT3B0cywgZmllbGQpIHsKICAgICAgICB2YXIgZGYgPSB0aGlzLmR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyksCiAgICAgICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgICAgIG1hdGNoaW5nID0gcmVzdWx0cy5maW5kKGZ1bmN0aW9uIChtKSB7CiAgICAgICAgICByZXR1cm4gbS50eXBlLnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgICAgfTsKCiAgICAgIF9wcm90bzQubnVtYmVyRm9ybWF0dGVyID0gZnVuY3Rpb24gbnVtYmVyRm9ybWF0dGVyKG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICAvLyB0aGlzIGZvcmNlc2ltcGxlIG9wdGlvbiBpcyBuZXZlciB1c2VkICh0aGUgb25seSBjYWxsZXIgc2hvcnQtY2lyY3VpdHMgb24gaXQsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBsZWF2ZSkKICAgICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICAgIHJldHVybiBuZXcgUG9seU51bWJlckZvcm1hdHRlcih0aGlzLmludGwsIG9wdHMuZm9yY2VTaW1wbGUgfHwgdGhpcy5mYXN0TnVtYmVycywgb3B0cyk7CiAgICAgIH07CgogICAgICBfcHJvdG80LmR0Rm9ybWF0dGVyID0gZnVuY3Rpb24gZHRGb3JtYXR0ZXIoZHQsIGludGxPcHRzKSB7CiAgICAgICAgaWYgKGludGxPcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIGludGxPcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFBvbHlEYXRlRm9ybWF0dGVyKGR0LCB0aGlzLmludGwsIGludGxPcHRzKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQucmVsRm9ybWF0dGVyID0gZnVuY3Rpb24gcmVsRm9ybWF0dGVyKG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFBvbHlSZWxGb3JtYXR0ZXIodGhpcy5pbnRsLCB0aGlzLmlzRW5nbGlzaCgpLCBvcHRzKTsKICAgICAgfTsKCiAgICAgIF9wcm90bzQuaXNFbmdsaXNoID0gZnVuY3Rpb24gaXNFbmdsaXNoKCkgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZSA9PT0gImVuIiB8fCB0aGlzLmxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSAiZW4tdXMiIHx8IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIik7CiAgICAgIH07CgogICAgICBfcHJvdG80LmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgewogICAgICAgIHJldHVybiB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmIHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBvdGhlci5udW1iZXJpbmdTeXN0ZW0gJiYgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gb3RoZXIub3V0cHV0Q2FsZW5kYXI7CiAgICAgIH07CgogICAgICBfY3JlYXRlQ2xhc3MoTG9jYWxlLCBbewogICAgICAgIGtleTogImZhc3ROdW1iZXJzIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIGlmICh0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ7CiAgICAgICAgfQogICAgICB9XSk7CgogICAgICByZXR1cm4gTG9jYWxlOwogICAgfSgpOwoKICAgIC8qCiAgICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAgICogVHdvIHRoaW5ncyBnbyBpbnRvIHBhcnNpbmc6IGEgcmVnZXggdG8gbWF0Y2ggd2l0aCBhbmQgYW4gZXh0cmFjdG9yIHRvIHRha2UgYXBhcnQgdGhlIGdyb3VwcyBpbiB0aGUgbWF0Y2guCiAgICAgKiBBbiBleHRyYWN0b3IgaXMganVzdCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSByZWdleCBtYXRjaCBhcnJheSBhbmQgcmV0dXJucyBhIHsgeWVhcjogLi4uLCBtb250aDogLi4uIH0gb2JqZWN0CiAgICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgICAqIEV4dHJhY3RvcnMgY2FuIHRha2UgYSAiY3Vyc29yIiByZXByZXNlbnRpbmcgdGhlIG9mZnNldCBpbiB0aGUgbWF0Y2ggdG8gbG9vayBhdC4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIGNvbWJpbmUgZXh0cmFjdG9ycy4KICAgICAqIGNvbWJpbmVFeHRyYWN0b3JzKCkgZG9lcyB0aGUgd29yayBvZiBjb21iaW5pbmcgdGhlbSwga2VlcGluZyB0cmFjayBvZiB0aGUgY3Vyc29yIHRocm91Z2ggbXVsdGlwbGUgZXh0cmFjdGlvbnMuCiAgICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgICAqLwoKICAgIGZ1bmN0aW9uIGNvbWJpbmVSZWdleGVzKCkgewogICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVnZXhlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKICAgICAgICByZWdleGVzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICB9CgogICAgICB2YXIgZnVsbCA9IHJlZ2V4ZXMucmVkdWNlKGZ1bmN0aW9uIChmLCByKSB7CiAgICAgICAgcmV0dXJuIGYgKyByLnNvdXJjZTsKICAgICAgfSwgIiIpOwogICAgICByZXR1cm4gUmVnRXhwKCJeIiArIGZ1bGwgKyAiJCIpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNvbWJpbmVFeHRyYWN0b3JzKCkgewogICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGV4dHJhY3RvcnMgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHsKICAgICAgICBleHRyYWN0b3JzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07CiAgICAgIH0KCiAgICAgIHJldHVybiBmdW5jdGlvbiAobSkgewogICAgICAgIHJldHVybiBleHRyYWN0b3JzLnJlZHVjZShmdW5jdGlvbiAoX3JlZiwgZXgpIHsKICAgICAgICAgIHZhciBtZXJnZWRWYWxzID0gX3JlZlswXSwKICAgICAgICAgICAgICBtZXJnZWRab25lID0gX3JlZlsxXSwKICAgICAgICAgICAgICBjdXJzb3IgPSBfcmVmWzJdOwoKICAgICAgICAgIHZhciBfZXggPSBleChtLCBjdXJzb3IpLAogICAgICAgICAgICAgIHZhbCA9IF9leFswXSwKICAgICAgICAgICAgICB6b25lID0gX2V4WzFdLAogICAgICAgICAgICAgIG5leHQgPSBfZXhbMl07CgogICAgICAgICAgcmV0dXJuIFtfZXh0ZW5kcyh7fSwgbWVyZ2VkVmFscywgdmFsKSwgbWVyZ2VkWm9uZSB8fCB6b25lLCBuZXh0XTsKICAgICAgICB9LCBbe30sIG51bGwsIDFdKS5zbGljZSgwLCAyKTsKICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZShzKSB7CiAgICAgIGlmIChzID09IG51bGwpIHsKICAgICAgICByZXR1cm4gW251bGwsIG51bGxdOwogICAgICB9CgogICAgICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIHBhdHRlcm5zID0gbmV3IEFycmF5KF9sZW4zID4gMSA/IF9sZW4zIC0gMSA6IDApLCBfa2V5MyA9IDE7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHsKICAgICAgICBwYXR0ZXJuc1tfa2V5MyAtIDFdID0gYXJndW1lbnRzW19rZXkzXTsKICAgICAgfQoKICAgICAgZm9yICh2YXIgX2kgPSAwLCBfcGF0dGVybnMgPSBwYXR0ZXJuczsgX2kgPCBfcGF0dGVybnMubGVuZ3RoOyBfaSsrKSB7CiAgICAgICAgdmFyIF9wYXR0ZXJucyRfaSA9IF9wYXR0ZXJuc1tfaV0sCiAgICAgICAgICAgIHJlZ2V4ID0gX3BhdHRlcm5zJF9pWzBdLAogICAgICAgICAgICBleHRyYWN0b3IgPSBfcGF0dGVybnMkX2lbMV07CiAgICAgICAgdmFyIG0gPSByZWdleC5leGVjKHMpOwoKICAgICAgICBpZiAobSkgewogICAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZnVuY3Rpb24gc2ltcGxlUGFyc2UoKSB7CiAgICAgIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwga2V5cyA9IG5ldyBBcnJheShfbGVuNCksIF9rZXk0ID0gMDsgX2tleTQgPCBfbGVuNDsgX2tleTQrKykgewogICAgICAgIGtleXNbX2tleTRdID0gYXJndW1lbnRzW19rZXk0XTsKICAgICAgfQoKICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtYXRjaCwgY3Vyc29yKSB7CiAgICAgICAgdmFyIHJldCA9IHt9OwogICAgICAgIHZhciBpOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgcmV0W2tleXNbaV1dID0gcGFyc2VJbnRlZ2VyKG1hdGNoW2N1cnNvciArIGldKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbcmV0LCBudWxsLCBjdXJzb3IgKyBpXTsKICAgICAgfTsKICAgIH0gLy8gSVNPIGFuZCBTUUwgcGFyc2luZwoKCiAgICB2YXIgb2Zmc2V0UmVnZXggPSAvKD86KFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/KS8sCiAgICAgICAgaXNvVGltZUJhc2VSZWdleCA9IC8oXGRcZCkoPzo6PyhcZFxkKSg/Ojo/KFxkXGQpKD86Wy4sXShcZHsxLDMwfSkpPyk/KT8vLAogICAgICAgIGlzb1RpbWVSZWdleCA9IFJlZ0V4cCgiIiArIGlzb1RpbWVCYXNlUmVnZXguc291cmNlICsgb2Zmc2V0UmVnZXguc291cmNlICsgIj8iKSwKICAgICAgICBpc29UaW1lRXh0ZW5zaW9uUmVnZXggPSBSZWdFeHAoIig/OlQiICsgaXNvVGltZVJlZ2V4LnNvdXJjZSArICIpPyIpLAogICAgICAgIGlzb1ltZFJlZ2V4ID0gLyhbKy1dXGR7Nn18XGR7NH0pKD86LT8oXGRcZCkoPzotPyhcZFxkKSk/KT8vLAogICAgICAgIGlzb1dlZWtSZWdleCA9IC8oXGR7NH0pLT9XKFxkXGQpKD86LT8oXGQpKT8vLAogICAgICAgIGlzb09yZGluYWxSZWdleCA9IC8oXGR7NH0pLT8oXGR7M30pLywKICAgICAgICBleHRyYWN0SVNPV2Vla0RhdGEgPSBzaW1wbGVQYXJzZSgid2Vla1llYXIiLCAid2Vla051bWJlciIsICJ3ZWVrRGF5IiksCiAgICAgICAgZXh0cmFjdElTT09yZGluYWxEYXRhID0gc2ltcGxlUGFyc2UoInllYXIiLCAib3JkaW5hbCIpLAogICAgICAgIHNxbFltZFJlZ2V4ID0gLyhcZHs0fSktKFxkXGQpLShcZFxkKS8sCiAgICAgICAgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogICAgc3FsVGltZVJlZ2V4ID0gUmVnRXhwKGlzb1RpbWVCYXNlUmVnZXguc291cmNlICsgIiA/KD86IiArIG9mZnNldFJlZ2V4LnNvdXJjZSArICJ8KCIgKyBpYW5hUmVnZXguc291cmNlICsgIikpPyIpLAogICAgICAgIHNxbFRpbWVFeHRlbnNpb25SZWdleCA9IFJlZ0V4cCgiKD86ICIgKyBzcWxUaW1lUmVnZXguc291cmNlICsgIik/Iik7CgogICAgZnVuY3Rpb24gaW50KG1hdGNoLCBwb3MsIGZhbGxiYWNrKSB7CiAgICAgIHZhciBtID0gbWF0Y2hbcG9zXTsKICAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKG0pID8gZmFsbGJhY2sgOiBwYXJzZUludGVnZXIobSk7CiAgICB9CgogICAgZnVuY3Rpb24gZXh0cmFjdElTT1ltZChtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciBpdGVtID0gewogICAgICAgIHllYXI6IGludChtYXRjaCwgY3Vyc29yKSwKICAgICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgICBkYXk6IGludChtYXRjaCwgY3Vyc29yICsgMiwgMSkKICAgICAgfTsKICAgICAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyAzXTsKICAgIH0KCiAgICBmdW5jdGlvbiBleHRyYWN0SVNPVGltZShtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciBpdGVtID0gewogICAgICAgIGhvdXJzOiBpbnQobWF0Y2gsIGN1cnNvciwgMCksCiAgICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgICBzZWNvbmRzOiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDApLAogICAgICAgIG1pbGxpc2Vjb25kczogcGFyc2VNaWxsaXMobWF0Y2hbY3Vyc29yICsgM10pCiAgICAgIH07CiAgICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgICB9CgogICAgZnVuY3Rpb24gZXh0cmFjdElTT09mZnNldChtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciBsb2NhbCA9ICFtYXRjaFtjdXJzb3JdICYmICFtYXRjaFtjdXJzb3IgKyAxXSwKICAgICAgICAgIGZ1bGxPZmZzZXQgPSBzaWduZWRPZmZzZXQobWF0Y2hbY3Vyc29yICsgMV0sIG1hdGNoW2N1cnNvciArIDJdKSwKICAgICAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICAgIHJldHVybiBbe30sIHpvbmUsIGN1cnNvciArIDNdOwogICAgfQoKICAgIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICAgIHZhciB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICAgIHJldHVybiBbe30sIHpvbmUsIGN1cnNvciArIDFdOwogICAgfSAvLyBJU08gdGltZSBwYXJzaW5nCgoKICAgIHZhciBpc29UaW1lT25seSA9IFJlZ0V4cCgiXlQ/IiArIGlzb1RpbWVCYXNlUmVnZXguc291cmNlICsgIiQiKTsgLy8gSVNPIGR1cmF0aW9uIHBhcnNpbmcKCiAgICB2YXIgaXNvRHVyYXRpb24gPSAvXi0/UCg/Oig/OigtP1xkezEsOX0pWSk/KD86KC0/XGR7MSw5fSlNKT8oPzooLT9cZHsxLDl9KVcpPyg/OigtP1xkezEsOX0pRCk/KD86VCg/OigtP1xkezEsOX0pSCk/KD86KC0/XGR7MSw5fSlNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSw5fSkpP1MpPyk/KSQvOwoKICAgIGZ1bmN0aW9uIGV4dHJhY3RJU09EdXJhdGlvbihtYXRjaCkgewogICAgICB2YXIgcyA9IG1hdGNoWzBdLAogICAgICAgICAgeWVhclN0ciA9IG1hdGNoWzFdLAogICAgICAgICAgbW9udGhTdHIgPSBtYXRjaFsyXSwKICAgICAgICAgIHdlZWtTdHIgPSBtYXRjaFszXSwKICAgICAgICAgIGRheVN0ciA9IG1hdGNoWzRdLAogICAgICAgICAgaG91clN0ciA9IG1hdGNoWzVdLAogICAgICAgICAgbWludXRlU3RyID0gbWF0Y2hbNl0sCiAgICAgICAgICBzZWNvbmRTdHIgPSBtYXRjaFs3XSwKICAgICAgICAgIG1pbGxpc2Vjb25kc1N0ciA9IG1hdGNoWzhdOwogICAgICB2YXIgaGFzTmVnYXRpdmVQcmVmaXggPSBzWzBdID09PSAiLSI7CiAgICAgIHZhciBuZWdhdGl2ZVNlY29uZHMgPSBzZWNvbmRTdHIgJiYgc2Vjb25kU3RyWzBdID09PSAiLSI7CgogICAgICB2YXIgbWF5YmVOZWdhdGUgPSBmdW5jdGlvbiBtYXliZU5lZ2F0ZShudW0sIGZvcmNlKSB7CiAgICAgICAgaWYgKGZvcmNlID09PSB2b2lkIDApIHsKICAgICAgICAgIGZvcmNlID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVtICE9PSB1bmRlZmluZWQgJiYgKGZvcmNlIHx8IG51bSAmJiBoYXNOZWdhdGl2ZVByZWZpeCkgPyAtbnVtIDogbnVtOwogICAgICB9OwoKICAgICAgcmV0dXJuIFt7CiAgICAgICAgeWVhcnM6IG1heWJlTmVnYXRlKHBhcnNlSW50ZWdlcih5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUludGVnZXIobW9udGhTdHIpKSwKICAgICAgICB3ZWVrczogbWF5YmVOZWdhdGUocGFyc2VJbnRlZ2VyKHdlZWtTdHIpKSwKICAgICAgICBkYXlzOiBtYXliZU5lZ2F0ZShwYXJzZUludGVnZXIoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlSW50ZWdlcihob3VyU3RyKSksCiAgICAgICAgbWludXRlczogbWF5YmVOZWdhdGUocGFyc2VJbnRlZ2VyKG1pbnV0ZVN0cikpLAogICAgICAgIHNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKQogICAgICB9XTsKICAgIH0gLy8gVGhlc2UgYXJlIGEgbGl0dGxlIGJyYWluZGVhZC4gRURUICpzaG91bGQqIHRlbGwgdXMgdGhhdCB3ZSdyZSBpbiwgc2F5LCBBbWVyaWNhL05ld19Zb3JrCiAgICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgICAvLyBJJ20ganVzdCBnb2luZyB0byBpZ25vcmUgdGhhdAoKCiAgICB2YXIgb2JzT2Zmc2V0cyA9IHsKICAgICAgR01UOiAwLAogICAgICBFRFQ6IC00ICogNjAsCiAgICAgIEVTVDogLTUgKiA2MCwKICAgICAgQ0RUOiAtNSAqIDYwLAogICAgICBDU1Q6IC02ICogNjAsCiAgICAgIE1EVDogLTYgKiA2MCwKICAgICAgTVNUOiAtNyAqIDYwLAogICAgICBQRFQ6IC03ICogNjAsCiAgICAgIFBTVDogLTggKiA2MAogICAgfTsKCiAgICBmdW5jdGlvbiBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikgewogICAgICB2YXIgcmVzdWx0ID0gewogICAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgICBtb250aDogbW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0cikgKyAxLAogICAgICAgIGRheTogcGFyc2VJbnRlZ2VyKGRheVN0ciksCiAgICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICAgIG1pbnV0ZTogcGFyc2VJbnRlZ2VyKG1pbnV0ZVN0cikKICAgICAgfTsKICAgICAgaWYgKHNlY29uZFN0cikgcmVzdWx0LnNlY29uZCA9IHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpOwoKICAgICAgaWYgKHdlZWtkYXlTdHIpIHsKICAgICAgICByZXN1bHQud2Vla2RheSA9IHdlZWtkYXlTdHIubGVuZ3RoID4gMyA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMSA6IHdlZWtkYXlzU2hvcnQuaW5kZXhPZih3ZWVrZGF5U3RyKSArIDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9IC8vIFJGQyAyODIyLzUzMjIKCgogICAgdmFyIHJmYzI4MjIgPSAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICAgIGZ1bmN0aW9uIGV4dHJhY3RSRkMyODIyKG1hdGNoKSB7CiAgICAgIHZhciB3ZWVrZGF5U3RyID0gbWF0Y2hbMV0sCiAgICAgICAgICBkYXlTdHIgPSBtYXRjaFsyXSwKICAgICAgICAgIG1vbnRoU3RyID0gbWF0Y2hbM10sCiAgICAgICAgICB5ZWFyU3RyID0gbWF0Y2hbNF0sCiAgICAgICAgICBob3VyU3RyID0gbWF0Y2hbNV0sCiAgICAgICAgICBtaW51dGVTdHIgPSBtYXRjaFs2XSwKICAgICAgICAgIHNlY29uZFN0ciA9IG1hdGNoWzddLAogICAgICAgICAgb2JzT2Zmc2V0ID0gbWF0Y2hbOF0sCiAgICAgICAgICBtaWxPZmZzZXQgPSBtYXRjaFs5XSwKICAgICAgICAgIG9mZkhvdXJTdHIgPSBtYXRjaFsxMF0sCiAgICAgICAgICBvZmZNaW51dGVTdHIgPSBtYXRjaFsxMV0sCiAgICAgICAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7CiAgICAgIHZhciBvZmZzZXQ7CgogICAgICBpZiAob2JzT2Zmc2V0KSB7CiAgICAgICAgb2Zmc2V0ID0gb2JzT2Zmc2V0c1tvYnNPZmZzZXRdOwogICAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICAgIG9mZnNldCA9IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICAgIH0KCiAgICAgIHJldHVybiBbcmVzdWx0LCBuZXcgRml4ZWRPZmZzZXRab25lKG9mZnNldCldOwogICAgfQoKICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHsKICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2UKICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXChbXildKlwpfFtcblx0XS9nLCAiICIpLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKS50cmltKCk7CiAgICB9IC8vIGh0dHAgZGF0ZQoKCiAgICB2YXIgcmZjMTEyMyA9IC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksIChcZFxkKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpIChcZHs0fSkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICAgICAgcmZjODUwID0gL14oTW9uZGF5fFR1ZXNkYXl8V2Vkc2RheXxUaHVyc2RheXxGcmlkYXl8U2F0dXJkYXl8U3VuZGF5KSwgKFxkXGQpLShKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYyktKFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgICAgIGFzY2lpID0gL14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpICggXGR8XGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgKFxkezR9KSQvOwoKICAgIGZ1bmN0aW9uIGV4dHJhY3RSRkMxMTIzT3I4NTAobWF0Y2gpIHsKICAgICAgdmFyIHdlZWtkYXlTdHIgPSBtYXRjaFsxXSwKICAgICAgICAgIGRheVN0ciA9IG1hdGNoWzJdLAogICAgICAgICAgbW9udGhTdHIgPSBtYXRjaFszXSwKICAgICAgICAgIHllYXJTdHIgPSBtYXRjaFs0XSwKICAgICAgICAgIGhvdXJTdHIgPSBtYXRjaFs1XSwKICAgICAgICAgIG1pbnV0ZVN0ciA9IG1hdGNoWzZdLAogICAgICAgICAgc2Vjb25kU3RyID0gbWF0Y2hbN10sCiAgICAgICAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7CiAgICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogICAgfQoKICAgIGZ1bmN0aW9uIGV4dHJhY3RBU0NJSShtYXRjaCkgewogICAgICB2YXIgd2Vla2RheVN0ciA9IG1hdGNoWzFdLAogICAgICAgICAgbW9udGhTdHIgPSBtYXRjaFsyXSwKICAgICAgICAgIGRheVN0ciA9IG1hdGNoWzNdLAogICAgICAgICAgaG91clN0ciA9IG1hdGNoWzRdLAogICAgICAgICAgbWludXRlU3RyID0gbWF0Y2hbNV0sCiAgICAgICAgICBzZWNvbmRTdHIgPSBtYXRjaFs2XSwKICAgICAgICAgIHllYXJTdHIgPSBtYXRjaFs3XSwKICAgICAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgICB9CgogICAgdmFyIGlzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29ZbWRSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBpc29XZWVrV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1dlZWtSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb09yZGluYWxSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBpc29UaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1RpbWVSZWdleCk7CiAgICB2YXIgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhleHRyYWN0SVNPWW1kLCBleHRyYWN0SVNPVGltZSwgZXh0cmFjdElTT09mZnNldCk7CiAgICB2YXIgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1dlZWtEYXRhLCBleHRyYWN0SVNPVGltZSwgZXh0cmFjdElTT09mZnNldCk7CiAgICB2YXIgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZSA9IGNvbWJpbmVFeHRyYWN0b3JzKGV4dHJhY3RJU09PcmRpbmFsRGF0YSwgZXh0cmFjdElTT1RpbWUsIGV4dHJhY3RJU09PZmZzZXQpOwogICAgdmFyIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUsIGV4dHJhY3RJU09PZmZzZXQpOwogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgogICAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldF0sIFtpc29XZWVrV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0XSwgW2lzb09yZGluYWxXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPT3JkaW5hbERhdGVBbmRUaW1lXSwgW2lzb1RpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZUFuZE9mZnNldF0pOwogICAgfQogICAgZnVuY3Rpb24gcGFyc2VSRkMyODIyRGF0ZShzKSB7CiAgICAgIHJldHVybiBwYXJzZShwcmVwcm9jZXNzUkZDMjgyMihzKSwgW3JmYzI4MjIsIGV4dHJhY3RSRkMyODIyXSk7CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUhUVFBEYXRlKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtyZmMxMTIzLCBleHRyYWN0UkZDMTEyM09yODUwXSwgW3JmYzg1MCwgZXh0cmFjdFJGQzExMjNPcjg1MF0sIFthc2NpaSwgZXh0cmFjdEFTQ0lJXSk7CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtpc29EdXJhdGlvbiwgZXh0cmFjdElTT0R1cmF0aW9uXSk7CiAgICB9CiAgICB2YXIgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwogICAgZnVuY3Rpb24gcGFyc2VJU09UaW1lT25seShzKSB7CiAgICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogICAgfQogICAgdmFyIHNxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhzcWxZbWRSZWdleCwgc3FsVGltZUV4dGVuc2lvblJlZ2V4KTsKICAgIHZhciBzcWxUaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFRpbWVSZWdleCk7CiAgICB2YXIgZXh0cmFjdElTT1ltZFRpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKGV4dHJhY3RJU09ZbWQsIGV4dHJhY3RJU09UaW1lLCBleHRyYWN0SVNPT2Zmc2V0LCBleHRyYWN0SUFOQVpvbmUpOwogICAgdmFyIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhleHRyYWN0SVNPVGltZSwgZXh0cmFjdElTT09mZnNldCwgZXh0cmFjdElBTkFab25lKTsKICAgIGZ1bmN0aW9uIHBhcnNlU1FMKHMpIHsKICAgICAgcmV0dXJuIHBhcnNlKHMsIFtzcWxZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZU9mZnNldEFuZElBTkFab25lXSwgW3NxbFRpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZU9mZnNldEFuZElBTkFab25lXSk7CiAgICB9CgogICAgdmFyIElOVkFMSUQkMiA9ICJJbnZhbGlkIER1cmF0aW9uIjsgLy8gdW5pdCBjb252ZXJzaW9uIGNvbnN0YW50cwoKICAgIHZhciBsb3dPcmRlck1hdHJpeCA9IHsKICAgICAgd2Vla3M6IHsKICAgICAgICBkYXlzOiA3LAogICAgICAgIGhvdXJzOiA3ICogMjQsCiAgICAgICAgbWludXRlczogNyAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogNyAqIDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIGRheXM6IHsKICAgICAgICBob3VyczogMjQsCiAgICAgICAgbWludXRlczogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7CiAgICAgICAgbWludXRlczogNjAsCiAgICAgICAgc2Vjb25kczogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIG1pbnV0ZXM6IHsKICAgICAgICBzZWNvbmRzOiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDYwICogMTAwMAogICAgICB9LAogICAgICBzZWNvbmRzOiB7CiAgICAgICAgbWlsbGlzZWNvbmRzOiAxMDAwCiAgICAgIH0KICAgIH0sCiAgICAgICAgY2FzdWFsTWF0cml4ID0gX2V4dGVuZHMoewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0sCiAgICAgIHF1YXJ0ZXJzOiB7CiAgICAgICAgbW9udGhzOiAzLAogICAgICAgIHdlZWtzOiAxMywKICAgICAgICBkYXlzOiA5MSwKICAgICAgICBob3VyczogOTEgKiAyNCwKICAgICAgICBtaW51dGVzOiA5MSAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA5MSAqIDI0ICogNjAgKiA2MCAqIDEwMDAKICAgICAgfSwKICAgICAgbW9udGhzOiB7CiAgICAgICAgd2Vla3M6IDQsCiAgICAgICAgZGF5czogMzAsCiAgICAgICAgaG91cnM6IDMwICogMjQsCiAgICAgICAgbWludXRlczogMzAgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDMwICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAgKiAxMDAwCiAgICAgIH0KICAgIH0sIGxvd09yZGVyTWF0cml4KSwKICAgICAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgICAgICBkYXlzSW5Nb250aEFjY3VyYXRlID0gMTQ2MDk3LjAgLyA0ODAwLAogICAgICAgIGFjY3VyYXRlTWF0cml4ID0gX2V4dGVuZHMoewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlLAogICAgICAgIGhvdXJzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCwKICAgICAgICBtaW51dGVzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAKICAgICAgfSwKICAgICAgcXVhcnRlcnM6IHsKICAgICAgICBtb250aHM6IDMsCiAgICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDI4LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSAvIDQsCiAgICAgICAgaG91cnM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0IC8gNCwKICAgICAgICBtaW51dGVzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwIC8gNCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgLyA0LAogICAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCAvIDQKICAgICAgfSwKICAgICAgbW9udGhzOiB7CiAgICAgICAgd2Vla3M6IGRheXNJbk1vbnRoQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJbk1vbnRoQWNjdXJhdGUsCiAgICAgICAgaG91cnM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCwKICAgICAgICBtaW51dGVzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAKICAgICAgfQogICAgfSwgbG93T3JkZXJNYXRyaXgpOyAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKCgogICAgdmFyIG9yZGVyZWRVbml0cyQxID0gWyJ5ZWFycyIsICJxdWFydGVycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIl07CiAgICB2YXIgcmV2ZXJzZVVuaXRzID0gb3JkZXJlZFVuaXRzJDEuc2xpY2UoMCkucmV2ZXJzZSgpOyAvLyBjbG9uZSByZWFsbHkgbWVhbnMgImNyZWF0ZSBhbm90aGVyIGluc3RhbmNlIGp1c3QgbGlrZSB0aGlzIG9uZSwgYnV0IHdpdGggdGhlc2UgY2hhbmdlcyIKCiAgICBmdW5jdGlvbiBjbG9uZSQxKGR1ciwgYWx0cywgY2xlYXIpIHsKICAgICAgaWYgKGNsZWFyID09PSB2b2lkIDApIHsKICAgICAgICBjbGVhciA9IGZhbHNlOwogICAgICB9CgogICAgICAvLyBkZWVwIG1lcmdlIGZvciB2YWxzCiAgICAgIHZhciBjb25mID0gewogICAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IF9leHRlbmRzKHt9LCBkdXIudmFsdWVzLCBhbHRzLnZhbHVlcyB8fCB7fSksCiAgICAgICAgbG9jOiBkdXIubG9jLmNsb25lKGFsdHMubG9jKSwKICAgICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3kKICAgICAgfTsKICAgICAgcmV0dXJuIG5ldyBEdXJhdGlvbihjb25mKTsKICAgIH0KCiAgICBmdW5jdGlvbiBhbnRpVHJ1bmMobikgewogICAgICByZXR1cm4gbiA8IDAgPyBNYXRoLmZsb29yKG4pIDogTWF0aC5jZWlsKG4pOwogICAgfSAvLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzCgoKICAgIGZ1bmN0aW9uIGNvbnZlcnQobWF0cml4LCBmcm9tTWFwLCBmcm9tVW5pdCwgdG9NYXAsIHRvVW5pdCkgewogICAgICB2YXIgY29udiA9IG1hdHJpeFt0b1VuaXRdW2Zyb21Vbml0XSwKICAgICAgICAgIHJhdyA9IGZyb21NYXBbZnJvbVVuaXRdIC8gY29udiwKICAgICAgICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSwKICAgICAgICAgIC8vIG9rLCBzbyB0aGlzIGlzIHdpbGQsIGJ1dCBzZWUgdGhlIG1hdHJpeCBpbiB0aGUgdGVzdHMKICAgICAgYWRkZWQgPSAhc2FtZVNpZ24gJiYgdG9NYXBbdG9Vbml0XSAhPT0gMCAmJiBNYXRoLmFicyhyYXcpIDw9IDEgPyBhbnRpVHJ1bmMocmF3KSA6IE1hdGgudHJ1bmMocmF3KTsKICAgICAgdG9NYXBbdG9Vbml0XSArPSBhZGRlZDsKICAgICAgZnJvbU1hcFtmcm9tVW5pdF0gLT0gYWRkZWQgKiBjb252OwogICAgfSAvLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzCgoKICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlcyhtYXRyaXgsIHZhbHMpIHsKICAgICAgcmV2ZXJzZVVuaXRzLnJlZHVjZShmdW5jdGlvbiAocHJldmlvdXMsIGN1cnJlbnQpIHsKICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgICBpZiAocHJldmlvdXMpIHsKICAgICAgICAgICAgY29udmVydChtYXRyaXgsIHZhbHMsIHByZXZpb3VzLCB2YWxzLCBjdXJyZW50KTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gY3VycmVudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICAgIH0KICAgICAgfSwgbnVsbCk7CiAgICB9CiAgICAvKioKICAgICAqIEEgRHVyYXRpb24gb2JqZWN0IHJlcHJlc2VudHMgYSBwZXJpb2Qgb2YgdGltZSwgbGlrZSAiMiBtb250aHMiIG9yICIxIGRheSwgMSBob3VyIi4gQ29uY2VwdHVhbGx5LCBpdCdzIGp1c3QgYSBtYXAgb2YgdW5pdHMgdG8gdGhlaXIgcXVhbnRpdGllcywgYWNjb21wYW5pZWQgYnkgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gYW5kIG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uIFRoZXkgY2FuIGJlIHVzZWQgb24gdGhlaXIgb3duIG9yIGluIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgTHV4b24gdHlwZXM7IGZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB7QGxpbmsgRGF0ZVRpbWUucGx1c30gdG8gYWRkIGEgRHVyYXRpb24gb2JqZWN0IHRvIGEgRGF0ZVRpbWUsIHByb2R1Y2luZyBhbm90aGVyIERhdGVUaW1lLgogICAgICoKICAgICAqIEhlcmUgaXMgYSBicmllZiBvdmVydmlldyBvZiBjb21tb25seSB1c2VkIG1ldGhvZHMgYW5kIGdldHRlcnMgaW4gRHVyYXRpb246CiAgICAgKgogICAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAgICogKiAqKlVuaXQgdmFsdWVzKiogU2VlIHRoZSB7QGxpbmsgRHVyYXRpb24jeWVhcnN9LCB7QGxpbmsgRHVyYXRpb24ubW9udGhzfSwge0BsaW5rIER1cmF0aW9uI3dlZWtzfSwge0BsaW5rIER1cmF0aW9uI2RheXN9LCB7QGxpbmsgRHVyYXRpb24jaG91cnN9LCB7QGxpbmsgRHVyYXRpb24jbWludXRlc30sIHtAbGluayBEdXJhdGlvbiNzZWNvbmRzfSwge0BsaW5rIER1cmF0aW9uI21pbGxpc2Vjb25kc30gYWNjZXNzb3JzLgogICAgICogKiAqKkNvbmZpZ3VyYXRpb24qKiBTZWUgIHtAbGluayBEdXJhdGlvbiNsb2NhbGV9IGFuZCB7QGxpbmsgRHVyYXRpb24jbnVtYmVyaW5nU3lzdGVtfSBhY2Nlc3NvcnMuCiAgICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgICAqICogKipPdXRwdXQqKiBUbyBjb252ZXJ0IHRoZSBEdXJhdGlvbiBpbnRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgc2VlIHtAbGluayBEdXJhdGlvbiNhc30sIHtAbGluayBEdXJhdGlvbiN0b0lTT30sIHtAbGluayBEdXJhdGlvbiN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgRHVyYXRpb24jdG9KU09OfQogICAgICoKICAgICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgICAqLwoKCiAgICB2YXIgRHVyYXRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAvKioKICAgICAgICogQHByaXZhdGUKICAgICAgICovCiAgICAgIGZ1bmN0aW9uIER1cmF0aW9uKGNvbmZpZykgewogICAgICAgIHZhciBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMudmFsdWVzID0gY29uZmlnLnZhbHVlczsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5jb252ZXJzaW9uQWNjdXJhY3kgPSBhY2N1cmF0ZSA/ICJsb25ndGVybSIgOiAiY2FzdWFsIjsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5pbnZhbGlkID0gY29uZmlnLmludmFsaWQgfHwgbnVsbDsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KCiAgICAgICAgdGhpcy5tYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBEdXJhdGlvbiBmcm9tIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50IG9mIG1pbGxpc2Vjb25kcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwoKCiAgICAgIER1cmF0aW9uLmZyb21NaWxsaXMgPSBmdW5jdGlvbiBmcm9tTWlsbGlzKGNvdW50LCBvcHRzKSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoewogICAgICAgICAgbWlsbGlzZWNvbmRzOiBjb3VudAogICAgICAgIH0sIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAgICogSWYgdGhpcyBvYmplY3QgaXMgZW1wdHkgdGhlbiBhIHplcm8gbWlsbGlzZWNvbmRzIGR1cmF0aW9uIGlzIHJldHVybmVkLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnF1YXJ0ZXJzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubW9udGhzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXlzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91cnMKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouc2Vjb25kcwogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbGxpc2Vjb25kcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIER1cmF0aW9uLmZyb21PYmplY3QgPSBmdW5jdGlvbiBmcm9tT2JqZWN0KG9iaiwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAib2JqZWN0IikgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJEdXJhdGlvbi5mcm9tT2JqZWN0OiBhcmd1bWVudCBleHBlY3RlZCB0byBiZSBhbiBvYmplY3QsIGdvdCAiICsgKG9iaiA9PT0gbnVsbCA/ICJudWxsIiA6IHR5cGVvZiBvYmopKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oewogICAgICAgICAgdmFsdWVzOiBub3JtYWxpemVPYmplY3Qob2JqLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IG9wdHMuY29udmVyc2lvbkFjY3VyYWN5CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYW4gSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1AzWTZNMVc0RFQxMkgzME01UycpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAzLCBtb250aHM6IDYsIHdlZWtzOiAxLCBkYXlzOiA0LCBob3VyczogMTIsIG1pbnV0ZXM6IDMwLCBzZWNvbmRzOiA1IH0KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQNVkzTScpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiA1LCBtb250aHM6IDMgfQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIER1cmF0aW9uLmZyb21JU08gPSBmdW5jdGlvbiBmcm9tSVNPKHRleHQsIG9wdHMpIHsKICAgICAgICB2YXIgX3BhcnNlSVNPRHVyYXRpb24gPSBwYXJzZUlTT0R1cmF0aW9uKHRleHQpLAogICAgICAgICAgICBwYXJzZWQgPSBfcGFyc2VJU09EdXJhdGlvblswXTsKCiAgICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QocGFyc2VkLCBvcHRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCAidGhlIGlucHV0IFwiIiArIHRleHQgKyAiXCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxIik7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGFuIElTTyA4NjAxIHRpbWUgc3RyaW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZXMKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICAgKi8KICAgICAgOwoKICAgICAgRHVyYXRpb24uZnJvbUlTT1RpbWUgPSBmdW5jdGlvbiBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgICAgdmFyIF9wYXJzZUlTT1RpbWVPbmx5ID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KSwKICAgICAgICAgICAgcGFyc2VkID0gX3BhcnNlSVNPVGltZU9ubHlbMF07CgogICAgICAgIGlmIChwYXJzZWQpIHsKICAgICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJ1bnBhcnNhYmxlIiwgInRoZSBpbnB1dCBcIiIgKyB0ZXh0ICsgIlwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMSIpOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIGRhdGV0aW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIER1cmF0aW9uLmludmFsaWQgPSBmdW5jdGlvbiBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pIHsKICAgICAgICBpZiAoZXhwbGFuYXRpb24gPT09IHZvaWQgMCkgewogICAgICAgICAgZXhwbGFuYXRpb24gPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkIik7CiAgICAgICAgfQoKICAgICAgICB2YXIgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZER1cmF0aW9uRXJyb3IoaW52YWxpZCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oewogICAgICAgICAgICBpbnZhbGlkOiBpbnZhbGlkCiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICA7CgogICAgICBEdXJhdGlvbi5ub3JtYWxpemVVbml0ID0gZnVuY3Rpb24gbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgICAgdmFyIG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgICB5ZWFyOiAieWVhcnMiLAogICAgICAgICAgeWVhcnM6ICJ5ZWFycyIsCiAgICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgICAgcXVhcnRlcnM6ICJxdWFydGVycyIsCiAgICAgICAgICBtb250aDogIm1vbnRocyIsCiAgICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgICAgd2VlazogIndlZWtzIiwKICAgICAgICAgIHdlZWtzOiAid2Vla3MiLAogICAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgICBkYXlzOiAiZGF5cyIsCiAgICAgICAgICBob3VyOiAiaG91cnMiLAogICAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgICBtaW51dGU6ICJtaW51dGVzIiwKICAgICAgICAgIG1pbnV0ZXM6ICJtaW51dGVzIiwKICAgICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgICAgc2Vjb25kczogInNlY29uZHMiLAogICAgICAgICAgbWlsbGlzZWNvbmQ6ICJtaWxsaXNlY29uZHMiLAogICAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIgogICAgICAgIH1bdW5pdCA/IHVuaXQudG9Mb3dlckNhc2UoKSA6IHVuaXRdOwogICAgICAgIGlmICghbm9ybWFsaXplZCkgdGhyb3cgbmV3IEludmFsaWRVbml0RXJyb3IodW5pdCk7CiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhIER1cmF0aW9uLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBEdXJhdGlvbi5pc0R1cmF0aW9uID0gZnVuY3Rpb24gaXNEdXJhdGlvbihvKSB7CiAgICAgICAgcmV0dXJuIG8gJiYgby5pc0x1eG9uRHVyYXRpb24gfHwgZmFsc2U7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIHZhciBfcHJvdG8gPSBEdXJhdGlvbi5wcm90b3R5cGU7CgogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLiBZb3UgbWF5IHVzZSB0aGVzZSB0b2tlbnM6CiAgICAgICAqICogYFNgIGZvciBtaWxsaXNlY29uZHMKICAgICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAgICogKiBgbWAgZm9yIG1pbnV0ZXMKICAgICAgICogKiBgaGAgZm9yIGhvdXJzCiAgICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAgICogKiBgeWAgZm9yIHllYXJzCiAgICAgICAqIE5vdGVzOgogICAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgICAqICogVGhlIGR1cmF0aW9uIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBzZXQgb2YgdW5pdHMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgdXNpbmcge0BsaW5rIER1cmF0aW9uLnNoaWZ0VG99IGFuZCB0aGUgRHVyYXRpb25zJ3MgY29udmVyc2lvbiBhY2N1cmFjeSBzZXR0aW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCBzdHJpbmcKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZmxvb3I9dHJ1ZV0gLSBmbG9vciBudW1lcmljYWwgdmFsdWVzCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdCgieSBkIHMiKSAvLz0+ICIxIDYgMiIKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdCgiTSBTIikgLy89PiAiMTIgNTE4NDAyMDAwIgogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICBfcHJvdG8udG9Gb3JtYXQgPSBmdW5jdGlvbiB0b0Zvcm1hdChmbXQsIG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICAvLyByZXZlcnNlLWNvbXBhdCBzaW5jZSAxLjI7IHdlIGFsd2F5cyByb3VuZCBkb3duIG5vdywgbmV2ZXIgdXAsIGFuZCB3ZSBkbyBpdCBieSBkZWZhdWx0CiAgICAgICAgdmFyIGZtdE9wdHMgPSBfZXh0ZW5kcyh7fSwgb3B0cywgewogICAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlCiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KSA6IElOVkFMSUQkMjsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEdXJhdGlvbidzIHZhbHVlcy4KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0KICAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvT2JqZWN0ID0gZnVuY3Rpb24gdG9PYmplY3QoKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHRoaXMudmFsdWVzKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiA0LCBzZWNvbmRzOiA0NSB9KS50b0lTTygpIC8vPT4gJ1A0TVQ0NVMnCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDUgfSkudG9JU08oKSAvLz0+ICdQNU0nCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogNiB9KS50b0lTTygpIC8vPT4gJ1BUMC4wMDZTJwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9JU08gPSBmdW5jdGlvbiB0b0lTTygpIHsKICAgICAgICAvLyB3ZSBjb3VsZCB1c2UgdGhlIGZvcm1hdHRlciwgYnV0IHRoaXMgaXMgYW4gZWFzaWVyIHdheSB0byBnZXQgdGhlIG1pbmltdW0gc3RyaW5nCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICAgIHZhciBzID0gIlAiOwogICAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgICAgaWYgKHRoaXMubW9udGhzICE9PSAwIHx8IHRoaXMucXVhcnRlcnMgIT09IDApIHMgKz0gdGhpcy5tb250aHMgKyB0aGlzLnF1YXJ0ZXJzICogMyArICJNIjsKICAgICAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgIlciOwogICAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICAgIGlmICh0aGlzLmhvdXJzICE9PSAwIHx8IHRoaXMubWludXRlcyAhPT0gMCB8fCB0aGlzLnNlY29uZHMgIT09IDAgfHwgdGhpcy5taWxsaXNlY29uZHMgIT09IDApIHMgKz0gIlQiOwogICAgICAgIGlmICh0aGlzLmhvdXJzICE9PSAwKSBzICs9IHRoaXMuaG91cnMgKyAiSCI7CiAgICAgICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyAiTSI7CiAgICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkgLy8gdGhpcyB3aWxsIGhhbmRsZSAiZmxvYXRpbmcgcG9pbnQgbWFkbmVzcyIgYnkgcmVtb3ZpbmcgZXh0cmEgZGVjaW1hbCBwbGFjZXMKICAgICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgICAgcyArPSByb3VuZFRvKHRoaXMuc2Vjb25kcyArIHRoaXMubWlsbGlzZWNvbmRzIC8gMTAwMCwgMykgKyAiUyI7CiAgICAgICAgaWYgKHMgPT09ICJQIikgcyArPSAiVDBTIjsKICAgICAgICByZXR1cm4gczsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24sIGZvcm1hdHRlZCBhcyBhIHRpbWUgb2YgZGF5LgogICAgICAgKiBOb3RlIHRoYXQgdGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZSBkdXJhdGlvbiBpcyBpbnZhbGlkLCBuZWdhdGl2ZSwgb3IgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIDI0IGhvdXJzLgogICAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzTWlsbGlzZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwOjAwJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMCcKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzExMDAwMC4wMDAnCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b0lTT1RpbWUgPSBmdW5jdGlvbiB0b0lTT1RpbWUob3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKICAgICAgICB2YXIgbWlsbGlzID0gdGhpcy50b01pbGxpcygpOwogICAgICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7CiAgICAgICAgb3B0cyA9IF9leHRlbmRzKHsKICAgICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzOiBmYWxzZSwKICAgICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgICBpbmNsdWRlUHJlZml4OiBmYWxzZSwKICAgICAgICAgIGZvcm1hdDogImV4dGVuZGVkIgogICAgICAgIH0sIG9wdHMpOwogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuc2hpZnRUbygiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIiwgIm1pbGxpc2Vjb25kcyIpOwogICAgICAgIHZhciBmbXQgPSBvcHRzLmZvcm1hdCA9PT0gImJhc2ljIiA/ICJoaG1tIiA6ICJoaDptbSI7CgogICAgICAgIGlmICghb3B0cy5zdXBwcmVzc1NlY29uZHMgfHwgdmFsdWUuc2Vjb25kcyAhPT0gMCB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHsKICAgICAgICAgIGZtdCArPSBvcHRzLmZvcm1hdCA9PT0gImJhc2ljIiA/ICJzcyIgOiAiOnNzIjsKCiAgICAgICAgICBpZiAoIW9wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHMgfHwgdmFsdWUubWlsbGlzZWNvbmRzICE9PSAwKSB7CiAgICAgICAgICAgIGZtdCArPSAiLlNTUyI7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RyID0gdmFsdWUudG9Gb3JtYXQoZm10KTsKCiAgICAgICAgaWYgKG9wdHMuaW5jbHVkZVByZWZpeCkgewogICAgICAgICAgc3RyID0gIlQiICsgc3RyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHsKICAgICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBkZWJ1Z2dpbmcuCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgewogICAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b01pbGxpcyA9IGZ1bmN0aW9uIHRvTWlsbGlzKCkgewogICAgICAgIHJldHVybiB0aGlzLmFzKCJtaWxsaXNlY29uZHMiKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi4gQWxpYXMgb2Yge0BsaW5rIHRvTWlsbGlzfQogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udmFsdWVPZiA9IGZ1bmN0aW9uIHZhbHVlT2YoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogTWFrZSB0aGlzIER1cmF0aW9uIGxvbmdlciBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uCiAgICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ucGx1cyA9IGZ1bmN0aW9uIHBsdXMoZHVyYXRpb24pIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIGR1ciA9IGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb24pLAogICAgICAgICAgICByZXN1bHQgPSB7fTsKCiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJMb29zZShvcmRlcmVkVW5pdHMkMSksIF9zdGVwOyAhKF9zdGVwID0gX2l0ZXJhdG9yKCkpLmRvbmU7KSB7CiAgICAgICAgICB2YXIgayA9IF9zdGVwLnZhbHVlOwoKICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShkdXIudmFsdWVzLCBrKSB8fCBoYXNPd25Qcm9wZXJ0eSh0aGlzLnZhbHVlcywgaykpIHsKICAgICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgewogICAgICAgICAgdmFsdWVzOiByZXN1bHQKICAgICAgICB9LCB0cnVlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ubWludXMgPSBmdW5jdGlvbiBtaW51cyhkdXJhdGlvbikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgZHVyID0gZnJpZW5kbHlEdXJhdGlvbihkdXJhdGlvbik7CiAgICAgICAgcmV0dXJuIHRoaXMucGx1cyhkdXIubmVnYXRlKCkpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLgogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKHggPT4geCAqIDIpIC8vPT4geyBob3VyczogMiwgbWludXRlczogNjAgfQogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91ciIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5tYXBVbml0cyA9IGZ1bmN0aW9uIG1hcFVuaXRzKGZuKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciByZXN1bHQgPSB7fTsKCiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfT2JqZWN0JGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcyk7IF9pIDwgX09iamVjdCRrZXlzLmxlbmd0aDsgX2krKykgewogICAgICAgICAgdmFyIGsgPSBfT2JqZWN0JGtleXNbX2ldOwogICAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogcmVzdWx0CiAgICAgICAgfSwgdHJ1ZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDIKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ21vbnRocycpIC8vPT4gMAogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZ2V0ID0gZnVuY3Rpb24gZ2V0KHVuaXQpIHsKICAgICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgICAgfQogICAgICAvKioKICAgICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnMKICAgICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc2V0ID0gZnVuY3Rpb24gc2V0KHZhbHVlcykgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgICAgdmFyIG1peGVkID0gX2V4dGVuZHMoe30sIHRoaXMudmFsdWVzLCBub3JtYWxpemVPYmplY3QodmFsdWVzLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSk7CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogbWl4ZWQKICAgICAgICB9KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogIlNldCIgdGhlIGxvY2FsZSBhbmQvb3IgbnVtYmVyaW5nU3lzdGVtLiAgUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLgogICAgICAgKiBAZXhhbXBsZSBkdXIucmVjb25maWd1cmUoeyBsb2NhbGU6ICdlbi1HQicgfSkKICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ucmVjb25maWd1cmUgPSBmdW5jdGlvbiByZWNvbmZpZ3VyZShfdGVtcCkgewogICAgICAgIHZhciBfcmVmID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYubG9jYWxlLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5ID0gX3JlZi5jb252ZXJzaW9uQWNjdXJhY3k7CgogICAgICAgIHZhciBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtCiAgICAgICAgfSksCiAgICAgICAgICAgIG9wdHMgPSB7CiAgICAgICAgICBsb2M6IGxvYwogICAgICAgIH07CgogICAgICAgIGlmIChjb252ZXJzaW9uQWNjdXJhY3kpIHsKICAgICAgICAgIG9wdHMuY29udmVyc2lvbkFjY3VyYWN5ID0gY29udmVyc2lvbkFjY3VyYWN5OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgb3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBkdXJhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdkYXlzJykgLy89PiAzNjUKICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnbW9udGhzJykgLy89PiAxMgogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5hcyA9IGZ1bmN0aW9uIGFzKHVuaXQpIHsKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5zaGlmdFRvKHVuaXQpLmdldCh1bml0KSA6IE5hTjsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmVkdWNlIHRoaXMgRHVyYXRpb24gdG8gaXRzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpbiBpdHMgY3VycmVudCB1bml0cy4KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAyLCBkYXlzOiA1MDAwIH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxNSwgZGF5czogMjU1IH0KICAgICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgdmFscyk7CiAgICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgewogICAgICAgICAgdmFsdWVzOiB2YWxzCiAgICAgICAgfSwgdHJ1ZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgc2Vjb25kczogMzAgfSkuc2hpZnRUbygnbWludXRlcycsICdtaWxsaXNlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiA2MCwgbWlsbGlzZWNvbmRzOiAzMDAwMCB9CiAgICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnNoaWZ0VG8gPSBmdW5jdGlvbiBzaGlmdFRvKCkgewogICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCB1bml0cyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKICAgICAgICAgIHVuaXRzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICAgIH0KCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgICBpZiAodW5pdHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9CgogICAgICAgIHVuaXRzID0gdW5pdHMubWFwKGZ1bmN0aW9uICh1KSB7CiAgICAgICAgICByZXR1cm4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KTsKICAgICAgICB9KTsKICAgICAgICB2YXIgYnVpbHQgPSB7fSwKICAgICAgICAgICAgYWNjdW11bGF0ZWQgPSB7fSwKICAgICAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgICB2YXIgbGFzdFVuaXQ7CgogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG9yZGVyZWRVbml0cyQxKSwgX3N0ZXAyOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIoKSkuZG9uZTspIHsKICAgICAgICAgIHZhciBrID0gX3N0ZXAyLnZhbHVlOwoKICAgICAgICAgIGlmICh1bml0cy5pbmRleE9mKGspID49IDApIHsKICAgICAgICAgICAgbGFzdFVuaXQgPSBrOwogICAgICAgICAgICB2YXIgb3duID0gMDsgLy8gYW55dGhpbmcgd2UgaGF2ZW4ndCBib2lsZWQgZG93biB5ZXQgc2hvdWxkIGdldCBib2lsZWQgdG8gdGhpcyB1bml0CgogICAgICAgICAgICBmb3IgKHZhciBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICAgIG93biArPSB0aGlzLm1hdHJpeFtha11ba10gKiBhY2N1bXVsYXRlZFtha107CiAgICAgICAgICAgICAgYWNjdW11bGF0ZWRbYWtdID0gMDsKICAgICAgICAgICAgfSAvLyBwbHVzIGFueXRoaW5nIHRoYXQncyBhbHJlYWR5IGluIHRoaXMgdW5pdAoKCiAgICAgICAgICAgIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgICAgIG93biArPSB2YWxzW2tdOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgaSA9IE1hdGgudHJ1bmMob3duKTsKICAgICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IG93biAtIGk7IC8vIHdlJ2QgbGlrZSB0byBhYnNvcmIgdGhlc2UgZnJhY3Rpb25zIGluIGFub3RoZXIgdW5pdAogICAgICAgICAgICAvLyBwbHVzIGFueXRoaW5nIGZ1cnRoZXIgZG93biB0aGUgY2hhaW4gdGhhdCBzaG91bGQgYmUgcm9sbGVkIHVwIGluIHRvIHRoaXMKCiAgICAgICAgICAgIGZvciAodmFyIGRvd24gaW4gdmFscykgewogICAgICAgICAgICAgIGlmIChvcmRlcmVkVW5pdHMkMS5pbmRleE9mKGRvd24pID4gb3JkZXJlZFVuaXRzJDEuaW5kZXhPZihrKSkgewogICAgICAgICAgICAgICAgY29udmVydCh0aGlzLm1hdHJpeCwgdmFscywgZG93biwgYnVpbHQsIGspOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAvLyBvdGhlcndpc2UsIGtlZXAgaXQgaW4gdGhlIHdpbmdzIHRvIGJvaWwgaXQgbGF0ZXIKCiAgICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7CiAgICAgICAgICAgIGFjY3VtdWxhdGVkW2tdID0gdmFsc1trXTsKICAgICAgICAgIH0KICAgICAgICB9IC8vIGFueXRoaW5nIGxlZnRvdmVyIGJlY29tZXMgdGhlIGRlY2ltYWwgZm9yIHRoZSBsYXN0IHVuaXQKICAgICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CgoKICAgICAgICBmb3IgKHZhciBrZXkgaW4gYWNjdW11bGF0ZWQpIHsKICAgICAgICAgIGlmIChhY2N1bXVsYXRlZFtrZXldICE9PSAwKSB7CiAgICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPSBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogYnVpbHQKICAgICAgICB9LCB0cnVlKS5ub3JtYWxpemUoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLm5lZ2F0ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAtMSwgc2Vjb25kczogLTMwIH0KICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ubmVnYXRlID0gZnVuY3Rpb24gbmVnYXRlKCkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgbmVnYXRlZCA9IHt9OwoKICAgICAgICBmb3IgKHZhciBfaTIgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXModGhpcy52YWx1ZXMpOyBfaTIgPCBfT2JqZWN0JGtleXMyLmxlbmd0aDsgX2kyKyspIHsKICAgICAgICAgIHZhciBrID0gX09iamVjdCRrZXlzMltfaTJdOwogICAgICAgICAgbmVnYXRlZFtrXSA9IC10aGlzLnZhbHVlc1trXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsKICAgICAgICAgIHZhbHVlczogbmVnYXRlZAogICAgICAgIH0sIHRydWUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgKi8KICAgICAgOwoKICAgICAgLyoqCiAgICAgICAqIEVxdWFsaXR5IGNoZWNrCiAgICAgICAqIFR3byBEdXJhdGlvbnMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgdW5pdHMgYW5kIHRoZSBzYW1lIHZhbHVlcyBmb3IgZWFjaCB1bml0LgogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAgIC8vIENvbnNpZGVyIDAgYW5kIHVuZGVmaW5lZCBhcyBlcXVhbAogICAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwOwogICAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgICB9CgogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG9yZGVyZWRVbml0cyQxKSwgX3N0ZXAzOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMoKSkuZG9uZTspIHsKICAgICAgICAgIHZhciB1ID0gX3N0ZXAzLnZhbHVlOwoKICAgICAgICAgIGlmICghZXEodGhpcy52YWx1ZXNbdV0sIG90aGVyLnZhbHVlc1t1XSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH07CgogICAgICBfY3JlYXRlQ2xhc3MoRHVyYXRpb24sIFt7CiAgICAgICAga2V5OiAibG9jYWxlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEdXJhdGlvbiwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEdXJhdGlvbgogICAgICAgICAqCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJudW1iZXJpbmdTeXN0ZW0iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbSA6IG51bGw7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAga2V5OiAieWVhcnMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJxdWFydGVycyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtb250aHMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ3ZWVrcyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBkYXlzLgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGF5cyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaG91cnMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm1pbnV0ZXMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJzZWNvbmRzIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtaWxsaXNlY29uZHMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAgICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuCiAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1ZhbGlkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPT09IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpbnZhbGlkUmVhc29uIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQucmVhc29uIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWQKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImludmFsaWRFeHBsYW5hdGlvbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uIDogbnVsbDsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBEdXJhdGlvbjsKICAgIH0oKTsKICAgIGZ1bmN0aW9uIGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb25pc2gpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uaXNoKSkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tTWlsbGlzKGR1cmF0aW9uaXNoKTsKICAgICAgfSBlbHNlIGlmIChEdXJhdGlvbi5pc0R1cmF0aW9uKGR1cmF0aW9uaXNoKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbmlzaDsKICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZHVyYXRpb25pc2ggPT09ICJvYmplY3QiKSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoZHVyYXRpb25pc2gpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigiVW5rbm93biBkdXJhdGlvbiBhcmd1bWVudCAiICsgZHVyYXRpb25pc2ggKyAiIG9mIHR5cGUgIiArIHR5cGVvZiBkdXJhdGlvbmlzaCk7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgSU5WQUxJRCQxID0gIkludmFsaWQgSW50ZXJ2YWwiOyAvLyBjaGVja3MgaWYgdGhlIHN0YXJ0IGlzIGVxdWFsIHRvIG9yIGJlZm9yZSB0aGUgZW5kCgogICAgZnVuY3Rpb24gdmFsaWRhdGVTdGFydEVuZChzdGFydCwgZW5kKSB7CiAgICAgIGlmICghc3RhcnQgfHwgIXN0YXJ0LmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICAgIH0gZWxzZSBpZiAoIWVuZCB8fCAhZW5kLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIGVuZCIpOwogICAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoImVuZCBiZWZvcmUgc3RhcnQiLCAiVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9IiArIHN0YXJ0LnRvSVNPKCkgKyAiIGFuZCBlbmQ9IiArIGVuZC50b0lTTygpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQogICAgLyoqCiAgICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICAgKgogICAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBJbnRlcnZhbDoKICAgICAqCiAgICAgKiAqICoqQ3JlYXRpb24qKiBUbyBjcmVhdGUgYW4gSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwuZnJvbURhdGVUaW1lc30sIHtAbGluayBJbnRlcnZhbC5hZnRlcn0sIHtAbGluayBJbnRlcnZhbC5iZWZvcmV9LCBvciB7QGxpbmsgSW50ZXJ2YWwuZnJvbUlTT30uCiAgICAgKiAqICoqQWNjZXNzb3JzKiogVXNlIHtAbGluayBJbnRlcnZhbCNzdGFydH0gYW5kIHtAbGluayBJbnRlcnZhbCNlbmR9IHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZC4KICAgICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgb3RoZXIgSW50ZXJ2YWxzIG91dCBvZiB0aGlzIG9uZSwgdXNlIHtAbGluayBJbnRlcnZhbCNzZXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRBdH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEJ5fSwge0BsaW5rIEludGVydmFsI2RpdmlkZUVxdWFsbHl9LCB7QGxpbmsgSW50ZXJ2YWwjbWVyZ2V9LCB7QGxpbmsgSW50ZXJ2YWwjeG9yfSwge0BsaW5rIEludGVydmFsI3VuaW9ufSwge0BsaW5rIEludGVydmFsI2ludGVyc2VjdGlvbn0sIG9yIHtAbGluayBJbnRlcnZhbCNkaWZmZXJlbmNlfS4KICAgICAqICogKipDb21wYXJpc29uKiogVG8gY29tcGFyZSB0aGlzIEludGVydmFsIHRvIGFub3RoZXIgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI2VxdWFsc30sIHtAbGluayBJbnRlcnZhbCNvdmVybGFwc30sIHtAbGluayBJbnRlcnZhbCNhYnV0c1N0YXJ0fSwge0BsaW5rIEludGVydmFsI2FidXRzRW5kfSwge0BsaW5rIEludGVydmFsI2VuZ3VsZnN9CiAgICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICAgKi8KCgogICAgdmFyIEludGVydmFsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgLyoqCiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICBmdW5jdGlvbiBJbnRlcnZhbChjb25maWcpIHsKICAgICAgICAvKioKICAgICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICAgKi8KICAgICAgICB0aGlzLnMgPSBjb25maWcuc3RhcnQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuZSA9IGNvbmZpZy5lbmQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuaXNMdXhvbkludGVydmFsID0gdHJ1ZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIGludmFsaWQgSW50ZXJ2YWwuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAgICovCgoKICAgICAgSW50ZXJ2YWwuaW52YWxpZCA9IGZ1bmN0aW9uIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbikgewogICAgICAgIGlmIChleHBsYW5hdGlvbiA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBleHBsYW5hdGlvbiA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXJlYXNvbikgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIEludGVydmFsIGlzIGludmFsaWQiKTsKICAgICAgICB9CgogICAgICAgIHZhciBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkSW50ZXJ2YWxFcnJvcihpbnZhbGlkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICAgIGludmFsaWQ6IGludmFsaWQKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYW4gZW5kIERhdGVUaW1lLiBJbmNsdXNpdmUgb2YgdGhlIHN0YXJ0IGJ1dCBub3QgdGhlIGVuZC4KICAgICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyA9IGZ1bmN0aW9uIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICAgIHZhciBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwogICAgICAgIHZhciB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICAgIGlmICh2YWxpZGF0ZUVycm9yID09IG51bGwpIHsKICAgICAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoewogICAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgICAgZW5kOiBidWlsdEVuZAogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgdG8uCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0CiAgICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgICAqLwogICAgICA7CgogICAgICBJbnRlcnZhbC5hZnRlciA9IGZ1bmN0aW9uIGFmdGVyKHN0YXJ0LCBkdXJhdGlvbikgewogICAgICAgIHZhciBkdXIgPSBmcmllbmRseUR1cmF0aW9uKGR1cmF0aW9uKSwKICAgICAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKHN0YXJ0KTsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdCwgZHQucGx1cyhkdXIpKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZAogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW50ZXJ2YWwuYmVmb3JlID0gZnVuY3Rpb24gYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgICB2YXIgZHVyID0gZnJpZW5kbHlEdXJhdGlvbihkdXJhdGlvbiksCiAgICAgICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShlbmQpOwogICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gSVNPIDg2MDEgc3RyaW5nLgogICAgICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gb3B0aW9ucyB0byBwYXNzIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSBhbmQgb3B0aW9uYWxseSB7QGxpbmsgRHVyYXRpb24uZnJvbUlTT30KICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLmZyb21JU08gPSBmdW5jdGlvbiBmcm9tSVNPKHRleHQsIG9wdHMpIHsKICAgICAgICB2YXIgX3NwbGl0ID0gKHRleHQgfHwgIiIpLnNwbGl0KCIvIiwgMiksCiAgICAgICAgICAgIHMgPSBfc3BsaXRbMF0sCiAgICAgICAgICAgIGUgPSBfc3BsaXRbMV07CgogICAgICAgIGlmIChzICYmIGUpIHsKICAgICAgICAgIHZhciBzdGFydCwgc3RhcnRJc1ZhbGlkOwoKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHN0YXJ0ID0gRGF0ZVRpbWUuZnJvbUlTTyhzLCBvcHRzKTsKICAgICAgICAgICAgc3RhcnRJc1ZhbGlkID0gc3RhcnQuaXNWYWxpZDsKICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgc3RhcnRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGVuZCwgZW5kSXNWYWxpZDsKCiAgICAgICAgICB0cnkgewogICAgICAgICAgICBlbmQgPSBEYXRlVGltZS5mcm9tSVNPKGUsIG9wdHMpOwogICAgICAgICAgICBlbmRJc1ZhbGlkID0gZW5kLmlzVmFsaWQ7CiAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGVuZElzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCk7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgICB2YXIgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKCiAgICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5hZnRlcihzdGFydCwgZHVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICAgIHZhciBfZHVyID0gRHVyYXRpb24uZnJvbUlTTyhzLCBvcHRzKTsKCiAgICAgICAgICAgIGlmIChfZHVyLmlzVmFsaWQpIHsKICAgICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgX2R1cik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJ1bnBhcnNhYmxlIiwgInRoZSBpbnB1dCBcIiIgKyB0ZXh0ICsgIlwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMSIpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gSW50ZXJ2YWwuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXMKICAgICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLmlzSW50ZXJ2YWwgPSBmdW5jdGlvbiBpc0ludGVydmFsKG8pIHsKICAgICAgICByZXR1cm4gbyAmJiBvLmlzTHV4b25JbnRlcnZhbCB8fCBmYWxzZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgICAqIEB0eXBlIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIHZhciBfcHJvdG8gPSBJbnRlcnZhbC5wcm90b3R5cGU7CgogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICBfcHJvdG8ubGVuZ3RoID0gZnVuY3Rpb24gbGVuZ3RoKHVuaXQpIHsKICAgICAgICBpZiAodW5pdCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICB1bml0ID0gIm1pbGxpc2Vjb25kcyI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uLmFwcGx5KHRoaXMsIFt1bml0XSkuZ2V0KHVuaXQpIDogTmFOOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAgICogVW5saWtlIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9IHRoaXMgY291bnRzIHNlY3Rpb25zIG9mIHRoZSBjYWxlbmRhciwgbm90IHBlcmlvZHMgb2YgdGltZSwgZS5nLiBzcGVjaWZ5aW5nICdkYXknCiAgICAgICAqIGFza3MgJ3doYXQgZGF0ZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJ2YWw/Jywgbm90ICdob3cgbWFueSBkYXlzIGxvbmcgaXMgdGhpcyBpbnRlcnZhbD8nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uY291bnQgPSBmdW5jdGlvbiBjb3VudCh1bml0KSB7CiAgICAgICAgaWYgKHVuaXQgPT09IHZvaWQgMCkgewogICAgICAgICAgdW5pdCA9ICJtaWxsaXNlY29uZHMiOwogICAgICAgIH0KCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpOwogICAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgMTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBhbmQgZW5kIGFyZSBib3RoIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5oYXNTYW1lID0gZnVuY3Rpb24gaGFzU2FtZSh1bml0KSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuZS5taW51cygxKS5oYXNTYW1lKHRoaXMucywgdW5pdCkgOiBmYWxzZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucy52YWx1ZU9mKCkgPT09IHRoaXMuZS52YWx1ZU9mKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBkYXRlVGltZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmlzQWZ0ZXIgPSBmdW5jdGlvbiBpc0FmdGVyKGRhdGVUaW1lKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gdGhpcy5zID4gZGF0ZVRpbWU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYmVmb3JlIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uaXNCZWZvcmUgPSBmdW5jdGlvbiBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuIHRoaXMuZSA8PSBkYXRlVGltZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBkYXRlVGltZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmNvbnRhaW5zID0gZnVuY3Rpb24gY29udGFpbnMoZGF0ZVRpbWUpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXRzIiB0aGUgc3RhcnQgYW5kL29yIGVuZCBkYXRlcy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIEludGVydmFsLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gdGhlIHZhbHVlcyB0byBzZXQKICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IHZhbHVlcy5lbmQgLSB0aGUgZW5kaW5nIERhdGVUaW1lCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnNldCA9IGZ1bmN0aW9uIHNldChfdGVtcCkgewogICAgICAgIHZhciBfcmVmID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAsCiAgICAgICAgICAgIHN0YXJ0ID0gX3JlZi5zdGFydCwKICAgICAgICAgICAgZW5kID0gX3JlZi5lbmQ7CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCB8fCB0aGlzLnMsIGVuZCB8fCB0aGlzLmUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGF0IGVhY2ggb2YgdGhlIHNwZWNpZmllZCBEYXRlVGltZXMKICAgICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc3BsaXRBdCA9IGZ1bmN0aW9uIHNwbGl0QXQoKSB7CiAgICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBbXTsKCiAgICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGRhdGVUaW1lcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHsKICAgICAgICAgIGRhdGVUaW1lc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTsKICAgICAgICB9CgogICAgICAgIHZhciBzb3J0ZWQgPSBkYXRlVGltZXMubWFwKGZyaWVuZGx5RGF0ZVRpbWUpLmZpbHRlcihmdW5jdGlvbiAoZCkgewogICAgICAgICAgcmV0dXJuIF90aGlzLmNvbnRhaW5zKGQpOwogICAgICAgIH0pLnNvcnQoKSwKICAgICAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIHZhciBzID0gdGhpcy5zLAogICAgICAgICAgICBpID0gMDsKCiAgICAgICAgd2hpbGUgKHMgPCB0aGlzLmUpIHsKICAgICAgICAgIHZhciBhZGRlZCA9IHNvcnRlZFtpXSB8fCB0aGlzLmUsCiAgICAgICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIG5leHQpKTsKICAgICAgICAgIHMgPSBuZXh0OwogICAgICAgICAgaSArPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAgICogTGVmdCBvdmVyIHRpbWUgaXMgZ3JvdXBlZCBpbnRvIGEgc21hbGxlciBpbnRlcnZhbAogICAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGxlbmd0aCBvZiBlYWNoIHJlc3VsdGluZyBpbnRlcnZhbC4KICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc3BsaXRCeSA9IGZ1bmN0aW9uIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgICB2YXIgZHVyID0gZnJpZW5kbHlEdXJhdGlvbihkdXJhdGlvbik7CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFkdXIuaXNWYWxpZCB8fCBkdXIuYXMoIm1pbGxpc2Vjb25kcyIpID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICB2YXIgcyA9IHRoaXMucywKICAgICAgICAgICAgaWR4ID0gMSwKICAgICAgICAgICAgbmV4dDsKICAgICAgICB2YXIgcmVzdWx0cyA9IFtdOwoKICAgICAgICB3aGlsZSAocyA8IHRoaXMuZSkgewogICAgICAgICAgdmFyIGFkZGVkID0gdGhpcy5zdGFydC5wbHVzKGR1ci5tYXBVbml0cyhmdW5jdGlvbiAoeCkgewogICAgICAgICAgICByZXR1cm4geCAqIGlkeDsKICAgICAgICAgIH0pKTsKICAgICAgICAgIG5leHQgPSArYWRkZWQgPiArdGhpcy5lID8gdGhpcy5lIDogYWRkZWQ7CiAgICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgICBzID0gbmV4dDsKICAgICAgICAgIGlkeCArPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzbWFsbGVyIGludGVydmFscy4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmRpdmlkZUVxdWFsbHkgPSBmdW5jdGlvbiBkaXZpZGVFcXVhbGx5KG51bWJlck9mUGFydHMpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIG92ZXJsYXBzIHdpdGggdGhlIHNwZWNpZmllZCBJbnRlcnZhbAogICAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLm92ZXJsYXBzID0gZnVuY3Rpb24gb3ZlcmxhcHMob3RoZXIpIHsKICAgICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBzdGFydC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5hYnV0c1N0YXJ0ID0gZnVuY3Rpb24gYWJ1dHNTdGFydChvdGhlcikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgICAgcmV0dXJuICt0aGlzLmUgPT09ICtvdGhlci5zOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5hYnV0c0VuZCA9IGZ1bmN0aW9uIGFidXRzRW5kKG90aGVyKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgZW5ndWxmcyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFsLgogICAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVuZ3VsZnMgPSBmdW5jdGlvbiBlbmd1bGZzKG90aGVyKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgICByZXR1cm4gdGhpcy5zIDw9IG90aGVyLnMgJiYgdGhpcy5lID49IG90aGVyLmU7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMob3RoZXIpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMucy5lcXVhbHMob3RoZXIucykgJiYgdGhpcy5lLmVxdWFscyhvdGhlci5lKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgaW50ZXJzZWN0aW9uIGlzIGVtcHR5LCBtZWFuaW5nLCB0aGUgaW50ZXJ2YWxzIGRvbid0IGludGVyc2VjdC4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gaW50ZXJzZWN0aW9uKG90aGVyKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciBzID0gdGhpcy5zID4gb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsCiAgICAgICAgICAgIGUgPSB0aGlzLmUgPCBvdGhlci5lID8gdGhpcy5lIDogb3RoZXIuZTsKCiAgICAgICAgaWYgKHMgPj0gZSkgewogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWluaW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWF4aW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy4KICAgICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udW5pb24gPSBmdW5jdGlvbiB1bmlvbihvdGhlcikgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgcyA9IHRoaXMucyA8IG90aGVyLnMgPyB0aGlzLnMgOiBvdGhlci5zLAogICAgICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIE1lcmdlIGFuIGFycmF5IG9mIEludGVydmFscyBpbnRvIGEgZXF1aXZhbGVudCBtaW5pbWFsIHNldCBvZiBJbnRlcnZhbHMuCiAgICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLm1lcmdlID0gZnVuY3Rpb24gbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgICAgdmFyIF9pbnRlcnZhbHMkc29ydCRyZWR1YyA9IGludGVydmFscy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgICByZXR1cm4gYS5zIC0gYi5zOwogICAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAoX3JlZjIsIGl0ZW0pIHsKICAgICAgICAgIHZhciBzb2ZhciA9IF9yZWYyWzBdLAogICAgICAgICAgICAgIGN1cnJlbnQgPSBfcmVmMlsxXTsKCiAgICAgICAgICBpZiAoIWN1cnJlbnQpIHsKICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQub3ZlcmxhcHMoaXRlbSkgfHwgY3VycmVudC5hYnV0c1N0YXJ0KGl0ZW0pKSB7CiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGN1cnJlbnQudW5pb24oaXRlbSldOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIFtzb2Zhci5jb25jYXQoW2N1cnJlbnRdKSwgaXRlbV07CiAgICAgICAgICB9CiAgICAgICAgfSwgW1tdLCBudWxsXSksCiAgICAgICAgICAgIGZvdW5kID0gX2ludGVydmFscyRzb3J0JHJlZHVjWzBdLAogICAgICAgICAgICBmaW5hbCA9IF9pbnRlcnZhbHMkc29ydCRyZWR1Y1sxXTsKCiAgICAgICAgaWYgKGZpbmFsKSB7CiAgICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmb3VuZDsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIEludGVydmFscyByZXByZXNlbnRpbmcgdGhlIHNwYW5zIG9mIHRpbWUgdGhhdCBvbmx5IGFwcGVhciBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbHMuCiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEludGVydmFsLnhvciA9IGZ1bmN0aW9uIHhvcihpbnRlcnZhbHMpIHsKICAgICAgICB2YXIgX0FycmF5JHByb3RvdHlwZTsKCiAgICAgICAgdmFyIHN0YXJ0ID0gbnVsbCwKICAgICAgICAgICAgY3VycmVudENvdW50ID0gMDsKCiAgICAgICAgdmFyIHJlc3VsdHMgPSBbXSwKICAgICAgICAgICAgZW5kcyA9IGludGVydmFscy5tYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBbewogICAgICAgICAgICB0aW1lOiBpLnMsCiAgICAgICAgICAgIHR5cGU6ICJzIgogICAgICAgICAgfSwgewogICAgICAgICAgICB0aW1lOiBpLmUsCiAgICAgICAgICAgIHR5cGU6ICJlIgogICAgICAgICAgfV07CiAgICAgICAgfSksCiAgICAgICAgICAgIGZsYXR0ZW5lZCA9IChfQXJyYXkkcHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlKS5jb25jYXQuYXBwbHkoX0FycmF5JHByb3RvdHlwZSwgZW5kcyksCiAgICAgICAgICAgIGFyciA9IGZsYXR0ZW5lZC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgICByZXR1cm4gYS50aW1lIC0gYi50aW1lOwogICAgICAgIH0pOwoKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKGFyciksIF9zdGVwOyAhKF9zdGVwID0gX2l0ZXJhdG9yKCkpLmRvbmU7KSB7CiAgICAgICAgICB2YXIgaSA9IF9zdGVwLnZhbHVlOwogICAgICAgICAgY3VycmVudENvdW50ICs9IGkudHlwZSA9PT0gInMiID8gMSA6IC0xOwoKICAgICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgICAgc3RhcnQgPSBpLnRpbWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGkudGltZSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHNwYW4gb2YgdGltZSBpbiB0aGlzIEludGVydmFsIHRoYXQgZG9lc24ndCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxzLgogICAgICAgKiBAcGFyYW0gey4uLkludGVydmFsfSBpbnRlcnZhbHMKICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZGlmZmVyZW5jZSA9IGZ1bmN0aW9uIGRpZmZlcmVuY2UoKSB7CiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgaW50ZXJ2YWxzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7CiAgICAgICAgICBpbnRlcnZhbHNbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKS5tYXAoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBfdGhpczIuaW50ZXJzZWN0aW9uKGkpOwogICAgICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoaSkgewogICAgICAgICAgcmV0dXJuIGkgJiYgIWkuaXNFbXB0eSgpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgYXBwcm9wcmlhdGUgZm9yIGRlYnVnZ2luZy4KICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgICAgcmV0dXJuICJbIiArIHRoaXMucy50b0lTTygpICsgIiBcdTIwMTMgIiArIHRoaXMuZS50b0lTTygpICsgIikiOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbC4KICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9JU08gPSBmdW5jdGlvbiB0b0lTTyhvcHRzKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgICAgcmV0dXJuIHRoaXMucy50b0lTTyhvcHRzKSArICIvIiArIHRoaXMuZS50b0lTTyhvcHRzKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGRhdGUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAgICogVGhlIHRpbWUgY29tcG9uZW50cyBhcmUgaWdub3JlZC4KICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9JU09EYXRlID0gZnVuY3Rpb24gdG9JU09EYXRlKCkgewogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICAgIHJldHVybiB0aGlzLnMudG9JU09EYXRlKCkgKyAiLyIgKyB0aGlzLmUudG9JU09EYXRlKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aW1lIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHMKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZS50b0lTT30KICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSVNPVGltZSA9IGZ1bmN0aW9uIHRvSVNPVGltZShvcHRzKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgICAgcmV0dXJuIHRoaXMucy50b0lTT1RpbWUob3B0cykgKyAiLyIgKyB0aGlzLmUudG9JU09UaW1lKG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlRm9ybWF0IC0gdGhlIGZvcm1hdCBzdHJpbmcuIFRoaXMgc3RyaW5nIGZvcm1hdHMgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZS4gU2VlIHtAbGluayBEYXRlVGltZS50b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gYSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCByZXByZXNlbnRhdGlvbnMKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvRm9ybWF0ID0gZnVuY3Rpb24gdG9Gb3JtYXQoZGF0ZUZvcm1hdCwgX3RlbXAyKSB7CiAgICAgICAgdmFyIF9yZWYzID0gX3RlbXAyID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMiwKICAgICAgICAgICAgX3JlZjMkc2VwYXJhdG9yID0gX3JlZjMuc2VwYXJhdG9yLAogICAgICAgICAgICBzZXBhcmF0b3IgPSBfcmVmMyRzZXBhcmF0b3IgPT09IHZvaWQgMCA/ICIg4oCTICIgOiBfcmVmMyRzZXBhcmF0b3I7CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICAgIHJldHVybiAiIiArIHRoaXMucy50b0Zvcm1hdChkYXRlRm9ybWF0KSArIHNlcGFyYXRvciArIHRoaXMuZS50b0Zvcm1hdChkYXRlRm9ybWF0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGEgRHVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSB0aW1lIHNwYW5uZWQgYnkgdGhpcyBpbnRlcnZhbC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIHRoZSBEdXJhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKCdkYXlzJykudG9PYmplY3QoKSAvLz0+IHsgZGF5czogMS4wMjQxODEyMTUyNzc3Nzc4IH0KICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbihbJ2hvdXJzJywgJ21pbnV0ZXMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNC44MjA5NSB9CiAgICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignc2Vjb25kcycpLnRvT2JqZWN0KCkgLy89PiB7IHNlY29uZHM6IDg4NDg5LjI1NyB9CiAgICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvRHVyYXRpb24gPSBmdW5jdGlvbiB0b0R1cmF0aW9uKHVuaXQsIG9wdHMpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQodGhpcy5pbnZhbGlkUmVhc29uKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmUuZGlmZih0aGlzLnMsIHVuaXQsIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1hcEZuCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnBsdXMoeyBob3VyczogMiB9KSkKICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5tYXBFbmRwb2ludHMgPSBmdW5jdGlvbiBtYXBFbmRwb2ludHMobWFwRm4pIHsKICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgICAgfTsKCiAgICAgIF9jcmVhdGVDbGFzcyhJbnRlcnZhbCwgW3sKICAgICAgICBrZXk6ICJzdGFydCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5zIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbAogICAgICAgICAqIEB0eXBlIHtEYXRlVGltZX0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJlbmQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuZSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy4KICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpc1ZhbGlkIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWRSZWFzb24gPT09IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpbnZhbGlkUmVhc29uIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQucmVhc29uIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImludmFsaWRFeHBsYW5hdGlvbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uIDogbnVsbDsKICAgICAgICB9CiAgICAgIH1dKTsKCiAgICAgIHJldHVybiBJbnRlcnZhbDsKICAgIH0oKTsKCiAgICAvKioKICAgICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICAgKi8KCiAgICB2YXIgSW5mbyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgIGZ1bmN0aW9uIEluZm8oKSB7fQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBab25lIHRvIGNoZWNrLiBEZWZhdWx0cyB0byB0aGUgZW52aXJvbm1lbnQncyBsb2NhbCB6b25lLgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgSW5mby5oYXNEU1QgPSBmdW5jdGlvbiBoYXNEU1Qoem9uZSkgewogICAgICAgIGlmICh6b25lID09PSB2b2lkIDApIHsKICAgICAgICAgIHpvbmUgPSBTZXR0aW5ncy5kZWZhdWx0Wm9uZTsKICAgICAgICB9CgogICAgICAgIHZhciBwcm90byA9IERhdGVUaW1lLm5vdygpLnNldFpvbmUoem9uZSkuc2V0KHsKICAgICAgICAgIG1vbnRoOiAxMgogICAgICAgIH0pOwogICAgICAgIHJldHVybiAhem9uZS5pc1VuaXZlcnNhbCAmJiBwcm90by5vZmZzZXQgIT09IHByb3RvLnNldCh7CiAgICAgICAgICBtb250aDogNgogICAgICAgIH0pLm9mZnNldDsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHNwZWNpZmllZCB6b25lIGlzIGEgdmFsaWQgSUFOQSBzcGVjaWZpZXIuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby5pc1ZhbGlkSUFOQVpvbmUgPSBmdW5jdGlvbiBpc1ZhbGlkSUFOQVpvbmUoem9uZSkgewogICAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkU3BlY2lmaWVyKHpvbmUpICYmIElBTkFab25lLmlzVmFsaWRab25lKHpvbmUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDb252ZXJ0cyB0aGUgaW5wdXQgaW50byBhIHtAbGluayBab25lfSBpbnN0YW5jZS4KICAgICAgICoKICAgICAgICogKiBJZiBgaW5wdXRgIGlzIGFscmVhZHkgYSBab25lIGluc3RhbmNlLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCiAgICAgICAqICogSWYgYGlucHV0YCBpcyBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgdGltZSB6b25lIG5hbWUsIGEgWm9uZSBpbnN0YW5jZQogICAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICAgKiAqIElmIGBpbnB1dGAgaXMgYSBzdHJpbmcgdGhhdCBkb2Vzbid0IHJlZmVyIHRvIGEga25vd24gdGltZSB6b25lLCBhIFpvbmUKICAgICAgICogICBpbnN0YW5jZSB3aXRoIHtAbGluayBab25lLmlzVmFsaWR9ID09IGZhbHNlIGlzIHJldHVybmVkLgogICAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAgICogICBpbiBtaW51dGVzIGlzIHJldHVybmVkLgogICAgICAgKiAqIElmIGBpbnB1dGAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGUgZGVmYXVsdCB6b25lIGlzIHJldHVybmVkLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAgICogQHJldHVybiB7Wm9uZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ubm9ybWFsaXplWm9uZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZVpvbmUkMShpbnB1dCkgewogICAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIG1vbnRoIG5hbWVzLgogICAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhcgogICAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdzaG9ydCcpWzBdIC8vPT4gJ0phbicKICAgICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ251bWVyaWMnKVswXSAvLz0+ICcxJwogICAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdudW1lcmljJywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2aEnCiAgICAgICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdsb25nJywgeyBvdXRwdXRDYWxlbmRhcjogJ2lzbGFtaWMnIH0pWzBdIC8vPT4gJ1JhYmnKuyBJJwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ubW9udGhzID0gZnVuY3Rpb24gbW9udGhzKGxlbmd0aCwgX3RlbXApIHsKICAgICAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHsKICAgICAgICAgIGxlbmd0aCA9ICJsb25nIjsKICAgICAgICB9CgogICAgICAgIHZhciBfcmVmID0gX3RlbXAgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAsCiAgICAgICAgICAgIF9yZWYkbG9jYWxlID0gX3JlZi5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYkbG9jYWxlID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRsb2NhbGUsCiAgICAgICAgICAgIF9yZWYkbnVtYmVyaW5nU3lzdGVtID0gX3JlZi5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSA9IF9yZWYkbnVtYmVyaW5nU3lzdGVtID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIF9yZWYkbG9jT2JqID0gX3JlZi5sb2NPYmosCiAgICAgICAgICAgIGxvY09iaiA9IF9yZWYkbG9jT2JqID09PSB2b2lkIDAgPyBudWxsIDogX3JlZiRsb2NPYmosCiAgICAgICAgICAgIF9yZWYkb3V0cHV0Q2FsZW5kYXIgPSBfcmVmLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgICBvdXRwdXRDYWxlbmRhciA9IF9yZWYkb3V0cHV0Q2FsZW5kYXIgPT09IHZvaWQgMCA/ICJncmVnb3J5IiA6IF9yZWYkb3V0cHV0Q2FsZW5kYXI7CgogICAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgbW9udGggbmFtZXMuCiAgICAgICAqIEZvcm1hdCBtb250aHMgZGlmZmVyIGZyb20gc3RhbmRhbG9uZSBtb250aHMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIHRoZSBkYXkgb2YgdGhlIG1vbnRoLiBJbiBzb21lIGxhbmd1YWdlcywgdGhhdAogICAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgICAqIFNlZSB7QGxpbmsgSW5mbyNtb250aHN9CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhcgogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ubW9udGhzRm9ybWF0ID0gZnVuY3Rpb24gbW9udGhzRm9ybWF0KGxlbmd0aCwgX3RlbXAyKSB7CiAgICAgICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBsZW5ndGggPSAibG9uZyI7CiAgICAgICAgfQoKICAgICAgICB2YXIgX3JlZjIgPSBfdGVtcDIgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAyLAogICAgICAgICAgICBfcmVmMiRsb2NhbGUgPSBfcmVmMi5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWYyJGxvY2FsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYyJGxvY2FsZSwKICAgICAgICAgICAgX3JlZjIkbnVtYmVyaW5nU3lzdGVtID0gX3JlZjIubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmMiRudW1iZXJpbmdTeXN0ZW0gPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmMiRudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIF9yZWYyJGxvY09iaiA9IF9yZWYyLmxvY09iaiwKICAgICAgICAgICAgbG9jT2JqID0gX3JlZjIkbG9jT2JqID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjIkbG9jT2JqLAogICAgICAgICAgICBfcmVmMiRvdXRwdXRDYWxlbmRhciA9IF9yZWYyLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgICBvdXRwdXRDYWxlbmRhciA9IF9yZWYyJG91dHB1dENhbGVuZGFyID09PSB2b2lkIDAgPyAiZ3JlZ29yeSIgOiBfcmVmMiRvdXRwdXRDYWxlbmRhcjsKCiAgICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIHN0YW5kYWxvbmUgd2VlayBuYW1lcy4KICAgICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKClbMF0gLy89PiAnTW9uZGF5JwogICAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9KVswXSAvLz0+ICdsdW4uJwogICAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9in2YTYp9ir2YbZitmGJwogICAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIEluZm8ud2Vla2RheXMgPSBmdW5jdGlvbiB3ZWVrZGF5cyhsZW5ndGgsIF90ZW1wMykgewogICAgICAgIGlmIChsZW5ndGggPT09IHZvaWQgMCkgewogICAgICAgICAgbGVuZ3RoID0gImxvbmciOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9yZWYzID0gX3RlbXAzID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMywKICAgICAgICAgICAgX3JlZjMkbG9jYWxlID0gX3JlZjMubG9jYWxlLAogICAgICAgICAgICBsb2NhbGUgPSBfcmVmMyRsb2NhbGUgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmMyRsb2NhbGUsCiAgICAgICAgICAgIF9yZWYzJG51bWJlcmluZ1N5c3RlbSA9IF9yZWYzLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX3JlZjMkbnVtYmVyaW5nU3lzdGVtID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjMkbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBfcmVmMyRsb2NPYmogPSBfcmVmMy5sb2NPYmosCiAgICAgICAgICAgIGxvY09iaiA9IF9yZWYzJGxvY09iaiA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYzJGxvY09iajsKCiAgICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgbnVsbCkpLndlZWtkYXlzKGxlbmd0aCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAgICogRm9ybWF0IHdlZWtkYXlzIGRpZmZlciBmcm9tIHN0YW5kYWxvbmUgd2Vla2RheXMgaW4gdGhhdCB0aGV5J3JlIG1lYW50IHRvIGFwcGVhciBuZXh0IHRvIG1vcmUgZGF0ZSBpbmZvcm1hdGlvbi4gSW4gc29tZSBsYW5ndWFnZXMsIHRoYXQKICAgICAgICogY2hhbmdlcyB0aGUgc3RyaW5nLgogICAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlCiAgICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby53ZWVrZGF5c0Zvcm1hdCA9IGZ1bmN0aW9uIHdlZWtkYXlzRm9ybWF0KGxlbmd0aCwgX3RlbXA0KSB7CiAgICAgICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBsZW5ndGggPSAibG9uZyI7CiAgICAgICAgfQoKICAgICAgICB2YXIgX3JlZjQgPSBfdGVtcDQgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA0LAogICAgICAgICAgICBfcmVmNCRsb2NhbGUgPSBfcmVmNC5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWY0JGxvY2FsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWY0JGxvY2FsZSwKICAgICAgICAgICAgX3JlZjQkbnVtYmVyaW5nU3lzdGVtID0gX3JlZjQubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmNCRudW1iZXJpbmdTeXN0ZW0gPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmNCRudW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIF9yZWY0JGxvY09iaiA9IF9yZWY0LmxvY09iaiwKICAgICAgICAgICAgbG9jT2JqID0gX3JlZjQkbG9jT2JqID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjQkbG9jT2JqOwoKICAgICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoLCB0cnVlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICAgKiBAZXhhbXBsZSBJbmZvLm1lcmlkaWVtcyh7IGxvY2FsZTogJ215JyB9KSAvLz0+IFsgJ+GAlOGAtuGAlOGAgOGAuicsICfhgIrhgJThgLEnIF0KICAgICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgICAqLwogICAgICA7CgogICAgICBJbmZvLm1lcmlkaWVtcyA9IGZ1bmN0aW9uIG1lcmlkaWVtcyhfdGVtcDUpIHsKICAgICAgICB2YXIgX3JlZjUgPSBfdGVtcDUgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA1LAogICAgICAgICAgICBfcmVmNSRsb2NhbGUgPSBfcmVmNS5sb2NhbGUsCiAgICAgICAgICAgIGxvY2FsZSA9IF9yZWY1JGxvY2FsZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWY1JGxvY2FsZTsKCiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlKS5tZXJpZGllbXMoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIGVyYXMsIHN1Y2ggYXMgWydCQycsICdBRCddLiBUaGUgbG9jYWxlIGNhbiBiZSBzcGVjaWZpZWQsIGJ1dCB0aGUgY2FsZW5kYXIgc3lzdGVtIGlzIGFsd2F5cyBHcmVnb3JpYW4uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnKSAvLz0+IFsgJ0JlZm9yZSBDaHJpc3QnLCAnQW5ubyBEb21pbmknIF0KICAgICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJywgeyBsb2NhbGU6ICdmcicgfSkgLy89PiBbICdhdmFudCBKw6lzdXMtQ2hyaXN0JywgJ2FwcsOocyBKw6lzdXMtQ2hyaXN0JyBdCiAgICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby5lcmFzID0gZnVuY3Rpb24gZXJhcyhsZW5ndGgsIF90ZW1wNikgewogICAgICAgIGlmIChsZW5ndGggPT09IHZvaWQgMCkgewogICAgICAgICAgbGVuZ3RoID0gInNob3J0IjsKICAgICAgICB9CgogICAgICAgIHZhciBfcmVmNiA9IF90ZW1wNiA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDYsCiAgICAgICAgICAgIF9yZWY2JGxvY2FsZSA9IF9yZWY2LmxvY2FsZSwKICAgICAgICAgICAgbG9jYWxlID0gX3JlZjYkbG9jYWxlID09PSB2b2lkIDAgPyBudWxsIDogX3JlZjYkbG9jYWxlOwoKICAgICAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bGwsICJncmVnb3J5IikuZXJhcyhsZW5ndGgpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAgICogU29tZSBmZWF0dXJlcyBvZiBMdXhvbiBhcmUgbm90IGF2YWlsYWJsZSBpbiBhbGwgZW52aXJvbm1lbnRzLiBGb3IgZXhhbXBsZSwgb24gb2xkZXIgYnJvd3NlcnMsIHRpbWV6b25lIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gZmlndXJlIG91dCBpZiB0aGF0J3MgdGhlIGNhc2UuCiAgICAgICAqIEtleXM6CiAgICAgICAqICogYHJlbGF0aXZlYDogd2hldGhlciB0aGlzIGVudmlyb25tZW50IHN1cHBvcnRzIHJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZwogICAgICAgKiBAZXhhbXBsZSBJbmZvLmZlYXR1cmVzKCkgLy89PiB7IGludGw6IHRydWUsIGludGxUb2tlbnM6IGZhbHNlLCB6b25lczogdHJ1ZSwgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAgKi8KICAgICAgOwoKICAgICAgSW5mby5mZWF0dXJlcyA9IGZ1bmN0aW9uIGZlYXR1cmVzKCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKQogICAgICAgIH07CiAgICAgIH07CgogICAgICByZXR1cm4gSW5mbzsKICAgIH0oKTsKCiAgICBmdW5jdGlvbiBkYXlEaWZmKGVhcmxpZXIsIGxhdGVyKSB7CiAgICAgIHZhciB1dGNEYXlTdGFydCA9IGZ1bmN0aW9uIHV0Y0RheVN0YXJ0KGR0KSB7CiAgICAgICAgcmV0dXJuIGR0LnRvVVRDKDAsIHsKICAgICAgICAgIGtlZXBMb2NhbFRpbWU6IHRydWUKICAgICAgICB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCk7CiAgICAgIH0sCiAgICAgICAgICBtcyA9IHV0Y0RheVN0YXJ0KGxhdGVyKSAtIHV0Y0RheVN0YXJ0KGVhcmxpZXIpOwoKICAgICAgcmV0dXJuIE1hdGguZmxvb3IoRHVyYXRpb24uZnJvbU1pbGxpcyhtcykuYXMoImRheXMiKSk7CiAgICB9CgogICAgZnVuY3Rpb24gaGlnaE9yZGVyRGlmZnMoY3Vyc29yLCBsYXRlciwgdW5pdHMpIHsKICAgICAgdmFyIGRpZmZlcnMgPSBbWyJ5ZWFycyIsIGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIueWVhciAtIGEueWVhcjsKICAgICAgfV0sIFsicXVhcnRlcnMiLCBmdW5jdGlvbiAoYSwgYikgewogICAgICAgIHJldHVybiBiLnF1YXJ0ZXIgLSBhLnF1YXJ0ZXI7CiAgICAgIH1dLCBbIm1vbnRocyIsIGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgcmV0dXJuIGIubW9udGggLSBhLm1vbnRoICsgKGIueWVhciAtIGEueWVhcikgKiAxMjsKICAgICAgfV0sIFsid2Vla3MiLCBmdW5jdGlvbiAoYSwgYikgewogICAgICAgIHZhciBkYXlzID0gZGF5RGlmZihhLCBiKTsKICAgICAgICByZXR1cm4gKGRheXMgLSBkYXlzICUgNykgLyA3OwogICAgICB9XSwgWyJkYXlzIiwgZGF5RGlmZl1dOwogICAgICB2YXIgcmVzdWx0cyA9IHt9OwogICAgICB2YXIgbG93ZXN0T3JkZXIsIGhpZ2hXYXRlcjsKCiAgICAgIGZvciAodmFyIF9pID0gMCwgX2RpZmZlcnMgPSBkaWZmZXJzOyBfaSA8IF9kaWZmZXJzLmxlbmd0aDsgX2krKykgewogICAgICAgIHZhciBfZGlmZmVycyRfaSA9IF9kaWZmZXJzW19pXSwKICAgICAgICAgICAgdW5pdCA9IF9kaWZmZXJzJF9pWzBdLAogICAgICAgICAgICBkaWZmZXIgPSBfZGlmZmVycyRfaVsxXTsKCiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YodW5pdCkgPj0gMCkgewogICAgICAgICAgdmFyIF9jdXJzb3IkcGx1czsKCiAgICAgICAgICBsb3dlc3RPcmRlciA9IHVuaXQ7CiAgICAgICAgICB2YXIgZGVsdGEgPSBkaWZmZXIoY3Vyc29yLCBsYXRlcik7CiAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3IucGx1cygoX2N1cnNvciRwbHVzID0ge30sIF9jdXJzb3IkcGx1c1t1bml0XSA9IGRlbHRhLCBfY3Vyc29yJHBsdXMpKTsKCiAgICAgICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHsKICAgICAgICAgICAgdmFyIF9jdXJzb3IkcGx1czI7CgogICAgICAgICAgICBjdXJzb3IgPSBjdXJzb3IucGx1cygoX2N1cnNvciRwbHVzMiA9IHt9LCBfY3Vyc29yJHBsdXMyW3VuaXRdID0gZGVsdGEgLSAxLCBfY3Vyc29yJHBsdXMyKSk7CiAgICAgICAgICAgIGRlbHRhIC09IDE7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjdXJzb3IgPSBoaWdoV2F0ZXI7CiAgICAgICAgICB9CgogICAgICAgICAgcmVzdWx0c1t1bml0XSA9IGRlbHRhOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdOwogICAgfQoKICAgIGZ1bmN0aW9uIF9kaWZmIChlYXJsaWVyLCBsYXRlciwgdW5pdHMsIG9wdHMpIHsKICAgICAgdmFyIF9oaWdoT3JkZXJEaWZmcyA9IGhpZ2hPcmRlckRpZmZzKGVhcmxpZXIsIGxhdGVyLCB1bml0cyksCiAgICAgICAgICBjdXJzb3IgPSBfaGlnaE9yZGVyRGlmZnNbMF0sCiAgICAgICAgICByZXN1bHRzID0gX2hpZ2hPcmRlckRpZmZzWzFdLAogICAgICAgICAgaGlnaFdhdGVyID0gX2hpZ2hPcmRlckRpZmZzWzJdLAogICAgICAgICAgbG93ZXN0T3JkZXIgPSBfaGlnaE9yZGVyRGlmZnNbM107CgogICAgICB2YXIgcmVtYWluaW5nTWlsbGlzID0gbGF0ZXIgLSBjdXJzb3I7CiAgICAgIHZhciBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoZnVuY3Rpb24gKHUpIHsKICAgICAgICByZXR1cm4gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIl0uaW5kZXhPZih1KSA+PSAwOwogICAgICB9KTsKCiAgICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgICB2YXIgX2N1cnNvciRwbHVzMzsKCiAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3IucGx1cygoX2N1cnNvciRwbHVzMyA9IHt9LCBfY3Vyc29yJHBsdXMzW2xvd2VzdE9yZGVyXSA9IDEsIF9jdXJzb3IkcGx1czMpKTsKICAgICAgICB9CgogICAgICAgIGlmIChoaWdoV2F0ZXIgIT09IGN1cnNvcikgewogICAgICAgICAgcmVzdWx0c1tsb3dlc3RPcmRlcl0gPSAocmVzdWx0c1tsb3dlc3RPcmRlcl0gfHwgMCkgKyByZW1haW5pbmdNaWxsaXMgLyAoaGlnaFdhdGVyIC0gY3Vyc29yKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHZhciBkdXJhdGlvbiA9IER1cmF0aW9uLmZyb21PYmplY3QocmVzdWx0cywgb3B0cyk7CgogICAgICBpZiAobG93ZXJPcmRlclVuaXRzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgX0R1cmF0aW9uJGZyb21NaWxsaXM7CgogICAgICAgIHJldHVybiAoX0R1cmF0aW9uJGZyb21NaWxsaXMgPSBEdXJhdGlvbi5mcm9tTWlsbGlzKHJlbWFpbmluZ01pbGxpcywgb3B0cykpLnNoaWZ0VG8uYXBwbHkoX0R1cmF0aW9uJGZyb21NaWxsaXMsIGxvd2VyT3JkZXJVbml0cykucGx1cyhkdXJhdGlvbik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGR1cmF0aW9uOwogICAgICB9CiAgICB9CgogICAgdmFyIG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICAgIGFyYWI6ICJbXHUwNjYwLVx1MDY2OV0iLAogICAgICBhcmFiZXh0OiAiW1x1MDZGMC1cdTA2RjldIiwKICAgICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICAgIGJlbmc6ICJbXHUwOUU2LVx1MDlFRl0iLAogICAgICBkZXZhOiAiW1x1MDk2Ni1cdTA5NkZdIiwKICAgICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgICBndWpyOiAiW1x1MEFFNi1cdTBBRUZdIiwKICAgICAgaGFuaWRlYzogIlvjgId85LiAfOS6jHzkuIl85ZubfOS6lHzlha185LiDfOWFq3zkuZ1dIiwKICAgICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICAgIGtuZGE6ICJbXHUwQ0U2LVx1MENFRl0iLAogICAgICBsYW9vOiAiW1x1MEVEMC1cdTBFRDldIiwKICAgICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICAgIG1seW06ICJbXHUwRDY2LVx1MEQ2Rl0iLAogICAgICBtb25nOiAiW1x1MTgxMC1cdTE4MTldIiwKICAgICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICAgIG9yeWE6ICJbXHUwQjY2LVx1MEI2Rl0iLAogICAgICB0YW1sZGVjOiAiW1x1MEJFNi1cdTBCRUZdIiwKICAgICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICAgIHRoYWk6ICJbXHUwRTUwLVx1MEU1OV0iLAogICAgICB0aWJ0OiAiW1x1MEYyMC1cdTBGMjldIiwKICAgICAgbGF0bjogIlxcZCIKICAgIH07CiAgICB2YXIgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgICBhcmFiOiBbMTYzMiwgMTY0MV0sCiAgICAgIGFyYWJleHQ6IFsxNzc2LCAxNzg1XSwKICAgICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgICBiZW5nOiBbMjUzNCwgMjU0M10sCiAgICAgIGRldmE6IFsyNDA2LCAyNDE1XSwKICAgICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgICBndWpyOiBbMjc5MCwgMjc5OV0sCiAgICAgIGtobXI6IFs2MTEyLCA2MTIxXSwKICAgICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgICBsYW9vOiBbMzc5MiwgMzgwMV0sCiAgICAgIGxpbWI6IFs2NDcwLCA2NDc5XSwKICAgICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgICBtb25nOiBbNjE2MCwgNjE2OV0sCiAgICAgIG15bXI6IFs0MTYwLCA0MTY5XSwKICAgICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgICB0YW1sZGVjOiBbMzA0NiwgMzA1NV0sCiAgICAgIHRlbHU6IFszMTc0LCAzMTgzXSwKICAgICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgICB0aWJ0OiBbMzg3MiwgMzg4MV0KICAgIH07CiAgICB2YXIgaGFuaWRlY0NoYXJzID0gbnVtYmVyaW5nU3lzdGVtcy5oYW5pZGVjLnJlcGxhY2UoL1tcW3xcXV0vZywgIiIpLnNwbGl0KCIiKTsKICAgIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgICB2YXIgdmFsdWUgPSBwYXJzZUludChzdHIsIDEwKTsKCiAgICAgIGlmIChpc05hTih2YWx1ZSkpIHsKICAgICAgICB2YWx1ZSA9ICIiOwoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTsKCiAgICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgICB2YWx1ZSArPSBoYW5pZGVjQ2hhcnMuaW5kZXhPZihzdHJbaV0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIG51bWJlcmluZ1N5c3RlbXNVVEYxNikgewogICAgICAgICAgICAgIHZhciBfbnVtYmVyaW5nU3lzdGVtc1VURiA9IG51bWJlcmluZ1N5c3RlbXNVVEYxNltrZXldLAogICAgICAgICAgICAgICAgICBtaW4gPSBfbnVtYmVyaW5nU3lzdGVtc1VURlswXSwKICAgICAgICAgICAgICAgICAgbWF4ID0gX251bWJlcmluZ1N5c3RlbXNVVEZbMV07CgogICAgICAgICAgICAgIGlmIChjb2RlID49IG1pbiAmJiBjb2RlIDw9IG1heCkgewogICAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gZGlnaXRSZWdleChfcmVmLCBhcHBlbmQpIHsKICAgICAgdmFyIG51bWJlcmluZ1N5c3RlbSA9IF9yZWYubnVtYmVyaW5nU3lzdGVtOwoKICAgICAgaWYgKGFwcGVuZCA9PT0gdm9pZCAwKSB7CiAgICAgICAgYXBwZW5kID0gIiI7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgUmVnRXhwKCIiICsgbnVtYmVyaW5nU3lzdGVtc1tudW1iZXJpbmdTeXN0ZW0gfHwgImxhdG4iXSArIGFwcGVuZCk7CiAgICB9CgogICAgdmFyIE1JU1NJTkdfRlRQID0gIm1pc3NpbmcgSW50bC5EYXRlVGltZUZvcm1hdC5mb3JtYXRUb1BhcnRzIHN1cHBvcnQiOwoKICAgIGZ1bmN0aW9uIGludFVuaXQocmVnZXgsIHBvc3QpIHsKICAgICAgaWYgKHBvc3QgPT09IHZvaWQgMCkgewogICAgICAgIHBvc3QgPSBmdW5jdGlvbiBwb3N0KGkpIHsKICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgcmVnZXg6IHJlZ2V4LAogICAgICAgIGRlc2VyOiBmdW5jdGlvbiBkZXNlcihfcmVmKSB7CiAgICAgICAgICB2YXIgcyA9IF9yZWZbMF07CiAgICAgICAgICByZXR1cm4gcG9zdChwYXJzZURpZ2l0cyhzKSk7CiAgICAgICAgfQogICAgICB9OwogICAgfQoKICAgIHZhciBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogICAgdmFyIHNwYWNlT3JOQlNQID0gIiggfCIgKyBOQlNQICsgIikiOwogICAgdmFyIHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgICBmdW5jdGlvbiBmaXhMaXN0UmVnZXgocykgewogICAgICAvLyBtYWtlIGRvdHMgb3B0aW9uYWwgYW5kIGFsc28gbWFrZSB0aGVtIGxpdGVyYWwKICAgICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgICByZXR1cm4gcy5yZXBsYWNlKC9cLi9nLCAiXFwuPyIpLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIHNwYWNlT3JOQlNQKTsKICAgIH0KCiAgICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICAgIHJldHVybiBzLnJlcGxhY2UoL1wuL2csICIiKSAvLyBpZ25vcmUgZG90cyB0aGF0IHdlcmUgbWFkZSBvcHRpb25hbAogICAgICAucmVwbGFjZShzcGFjZU9yTkJTUFJlZ0V4cCwgIiAiKSAvLyBpbnRlcmNoYW5nZSBzcGFjZSBhbmQgbmJzcAogICAgICAudG9Mb3dlckNhc2UoKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVPZihzdHJpbmdzLCBzdGFydEluZGV4KSB7CiAgICAgIGlmIChzdHJpbmdzID09PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgICAgZGVzZXI6IGZ1bmN0aW9uIGRlc2VyKF9yZWYyKSB7CiAgICAgICAgICAgIHZhciBzID0gX3JlZjJbMF07CiAgICAgICAgICAgIHJldHVybiBzdHJpbmdzLmZpbmRJbmRleChmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgIHJldHVybiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSA9PT0gc3RyaXBJbnNlbnNpdGl2aXRpZXMoaSk7CiAgICAgICAgICAgIH0pICsgc3RhcnRJbmRleDsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICByZWdleDogcmVnZXgsCiAgICAgICAgZGVzZXI6IGZ1bmN0aW9uIGRlc2VyKF9yZWYzKSB7CiAgICAgICAgICB2YXIgaCA9IF9yZWYzWzFdLAogICAgICAgICAgICAgIG0gPSBfcmVmM1syXTsKICAgICAgICAgIHJldHVybiBzaWduZWRPZmZzZXQoaCwgbSk7CiAgICAgICAgfSwKICAgICAgICBncm91cHM6IGdyb3VwcwogICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHNpbXBsZShyZWdleCkgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiByZWdleCwKICAgICAgICBkZXNlcjogZnVuY3Rpb24gZGVzZXIoX3JlZjQpIHsKICAgICAgICAgIHZhciBzID0gX3JlZjRbMF07CiAgICAgICAgICByZXR1cm4gczsKICAgICAgICB9CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gZXNjYXBlVG9rZW4odmFsdWUpIHsKICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1tcLVxbXF17fSgpKis/LixcXFxeJHwjXHNdL2csICJcXCQmIik7CiAgICB9CgogICAgZnVuY3Rpb24gdW5pdEZvclRva2VuKHRva2VuLCBsb2MpIHsKICAgICAgdmFyIG9uZSA9IGRpZ2l0UmVnZXgobG9jKSwKICAgICAgICAgIHR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezJ9IiksCiAgICAgICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgICAgICBmb3VyID0gZGlnaXRSZWdleChsb2MsICJ7NH0iKSwKICAgICAgICAgIHNpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezZ9IiksCiAgICAgICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgICAgIG9uZVRvVGhyZWUgPSBkaWdpdFJlZ2V4KGxvYywgInsxLDN9IiksCiAgICAgICAgICBvbmVUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezEsNn0iKSwKICAgICAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgICAgIHR3b1RvRm91ciA9IGRpZ2l0UmVnZXgobG9jLCAiezIsNH0iKSwKICAgICAgICAgIGZvdXJUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCAiezQsNn0iKSwKICAgICAgICAgIGxpdGVyYWwgPSBmdW5jdGlvbiBsaXRlcmFsKHQpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLAogICAgICAgICAgZGVzZXI6IGZ1bmN0aW9uIGRlc2VyKF9yZWY1KSB7CiAgICAgICAgICAgIHZhciBzID0gX3JlZjVbMF07CiAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgfSwKICAgICAgICAgIGxpdGVyYWw6IHRydWUKICAgICAgICB9OwogICAgICB9LAogICAgICAgICAgdW5pdGF0ZSA9IGZ1bmN0aW9uIHVuaXRhdGUodCkgewogICAgICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgICAgICByZXR1cm4gbGl0ZXJhbCh0KTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAodC52YWwpIHsKICAgICAgICAgIC8vIGVyYQogICAgICAgICAgY2FzZSAiRyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcygic2hvcnQiLCBmYWxzZSksIDApOwoKICAgICAgICAgIGNhc2UgIkdHIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5lcmFzKCJsb25nIiwgZmFsc2UpLCAwKTsKICAgICAgICAgIC8vIHllYXJzCgogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKCiAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwoKICAgICAgICAgIGNhc2UgInl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTsKCiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CgogICAgICAgICAgY2FzZSAieXl5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTsKICAgICAgICAgIC8vIG1vbnRocwoKICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgIk1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIHRydWUsIGZhbHNlKSwgMSk7CgogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwoKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKCiAgICAgICAgICBjYXNlICJMTEwiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLm1vbnRocygic2hvcnQiLCBmYWxzZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSwgZmFsc2UpLCAxKTsKICAgICAgICAgIC8vIGRhdGVzCgogICAgICAgICAgY2FzZSAiZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwoKICAgICAgICAgIGNhc2UgIm8iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTsKCiAgICAgICAgICBjYXNlICJvb28iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICAvLyB0aW1lCgogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAiaGgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAibW0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwoKICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CgogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJxcSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CgogICAgICAgICAgY2FzZSAicyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CgogICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwoKICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTsKCiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgLy8gbWVyaWRpZW0KCiAgICAgICAgICBjYXNlICJhIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7CiAgICAgICAgICAvLyB3ZWVrWWVhciAoaykKCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CgogICAgICAgICAgY2FzZSAia2siOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTsKICAgICAgICAgIC8vIHdlZWtOdW1iZXIgKFcpCgogICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKCiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwoKICAgICAgICAgIGNhc2UgIkUiOgogICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CgogICAgICAgICAgY2FzZSAiRUVFIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygic2hvcnQiLCBmYWxzZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJFRUVFIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygibG9uZyIsIGZhbHNlLCBmYWxzZSksIDEpOwoKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSwgZmFsc2UpLCAxKTsKCiAgICAgICAgICBjYXNlICJjY2NjIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cygibG9uZyIsIHRydWUsIGZhbHNlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQoKICAgICAgICAgIGNhc2UgIloiOgogICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICByZXR1cm4gb2Zmc2V0KG5ldyBSZWdFeHAoIihbKy1dIiArIG9uZU9yVHdvLnNvdXJjZSArICIpKD86OigiICsgdHdvLnNvdXJjZSArICIpKT8iKSwgMik7CgogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKCIoWystXSIgKyBvbmVPclR3by5zb3VyY2UgKyAiKSgiICsgdHdvLnNvdXJjZSArICIpPyIpLCAyKTsKICAgICAgICAgIC8vIHdlIGRvbid0IHN1cHBvcnQgWlpaWiAoUFNUKSBvciBaWlpaWiAoUGFjaWZpYyBTdGFuZGFyZCBUaW1lKSBpbiBwYXJzaW5nCiAgICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55IHdheSB0byBmaWd1cmUgb3V0IHdoYXQgdGhleSBhcmUKCiAgICAgICAgICBjYXNlICJ6IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZSgvW2Etel8rLS9dezEsMjU2fT8vaSk7CgogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgdmFyIHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7CiAgICAgICAgaW52YWxpZFJlYXNvbjogTUlTU0lOR19GVFAKICAgICAgfTsKICAgICAgdW5pdC50b2tlbiA9IHRva2VuOwogICAgICByZXR1cm4gdW5pdDsKICAgIH0KCiAgICB2YXIgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICAgIHllYXI6IHsKICAgICAgICAiMi1kaWdpdCI6ICJ5eSIsCiAgICAgICAgbnVtZXJpYzogInl5eXl5IgogICAgICB9LAogICAgICBtb250aDogewogICAgICAgIG51bWVyaWM6ICJNIiwKICAgICAgICAiMi1kaWdpdCI6ICJNTSIsCiAgICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICAgIGxvbmc6ICJNTU1NIgogICAgICB9LAogICAgICBkYXk6IHsKICAgICAgICBudW1lcmljOiAiZCIsCiAgICAgICAgIjItZGlnaXQiOiAiZGQiCiAgICAgIH0sCiAgICAgIHdlZWtkYXk6IHsKICAgICAgICBzaG9ydDogIkVFRSIsCiAgICAgICAgbG9uZzogIkVFRUUiCiAgICAgIH0sCiAgICAgIGRheXBlcmlvZDogImEiLAogICAgICBkYXlQZXJpb2Q6ICJhIiwKICAgICAgaG91cjogewogICAgICAgIG51bWVyaWM6ICJoIiwKICAgICAgICAiMi1kaWdpdCI6ICJoaCIKICAgICAgfSwKICAgICAgbWludXRlOiB7CiAgICAgICAgbnVtZXJpYzogIm0iLAogICAgICAgICIyLWRpZ2l0IjogIm1tIgogICAgICB9LAogICAgICBzZWNvbmQ6IHsKICAgICAgICBudW1lcmljOiAicyIsCiAgICAgICAgIjItZGlnaXQiOiAic3MiCiAgICAgIH0KICAgIH07CgogICAgZnVuY3Rpb24gdG9rZW5Gb3JQYXJ0KHBhcnQsIGxvY2FsZSwgZm9ybWF0T3B0cykgewogICAgICB2YXIgdHlwZSA9IHBhcnQudHlwZSwKICAgICAgICAgIHZhbHVlID0gcGFydC52YWx1ZTsKCiAgICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgbGl0ZXJhbDogdHJ1ZSwKICAgICAgICAgIHZhbDogdmFsdWUKICAgICAgICB9OwogICAgICB9CgogICAgICB2YXIgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwogICAgICB2YXIgdmFsID0gcGFydFR5cGVTdHlsZVRvVG9rZW5WYWxbdHlwZV07CgogICAgICBpZiAodHlwZW9mIHZhbCA9PT0gIm9iamVjdCIpIHsKICAgICAgICB2YWwgPSB2YWxbc3R5bGVdOwogICAgICB9CgogICAgICBpZiAodmFsKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgICAgdmFsOiB2YWwKICAgICAgICB9OwogICAgICB9CgogICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1aWxkUmVnZXgodW5pdHMpIHsKICAgICAgdmFyIHJlID0gdW5pdHMubWFwKGZ1bmN0aW9uICh1KSB7CiAgICAgICAgcmV0dXJuIHUucmVnZXg7CiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAoZiwgcikgewogICAgICAgIHJldHVybiBmICsgIigiICsgci5zb3VyY2UgKyAiKSI7CiAgICAgIH0sICIiKTsKICAgICAgcmV0dXJuIFsiXiIgKyByZSArICIkIiwgdW5pdHNdOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgICAgdmFyIG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgICBpZiAobWF0Y2hlcykgewogICAgICAgIHZhciBhbGwgPSB7fTsKICAgICAgICB2YXIgbWF0Y2hJbmRleCA9IDE7CgogICAgICAgIGZvciAodmFyIGkgaW4gaGFuZGxlcnMpIHsKICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShoYW5kbGVycywgaSkpIHsKICAgICAgICAgICAgdmFyIGggPSBoYW5kbGVyc1tpXSwKICAgICAgICAgICAgICAgIGdyb3VwcyA9IGguZ3JvdXBzID8gaC5ncm91cHMgKyAxIDogMTsKCiAgICAgICAgICAgIGlmICghaC5saXRlcmFsICYmIGgudG9rZW4pIHsKICAgICAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW21hdGNoZXMsIGFsbF07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIFttYXRjaGVzLCB7fV07CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpIHsKICAgICAgdmFyIHRvRmllbGQgPSBmdW5jdGlvbiB0b0ZpZWxkKHRva2VuKSB7CiAgICAgICAgc3dpdGNoICh0b2tlbikgewogICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwoKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gInNlY29uZCI7CgogICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgIHJldHVybiAibWludXRlIjsKCiAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgICByZXR1cm4gImhvdXIiOwoKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gImRheSI7CgogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CgogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuICJtb250aCI7CgogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiAieWVhciI7CgogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuICJ3ZWVrZGF5IjsKCiAgICAgICAgICBjYXNlICJXIjoKICAgICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKCiAgICAgICAgICBjYXNlICJrIjoKICAgICAgICAgICAgcmV0dXJuICJ3ZWVrWWVhciI7CgogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiAicXVhcnRlciI7CgogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgdmFyIHpvbmU7CgogICAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgICB6b25lID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZShtYXRjaGVzLlopOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgICAgem9uZSA9IElBTkFab25lLmNyZWF0ZShtYXRjaGVzLnopOwogICAgICB9IGVsc2UgewogICAgICAgIHpvbmUgPSBudWxsOwogICAgICB9CgogICAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgICBtYXRjaGVzLk0gPSAobWF0Y2hlcy5xIC0gMSkgKiAzICsgMTsKICAgICAgfQoKICAgICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgICAgaWYgKG1hdGNoZXMuaCA8IDEyICYmIG1hdGNoZXMuYSA9PT0gMSkgewogICAgICAgICAgbWF0Y2hlcy5oICs9IDEyOwogICAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICAgIG1hdGNoZXMuaCA9IDA7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAobWF0Y2hlcy5HID09PSAwICYmIG1hdGNoZXMueSkgewogICAgICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7CiAgICAgIH0KCiAgICAgIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy51KSkgewogICAgICAgIG1hdGNoZXMuUyA9IHBhcnNlTWlsbGlzKG1hdGNoZXMudSk7CiAgICAgIH0KCiAgICAgIHZhciB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKGZ1bmN0aW9uIChyLCBrKSB7CiAgICAgICAgdmFyIGYgPSB0b0ZpZWxkKGspOwoKICAgICAgICBpZiAoZikgewogICAgICAgICAgcltmXSA9IG1hdGNoZXNba107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcjsKICAgICAgfSwge30pOwogICAgICByZXR1cm4gW3ZhbHMsIHpvbmVdOwogICAgfQoKICAgIHZhciBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICAgIGZ1bmN0aW9uIGdldER1bW15RGF0ZVRpbWUoKSB7CiAgICAgIGlmICghZHVtbXlEYXRlVGltZUNhY2hlKSB7CiAgICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgICAgfQoKICAgICAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTsKICAgIH0KCiAgICBmdW5jdGlvbiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odG9rZW4sIGxvY2FsZSkgewogICAgICBpZiAodG9rZW4ubGl0ZXJhbCkgewogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfQoKICAgICAgdmFyIGZvcm1hdE9wdHMgPSBGb3JtYXR0ZXIubWFjcm9Ub2tlblRvRm9ybWF0T3B0cyh0b2tlbi52YWwpOwoKICAgICAgaWYgKCFmb3JtYXRPcHRzKSB7CiAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICB9CgogICAgICB2YXIgZm9ybWF0dGVyID0gRm9ybWF0dGVyLmNyZWF0ZShsb2NhbGUsIGZvcm1hdE9wdHMpOwogICAgICB2YXIgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0RGF0ZVRpbWVQYXJ0cyhnZXREdW1teURhdGVUaW1lKCkpOwogICAgICB2YXIgdG9rZW5zID0gcGFydHMubWFwKGZ1bmN0aW9uIChwKSB7CiAgICAgICAgcmV0dXJuIHRva2VuRm9yUGFydChwLCBsb2NhbGUsIGZvcm1hdE9wdHMpOwogICAgICB9KTsKCiAgICAgIGlmICh0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgfQoKICAgICAgcmV0dXJuIHRva2VuczsKICAgIH0KCiAgICBmdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkgewogICAgICB2YXIgX0FycmF5JHByb3RvdHlwZTsKCiAgICAgIHJldHVybiAoX0FycmF5JHByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZSkuY29uY2F0LmFwcGx5KF9BcnJheSRwcm90b3R5cGUsIHRva2Vucy5tYXAoZnVuY3Rpb24gKHQpIHsKICAgICAgICByZXR1cm4gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHQsIGxvY2FsZSk7CiAgICAgIH0pKTsKICAgIH0KICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqLwoKCiAgICBmdW5jdGlvbiBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHsKICAgICAgdmFyIHRva2VucyA9IGV4cGFuZE1hY3JvVG9rZW5zKEZvcm1hdHRlci5wYXJzZUZvcm1hdChmb3JtYXQpLCBsb2NhbGUpLAogICAgICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKGZ1bmN0aW9uICh0KSB7CiAgICAgICAgcmV0dXJuIHVuaXRGb3JUb2tlbih0LCBsb2NhbGUpOwogICAgICB9KSwKICAgICAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZChmdW5jdGlvbiAodCkgewogICAgICAgIHJldHVybiB0LmludmFsaWRSZWFzb247CiAgICAgIH0pOwoKICAgICAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGlucHV0OiBpbnB1dCwKICAgICAgICAgIHRva2VuczogdG9rZW5zLAogICAgICAgICAgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbgogICAgICAgIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIF9idWlsZFJlZ2V4ID0gYnVpbGRSZWdleCh1bml0cyksCiAgICAgICAgICAgIHJlZ2V4U3RyaW5nID0gX2J1aWxkUmVnZXhbMF0sCiAgICAgICAgICAgIGhhbmRsZXJzID0gX2J1aWxkUmVnZXhbMV0sCiAgICAgICAgICAgIHJlZ2V4ID0gUmVnRXhwKHJlZ2V4U3RyaW5nLCAiaSIpLAogICAgICAgICAgICBfbWF0Y2ggPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICAgICAgcmF3TWF0Y2hlcyA9IF9tYXRjaFswXSwKICAgICAgICAgICAgbWF0Y2hlcyA9IF9tYXRjaFsxXSwKICAgICAgICAgICAgX3JlZjYgPSBtYXRjaGVzID8gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSA6IFtudWxsLCBudWxsXSwKICAgICAgICAgICAgcmVzdWx0ID0gX3JlZjZbMF0sCiAgICAgICAgICAgIHpvbmUgPSBfcmVmNlsxXTsKCiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KG1hdGNoZXMsICJhIikgJiYgaGFzT3duUHJvcGVydHkobWF0Y2hlcywgIkgiKSkgewogICAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKCJDYW4ndCBpbmNsdWRlIG1lcmlkaWVtIHdoZW4gc3BlY2lmeWluZyAyNC1ob3VyIGZvcm1hdCIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGlucHV0OiBpbnB1dCwKICAgICAgICAgIHRva2VuczogdG9rZW5zLAogICAgICAgICAgcmVnZXg6IHJlZ2V4LAogICAgICAgICAgcmF3TWF0Y2hlczogcmF3TWF0Y2hlcywKICAgICAgICAgIG1hdGNoZXM6IG1hdGNoZXMsCiAgICAgICAgICByZXN1bHQ6IHJlc3VsdCwKICAgICAgICAgIHpvbmU6IHpvbmUKICAgICAgICB9OwogICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBwYXJzZUZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICAgIHZhciBfZXhwbGFpbkZyb21Ub2tlbnMgPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpLAogICAgICAgICAgcmVzdWx0ID0gX2V4cGxhaW5Gcm9tVG9rZW5zLnJlc3VsdCwKICAgICAgICAgIHpvbmUgPSBfZXhwbGFpbkZyb21Ub2tlbnMuem9uZSwKICAgICAgICAgIGludmFsaWRSZWFzb24gPSBfZXhwbGFpbkZyb21Ub2tlbnMuaW52YWxpZFJlYXNvbjsKCiAgICAgIHJldHVybiBbcmVzdWx0LCB6b25lLCBpbnZhbGlkUmVhc29uXTsKICAgIH0KCiAgICB2YXIgbm9uTGVhcExhZGRlciA9IFswLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNF0sCiAgICAgICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogICAgZnVuY3Rpb24gdW5pdE91dE9mUmFuZ2UodW5pdCwgdmFsdWUpIHsKICAgICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bml0IG91dCBvZiByYW5nZSIsICJ5b3Ugc3BlY2lmaWVkICIgKyB2YWx1ZSArICIgKG9mIHR5cGUgIiArIHR5cGVvZiB2YWx1ZSArICIpIGFzIGEgIiArIHVuaXQgKyAiLCB3aGljaCBpcyBpbnZhbGlkIik7CiAgICB9CgogICAgZnVuY3Rpb24gZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBkYXkpIHsKICAgICAgdmFyIGpzID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKS5nZXRVVENEYXkoKTsKICAgICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogICAgfQoKICAgIGZ1bmN0aW9uIGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpIHsKICAgICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgICB9CgogICAgZnVuY3Rpb24gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKSB7CiAgICAgIHZhciB0YWJsZSA9IGlzTGVhcFllYXIoeWVhcikgPyBsZWFwTGFkZGVyIDogbm9uTGVhcExhZGRlciwKICAgICAgICAgIG1vbnRoMCA9IHRhYmxlLmZpbmRJbmRleChmdW5jdGlvbiAoaSkgewogICAgICAgIHJldHVybiBpIDwgb3JkaW5hbDsKICAgICAgfSksCiAgICAgICAgICBkYXkgPSBvcmRpbmFsIC0gdGFibGVbbW9udGgwXTsKICAgICAgcmV0dXJuIHsKICAgICAgICBtb250aDogbW9udGgwICsgMSwKICAgICAgICBkYXk6IGRheQogICAgICB9OwogICAgfQogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCgoKICAgIGZ1bmN0aW9uIGdyZWdvcmlhblRvV2VlayhncmVnT2JqKSB7CiAgICAgIHZhciB5ZWFyID0gZ3JlZ09iai55ZWFyLAogICAgICAgICAgbW9udGggPSBncmVnT2JqLm1vbnRoLAogICAgICAgICAgZGF5ID0gZ3JlZ09iai5kYXksCiAgICAgICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgICAgICB3ZWVrZGF5ID0gZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBkYXkpOwogICAgICB2YXIgd2Vla051bWJlciA9IE1hdGguZmxvb3IoKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyksCiAgICAgICAgICB3ZWVrWWVhcjsKCiAgICAgIGlmICh3ZWVrTnVtYmVyIDwgMSkgewogICAgICAgIHdlZWtZZWFyID0geWVhciAtIDE7CiAgICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICAgIH0gZWxzZSBpZiAod2Vla051bWJlciA+IHdlZWtzSW5XZWVrWWVhcih5ZWFyKSkgewogICAgICAgIHdlZWtZZWFyID0geWVhciArIDE7CiAgICAgICAgd2Vla051bWJlciA9IDE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2Vla1llYXIgPSB5ZWFyOwogICAgICB9CgogICAgICByZXR1cm4gX2V4dGVuZHMoewogICAgICAgIHdlZWtZZWFyOiB3ZWVrWWVhciwKICAgICAgICB3ZWVrTnVtYmVyOiB3ZWVrTnVtYmVyLAogICAgICAgIHdlZWtkYXk6IHdlZWtkYXkKICAgICAgfSwgdGltZU9iamVjdChncmVnT2JqKSk7CiAgICB9CiAgICBmdW5jdGlvbiB3ZWVrVG9HcmVnb3JpYW4od2Vla0RhdGEpIHsKICAgICAgdmFyIHdlZWtZZWFyID0gd2Vla0RhdGEud2Vla1llYXIsCiAgICAgICAgICB3ZWVrTnVtYmVyID0gd2Vla0RhdGEud2Vla051bWJlciwKICAgICAgICAgIHdlZWtkYXkgPSB3ZWVrRGF0YS53ZWVrZGF5LAogICAgICAgICAgd2Vla2RheU9mSmFuNCA9IGRheU9mV2Vlayh3ZWVrWWVhciwgMSwgNCksCiAgICAgICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CiAgICAgIHZhciBvcmRpbmFsID0gd2Vla051bWJlciAqIDcgKyB3ZWVrZGF5IC0gd2Vla2RheU9mSmFuNCAtIDMsCiAgICAgICAgICB5ZWFyOwoKICAgICAgaWYgKG9yZGluYWwgPCAxKSB7CiAgICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgICBvcmRpbmFsICs9IGRheXNJblllYXIoeWVhcik7CiAgICAgIH0gZWxzZSBpZiAob3JkaW5hbCA+IHllYXJJbkRheXMpIHsKICAgICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICAgIG9yZGluYWwgLT0gZGF5c0luWWVhcih3ZWVrWWVhcik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgICB9CgogICAgICB2YXIgX3VuY29tcHV0ZU9yZGluYWwgPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpLAogICAgICAgICAgbW9udGggPSBfdW5jb21wdXRlT3JkaW5hbC5tb250aCwKICAgICAgICAgIGRheSA9IF91bmNvbXB1dGVPcmRpbmFsLmRheTsKCiAgICAgIHJldHVybiBfZXh0ZW5kcyh7CiAgICAgICAgeWVhcjogeWVhciwKICAgICAgICBtb250aDogbW9udGgsCiAgICAgICAgZGF5OiBkYXkKICAgICAgfSwgdGltZU9iamVjdCh3ZWVrRGF0YSkpOwogICAgfQogICAgZnVuY3Rpb24gZ3JlZ29yaWFuVG9PcmRpbmFsKGdyZWdEYXRhKSB7CiAgICAgIHZhciB5ZWFyID0gZ3JlZ0RhdGEueWVhciwKICAgICAgICAgIG1vbnRoID0gZ3JlZ0RhdGEubW9udGgsCiAgICAgICAgICBkYXkgPSBncmVnRGF0YS5kYXk7CiAgICAgIHZhciBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICAgIHJldHVybiBfZXh0ZW5kcyh7CiAgICAgICAgeWVhcjogeWVhciwKICAgICAgICBvcmRpbmFsOiBvcmRpbmFsCiAgICAgIH0sIHRpbWVPYmplY3QoZ3JlZ0RhdGEpKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9yZGluYWxUb0dyZWdvcmlhbihvcmRpbmFsRGF0YSkgewogICAgICB2YXIgeWVhciA9IG9yZGluYWxEYXRhLnllYXIsCiAgICAgICAgICBvcmRpbmFsID0gb3JkaW5hbERhdGEub3JkaW5hbDsKCiAgICAgIHZhciBfdW5jb21wdXRlT3JkaW5hbDIgPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpLAogICAgICAgICAgbW9udGggPSBfdW5jb21wdXRlT3JkaW5hbDIubW9udGgsCiAgICAgICAgICBkYXkgPSBfdW5jb21wdXRlT3JkaW5hbDIuZGF5OwoKICAgICAgcmV0dXJuIF9leHRlbmRzKHsKICAgICAgICB5ZWFyOiB5ZWFyLAogICAgICAgIG1vbnRoOiBtb250aCwKICAgICAgICBkYXk6IGRheQogICAgICB9LCB0aW1lT2JqZWN0KG9yZGluYWxEYXRhKSk7CiAgICB9CiAgICBmdW5jdGlvbiBoYXNJbnZhbGlkV2Vla0RhdGEob2JqKSB7CiAgICAgIHZhciB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLndlZWtZZWFyKSwKICAgICAgICAgIHZhbGlkV2VlayA9IGludGVnZXJCZXR3ZWVuKG9iai53ZWVrTnVtYmVyLCAxLCB3ZWVrc0luV2Vla1llYXIob2JqLndlZWtZZWFyKSksCiAgICAgICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgICBpZiAoIXZhbGlkWWVhcikgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla1llYXIiLCBvYmoud2Vla1llYXIpOwogICAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIndlZWsiLCBvYmoud2Vlayk7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkV2Vla2RheSkgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZ1bmN0aW9uIGhhc0ludmFsaWRPcmRpbmFsRGF0YShvYmopIHsKICAgICAgdmFyIHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoueWVhciksCiAgICAgICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoInllYXIiLCBvYmoueWVhcik7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgib3JkaW5hbCIsIG9iai5vcmRpbmFsKTsKICAgICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZ1bmN0aW9uIGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG9iaikgewogICAgICB2YXIgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai55ZWFyKSwKICAgICAgICAgIHZhbGlkTW9udGggPSBpbnRlZ2VyQmV0d2VlbihvYmoubW9udGgsIDEsIDEyKSwKICAgICAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoInllYXIiLCBvYmoueWVhcik7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1vbnRoIiwgb2JqLm1vbnRoKTsKICAgICAgfSBlbHNlIGlmICghdmFsaWREYXkpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZnVuY3Rpb24gaGFzSW52YWxpZFRpbWVEYXRhKG9iaikgewogICAgICB2YXIgaG91ciA9IG9iai5ob3VyLAogICAgICAgICAgbWludXRlID0gb2JqLm1pbnV0ZSwKICAgICAgICAgIHNlY29uZCA9IG9iai5zZWNvbmQsCiAgICAgICAgICBtaWxsaXNlY29uZCA9IG9iai5taWxsaXNlY29uZDsKICAgICAgdmFyIHZhbGlkSG91ciA9IGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fCBob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwLAogICAgICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgICAgIHZhbGlkU2Vjb25kID0gaW50ZWdlckJldHdlZW4oc2Vjb25kLCAwLCA1OSksCiAgICAgICAgICB2YWxpZE1pbGxpc2Vjb25kID0gaW50ZWdlckJldHdlZW4obWlsbGlzZWNvbmQsIDAsIDk5OSk7CgogICAgICBpZiAoIXZhbGlkSG91cikgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgICB9IGVsc2UgaWYgKCF2YWxpZE1pbnV0ZSkgewogICAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgibWludXRlIiwgbWludXRlKTsKICAgICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoInNlY29uZCIsIHNlY29uZCk7CiAgICAgIH0gZWxzZSBpZiAoIXZhbGlkTWlsbGlzZWNvbmQpIHsKICAgICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHZhciBJTlZBTElEID0gIkludmFsaWQgRGF0ZVRpbWUiOwogICAgdmFyIE1BWF9EQVRFID0gOC42NGUxNTsKCiAgICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgICByZXR1cm4gbmV3IEludmFsaWQoInVuc3VwcG9ydGVkIHpvbmUiLCAidGhlIHpvbmUgXCIiICsgem9uZS5uYW1lICsgIlwiIGlzIG5vdCBzdXBwb3J0ZWQiKTsKICAgIH0gLy8gd2UgY2FjaGUgd2VlayBkYXRhIG9uIHRoZSBEVCBvYmplY3QgYW5kIHRoaXMgaW50ZXJtZWRpYXRlcyB0aGUgY2FjaGUKCgogICAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgICBpZiAoZHQud2Vla0RhdGEgPT09IG51bGwpIHsKICAgICAgICBkdC53ZWVrRGF0YSA9IGdyZWdvcmlhblRvV2VlayhkdC5jKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGR0LndlZWtEYXRhOwogICAgfSAvLyBjbG9uZSByZWFsbHkgbWVhbnMsICJtYWtlIGEgbmV3IG9iamVjdCB3aXRoIHRoZXNlIG1vZGlmaWNhdGlvbnMiLiBhbGwgInNldHRlcnMiIHJlYWxseSB1c2UgdGhpcwogICAgLy8gdG8gY3JlYXRlIGEgbmV3IG9iamVjdCB3aGlsZSBvbmx5IGNoYW5naW5nIHNvbWUgb2YgdGhlIHByb3BlcnRpZXMKCgogICAgZnVuY3Rpb24gY2xvbmUoaW5zdCwgYWx0cykgewogICAgICB2YXIgY3VycmVudCA9IHsKICAgICAgICB0czogaW5zdC50cywKICAgICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgICAgYzogaW5zdC5jLAogICAgICAgIG86IGluc3QubywKICAgICAgICBsb2M6IGluc3QubG9jLAogICAgICAgIGludmFsaWQ6IGluc3QuaW52YWxpZAogICAgICB9OwogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKF9leHRlbmRzKHt9LCBjdXJyZW50LCBhbHRzLCB7CiAgICAgICAgb2xkOiBjdXJyZW50CiAgICAgIH0pKTsKICAgIH0gLy8gZmluZCB0aGUgcmlnaHQgb2Zmc2V0IGEgZ2l2ZW4gbG9jYWwgdGltZS4gVGhlIG8gaW5wdXQgaXMgb3VyIGd1ZXNzLCB3aGljaCBkZXRlcm1pbmVzIHdoaWNoCiAgICAvLyBvZmZzZXQgd2UnbGwgcGljayBpbiBhbWJpZ3VvdXMgY2FzZXMgKGUuZy4gdGhlcmUgYXJlIHR3byAzIEFNcyBiL2MgRmFsbGJhY2sgRFNUKQoKCiAgICBmdW5jdGlvbiBmaXhPZmZzZXQobG9jYWxUUywgbywgdHopIHsKICAgICAgLy8gT3VyIFVUQyB0aW1lIGlzIGp1c3QgYSBndWVzcyBiZWNhdXNlIG91ciBvZmZzZXQgaXMganVzdCBhIGd1ZXNzCiAgICAgIHZhciB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOyAvLyBUZXN0IHdoZXRoZXIgdGhlIHpvbmUgbWF0Y2hlcyB0aGUgb2Zmc2V0IGZvciB0aGlzIHRzCgogICAgICB2YXIgbzIgPSB0ei5vZmZzZXQodXRjR3Vlc3MpOyAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKCiAgICAgIGlmIChvID09PSBvMikgewogICAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG9dOwogICAgICB9IC8vIElmIG5vdCwgY2hhbmdlIHRoZSB0cyBieSB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgb2Zmc2V0CgoKICAgICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7IC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZQoKICAgICAgdmFyIG8zID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAgIGlmIChvMiA9PT0gbzMpIHsKICAgICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvMl07CiAgICAgIH0gLy8gSWYgaXQncyBkaWZmZXJlbnQsIHdlJ3JlIGluIGEgaG9sZSB0aW1lLiBUaGUgb2Zmc2V0IGhhcyBjaGFuZ2VkLCBidXQgdGhlIHdlIGRvbid0IGFkanVzdCB0aGUgdGltZQoKCiAgICAgIHJldHVybiBbbG9jYWxUUyAtIE1hdGgubWluKG8yLCBvMykgKiA2MCAqIDEwMDAsIE1hdGgubWF4KG8yLCBvMyldOwogICAgfSAvLyBjb252ZXJ0IGFuIGVwb2NoIHRpbWVzdGFtcCBpbnRvIGEgY2FsZW5kYXIgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG9mZnNldAoKCiAgICBmdW5jdGlvbiB0c1RvT2JqKHRzLCBvZmZzZXQpIHsKICAgICAgdHMgKz0gb2Zmc2V0ICogNjAgKiAxMDAwOwogICAgICB2YXIgZCA9IG5ldyBEYXRlKHRzKTsKICAgICAgcmV0dXJuIHsKICAgICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgICAgbW9udGg6IGQuZ2V0VVRDTW9udGgoKSArIDEsCiAgICAgICAgZGF5OiBkLmdldFVUQ0RhdGUoKSwKICAgICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgICAgbWludXRlOiBkLmdldFVUQ01pbnV0ZXMoKSwKICAgICAgICBzZWNvbmQ6IGQuZ2V0VVRDU2Vjb25kcygpLAogICAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpCiAgICAgIH07CiAgICB9IC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKCgogICAgZnVuY3Rpb24gb2JqVG9UUyhvYmosIG9mZnNldCwgem9uZSkgewogICAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogICAgfSAvLyBjcmVhdGUgYSBuZXcgRFQgaW5zdGFuY2UgYnkgYWRkaW5nIGEgZHVyYXRpb24sIGFkanVzdGluZyBmb3IgRFNUcwoKCiAgICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgICB2YXIgb1ByZSA9IGluc3QubywKICAgICAgICAgIHllYXIgPSBpbnN0LmMueWVhciArIE1hdGgudHJ1bmMoZHVyLnllYXJzKSwKICAgICAgICAgIG1vbnRoID0gaW5zdC5jLm1vbnRoICsgTWF0aC50cnVuYyhkdXIubW9udGhzKSArIE1hdGgudHJ1bmMoZHVyLnF1YXJ0ZXJzKSAqIDMsCiAgICAgICAgICBjID0gX2V4dGVuZHMoe30sIGluc3QuYywgewogICAgICAgIHllYXI6IHllYXIsCiAgICAgICAgbW9udGg6IG1vbnRoLAogICAgICAgIGRheTogTWF0aC5taW4oaW5zdC5jLmRheSwgZGF5c0luTW9udGgoeWVhciwgbW9udGgpKSArIE1hdGgudHJ1bmMoZHVyLmRheXMpICsgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNwogICAgICB9KSwKICAgICAgICAgIG1pbGxpc1RvQWRkID0gRHVyYXRpb24uZnJvbU9iamVjdCh7CiAgICAgICAgeWVhcnM6IGR1ci55ZWFycyAtIE1hdGgudHJ1bmMoZHVyLnllYXJzKSwKICAgICAgICBxdWFydGVyczogZHVyLnF1YXJ0ZXJzIC0gTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpLAogICAgICAgIG1vbnRoczogZHVyLm1vbnRocyAtIE1hdGgudHJ1bmMoZHVyLm1vbnRocyksCiAgICAgICAgd2Vla3M6IGR1ci53ZWVrcyAtIE1hdGgudHJ1bmMoZHVyLndlZWtzKSwKICAgICAgICBkYXlzOiBkdXIuZGF5cyAtIE1hdGgudHJ1bmMoZHVyLmRheXMpLAogICAgICAgIGhvdXJzOiBkdXIuaG91cnMsCiAgICAgICAgbWludXRlczogZHVyLm1pbnV0ZXMsCiAgICAgICAgc2Vjb25kczogZHVyLnNlY29uZHMsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkdXIubWlsbGlzZWNvbmRzCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgICAgIGxvY2FsVFMgPSBvYmpUb0xvY2FsVFMoYyk7CgogICAgICB2YXIgX2ZpeE9mZnNldCA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpLAogICAgICAgICAgdHMgPSBfZml4T2Zmc2V0WzBdLAogICAgICAgICAgbyA9IF9maXhPZmZzZXRbMV07CgogICAgICBpZiAobWlsbGlzVG9BZGQgIT09IDApIHsKICAgICAgICB0cyArPSBtaWxsaXNUb0FkZDsgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQoKICAgICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgdHM6IHRzLAogICAgICAgIG86IG8KICAgICAgfTsKICAgIH0gLy8gaGVscGVyIHVzZWZ1bCBpbiB0dXJuaW5nIHRoZSByZXN1bHRzIG9mIHBhcnNpbmcgaW50byByZWFsIGRhdGVzCiAgICAvLyBieSBoYW5kbGluZyB0aGUgem9uZSBvcHRpb25zCgoKICAgIGZ1bmN0aW9uIHBhcnNlRGF0YVRvRGF0ZVRpbWUocGFyc2VkLCBwYXJzZWRab25lLCBvcHRzLCBmb3JtYXQsIHRleHQpIHsKICAgICAgdmFyIHNldFpvbmUgPSBvcHRzLnNldFpvbmUsCiAgICAgICAgICB6b25lID0gb3B0cy56b25lOwoKICAgICAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkgewogICAgICAgIHZhciBpbnRlcnByZXRhdGlvblpvbmUgPSBwYXJzZWRab25lIHx8IHpvbmUsCiAgICAgICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgX2V4dGVuZHMoe30sIG9wdHMsIHsKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZQogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQobmV3IEludmFsaWQoInVucGFyc2FibGUiLCAidGhlIGlucHV0IFwiIiArIHRleHQgKyAiXCIgY2FuJ3QgYmUgcGFyc2VkIGFzICIgKyBmb3JtYXQpKTsKICAgICAgfQogICAgfSAvLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXIKICAgIC8vIGhlbHBzIGhhbmRsZSB0aGUgZGV0YWlscwoKCiAgICBmdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daKSB7CiAgICAgIGlmIChhbGxvd1ogPT09IHZvaWQgMCkgewogICAgICAgIGFsbG93WiA9IHRydWU7CiAgICAgIH0KCiAgICAgIHJldHVybiBkdC5pc1ZhbGlkID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgYWxsb3daOiBhbGxvd1osCiAgICAgICAgZm9yY2VTaW1wbGU6IHRydWUKICAgICAgfSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmb3JtYXQpIDogbnVsbDsKICAgIH0gLy8gdGVjaG5pY2FsIHRpbWUgZm9ybWF0cyAoZS5nLiB0aGUgdGltZSBwYXJ0IG9mIElTTyA4NjAxKSwgdGFrZSBzb21lIG9wdGlvbnMKICAgIC8vIGFuZCB0aGlzIGNvbW1vbml6ZXMgdGhlaXIgaGFuZGxpbmcKCgogICAgZnVuY3Rpb24gdG9UZWNoVGltZUZvcm1hdChkdCwgX3JlZikgewogICAgICB2YXIgX3JlZiRzdXBwcmVzc1NlY29uZHMgPSBfcmVmLnN1cHByZXNzU2Vjb25kcywKICAgICAgICAgIHN1cHByZXNzU2Vjb25kcyA9IF9yZWYkc3VwcHJlc3NTZWNvbmRzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgX3JlZiRzdXBwcmVzc01pbGxpc2VjID0gX3JlZi5zdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gX3JlZiRzdXBwcmVzc01pbGxpc2VjID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkc3VwcHJlc3NNaWxsaXNlYywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQgPSBfcmVmLmluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBfcmVmJGluY2x1ZGVQcmVmaXggPSBfcmVmLmluY2x1ZGVQcmVmaXgsCiAgICAgICAgICBpbmNsdWRlUHJlZml4ID0gX3JlZiRpbmNsdWRlUHJlZml4ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkaW5jbHVkZVByZWZpeCwKICAgICAgICAgIF9yZWYkaW5jbHVkZVpvbmUgPSBfcmVmLmluY2x1ZGVab25lLAogICAgICAgICAgaW5jbHVkZVpvbmUgPSBfcmVmJGluY2x1ZGVab25lID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWYkaW5jbHVkZVpvbmUsCiAgICAgICAgICBfcmVmJHNwYWNlWm9uZSA9IF9yZWYuc3BhY2Vab25lLAogICAgICAgICAgc3BhY2Vab25lID0gX3JlZiRzcGFjZVpvbmUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRzcGFjZVpvbmUsCiAgICAgICAgICBfcmVmJGZvcm1hdCA9IF9yZWYuZm9ybWF0LAogICAgICAgICAgZm9ybWF0ID0gX3JlZiRmb3JtYXQgPT09IHZvaWQgMCA/ICJleHRlbmRlZCIgOiBfcmVmJGZvcm1hdDsKICAgICAgdmFyIGZtdCA9IGZvcm1hdCA9PT0gImJhc2ljIiA/ICJISG1tIiA6ICJISDptbSI7CgogICAgICBpZiAoIXN1cHByZXNzU2Vjb25kcyB8fCBkdC5zZWNvbmQgIT09IDAgfHwgZHQubWlsbGlzZWNvbmQgIT09IDApIHsKICAgICAgICBmbXQgKz0gZm9ybWF0ID09PSAiYmFzaWMiID8gInNzIiA6ICI6c3MiOwoKICAgICAgICBpZiAoIXN1cHByZXNzTWlsbGlzZWNvbmRzIHx8IGR0Lm1pbGxpc2Vjb25kICE9PSAwKSB7CiAgICAgICAgICBmbXQgKz0gIi5TU1MiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKChpbmNsdWRlWm9uZSB8fCBpbmNsdWRlT2Zmc2V0KSAmJiBzcGFjZVpvbmUpIHsKICAgICAgICBmbXQgKz0gIiAiOwogICAgICB9CgogICAgICBpZiAoaW5jbHVkZVpvbmUpIHsKICAgICAgICBmbXQgKz0gInoiOwogICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICBmbXQgKz0gZm9ybWF0ID09PSAiYmFzaWMiID8gIlpaWiIgOiAiWloiOwogICAgICB9CgogICAgICB2YXIgc3RyID0gdG9UZWNoRm9ybWF0KGR0LCBmbXQpOwoKICAgICAgaWYgKGluY2x1ZGVQcmVmaXgpIHsKICAgICAgICBzdHIgPSAiVCIgKyBzdHI7CiAgICAgIH0KCiAgICAgIHJldHVybiBzdHI7CiAgICB9IC8vIGRlZmF1bHRzIGZvciB1bnNwZWNpZmllZCB1bml0cyBpbiB0aGUgc3VwcG9ydGVkIGNhbGVuZGFycwoKCiAgICB2YXIgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMAogICAgfSwKICAgICAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMAogICAgfSwKICAgICAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMAogICAgfTsgLy8gVW5pdHMgaW4gdGhlIHN1cHBvcnRlZCBjYWxlbmRhcnMsIHNvcnRlZCBieSBiaWduZXNzCgogICAgdmFyIG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICAgICAgb3JkZXJlZFdlZWtVbml0cyA9IFsid2Vla1llYXIiLCAid2Vla051bWJlciIsICJ3ZWVrZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdLAogICAgICAgIG9yZGVyZWRPcmRpbmFsVW5pdHMgPSBbInllYXIiLCAib3JkaW5hbCIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWlsbGlzZWNvbmQiXTsgLy8gc3RhbmRhcmRpemUgY2FzZSBhbmQgcGx1cmFsaXR5IGluIHVuaXRzCgogICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIHZhciBub3JtYWxpemVkID0gewogICAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgICB5ZWFyczogInllYXIiLAogICAgICAgIG1vbnRoOiAibW9udGgiLAogICAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgICBkYXk6ICJkYXkiLAogICAgICAgIGRheXM6ICJkYXkiLAogICAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgICBob3VyczogImhvdXIiLAogICAgICAgIG1pbnV0ZTogIm1pbnV0ZSIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgICAgcXVhcnRlcjogInF1YXJ0ZXIiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlciIsCiAgICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgICBzZWNvbmRzOiAic2Vjb25kIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kIiwKICAgICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgICAgd2Vla2RheTogIndlZWtkYXkiLAogICAgICAgIHdlZWtkYXlzOiAid2Vla2RheSIsCiAgICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICAgIHdlZWtzbnVtYmVyOiAid2Vla051bWJlciIsCiAgICAgICAgd2Vla251bWJlcnM6ICJ3ZWVrTnVtYmVyIiwKICAgICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgICB3ZWVreWVhcnM6ICJ3ZWVrWWVhciIsCiAgICAgICAgb3JkaW5hbDogIm9yZGluYWwiCiAgICAgIH1bdW5pdC50b0xvd2VyQ2FzZSgpXTsKICAgICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9IC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogICAgLy8gYnV0IGRvZXNuJ3QgZG8gYW55IHZhbGlkYXRpb24sIG1ha2VzIGEgYnVuY2ggb2YgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCB1bml0cwogICAgLy8gYXJlIHByZXNlbnQsIGFuZCBzbyBvbi4KICAgIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogICAgLy8gYnV0IGRvZXNuJ3QgZG8gYW55IHZhbGlkYXRpb24sIG1ha2VzIGEgYnVuY2ggb2YgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCB1bml0cwogICAgLy8gYXJlIHByZXNlbnQsIGFuZCBzbyBvbi4KCgogICAgZnVuY3Rpb24gcXVpY2tEVChvYmosIG9wdHMpIHsKICAgICAgdmFyIHpvbmUgPSBub3JtYWxpemVab25lKG9wdHMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpLAogICAgICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgICB0c05vdyA9IFNldHRpbmdzLm5vdygpOwogICAgICB2YXIgdHMsIG87IC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKCiAgICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJMb29zZShvcmRlcmVkVW5pdHMpLCBfc3RlcDsgIShfc3RlcCA9IF9pdGVyYXRvcigpKS5kb25lOykgewogICAgICAgICAgdmFyIHUgPSBfc3RlcC52YWx1ZTsKCiAgICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgICBvYmpbdV0gPSBkZWZhdWx0VW5pdFZhbHVlc1t1XTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKCiAgICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9mZnNldFByb3ZpcyA9IHpvbmUub2Zmc2V0KHRzTm93KTsKCiAgICAgICAgdmFyIF9vYmpUb1RTID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CgogICAgICAgIHRzID0gX29ialRvVFNbMF07CiAgICAgICAgbyA9IF9vYmpUb1RTWzFdOwogICAgICB9IGVsc2UgewogICAgICAgIHRzID0gdHNOb3c7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgIHRzOiB0cywKICAgICAgICB6b25lOiB6b25lLAogICAgICAgIGxvYzogbG9jLAogICAgICAgIG86IG8KICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgICAgdmFyIHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgICAgIGZvcm1hdCA9IGZ1bmN0aW9uIGZvcm1hdChjLCB1bml0KSB7CiAgICAgICAgYyA9IHJvdW5kVG8oYywgcm91bmQgfHwgb3B0cy5jYWxlbmRhcnkgPyAwIDogMiwgdHJ1ZSk7CiAgICAgICAgdmFyIGZvcm1hdHRlciA9IGVuZC5sb2MuY2xvbmUob3B0cykucmVsRm9ybWF0dGVyKG9wdHMpOwogICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGMsIHVuaXQpOwogICAgICB9LAogICAgICAgICAgZGlmZmVyID0gZnVuY3Rpb24gZGlmZmVyKHVuaXQpIHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgaWYgKG9wdHMudW5pdCkgewogICAgICAgIHJldHVybiBmb3JtYXQoZGlmZmVyKG9wdHMudW5pdCksIG9wdHMudW5pdCk7CiAgICAgIH0KCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG9wdHMudW5pdHMpLCBfc3RlcDI7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMigpKS5kb25lOykgewogICAgICAgIHZhciB1bml0ID0gX3N0ZXAyLnZhbHVlOwogICAgICAgIHZhciBjb3VudCA9IGRpZmZlcih1bml0KTsKCiAgICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgICByZXR1cm4gZm9ybWF0KGNvdW50LCB1bml0KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgICB9CgogICAgZnVuY3Rpb24gbGFzdE9wdHMoYXJnTGlzdCkgewogICAgICB2YXIgb3B0cyA9IHt9LAogICAgICAgICAgYXJnczsKCiAgICAgIGlmIChhcmdMaXN0Lmxlbmd0aCA+IDAgJiYgdHlwZW9mIGFyZ0xpc3RbYXJnTGlzdC5sZW5ndGggLSAxXSA9PT0gIm9iamVjdCIpIHsKICAgICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpLnNsaWNlKDAsIGFyZ0xpc3QubGVuZ3RoIC0gMSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICAgIH0KCiAgICAgIHJldHVybiBbb3B0cywgYXJnc107CiAgICB9CiAgICAvKioKICAgICAqIEEgRGF0ZVRpbWUgaXMgYW4gaW1tdXRhYmxlIGRhdGEgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIHNwZWNpZmljIGRhdGUgYW5kIHRpbWUgYW5kIGFjY29tcGFueWluZyBtZXRob2RzLiBJdCBjb250YWlucyBjbGFzcyBhbmQgaW5zdGFuY2UgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4KICAgICAqCiAgICAgKiBBIERhdGVUaW1lIGNvbXByaXNlcyBvZjoKICAgICAqICogQSB0aW1lc3RhbXAuIEVhY2ggRGF0ZVRpbWUgaW5zdGFuY2UgcmVmZXJzIHRvIGEgc3BlY2lmaWMgbWlsbGlzZWNvbmQgb2YgdGhlIFVuaXggZXBvY2guCiAgICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgICAqICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHRoYXQgZWZmZWN0IGhvdyBvdXRwdXQgc3RyaW5ncyBhcmUgZm9ybWF0dGVkLCBzdWNoIGFzIGBsb2NhbGVgLCBgbnVtYmVyaW5nU3lzdGVtYCwgYW5kIGBvdXRwdXRDYWxlbmRhcmAuCiAgICAgKgogICAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgICAqCiAgICAgKiAqICoqQ3JlYXRpb24qKjogVG8gY3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBpdHMgY29tcG9uZW50cywgdXNlIG9uZSBvZiBpdHMgZmFjdG9yeSBjbGFzcyBtZXRob2RzOiB7QGxpbmsgRGF0ZVRpbWUubG9jYWx9LCB7QGxpbmsgRGF0ZVRpbWUudXRjfSwgYW5kIChtb3N0IGZsZXhpYmx5KSB7QGxpbmsgRGF0ZVRpbWUuZnJvbU9iamVjdH0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIHN0YW5kYXJkIHN0cmluZyBmb3JtYXQsIHVzZSB7QGxpbmsgRGF0ZVRpbWUuZnJvbUlTT30sIHtAbGluayBEYXRlVGltZS5mcm9tSFRUUH0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUuZnJvbVJGQzI4MjJ9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBjdXN0b20gc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tRm9ybWF0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgbmF0aXZlIEpTIGRhdGUsIHVzZSB7QGxpbmsgRGF0ZVRpbWUuZnJvbUpTRGF0ZX0uCiAgICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjZGF5fSwge0BsaW5rIERhdGVUaW1lI2hvdXJ9LCB7QGxpbmsgRGF0ZVRpbWUjbWludXRlfSwge0BsaW5rIERhdGVUaW1lI3NlY29uZH0sIHtAbGluayBEYXRlVGltZSNtaWxsaXNlY29uZH0gYWNjZXNzb3JzLgogICAgICogKiAqKldlZWsgY2FsZW5kYXIqKjogRm9yIElTTyB3ZWVrIGNhbGVuZGFyIGF0dHJpYnV0ZXMsIHNlZSB0aGUge0BsaW5rIERhdGVUaW1lI3dlZWtZZWFyfSwge0BsaW5rIERhdGVUaW1lI3dlZWtOdW1iZXJ9LCBhbmQge0BsaW5rIERhdGVUaW1lI3dlZWtkYXl9IGFjY2Vzc29ycy4KICAgICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAgICogKiAqKlRyYW5zZm9ybWF0aW9uKio6IFRvIHRyYW5zZm9ybSB0aGUgRGF0ZVRpbWUgaW50byBvdGhlciBEYXRlVGltZXMsIHVzZSB7QGxpbmsgRGF0ZVRpbWUjc2V0fSwge0BsaW5rIERhdGVUaW1lI3JlY29uZmlndXJlfSwge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9LCB7QGxpbmsgRGF0ZVRpbWUjc2V0TG9jYWxlfSwge0BsaW5rIERhdGVUaW1lLnBsdXN9LCB7QGxpbmsgRGF0ZVRpbWUjbWludXN9LCB7QGxpbmsgRGF0ZVRpbWUjZW5kT2Z9LCB7QGxpbmsgRGF0ZVRpbWUjc3RhcnRPZn0sIHtAbGluayBEYXRlVGltZSN0b1VUQ30sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0uCiAgICAgKiAqICoqT3V0cHV0Kio6IFRvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjdG9SZWxhdGl2ZX0sIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlQ2FsZW5kYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjdG9KU09OfSwge0BsaW5rIERhdGVUaW1lI3RvSVNPfSwge0BsaW5rIERhdGVUaW1lI3RvSFRUUH0sIHtAbGluayBEYXRlVGltZSN0b09iamVjdH0sIHtAbGluayBEYXRlVGltZSN0b1JGQzI4MjJ9LCB7QGxpbmsgRGF0ZVRpbWUjdG9TdHJpbmd9LCB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgRGF0ZVRpbWUjdG9Gb3JtYXR9LCB7QGxpbmsgRGF0ZVRpbWUjdG9NaWxsaXN9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjdG9KU0RhdGV9LgogICAgICoKICAgICAqIFRoZXJlJ3MgcGxlbnR5IG90aGVycyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiwgdGltZSB6b25lcywgYWx0ZXJuYXRpdmUgY2FsZW5kYXJzLCB2YWxpZGl0eSwgYW5kIHNvIG9uLCBzZWUgdGhlIGV4dGVybmFsIGRvY3VtZW50YXRpb24uCiAgICAgKi8KCgogICAgdmFyIERhdGVUaW1lID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgZnVuY3Rpb24gRGF0ZVRpbWUoY29uZmlnKSB7CiAgICAgICAgdmFyIHpvbmUgPSBjb25maWcuem9uZSB8fCBTZXR0aW5ncy5kZWZhdWx0Wm9uZTsKICAgICAgICB2YXIgaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IChOdW1iZXIuaXNOYU4oY29uZmlnLnRzKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsKSB8fCAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwogICAgICAgIHZhciBjID0gbnVsbCwKICAgICAgICAgICAgbyA9IG51bGw7CgogICAgICAgIGlmICghaW52YWxpZCkgewogICAgICAgICAgdmFyIHVuY2hhbmdlZCA9IGNvbmZpZy5vbGQgJiYgY29uZmlnLm9sZC50cyA9PT0gdGhpcy50cyAmJiBjb25maWcub2xkLnpvbmUuZXF1YWxzKHpvbmUpOwoKICAgICAgICAgIGlmICh1bmNoYW5nZWQpIHsKICAgICAgICAgICAgdmFyIF9yZWYyID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICAgICAgYyA9IF9yZWYyWzBdOwogICAgICAgICAgICBvID0gX3JlZjJbMV07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgICAgYyA9IHRzVG9PYmoodGhpcy50cywgb3QpOwogICAgICAgICAgICBpbnZhbGlkID0gTnVtYmVyLmlzTmFOKGMueWVhcikgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbDsKICAgICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgICAgbyA9IGludmFsaWQgPyBudWxsIDogb3Q7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKCiAgICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgICAgLyoqCiAgICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAgICovCgogICAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLmMgPSBjOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLm8gPSBvOwogICAgICAgIC8qKgogICAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgICAqLwoKICAgICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICAgIH0gLy8gQ09OU1RSVUNUCgogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZm9yIHRoZSBjdXJyZW50IGluc3RhbnQsIGluIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgICAqCiAgICAgICAqIFVzZSBTZXR0aW5ncyB0byBvdmVycmlkZSB0aGVzZSBkZWZhdWx0IHZhbHVlcyBpZiBuZWVkZWQuCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy9+PiBub3cgaW4gdGhlIElTTyBmb3JtYXQKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwoKCiAgICAgIERhdGVUaW1lLm5vdyA9IGZ1bmN0aW9uIG5vdygpIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHt9KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgbG9jYWwoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICAgKiBAcGFyYW0ge251bWJlcn0gW21vbnRoPTFdIC0gVGhlIG1vbnRoLCAxLWluZGV4ZWQKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZQogICAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OQogICAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUpICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDAKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIHsgem9uZTogInV0YyIgfSkgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDAsIGluIFVUQwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwLCA3NjUpICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjUKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5sb2NhbCA9IGZ1bmN0aW9uIGxvY2FsKCkgewogICAgICAgIHZhciBfbGFzdE9wdHMgPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgICAgICBvcHRzID0gX2xhc3RPcHRzWzBdLAogICAgICAgICAgICBhcmdzID0gX2xhc3RPcHRzWzFdLAogICAgICAgICAgICB5ZWFyID0gYXJnc1swXSwKICAgICAgICAgICAgbW9udGggPSBhcmdzWzFdLAogICAgICAgICAgICBkYXkgPSBhcmdzWzJdLAogICAgICAgICAgICBob3VyID0gYXJnc1szXSwKICAgICAgICAgICAgbWludXRlID0gYXJnc1s0XSwKICAgICAgICAgICAgc2Vjb25kID0gYXJnc1s1XSwKICAgICAgICAgICAgbWlsbGlzZWNvbmQgPSBhcmdzWzZdOwoKICAgICAgICByZXR1cm4gcXVpY2tEVCh7CiAgICAgICAgICB5ZWFyOiB5ZWFyLAogICAgICAgICAgbW9udGg6IG1vbnRoLAogICAgICAgICAgZGF5OiBkYXksCiAgICAgICAgICBob3VyOiBob3VyLAogICAgICAgICAgbWludXRlOiBtaW51dGUsCiAgICAgICAgICBzZWNvbmQ6IHNlY29uZCwKICAgICAgICAgIG1pbGxpc2Vjb25kOiBtaWxsaXNlY29uZAogICAgICAgIH0sIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBpbiBVVEMKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgdXRjKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGgKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtob3VyPTBdIC0gVGhlIGhvdXIgb2YgdGhlIGRheSwgaW4gMjQtaG91ciB0aW1lCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2Vjb25kPTBdIC0gVGhlIHNlY29uZCBvZiB0aGUgbWludXRlLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTkKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFttaWxsaXNlY29uZD0wXSAtIFRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgOTk5CiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFoKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDBaCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFoKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCB7IGxvY2FsZTogImZyIiB9KSAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBaIHdpdGggYSBGcmVuY2ggbG9jYWxlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFoKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS51dGMgPSBmdW5jdGlvbiB1dGMoKSB7CiAgICAgICAgdmFyIF9sYXN0T3B0czIgPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgICAgICBvcHRzID0gX2xhc3RPcHRzMlswXSwKICAgICAgICAgICAgYXJncyA9IF9sYXN0T3B0czJbMV0sCiAgICAgICAgICAgIHllYXIgPSBhcmdzWzBdLAogICAgICAgICAgICBtb250aCA9IGFyZ3NbMV0sCiAgICAgICAgICAgIGRheSA9IGFyZ3NbMl0sCiAgICAgICAgICAgIGhvdXIgPSBhcmdzWzNdLAogICAgICAgICAgICBtaW51dGUgPSBhcmdzWzRdLAogICAgICAgICAgICBzZWNvbmQgPSBhcmdzWzVdLAogICAgICAgICAgICBtaWxsaXNlY29uZCA9IGFyZ3NbNl07CgogICAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgICByZXR1cm4gcXVpY2tEVCh7CiAgICAgICAgICB5ZWFyOiB5ZWFyLAogICAgICAgICAgbW9udGg6IG1vbnRoLAogICAgICAgICAgZGF5OiBkYXksCiAgICAgICAgICBob3VyOiBob3VyLAogICAgICAgICAgbWludXRlOiBtaW51dGUsCiAgICAgICAgICBzZWNvbmQ6IHNlY29uZCwKICAgICAgICAgIG1pbGxpc2Vjb25kOiBtaWxsaXNlY29uZAogICAgICAgIH0sIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICAgKiBAcGFyYW0ge0RhdGV9IGRhdGUgLSBhIEphdmFTY3JpcHQgRGF0ZSBvYmplY3QKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tSlNEYXRlID0gZnVuY3Rpb24gZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zKSB7CiAgICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIHRzID0gaXNEYXRlKGRhdGUpID8gZGF0ZS52YWx1ZU9mKCkgOiBOYU47CgogICAgICAgIGlmIChOdW1iZXIuaXNOYU4odHMpKSB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CgogICAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lVG9Vc2UpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHRzLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRpb25zKQogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggKG1lYW5pbmcgc2luY2UgMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICAgKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAgVVRDCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuZnJvbU1pbGxpcyA9IGZ1bmN0aW9uIGZyb21NaWxsaXMobWlsbGlzZWNvbmRzLCBvcHRpb25zKSB7CiAgICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc051bWJlcihtaWxsaXNlY29uZHMpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoImZyb21NaWxsaXMgcmVxdWlyZXMgYSBudW1lcmljYWwgaW5wdXQsIGJ1dCByZWNlaXZlZCBhICIgKyB0eXBlb2YgbWlsbGlzZWNvbmRzICsgIiB3aXRoIHZhbHVlICIgKyBtaWxsaXNlY29uZHMpOwogICAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgICAvLyB0aGlzIGlzbid0IHBlcmZlY3QgYmVjYXVzZSBiZWNhdXNlIHdlIGNhbiBzdGlsbCBlbmQgdXAgb3V0IG9mIHJhbmdlIGJlY2F1c2Ugb2YgYWRkaXRpb25hbCBzaGlmdGluZywgYnV0IGl0J3MgYSBzdGFydAogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoIlRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7CiAgICAgICAgICAgIHRzOiBtaWxsaXNlY29uZHMsCiAgICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucykKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21TZWNvbmRzID0gZnVuY3Rpb24gZnJvbVNlY29uZHMoc2Vjb25kcywgb3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNOdW1iZXIoc2Vjb25kcykpIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigiZnJvbVNlY29uZHMgcmVxdWlyZXMgYSBudW1lcmljYWwgaW5wdXQiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7CiAgICAgICAgICAgIHRzOiBzZWNvbmRzICogMTAwMCwKICAgICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRpb25zKQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXInIGFuZCAnaG91cicgd2l0aCByZWFzb25hYmxlIGRlZmF1bHRzLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFyIC0gYSB5ZWFyLCBzdWNoIGFzIDE5ODcKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aCAtIGEgbW9udGgsIDEtMTIKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5vcmRpbmFsIC0gZGF5IG9mIHRoZSB5ZWFyLCAxLTM2NSBvciAzNjYKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrWWVhciAtIGFuIElTTyB3ZWVrIHllYXIKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrZGF5IC0gYW4gSVNPIHdlZWtkYXksIDEtNywgd2hlcmUgMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91ciAtIGhvdXIgb2YgdGhlIGRheSwgMC0yMwogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZCAtIHNlY29uZCBvZiB0aGUgbWludXRlLCAwLTU5CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmQgLSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCAwLTk5OQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGludGVycHJldCB0aGUgbnVtYmVycyBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgem9uZS4gQ2FuIHRha2UgYW55IHZhbHVlIHRha2VuIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzZXRab25lKCkKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIsIG1vbnRoOiA1LCBkYXk6IDI1fSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSkgLy9+PiB0b2RheSBhdCAxMDoyNjowNgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICd1dGMnIH0pLAogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnQW1lcmljYS9OZXdfWW9yaycgfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHdlZWtZZWFyOiAyMDE2LCB3ZWVrTnVtYmVyOiAyLCB3ZWVrZGF5OiAzIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzIwMTYtMDEtMTMnCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuZnJvbU9iamVjdCA9IGZ1bmN0aW9uIGZyb21PYmplY3Qob2JqLCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgb2JqID0gb2JqIHx8IHt9OwogICAgICAgIHZhciB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdHMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwoKICAgICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgICAgfQoKICAgICAgICB2YXIgdHNOb3cgPSBTZXR0aW5ncy5ub3coKSwKICAgICAgICAgICAgb2Zmc2V0UHJvdmlzID0gem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3Qob2JqLCBub3JtYWxpemVVbml0KSwKICAgICAgICAgICAgY29udGFpbnNPcmRpbmFsID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCksCiAgICAgICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgICAgIGNvbnRhaW5zR3JlZ29yID0gY29udGFpbnNHcmVnb3JZZWFyIHx8IGNvbnRhaW5zR3JlZ29yTUQsCiAgICAgICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgICAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKTsgLy8gY2FzZXM6CiAgICAgICAgLy8ganVzdCBhIHdlZWtkYXkgLT4gdGhpcyB3ZWVrJ3MgaW5zdGFuY2Ugb2YgdGhhdCB3ZWVrZGF5LCBubyB3b3JyaWVzCiAgICAgICAgLy8gKGdyZWdvcmlhbiBkYXRhIG9yIG9yZGluYWwpICsgKHdlZWtZZWFyIG9yIHdlZWtOdW1iZXIpIC0+IGVycm9yCiAgICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAgIC8vIG90aGVyd2lzZSBqdXN0IHVzZSB3ZWVrcyBvciBvcmRpbmFscyBvciBncmVnb3JpYW4sIGRlcGVuZGluZyBvbiB3aGF0J3Mgc3BlY2lmaWVkCgogICAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgICAgfQoKICAgICAgICB2YXIgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgbm9ybWFsaXplZC53ZWVrZGF5ICYmICFjb250YWluc0dyZWdvcjsgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKCiAgICAgICAgdmFyIHVuaXRzLAogICAgICAgICAgICBkZWZhdWx0VmFsdWVzLAogICAgICAgICAgICBvYmpOb3cgPSB0c1RvT2JqKHRzTm93LCBvZmZzZXRQcm92aXMpOwoKICAgICAgICBpZiAodXNlV2Vla0RhdGEpIHsKICAgICAgICAgIHVuaXRzID0gb3JkZXJlZFdlZWtVbml0czsKICAgICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgICBvYmpOb3cgPSBncmVnb3JpYW5Ub1dlZWsob2JqTm93KTsKICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRPcmRpbmFsVW5pdFZhbHVlczsKICAgICAgICAgIG9iak5vdyA9IGdyZWdvcmlhblRvT3JkaW5hbChvYmpOb3cpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB1bml0cyA9IG9yZGVyZWRVbml0czsKICAgICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0VW5pdFZhbHVlczsKICAgICAgICB9IC8vIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBzdHVmZgoKCiAgICAgICAgdmFyIGZvdW5kRmlyc3QgPSBmYWxzZTsKCiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyTG9vc2UodW5pdHMpLCBfc3RlcDM7ICEoX3N0ZXAzID0gX2l0ZXJhdG9yMygpKS5kb25lOykgewogICAgICAgICAgdmFyIHUgPSBfc3RlcDMudmFsdWU7CiAgICAgICAgICB2YXIgdiA9IG5vcm1hbGl6ZWRbdV07CgogICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgICBmb3VuZEZpcnN0ID0gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRGaXJzdCkgewogICAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5vcm1hbGl6ZWRbdV0gPSBvYmpOb3dbdV07CiAgICAgICAgICB9CiAgICAgICAgfSAvLyBtYWtlIHN1cmUgdGhlIHZhbHVlcyB3ZSBoYXZlIGFyZSBpbiByYW5nZQoKCiAgICAgICAgdmFyIGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhID8gaGFzSW52YWxpZFdlZWtEYXRhKG5vcm1hbGl6ZWQpIDogY29udGFpbnNPcmRpbmFsID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpIDogaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEobm9ybWFsaXplZCksCiAgICAgICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgICBpZiAoaW52YWxpZCkgewogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgICAgfSAvLyBjb21wdXRlIHRoZSBhY3R1YWwgdGltZQoKCiAgICAgICAgdmFyIGdyZWdvcmlhbiA9IHVzZVdlZWtEYXRhID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpIDogY29udGFpbnNPcmRpbmFsID8gb3JkaW5hbFRvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpIDogbm9ybWFsaXplZCwKICAgICAgICAgICAgX29ialRvVFMyID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICAgICAgdHNGaW5hbCA9IF9vYmpUb1RTMlswXSwKICAgICAgICAgICAgb2Zmc2V0RmluYWwgPSBfb2JqVG9UUzJbMV0sCiAgICAgICAgICAgIGluc3QgPSBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHRzRmluYWwsCiAgICAgICAgICB6b25lOiB6b25lVG9Vc2UsCiAgICAgICAgICBvOiBvZmZzZXRGaW5hbCwKICAgICAgICAgIGxvYzogbG9jCiAgICAgICAgfSk7IC8vIGdyZWdvcmlhbiBkYXRhICsgd2Vla2RheSBzZXJ2ZXMgb25seSB0byB2YWxpZGF0ZQoKCiAgICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgibWlzbWF0Y2hlZCB3ZWVrZGF5IiwgInlvdSBjYW4ndCBzcGVjaWZ5IGJvdGggYSB3ZWVrZGF5IG9mICIgKyBub3JtYWxpemVkLndlZWtkYXkgKyAiIGFuZCBhIGRhdGUgb2YgIiArIGluc3QudG9JU08oKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW5zdDsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBJU08gODYwMSBzdHJpbmcKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmUKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMrMDY6MDAnKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnLCB7em9uZTogJ3V0Yyd9KQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LVcwNS00JykKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tSVNPID0gZnVuY3Rpb24gZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9wYXJzZUlTT0RhdGUgPSBwYXJzZUlTT0RhdGUodGV4dCksCiAgICAgICAgICAgIHZhbHMgPSBfcGFyc2VJU09EYXRlWzBdLAogICAgICAgICAgICBwYXJzZWRab25lID0gX3BhcnNlSVNPRGF0ZVsxXTsKCiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIklTTyA4NjAxIiwgdGV4dCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gUkZDIDI4MjIgc3RyaW5nCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmUuIFNpbmNlIHRoZSBvZmZzZXQgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi4KICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzOjEyIEdNVCcpCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCdGcmksIDI1IE5vdiAyMDE2IDEzOjIzOjEyICswNjAwJykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21SRkMyODIyID0gZnVuY3Rpb24gZnJvbVJGQzI4MjIodGV4dCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHZhciBfcGFyc2VSRkMyODIyRGF0ZSA9IHBhcnNlUkZDMjgyMkRhdGUodGV4dCksCiAgICAgICAgICAgIHZhbHMgPSBfcGFyc2VSRkMyODIyRGF0ZVswXSwKICAgICAgICAgICAgcGFyc2VkWm9uZSA9IF9wYXJzZVJGQzI4MjJEYXRlWzFdOwoKICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiUkZDIDI4MjIiLCB0ZXh0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBIVFRQIGhlYWRlciBkYXRlCiAgICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIEhUVFAgaGVhZGVyIGRhdGUKICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCB0aGUgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcuIEZvciBIVFRQIGRhdGVzLCB0aGlzIGlzIGFsd2F5cyBVVEMsIHNvIHRoaXMgb3B0aW9uIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGUgYHpvbmVgIG9wdGlvbiB0byAndXRjJywgYnV0IHRoaXMgb3B0aW9uIGlzIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHNpbWlsYXIgbWV0aG9kcy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UJykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQnKQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21IVFRQID0gZnVuY3Rpb24gZnJvbUhUVFAodGV4dCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHZhciBfcGFyc2VIVFRQRGF0ZSA9IHBhcnNlSFRUUERhdGUodGV4dCksCiAgICAgICAgICAgIHZhbHMgPSBfcGFyc2VIVFRQRGF0ZVswXSwKICAgICAgICAgICAgcGFyc2VkWm9uZSA9IF9wYXJzZUhUVFBEYXRlWzFdOwoKICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiSFRUUCIsIG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLiBGb3IgYSB0YWJsZSBvZiB0b2tlbnMgYW5kIHRoZWlyIGludGVycHJldGF0aW9ucywgc2VlIFtoZXJlXShodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9wYXJzaW5nP2lkPXRhYmxlLW9mLXRva2VucykuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21Gb3JtYXQgPSBmdW5jdGlvbiBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoImZyb21Gb3JtYXQgcmVxdWlyZXMgYW4gaW5wdXQgc3RyaW5nIGFuZCBhIGZvcm1hdCIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcHRzID0gb3B0cywKICAgICAgICAgICAgX29wdHMkbG9jYWxlID0gX29wdHMubG9jYWxlLAogICAgICAgICAgICBsb2NhbGUgPSBfb3B0cyRsb2NhbGUgPT09IHZvaWQgMCA/IG51bGwgOiBfb3B0cyRsb2NhbGUsCiAgICAgICAgICAgIF9vcHRzJG51bWJlcmluZ1N5c3RlbSA9IF9vcHRzLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX29wdHMkbnVtYmVyaW5nU3lzdGVtID09PSB2b2lkIDAgPyBudWxsIDogX29wdHMkbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgZGVmYXVsdFRvRU46IHRydWUKICAgICAgICB9KSwKICAgICAgICAgICAgX3BhcnNlRnJvbVRva2VucyA9IHBhcnNlRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KSwKICAgICAgICAgICAgdmFscyA9IF9wYXJzZUZyb21Ub2tlbnNbMF0sCiAgICAgICAgICAgIHBhcnNlZFpvbmUgPSBfcGFyc2VGcm9tVG9rZW5zWzFdLAogICAgICAgICAgICBpbnZhbGlkID0gX3BhcnNlRnJvbVRva2Vuc1syXTsKCiAgICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiZm9ybWF0ICIgKyBmbXQsIHRleHQpOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXQgaW5zdGVhZAogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIFNRTCBkYXRlLCB0aW1lLCBvciBkYXRldGltZQogICAgICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gYSBsb2NhbGUgc3RyaW5nIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIERhdGVUaW1lIHRvIHRoaXMgbG9jYWxlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUnKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0JykKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiswNjowMCcpCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyIEFtZXJpY2EvTG9zX0FuZ2VsZXMnKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJywgeyB6b25lOiAnQW1lcmljYS9Mb3NfQW5nZWxlcycgfSkKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMDk6MTI6MzQuMzQyJykKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tU1FMID0gZnVuY3Rpb24gZnJvbVNRTCh0ZXh0LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9wYXJzZVNRTCA9IHBhcnNlU1FMKHRleHQpLAogICAgICAgICAgICB2YWxzID0gX3BhcnNlU1FMWzBdLAogICAgICAgICAgICBwYXJzZWRab25lID0gX3BhcnNlU1FMWzFdOwoKICAgICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCAiU1FMIiwgdGV4dCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENyZWF0ZSBhbiBpbnZhbGlkIERhdGVUaW1lLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5pbnZhbGlkID0gZnVuY3Rpb24gaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgICAgaWYgKGV4cGxhbmF0aW9uID09PSB2b2lkIDApIHsKICAgICAgICAgIGV4cGxhbmF0aW9uID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRGF0ZVRpbWUgaXMgaW52YWxpZCIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWREYXRlVGltZUVycm9yKGludmFsaWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICAgICAgaW52YWxpZDogaW52YWxpZAogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEYXRlVGltZS4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgRGF0ZVRpbWUuaXNEYXRlVGltZSA9IGZ1bmN0aW9uIGlzRGF0ZVRpbWUobykgewogICAgICAgIHJldHVybiBvICYmIG8uaXNMdXhvbkRhdGVUaW1lIHx8IGZhbHNlOwogICAgICB9IC8vIElORk8KCiAgICAgIC8qKgogICAgICAgKiBHZXQgdGhlIHZhbHVlIG9mIHVuaXQuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZScgb3IgJ2RheScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdkYXknKTsgLy89PiA0CiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIHZhciBfcHJvdG8gPSBEYXRlVGltZS5wcm90b3R5cGU7CgogICAgICBfcHJvdG8uZ2V0ID0gZnVuY3Rpb24gZ2V0KHVuaXQpIHsKICAgICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEYXRlVGltZSBpcyB2YWxpZC4gSW52YWxpZCBEYXRlVGltZXMgb2NjdXIgd2hlbjoKICAgICAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgZnJvbSBpbnZhbGlkIGNhbGVuZGFyIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSAxM3RoIG1vbnRoIG9yIEZlYnJ1YXJ5IDMwCiAgICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIFRoaXMgaXMgdXNlZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIGZvcm1hdHRpbmcgbWV0aG9kcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmcKICAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAgKi8KICAgICAgX3Byb3RvLnJlc29sdmVkTG9jYWxlT3B0aW9ucyA9IGZ1bmN0aW9uIHJlc29sdmVkTG9jYWxlT3B0aW9ucyhvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9Gb3JtYXR0ZXIkY3JlYXRlJHJlcyA9IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIG9wdHMpLnJlc29sdmVkT3B0aW9ucyh0aGlzKSwKICAgICAgICAgICAgbG9jYWxlID0gX0Zvcm1hdHRlciRjcmVhdGUkcmVzLmxvY2FsZSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX0Zvcm1hdHRlciRjcmVhdGUkcmVzLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgY2FsZW5kYXIgPSBfRm9ybWF0dGVyJGNyZWF0ZSRyZXMuY2FsZW5kYXI7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgb3V0cHV0Q2FsZW5kYXI6IGNhbGVuZGFyCiAgICAgICAgfTsKICAgICAgfSAvLyBUUkFOU0ZPUk0KCiAgICAgIC8qKgogICAgICAgKiAiU2V0IiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIFVUQy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICAgKgogICAgICAgKiBFcXVpdmFsZW50IHRvIHtAbGluayBEYXRlVGltZS5zZXRab25lfSgndXRjJykKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtvZmZzZXQ9MF0gLSBvcHRpb25hbGx5LCBhbiBvZmZzZXQgZnJvbSBVVEMgaW4gbWludXRlcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvVVRDID0gZnVuY3Rpb24gdG9VVEMob2Zmc2V0LCBvcHRzKSB7CiAgICAgICAgaWYgKG9mZnNldCA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvZmZzZXQgPSAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Wm9uZShGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2Uob2Zmc2V0KSwgb3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gdGhlIGhvc3QncyBsb2NhbCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgICAqCiAgICAgICAqIEVxdWl2YWxlbnQgdG8gYHNldFpvbmUoJ2xvY2FsJylgCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvTG9jYWwgPSBmdW5jdGlvbiB0b0xvY2FsKCkgewogICAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiAiU2V0IiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIHNwZWNpZmllZCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgICAqCiAgICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lLnBsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZS50b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lLnRvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBhIHpvbmUgaWRlbnRpZmllci4gQXMgYSBzdHJpbmcsIHRoYXQgY2FuIGJlIGFueSBJQU5BIHpvbmUgc3VwcG9ydGVkIGJ5IHRoZSBob3N0IGVudmlyb25tZW50LCBvciBhIGZpeGVkLW9mZnNldCBuYW1lIG9mIHRoZSBmb3JtICdVVEMrMycsIG9yIHRoZSBzdHJpbmdzICdsb2NhbCcgb3IgJ3V0YycuIFlvdSBtYXkgYWxzbyBzdXBwbHkgYW4gaW5zdGFuY2Ugb2YgYSB7QGxpbmsgRGF0ZVRpbWUuWm9uZX0gY2xhc3MuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5zZXRab25lID0gZnVuY3Rpb24gc2V0Wm9uZSh6b25lLCBfdGVtcCkgewogICAgICAgIHZhciBfcmVmMyA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wLAogICAgICAgICAgICBfcmVmMyRrZWVwTG9jYWxUaW1lID0gX3JlZjMua2VlcExvY2FsVGltZSwKICAgICAgICAgICAga2VlcExvY2FsVGltZSA9IF9yZWYzJGtlZXBMb2NhbFRpbWUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjMka2VlcExvY2FsVGltZSwKICAgICAgICAgICAgX3JlZjMka2VlcENhbGVuZGFyVGltID0gX3JlZjMua2VlcENhbGVuZGFyVGltZSwKICAgICAgICAgICAga2VlcENhbGVuZGFyVGltZSA9IF9yZWYzJGtlZXBDYWxlbmRhclRpbSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmMyRrZWVwQ2FsZW5kYXJUaW07CgogICAgICAgIHpvbmUgPSBub3JtYWxpemVab25lKHpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTsKCiAgICAgICAgaWYgKHpvbmUuZXF1YWxzKHRoaXMuem9uZSkpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0gZWxzZSBpZiAoIXpvbmUuaXNWYWxpZCkgewogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmUpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIG5ld1RTID0gdGhpcy50czsKCiAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSB8fCBrZWVwQ2FsZW5kYXJUaW1lKSB7CiAgICAgICAgICAgIHZhciBvZmZzZXRHdWVzcyA9IHpvbmUub2Zmc2V0KHRoaXMudHMpOwogICAgICAgICAgICB2YXIgYXNPYmogPSB0aGlzLnRvT2JqZWN0KCk7CgogICAgICAgICAgICB2YXIgX29ialRvVFMzID0gb2JqVG9UUyhhc09iaiwgb2Zmc2V0R3Vlc3MsIHpvbmUpOwoKICAgICAgICAgICAgbmV3VFMgPSBfb2JqVG9UUzNbMF07CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsKICAgICAgICAgICAgdHM6IG5ld1RTLAogICAgICAgICAgICB6b25lOiB6b25lCiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3Igb3V0cHV0Q2FsZW5kYXIuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXQKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnJlY29uZmlndXJlID0gZnVuY3Rpb24gcmVjb25maWd1cmUoX3RlbXAyKSB7CiAgICAgICAgdmFyIF9yZWY0ID0gX3RlbXAyID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMiwKICAgICAgICAgICAgbG9jYWxlID0gX3JlZjQubG9jYWxlLAogICAgICAgICAgICBudW1iZXJpbmdTeXN0ZW0gPSBfcmVmNC5udW1iZXJpbmdTeXN0ZW0sCiAgICAgICAgICAgIG91dHB1dENhbGVuZGFyID0gX3JlZjQub3V0cHV0Q2FsZW5kYXI7CgogICAgICAgIHZhciBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgb3V0cHV0Q2FsZW5kYXI6IG91dHB1dENhbGVuZGFyCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsKICAgICAgICAgIGxvYzogbG9jCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSBsb2NhbGUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAgICogSnVzdCBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIHJlY29uZmlndXJlKHsgbG9jYWxlIH0pCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uc2V0TG9jYWxlID0gZnVuY3Rpb24gc2V0TG9jYWxlKGxvY2FsZSkgewogICAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsKICAgICAgICAgIGxvY2FsZTogbG9jYWxlCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZS5yZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZS5zZXRab25lfS4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGEgbWFwcGluZyBvZiB1bml0cyB0byBudW1iZXJzCiAgICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMTcgfSkKICAgICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICAgKiBAZXhhbXBsZSBkdC5zZXQoeyB3ZWVrZGF5OiA1IH0pCiAgICAgICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMDUsIG9yZGluYWw6IDIzNCB9KQogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5zZXQgPSBmdW5jdGlvbiBzZXQodmFsdWVzKSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla051bWJlcikgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksCiAgICAgICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLAogICAgICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgICB9CgogICAgICAgIHZhciBtaXhlZDsKCiAgICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICAgIG1peGVkID0gd2Vla1RvR3JlZ29yaWFuKF9leHRlbmRzKHt9LCBncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgbm9ybWFsaXplZCkpOwogICAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCkpIHsKICAgICAgICAgIG1peGVkID0gb3JkaW5hbFRvR3JlZ29yaWFuKF9leHRlbmRzKHt9LCBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgbm9ybWFsaXplZCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBtaXhlZCA9IF9leHRlbmRzKHt9LCB0aGlzLnRvT2JqZWN0KCksIG5vcm1hbGl6ZWQpOyAvLyBpZiB3ZSBkaWRuJ3Qgc2V0IHRoZSBkYXkgYnV0IHdlIGVuZGVkIHVwIG9uIGFuIG92ZXJmbG93IGRhdGUsCiAgICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAoKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgICAgbWl4ZWQuZGF5ID0gTWF0aC5taW4oZGF5c0luTW9udGgobWl4ZWQueWVhciwgbWl4ZWQubW9udGgpLCBtaXhlZC5kYXkpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIF9vYmpUb1RTNCA9IG9ialRvVFMobWl4ZWQsIHRoaXMubywgdGhpcy56b25lKSwKICAgICAgICAgICAgdHMgPSBfb2JqVG9UUzRbMF0sCiAgICAgICAgICAgIG8gPSBfb2JqVG9UUzRbMV07CgogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7CiAgICAgICAgICB0czogdHMsCiAgICAgICAgICBvOiBvCiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgICAqCiAgICAgICAqIEFkZGluZyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzIGluY3JlYXNlcyB0aGUgdGltZXN0YW1wIGJ5IHRoZSByaWdodCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLiBBZGRpbmcgZGF5cywgbW9udGhzLCBvciB5ZWFycyBzaGlmdHMgdGhlIGNhbGVuZGFyLCBhY2NvdW50aW5nIGZvciBEU1RzIGFuZCBsZWFwIHllYXJzIGFsb25nIHRoZSB3YXkuIFRodXMsIGBkdC5wbHVzKHsgaG91cnM6IDI0IH0pYCBtYXkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHRpbWUgdGhhbiBgZHQucGx1cyh7IGRheXM6IDEgfSlgIGlmIHRoZXJlJ3MgYSBEU1Qgc2hpZnQgaW4gYmV0d2Vlbi4KICAgICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBtaW51dGVzOiAxNSB9KSAvL34+IGluIDE1IG1pbnV0ZXMKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3cKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pIC8vfj4gaW4gMyBociwgMTMgbWluCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW4KICAgICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8ucGx1cyA9IGZ1bmN0aW9uIHBsdXMoZHVyYXRpb24pIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIGR1ciA9IGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb24pOwogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUucGx1c30KICAgICAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLm1pbnVzID0gZnVuY3Rpb24gbWludXMoZHVyYXRpb24pIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIGR1ciA9IGZyaWVuZGx5RHVyYXRpb24oZHVyYXRpb24pLm5lZ2F0ZSgpOwogICAgICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gVGhlIHVuaXQgdG8gZ28gdG8gdGhlIGJlZ2lubmluZyBvZi4gQ2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgb3IgJ21pbGxpc2Vjb25kJy4KICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCd3ZWVrJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDMtMDMnLCB3ZWVrcyBhbHdheXMgc3RhcnQgb24gTW9uZGF5cwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5zdGFydE9mID0gZnVuY3Rpb24gc3RhcnRPZih1bml0KSB7CiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICAgIHZhciBvID0ge30sCiAgICAgICAgICAgIG5vcm1hbGl6ZWRVbml0ID0gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1bml0KTsKCiAgICAgICAgc3dpdGNoIChub3JtYWxpemVkVW5pdCkgewogICAgICAgICAgY2FzZSAieWVhcnMiOgogICAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAgIC8vIGZhbGxzIHRocm91Z2gKCiAgICAgICAgICBjYXNlICJxdWFydGVycyI6CiAgICAgICAgICBjYXNlICJtb250aHMiOgogICAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgY2FzZSAid2Vla3MiOgogICAgICAgICAgY2FzZSAiZGF5cyI6CiAgICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgY2FzZSAiaG91cnMiOgogICAgICAgICAgICBvLm1pbnV0ZSA9IDA7CiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCgogICAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICAgIG8uc2Vjb25kID0gMDsKICAgICAgICAgIC8vIGZhbGxzIHRocm91Z2gKCiAgICAgICAgICBjYXNlICJzZWNvbmRzIjoKICAgICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KCkKICAgICAgICB9CgogICAgICAgIGlmIChub3JtYWxpemVkVW5pdCA9PT0gIndlZWtzIikgewogICAgICAgICAgby53ZWVrZGF5ID0gMTsKICAgICAgICB9CgogICAgICAgIGlmIChub3JtYWxpemVkVW5pdCA9PT0gInF1YXJ0ZXJzIikgewogICAgICAgICAgdmFyIHEgPSBNYXRoLmNlaWwodGhpcy5tb250aCAvIDMpOwogICAgICAgICAgby5tb250aCA9IChxIC0gMSkgKiAzICsgMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLnNldChvKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogIlNldCIgdGhpcyBEYXRlVGltZSB0byB0aGUgZW5kIChtZWFuaW5nIHRoZSBsYXN0IG1pbGxpc2Vjb25kKSBvZiBhIHVuaXQgb2YgdGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCdtb250aCcpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMzFUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZigneWVhcicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMTItMzFUMjM6NTk6NTkuOTk5LTA1OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdkYXknKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdob3VyJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QwNTo1OTo1OS45OTktMDU6MDAnCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVuZE9mID0gZnVuY3Rpb24gZW5kT2YodW5pdCkgewogICAgICAgIHZhciBfdGhpcyRwbHVzOwoKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5wbHVzKChfdGhpcyRwbHVzID0ge30sIF90aGlzJHBsdXNbdW5pdF0gPSAxLCBfdGhpcyRwbHVzKSkuc3RhcnRPZih1bml0KS5taW51cygxKSA6IHRoaXM7CiAgICAgIH0gLy8gT1VUUFVUCgogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLgogICAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGUuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcpIC8vPT4gJzIwMTcgQXByIDIyJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCJISCAnaG91cnMgYW5kJyBtbSAnbWludXRlcyciKSAvLz0+ICcyMCBob3VycyBhbmQgNTUgbWludXRlcycKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvRm9ybWF0ID0gZnVuY3Rpb24gdG9Gb3JtYXQoZm10LCBvcHRzKSB7CiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkgOiBJTlZBTElEOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAgICogVGhlIGV4YWN0IGJlaGF2aW9yIG9mIHRoaXMgbWV0aG9kIGlzIGJyb3dzZXItc3BlY2lmaWMsIGJ1dCBpbiBnZW5lcmFsIGl0IHdpbGwgcmV0dXJuIGFuIGFwcHJvcHJpYXRlIHJlcHJlc2VudGF0aW9uCiAgICAgICAqIG9mIHRoZSBEYXRlVGltZSBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLgogICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICAgKiBAcGFyYW0gZm9ybWF0T3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiA0LzIwLzIwMTcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdlbi1nYicpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gJzIwLzA0LzIwMTcnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgbG9jYWxlOiAnZW4tZ2InIH0pOyAvLz0+ICcyMC8wNC8yMDE3JwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwpOyAvLz0+ICdBcHJpbCAyMCwgMjAxNycKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+ICcxMTozMiBBTScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURVRJTUVfU0hPUlQpOyAvLz0+ICc0LzIwLzIwMTcsIDExOjMyIEFNJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodSwgQXByIDIwLCAxMToyNyBBTScKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBob3VyQ3ljbGU6ICdoMjMnIH0pOyAvLz0+ICcxMTozMicKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvTG9jYWxlU3RyaW5nID0gZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoZm9ybWF0T3B0cywgb3B0cykgewogICAgICAgIGlmIChmb3JtYXRPcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIGZvcm1hdE9wdHMgPSBEQVRFX1NIT1JUOwogICAgICAgIH0KCiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpIDogSU5WQUxJRDsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdC9mb3JtYXRUb1BhcnRzCiAgICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlUGFydHMoKTsgLy89PiBbCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnZGF5JywgdmFsdWU6ICcyNScgfSwKICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ21vbnRoJywgdmFsdWU6ICcwNScgfSwKICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gXQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvTG9jYWxlUGFydHMgPSBmdW5jdGlvbiB0b0xvY2FsZVBhcnRzKG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKSA6IFtdOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUtMDQ6MDAnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSVNPID0gZnVuY3Rpb24gdG9JU08ob3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLnRvSVNPRGF0ZShvcHRzKSArICJUIiArIHRoaXMudG9JU09UaW1lKG9wdHMpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIGRhdGUgY29tcG9uZW50CiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxOTgyMDUyNScKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvSVNPRGF0ZSA9IGZ1bmN0aW9uIHRvSVNPRGF0ZShfdGVtcDMpIHsKICAgICAgICB2YXIgX3JlZjUgPSBfdGVtcDMgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAzLAogICAgICAgICAgICBfcmVmNSRmb3JtYXQgPSBfcmVmNS5mb3JtYXQsCiAgICAgICAgICAgIGZvcm1hdCA9IF9yZWY1JGZvcm1hdCA9PT0gdm9pZCAwID8gImV4dGVuZGVkIiA6IF9yZWY1JGZvcm1hdDsKCiAgICAgICAgdmFyIGZtdCA9IGZvcm1hdCA9PT0gImJhc2ljIiA/ICJ5eXl5TU1kZCIgOiAieXl5eS1NTS1kZCI7CgogICAgICAgIGlmICh0aGlzLnllYXIgPiA5OTk5KSB7CiAgICAgICAgICBmbXQgPSAiKyIgKyBmbXQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIGZtdCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3Mgd2VlayBkYXRlCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b0lTT1dlZWtEYXRlID0gZnVuY3Rpb24gdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsICJra2trLSdXJ1dXLWMiKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB0aW1lIGNvbXBvbmVudAogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKCkgLy89PiAnMDc6MzQ6MTkuMzYxWicKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzA3MzQxOS4zNjFaJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDA3OjM0OjE5LjM2MVonCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b0lTT1RpbWUgPSBmdW5jdGlvbiB0b0lTT1RpbWUoX3RlbXA0KSB7CiAgICAgICAgdmFyIF9yZWY2ID0gX3RlbXA0ID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wNCwKICAgICAgICAgICAgX3JlZjYkc3VwcHJlc3NNaWxsaXNlID0gX3JlZjYuc3VwcHJlc3NNaWxsaXNlY29uZHMsCiAgICAgICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gX3JlZjYkc3VwcHJlc3NNaWxsaXNlID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWY2JHN1cHByZXNzTWlsbGlzZSwKICAgICAgICAgICAgX3JlZjYkc3VwcHJlc3NTZWNvbmRzID0gX3JlZjYuc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgICBzdXBwcmVzc1NlY29uZHMgPSBfcmVmNiRzdXBwcmVzc1NlY29uZHMgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjYkc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgICBfcmVmNiRpbmNsdWRlT2Zmc2V0ID0gX3JlZjYuaW5jbHVkZU9mZnNldCwKICAgICAgICAgICAgaW5jbHVkZU9mZnNldCA9IF9yZWY2JGluY2x1ZGVPZmZzZXQgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmNiRpbmNsdWRlT2Zmc2V0LAogICAgICAgICAgICBfcmVmNiRpbmNsdWRlUHJlZml4ID0gX3JlZjYuaW5jbHVkZVByZWZpeCwKICAgICAgICAgICAgaW5jbHVkZVByZWZpeCA9IF9yZWY2JGluY2x1ZGVQcmVmaXggPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjYkaW5jbHVkZVByZWZpeCwKICAgICAgICAgICAgX3JlZjYkZm9ybWF0ID0gX3JlZjYuZm9ybWF0LAogICAgICAgICAgICBmb3JtYXQgPSBfcmVmNiRmb3JtYXQgPT09IHZvaWQgMCA/ICJleHRlbmRlZCIgOiBfcmVmNiRmb3JtYXQ7CgogICAgICAgIHJldHVybiB0b1RlY2hUaW1lRm9ybWF0KHRoaXMsIHsKICAgICAgICAgIHN1cHByZXNzU2Vjb25kczogc3VwcHJlc3NTZWNvbmRzLAogICAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IHN1cHByZXNzTWlsbGlzZWNvbmRzLAogICAgICAgICAgaW5jbHVkZU9mZnNldDogaW5jbHVkZU9mZnNldCwKICAgICAgICAgIGluY2x1ZGVQcmVmaXg6IGluY2x1ZGVQcmVmaXgsCiAgICAgICAgICBmb3JtYXQ6IGZvcm1hdAogICAgICAgIH0pOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUsIGFsd2F5cyBpbiBVVEMKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwICswMDAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCAtMDQwMCcKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvUkZDMjgyMiA9IGZ1bmN0aW9uIHRvUkZDMjgyMigpIHsKICAgICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsICJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzIFpaWiIsIGZhbHNlKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLgogICAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSBzdHJpbmcgY29uZm9ybXMgdG8gUkZDIDExMjMuCiAgICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMywgMTkpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMTk6MDA6MDAgR01UJwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9IVFRQID0gZnVuY3Rpb24gdG9IVFRQKCkgewogICAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcy50b1VUQygpLCAiRUVFLCBkZCBMTEwgeXl5eSBISDptbTpzcyAnR01UJyIpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZQogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1NRTERhdGUgPSBmdW5jdGlvbiB0b1NRTERhdGUoKSB7CiAgICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAieXl5eS1NTS1kZCIpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgVGltZQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcwNToxNToxNi4zNDUnCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSBBbWVyaWNhL05ld19Zb3JrJwogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9TUUxUaW1lID0gZnVuY3Rpb24gdG9TUUxUaW1lKF90ZW1wNSkgewogICAgICAgIHZhciBfcmVmNyA9IF90ZW1wNSA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDUsCiAgICAgICAgICAgIF9yZWY3JGluY2x1ZGVPZmZzZXQgPSBfcmVmNy5pbmNsdWRlT2Zmc2V0LAogICAgICAgICAgICBpbmNsdWRlT2Zmc2V0ID0gX3JlZjckaW5jbHVkZU9mZnNldCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWY3JGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICAgIF9yZWY3JGluY2x1ZGVab25lID0gX3JlZjcuaW5jbHVkZVpvbmUsCiAgICAgICAgICAgIGluY2x1ZGVab25lID0gX3JlZjckaW5jbHVkZVpvbmUgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjckaW5jbHVkZVpvbmU7CgogICAgICAgIHJldHVybiB0b1RlY2hUaW1lRm9ybWF0KHRoaXMsIHsKICAgICAgICAgIGluY2x1ZGVPZmZzZXQ6IGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBpbmNsdWRlWm9uZTogaW5jbHVkZVpvbmUsCiAgICAgICAgICBzcGFjZVpvbmU6IHRydWUKICAgICAgICB9KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC4KICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgWicKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IHRydWUgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgQW1lcmljYS9OZXdfWW9yaycKICAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvU1FMID0gZnVuY3Rpb24gdG9TUUwob3B0cykgewogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLnRvU1FMRGF0ZSgpICsgIiAiICsgdGhpcy50b1NRTFRpbWUob3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS4gQWxpYXMgb2Yge0BsaW5rIERhdGVUaW1lLnRvTWlsbGlzfQogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udmFsdWVPZiA9IGZ1bmN0aW9uIHZhbHVlT2YoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b01pbGxpcyA9IGZ1bmN0aW9uIHRvTWlsbGlzKCkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1NlY29uZHMgPSBmdW5jdGlvbiB0b1NlY29uZHMoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLgogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkgewogICAgICAgIHJldHVybiB0aGlzLnRvSVNPKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge0RhdGV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9CU09OID0gZnVuY3Rpb24gdG9CU09OKCkgewogICAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRGF0ZVRpbWUncyB5ZWFyLCBtb250aCwgZGF5LCBhbmQgc28gb24uCiAgICAgICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0CiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvT2JqZWN0KCkgLy89PiB7IHllYXI6IDIwMTcsIG1vbnRoOiA0LCBkYXk6IDIyLCBob3VyOiAyMCwgbWludXRlOiA0OSwgc2Vjb25kOiA0MiwgbWlsbGlzZWNvbmQ6IDI2OCB9CiAgICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b09iamVjdCA9IGZ1bmN0aW9uIHRvT2JqZWN0KG9wdHMpIHsKICAgICAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRzID0ge307CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHt9OwoKICAgICAgICB2YXIgYmFzZSA9IF9leHRlbmRzKHt9LCB0aGlzLmMpOwoKICAgICAgICBpZiAob3B0cy5pbmNsdWRlQ29uZmlnKSB7CiAgICAgICAgICBiYXNlLm91dHB1dENhbGVuZGFyID0gdGhpcy5vdXRwdXRDYWxlbmRhcjsKICAgICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgICAgYmFzZS5sb2NhbGUgPSB0aGlzLmxvYy5sb2NhbGU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYmFzZTsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgICAqIEByZXR1cm4ge0RhdGV9CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8udG9KU0RhdGUgPSBmdW5jdGlvbiB0b0pTRGF0ZSgpIHsKICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTik7CiAgICAgIH0gLy8gQ09NUEFSRQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBEYXRlVGltZSB0byBjb21wYXJlIHRoaXMgb25lIHRvCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgICAqIEBleGFtcGxlCiAgICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAgICogICAgIGkyID0gRGF0ZVRpbWUuZnJvbUlTTygnMTk4My0xMC0xNFQxMDozMCcpOwogICAgICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH0KICAgICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOS4wMzEyNSB9CiAgICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH0KICAgICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgICAqLwogICAgICA7CgogICAgICBfcHJvdG8uZGlmZiA9IGZ1bmN0aW9uIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCwgb3B0cykgewogICAgICAgIGlmICh1bml0ID09PSB2b2lkIDApIHsKICAgICAgICAgIHVuaXQgPSAibWlsbGlzZWNvbmRzIjsKICAgICAgICB9CgogICAgICAgIGlmIChvcHRzID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdHMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlckRhdGVUaW1lLmlzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGR1ck9wdHMgPSBfZXh0ZW5kcyh7CiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgICAgbnVtYmVyaW5nU3lzdGVtOiB0aGlzLm51bWJlcmluZ1N5c3RlbQogICAgICAgIH0sIG9wdHMpOwoKICAgICAgICB2YXIgdW5pdHMgPSBtYXliZUFycmF5KHVuaXQpLm1hcChEdXJhdGlvbi5ub3JtYWxpemVVbml0KSwKICAgICAgICAgICAgb3RoZXJJc0xhdGVyID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCkgPiB0aGlzLnZhbHVlT2YoKSwKICAgICAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgICAgICBsYXRlciA9IG90aGVySXNMYXRlciA/IG90aGVyRGF0ZVRpbWUgOiB0aGlzLAogICAgICAgICAgICBkaWZmZWQgPSBfZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgICByZXR1cm4gb3RoZXJJc0xhdGVyID8gZGlmZmVkLm5lZ2F0ZSgpIDogZGlmZmVkOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCByaWdodCBub3cuCiAgICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUuZGlmZn0KICAgICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by5kaWZmTm93ID0gZnVuY3Rpb24gZGlmZk5vdyh1bml0LCBvcHRzKSB7CiAgICAgICAgaWYgKHVuaXQgPT09IHZvaWQgMCkgewogICAgICAgICAgdW5pdCA9ICJtaWxsaXNlY29uZHMiOwogICAgICAgIH0KCiAgICAgICAgaWYgKG9wdHMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0cyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCBzcGFubmluZyBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIGFub3RoZXIgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBlbmQgcG9pbnQgb2YgdGhlIEludGVydmFsCiAgICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnVudGlsID0gZnVuY3Rpb24gdW50aWwob3RoZXJEYXRlVGltZSkgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgICAgfQogICAgICAvKioKICAgICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBEYXRlVGltZSBpcyBpbiB0aGUgc2FtZSB1bml0IG9mIHRpbWUgYXMgYW5vdGhlciBEYXRlVGltZS4KICAgICAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC4KICAgICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lLnNldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmhhc1NhbWUgPSBmdW5jdGlvbiBoYXNTYW1lKG90aGVyRGF0ZVRpbWUsIHVuaXQpIHsKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICAgIHZhciBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgICAgdmFyIG90aGVyWm9uZURhdGVUaW1lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgewogICAgICAgICAga2VlcExvY2FsVGltZTogdHJ1ZQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBvdGhlclpvbmVEYXRlVGltZS5zdGFydE9mKHVuaXQpIDw9IGlucHV0TXMgJiYgaW5wdXRNcyA8PSBvdGhlclpvbmVEYXRlVGltZS5lbmRPZih1bml0KTsKICAgICAgfQogICAgICAvKioKICAgICAgICogRXF1YWxpdHkgY2hlY2sKICAgICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWZmIHRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIG1pbGxpc2Vjb25kLCBoYXZlIHRoZSBzYW1lIHpvbmUgYW5kIGxvY2F0aW9uLCBhbmQgYXJlIGJvdGggdmFsaWQuCiAgICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlciAtIHRoZSBvdGhlciBEYXRlVGltZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikgewogICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgJiYgb3RoZXIuaXNWYWxpZCAmJiB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmIHRoaXMuem9uZS5lcXVhbHMob3RoZXIuem9uZSkgJiYgdGhpcy5sb2MuZXF1YWxzKG90aGVyLmxvYyk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSB0aGlzIHRpbWUgcmVsYXRpdmUgdG8gbm93LCBzdWNoIGFzICJpbiB0d28gZGF5cyIuIENhbiBvbmx5IGludGVybmF0aW9uYWxpemUgaWYgeW91cgogICAgICAgKiBwbGF0Zm9ybSBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4gUm91bmRzIGRvd24gYnkgZGVmYXVsdC4KICAgICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAgICogQHBhcmFtIHtEYXRlVGltZX0gW29wdGlvbnMuYmFzZT1EYXRlVGltZS5ub3coKV0gLSB0aGUgRGF0ZVRpbWUgdG8gdXNlIGFzIHRoZSBiYXNpcyB0byB3aGljaCB0aGlzIHRpbWUgaXMgY29tcGFyZWQuIERlZmF1bHRzIHRvIG5vdy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnN0eWxlPSJsb25nIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgImxvbmciLCAic2hvcnQiLCBvciAibmFycm93IgogICAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5yb3VuZD10cnVlXSAtIHdoZXRoZXIgdG8gcm91bmQgdGhlIG51bWJlcnMgaW4gdGhlIG91dHB1dC4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnBhZGRpbmc9MF0gLSBwYWRkaW5nIGluIG1pbGxpc2Vjb25kcy4gVGhpcyBhbGxvd3MgeW91IHRvIHJvdW5kIHVwIHRoZSByZXN1bHQgaWYgaXQgZml0cyBpbnNpZGUgdGhlIHRocmVzaG9sZC4gRG9uJ3QgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGgge3JvdW5kOiBmYWxzZX0gYmVjYXVzZSB0aGUgZGVjaW1hbCBvdXRwdXQgd2lsbCBpbmNsdWRlIHRoZSBwYWRkaW5nLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpcwogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiaW4gMSBkYXkiCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKHsgbG9jYWxlOiAiZnIiIH0pIC8vPT4gImRhbnMgMjMgaGV1cmVzIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgaG91cnM6IDM2IH0pLnRvUmVsYXRpdmUoeyByb3VuZDogZmFsc2UgfSkgLy89PiAiMS41IGRheXMgYWdvIgogICAgICAgKi8KICAgICAgOwoKICAgICAgX3Byb3RvLnRvUmVsYXRpdmUgPSBmdW5jdGlvbiB0b1JlbGF0aXZlKG9wdGlvbnMpIHsKICAgICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7CiAgICAgICAgICBvcHRpb25zID0ge307CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIGJhc2UgPSBvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgewogICAgICAgICAgem9uZTogdGhpcy56b25lCiAgICAgICAgfSksCiAgICAgICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyB0aGlzIDwgYmFzZSA/IC1vcHRpb25zLnBhZGRpbmcgOiBvcHRpb25zLnBhZGRpbmcgOiAwOwogICAgICAgIHZhciB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgICAgdmFyIHVuaXQgPSBvcHRpb25zLnVuaXQ7CgogICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMudW5pdCkpIHsKICAgICAgICAgIHVuaXRzID0gb3B0aW9ucy51bml0OwogICAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBkaWZmUmVsYXRpdmUoYmFzZSwgdGhpcy5wbHVzKHBhZGRpbmcpLCBfZXh0ZW5kcyh7fSwgb3B0aW9ucywgewogICAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgICB1bml0czogdW5pdHMsCiAgICAgICAgICB1bml0OiB1bml0CiAgICAgICAgfSkpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgICAqIE9ubHkgaW50ZXJuYXRpb25hbGl6ZXMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0CiAgICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmxvY2FsZSAtIG92ZXJyaWRlIHRoZSBsb2NhbGUgb2YgdGhpcyBEYXRlVGltZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdDsgaWYgb21pdHRlZCwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIHVuaXQuIFVzZSBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsIG9yICJkYXlzIgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gInRvbW9ycm93IgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoImVzIikucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gIiJtYcOxYW5hIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAgICovCiAgICAgIDsKCiAgICAgIF9wcm90by50b1JlbGF0aXZlQ2FsZW5kYXIgPSBmdW5jdGlvbiB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgICB9CgogICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKICAgICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7CiAgICAgICAgICB6b25lOiB0aGlzLnpvbmUKICAgICAgICB9KSwgdGhpcywgX2V4dGVuZHMoe30sIG9wdGlvbnMsIHsKICAgICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICAgIHVuaXRzOiBbInllYXJzIiwgIm1vbnRocyIsICJkYXlzIl0sCiAgICAgICAgICBjYWxlbmRhcnk6IHRydWUKICAgICAgICB9KSk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgbWluIG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtaW5pbXVtCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLm1pbiA9IGZ1bmN0aW9uIG1pbigpIHsKICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZGF0ZVRpbWVzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykgewogICAgICAgICAgZGF0ZVRpbWVzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWluIHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgZnVuY3Rpb24gKGkpIHsKICAgICAgICAgIHJldHVybiBpLnZhbHVlT2YoKTsKICAgICAgICB9LCBNYXRoLm1pbik7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtYXhpbXVtCiAgICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWF4IERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLm1heCA9IGZ1bmN0aW9uIG1heCgpIHsKICAgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGRhdGVUaW1lcyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykgewogICAgICAgICAgZGF0ZVRpbWVzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07CiAgICAgICAgfQoKICAgICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJtYXggcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXMiKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCBmdW5jdGlvbiAoaSkgewogICAgICAgICAgcmV0dXJuIGkudmFsdWVPZigpOwogICAgICAgIH0sIE1hdGgubWF4KTsKICAgICAgfSAvLyBNSVNDCgogICAgICAvKioKICAgICAgICogRXhwbGFpbiBob3cgYSBzdHJpbmcgd291bGQgYmUgcGFyc2VkIGJ5IGZyb21Gb3JtYXQoKQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGFrZW4gYnkgZnJvbUZvcm1hdCgpCiAgICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAgICovCiAgICAgIDsKCiAgICAgIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluID0gZnVuY3Rpb24gZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zKSB7CiAgICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgewogICAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucywKICAgICAgICAgICAgX29wdGlvbnMkbG9jYWxlID0gX29wdGlvbnMubG9jYWxlLAogICAgICAgICAgICBsb2NhbGUgPSBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IG51bGwgOiBfb3B0aW9ucyRsb2NhbGUsCiAgICAgICAgICAgIF9vcHRpb25zJG51bWJlcmluZ1N5cyA9IF9vcHRpb25zLm51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgICAgbnVtYmVyaW5nU3lzdGVtID0gX29wdGlvbnMkbnVtYmVyaW5nU3lzID09PSB2b2lkIDAgPyBudWxsIDogX29wdGlvbnMkbnVtYmVyaW5nU3lzLAogICAgICAgICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7CiAgICAgICAgICBsb2NhbGU6IGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbTogbnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgZGVmYXVsdFRvRU46IHRydWUKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0RXhwbGFpbiBpbnN0ZWFkCiAgICAgICAqLwogICAgICA7CgogICAgICBEYXRlVGltZS5mcm9tU3RyaW5nRXhwbGFpbiA9IGZ1bmN0aW9uIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsKICAgICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMpOwogICAgICB9IC8vIEZPUk1BVCBQUkVTRVRTCgogICAgICAvKioKICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAxMC8xNC8xOTgzCiAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAqLwogICAgICA7CgogICAgICBfY3JlYXRlQ2xhc3MoRGF0ZVRpbWUsIFt7CiAgICAgICAga2V5OiAiaXNWYWxpZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaW52YWxpZFJlYXNvbiIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgRGF0ZVRpbWUgYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJpbnZhbGlkRXhwbGFuYXRpb24iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgbG9jYWxlIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2VuLUdCJy4gVGhlIGxvY2FsZSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWUKICAgICAgICAgKgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibG9jYWxlIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICAgICAqCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJudW1iZXJpbmdTeXN0ZW0iLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgb3V0cHV0IGNhbGVuZGFyIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2lzbGFtaWMnLiBUaGUgb3V0cHV0IGNhbGVuZGFyIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICAgICAqCiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJvdXRwdXRDYWxlbmRhciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIHRpbWUgem9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBEYXRlVGltZS4KICAgICAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ6b25lIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHRpbWUgem9uZS4KICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogInpvbmVOYW1lIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgeWVhcgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAieWVhciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnllYXIgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5xdWFydGVyIC8vPT4gMgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAicXVhcnRlciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gTWF0aC5jZWlsKHRoaXMuYy5tb250aCAvIDMpIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIG1vbnRoICgxLTEyKS4KICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkubW9udGggLy89PiA1CiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtb250aCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggKDEtMzBpc2gpLgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGF5IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuZGF5IDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDkpLmhvdXIgLy89PiA5CiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJob3VyIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuaG91ciA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBtaW51dGUgb2YgdGhlIGhvdXIgKDAtNTkpLgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCkubWludXRlIC8vPT4gMzAKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm1pbnV0ZSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSAoMC01OSkuCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogInNlY29uZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnNlY29uZCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1MiwgNjU0KS5taWxsaXNlY29uZCAvLz0+IDY1NAogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAibWlsbGlzZWNvbmQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5taWxsaXNlY29uZCA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSB3ZWVrIHllYXIKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla1llYXIiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla1llYXIgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLndlZWtOdW1iZXIgLy89PiAyMQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla051bWJlciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgd2Vlay4KICAgICAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMSwgMzEpLndlZWtkYXkgLy89PiA0CiAgICAgICAgICogQHR5cGUge251bWJlcn0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ3ZWVrZGF5IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgb3JkaW5hbCAobWVhbmluZyB0aGUgZGF5IG9mIHRoZSB5ZWFyKQogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgICAgICogQHR5cGUge251bWJlcnxEYXRlVGltZX0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJvcmRpbmFsIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKS5vcmRpbmFsIDogTmFOOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aFNob3J0IC8vPT4gT2N0CiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJtb250aFNob3J0IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7CiAgICAgICAgICAgIGxvY09iajogdGhpcy5sb2MKICAgICAgICAgIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoTG9uZyAvLz0+IE9jdG9iZXIKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm1vbnRoTG9uZyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7CiAgICAgICAgICAgIGxvY09iajogdGhpcy5sb2MKICAgICAgICAgIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLndlZWtkYXlTaG9ydCAvLz0+IE1vbgogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla2RheVNob3J0IiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsKICAgICAgICAgICAgbG9jT2JqOiB0aGlzLmxvYwogICAgICAgICAgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLndlZWtkYXlMb25nIC8vPT4gTW9uZGF5CiAgICAgICAgICogQHR5cGUge3N0cmluZ30KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJ3ZWVrZGF5TG9uZyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsKICAgICAgICAgICAgbG9jT2JqOiB0aGlzLmxvYwogICAgICAgICAgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkub2Zmc2V0IC8vPT4gLTI0MAogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLm9mZnNldCAvLz0+IDAKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm9mZnNldCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBzaG9ydCBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSAiRVNUIiBvciAiRURUIi4KICAgICAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIm9mZnNldE5hbWVTaG9ydCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnpvbmUub2Zmc2V0TmFtZSh0aGlzLnRzLCB7CiAgICAgICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAib2Zmc2V0TmFtZUxvbmciLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgICAgIGZvcm1hdDogImxvbmciLAogICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHdoZXRoZXIgdGhpcyB6b25lJ3Mgb2Zmc2V0IGV2ZXIgY2hhbmdlcywgYXMgaW4gYSBEU1QuCiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiaXNPZmZzZXRGaXhlZCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLmlzVW5pdmVyc2FsIDogbnVsbDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogR2V0IHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIGluIGEgRFNULgogICAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzSW5EU1QiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgaWYgKHRoaXMuaXNPZmZzZXRGaXhlZCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7CiAgICAgICAgICAgICAgbW9udGg6IDEKICAgICAgICAgICAgfSkub2Zmc2V0IHx8IHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoewogICAgICAgICAgICAgIG1vbnRoOiA1CiAgICAgICAgICAgIH0pLm9mZnNldDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW4gYSBsZWFwIHllYXIsIGZhbHNlIG90aGVyd2lzZQogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZQogICAgICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImlzSW5MZWFwWWVhciIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih0aGlzLnllYXIpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGgKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2LCAyKS5kYXlzSW5Nb250aCAvLz0+IDI5CiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiZGF5c0luTW9udGgiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NgogICAgICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmRheXNJblllYXIgLy89PiAzNjUKICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogImRheXNJblllYXIiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTMKICAgICAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS53ZWVrc0luV2Vla1llYXIgLy89PiA1MgogICAgICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAid2Vla3NJbldlZWtZZWFyIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICAgICAgfQogICAgICB9XSwgW3sKICAgICAgICBrZXk6ICJEQVRFX1NIT1JUIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFX1NIT1JUOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMnCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFX01FRCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURV9NRUQ7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURV9NRURfV0lUSF9XRUVLREFZIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMnCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFX0ZVTEwiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVfRlVMTDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnVHVlc2RheSwgT2N0b2JlciAxNCwgMTk4MycKICAgICAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIkRBVEVfSFVHRSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURV9IVUdFOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV9TSU1QTEUiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV9XSVRIX1NFQ09ORFMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfV0lUSF9TRUNPTkRTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJUSU1FXzI0X1NJTVBMRSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gVElNRV8yNF9TSU1QTEU7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJUSU1FXzI0X1dJVEhfU0VDT05EUyIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NFQ09ORFM7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBEYXRlVGltZS50b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgRWFzdGVybiBEYXlsaWdodCBUaW1lJywgYWx3YXlzIDI0LWhvdXIuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfU0hPUlQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9NRUQiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX01FRDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgICAgICogQHR5cGUge09iamVjdH0KICAgICAgICAgKi8KCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgRGF0ZVRpbWUudG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfRlVMTCIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURVRJTUVfRlVMTDsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICAgICAqLwoKICAgICAgfSwgewogICAgICAgIGtleTogIkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTIiwKICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgICAgIHJldHVybiBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUzsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfSFVHRSIsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgICAgICB9CiAgICAgICAgLyoqCiAgICAgICAgICoge0BsaW5rIERhdGVUaW1lLnRvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgICAgICovCgogICAgICB9LCB7CiAgICAgICAga2V5OiAiREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMiLAogICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgICAgcmV0dXJuIERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTOwogICAgICAgIH0KICAgICAgfV0pOwoKICAgICAgcmV0dXJuIERhdGVUaW1lOwogICAgfSgpOwogICAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgICBpZiAoRGF0ZVRpbWUuaXNEYXRlVGltZShkYXRlVGltZWlzaCkpIHsKICAgICAgICByZXR1cm4gZGF0ZVRpbWVpc2g7CiAgICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZVRpbWVpc2gpOwogICAgICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIHR5cGVvZiBkYXRlVGltZWlzaCA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJVbmtub3duIGRhdGV0aW1lIGFyZ3VtZW50OiAiICsgZGF0ZVRpbWVpc2ggKyAiLCBvZiB0eXBlICIgKyB0eXBlb2YgZGF0ZVRpbWVpc2gpOwogICAgICB9CiAgICB9CgogICAgdmFyIFZFUlNJT04gPSAiMi4wLjIiOwoKICAgIHZhciBEYXRlVGltZV8xID0gbHV4b24uRGF0ZVRpbWUgPSBEYXRlVGltZTsKICAgIHZhciBEdXJhdGlvbl8xID0gbHV4b24uRHVyYXRpb24gPSBEdXJhdGlvbjsKICAgIGx1eG9uLkZpeGVkT2Zmc2V0Wm9uZSA9IEZpeGVkT2Zmc2V0Wm9uZTsKICAgIGx1eG9uLklBTkFab25lID0gSUFOQVpvbmU7CiAgICBsdXhvbi5JbmZvID0gSW5mbzsKICAgIGx1eG9uLkludGVydmFsID0gSW50ZXJ2YWw7CiAgICBsdXhvbi5JbnZhbGlkWm9uZSA9IEludmFsaWRab25lOwogICAgbHV4b24uU2V0dGluZ3MgPSBTZXR0aW5nczsKICAgIGx1eG9uLlN5c3RlbVpvbmUgPSBTeXN0ZW1ab25lOwogICAgbHV4b24uVkVSU0lPTiA9IFZFUlNJT047CiAgICBsdXhvbi5ab25lID0gWm9uZTsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAgIC8vIFF1ZXJ5IFNldHRpbmdzIC8vDQogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8NCiAgICBjb25zdCBERUZBVUxUX1FVRVJZX1NFVFRJTkdTID0gew0KICAgICAgICByZW5kZXJOdWxsQXM6ICJcXC0iLA0KICAgICAgICB0YXNrTGlua0xvY2F0aW9uOiAiZW5kIiwNCiAgICAgICAgdGFza0xpbmtUZXh0OiAi8J+UlyIsDQogICAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLA0KICAgICAgICB0YXNrQ29tcGxldGlvblRleHQ6ICJjb21wbGV0aW9uIiwNCiAgICAgICAgd2Fybk9uRW1wdHlSZXN1bHQ6IHRydWUsDQogICAgICAgIHJlZnJlc2hFbmFibGVkOiB0cnVlLA0KICAgICAgICByZWZyZXNoSW50ZXJ2YWw6IDI1MCwNCiAgICAgICAgZGVmYXVsdERhdGVGb3JtYXQ6ICJNTU1NIGRkLCB5eXl5IiwNCiAgICAgICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0OiAiaDptbSBhIC0gTU1NTSBkZCwgeXl5eSIsDQogICAgICAgIG1heFJlY3Vyc2l2ZVJlbmRlckRlcHRoOiA2LA0KICAgICAgICB0YWJsZUlkQ29sdW1uTmFtZTogIkZpbGUiLA0KICAgICAgICB0YWJsZUdyb3VwQ29sdW1uTmFtZTogIkdyb3VwIiwNCiAgICB9Ow0KICAgIC8qKiBEZWZhdWx0IHNldHRpbmdzIGZvciBkYXRhdmlldyBvbiBpbnN0YWxsLiAqLw0KICAgIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9RVUVSWV9TRVRUSU5HUyksIHsNCiAgICAgICAgaW5saW5lUXVlcnlQcmVmaXg6ICI9IiwNCiAgICAgICAgaW5saW5lSnNRdWVyeVByZWZpeDogIiQ9IiwNCiAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsDQogICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3SnM6IGZhbHNlLA0KICAgICAgICBwcmV0dHlSZW5kZXJJbmxpbmVGaWVsZHM6IHRydWUsDQogICAgICAgIHNjaGVtYVZlcnNpb246IDEsDQogICAgfSk7CgogICAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLw0KICAgIGNsYXNzIFN1Y2Nlc3Mgew0KICAgICAgICBjb25zdHJ1Y3Rvcih2YWx1ZSkgew0KICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOw0KICAgICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICBtYXAoZikgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKGYodGhpcy52YWx1ZSkpOw0KICAgICAgICB9DQogICAgICAgIGZsYXRNYXAoZikgew0KICAgICAgICAgICAgcmV0dXJuIGYodGhpcy52YWx1ZSk7DQogICAgICAgIH0NCiAgICAgICAgb3JFbHNlKF92YWx1ZSkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7DQogICAgICAgIH0NCiAgICAgICAgb3JFbHNlVGhyb3coX21lc3NhZ2UpIHsNCiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOw0KICAgICAgICB9DQogICAgfQ0KICAgIGNsYXNzIEZhaWx1cmUgew0KICAgICAgICBjb25zdHJ1Y3RvcihlcnJvcikgew0KICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOw0KICAgICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgbWFwKF9mKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgfQ0KICAgICAgICBmbGF0TWFwKF9mKSB7DQogICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgfQ0KICAgICAgICBvckVsc2UodmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgICAgfQ0KICAgICAgICBvckVsc2VUaHJvdyhtZXNzYWdlKSB7DQogICAgICAgICAgICBpZiAobWVzc2FnZSkNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSh0aGlzLmVycm9yKSk7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCIiICsgdGhpcy5lcnJvcik7DQogICAgICAgIH0NCiAgICB9DQogICAgdmFyIFJlc3VsdDsNCiAgICAoZnVuY3Rpb24gKFJlc3VsdCkgew0KICAgICAgICBmdW5jdGlvbiBzdWNjZXNzKHZhbHVlKSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFN1Y2Nlc3ModmFsdWUpOw0KICAgICAgICB9DQogICAgICAgIFJlc3VsdC5zdWNjZXNzID0gc3VjY2VzczsNCiAgICAgICAgZnVuY3Rpb24gZmFpbHVyZShlcnJvcikgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGVycm9yKTsNCiAgICAgICAgfQ0KICAgICAgICBSZXN1bHQuZmFpbHVyZSA9IGZhaWx1cmU7DQogICAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsNCiAgICAgICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7DQogICAgICAgICAgICAgICAgaWYgKHNlY29uZC5zdWNjZXNzZnVsKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsNCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgUmVzdWx0LmZsYXRNYXAyID0gZmxhdE1hcDI7DQogICAgICAgIGZ1bmN0aW9uIG1hcDIoZmlyc3QsIHNlY29uZCwgZikgew0KICAgICAgICAgICAgcmV0dXJuIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIChhLCBiKSA9PiBzdWNjZXNzKGYoYSwgYikpKTsNCiAgICAgICAgfQ0KICAgICAgICBSZXN1bHQubWFwMiA9IG1hcDI7DQogICAgfSkoUmVzdWx0IHx8IChSZXN1bHQgPSB7fSkpOwoKICAgIHZhciBwYXJzaW1tb25fdW1kX21pbiA9IHtleHBvcnRzOiB7fX07CgogICAgKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHsKICAgICFmdW5jdGlvbihuLHQpe21vZHVsZS5leHBvcnRzPXQoKTt9KCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOmNvbW1vbmpzR2xvYmFsLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PXt9O2Z1bmN0aW9uIHIoZSl7aWYodFtlXSlyZXR1cm4gdFtlXS5leHBvcnRzO3ZhciB1PXRbZV09e2k6ZSxsOiExLGV4cG9ydHM6e319O3JldHVybiBuW2VdLmNhbGwodS5leHBvcnRzLHUsdS5leHBvcnRzLHIpLHUubD0hMCx1LmV4cG9ydHN9cmV0dXJuIHIubT1uLHIuYz10LHIuZD1mdW5jdGlvbihuLHQsZSl7ci5vKG4sdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDplfSk7fSxyLnI9ZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO30sci5uPWZ1bmN0aW9uKG4pe3ZhciB0PW4mJm4uX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIG59O3JldHVybiByLmQodCwiYSIsdCksdH0sci5vPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpfSxyLnA9IiIscihyLnM9MCl9KFtmdW5jdGlvbihuLHQscil7ZnVuY3Rpb24gZShuKXtpZighKHRoaXMgaW5zdGFuY2VvZiBlKSlyZXR1cm4gbmV3IGUobik7dGhpcy5fPW47fXZhciB1PWUucHJvdG90eXBlO2Z1bmN0aW9uIG8obix0KXtmb3IodmFyIHI9MDtyPG47cisrKXQocik7fWZ1bmN0aW9uIGkobix0LHIpe3JldHVybiBmdW5jdGlvbihuLHQpe28odC5sZW5ndGgsZnVuY3Rpb24ocil7bih0W3JdLHIsdCk7fSk7fShmdW5jdGlvbihyLGUsdSl7dD1uKHQscixlLHUpO30sciksdH1mdW5jdGlvbiBmKG4sdCl7cmV0dXJuIGkoZnVuY3Rpb24odCxyLGUsdSl7cmV0dXJuIHQuY29uY2F0KFtuKHIsZSx1KV0pfSxbXSx0KX1mdW5jdGlvbiBhKG4sdCl7dmFyIHI9e3Y6MCxidWY6dH07cmV0dXJuIG8obixmdW5jdGlvbigpe3ZhciBuO3I9e3Y6ci52PDwxfChuPXIuYnVmLG5bMF0+PjcpLGJ1ZjpmdW5jdGlvbihuKXt2YXIgdD1pKGZ1bmN0aW9uKG4sdCxyLGUpe3JldHVybiBuLmNvbmNhdChyPT09ZS5sZW5ndGgtMT9CdWZmZXIuZnJvbShbdCwwXSkucmVhZFVJbnQxNkJFKDApOmUucmVhZFVJbnQxNkJFKHIpKX0sW10sbik7cmV0dXJuIEJ1ZmZlci5mcm9tKGYoZnVuY3Rpb24obil7cmV0dXJuIChuPDwxJjY1NTM1KT4+OH0sdCkpfShyLmJ1Zil9O30pLHJ9ZnVuY3Rpb24gYygpe3JldHVybiAidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlcn1mdW5jdGlvbiBzKCl7aWYoIWMoKSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlciBnbG9iYWwgZG9lcyBub3QgZXhpc3Q7IHBsZWFzZSB1c2Ugd2VicGFjayBpZiB5b3UgbmVlZCB0byBwYXJzZSBCdWZmZXJzIGluIHRoZSBicm93c2VyLiIpfWZ1bmN0aW9uIGwobil7cygpO3ZhciB0PWkoZnVuY3Rpb24obix0KXtyZXR1cm4gbit0fSwwLG4pO2lmKHQlOCE9MCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBiaXRzIFsiK24uam9pbigiLCAiKSsiXSBhZGQgdXAgdG8gIit0KyIgd2hpY2ggaXMgbm90IGFuIGV2ZW4gbnVtYmVyIG9mIGJ5dGVzOyB0aGUgdG90YWwgc2hvdWxkIGJlIGRpdmlzaWJsZSBieSA4Iik7dmFyIHIsdT10Lzgsbz0ocj1mdW5jdGlvbihuKXtyZXR1cm4gbj40OH0saShmdW5jdGlvbihuLHQpe3JldHVybiBufHwocih0KT90Om4pfSxudWxsLG4pKTtpZihvKXRocm93IG5ldyBFcnJvcihvKyIgYml0IHJhbmdlIHJlcXVlc3RlZCBleGNlZWRzIDQ4IGJpdCAoNiBieXRlKSBOdW1iZXIgbWF4LiIpO3JldHVybiBuZXcgZShmdW5jdGlvbih0LHIpe3ZhciBlPXUrcjtyZXR1cm4gZT50Lmxlbmd0aD94KHIsdS50b1N0cmluZygpKyIgYnl0ZXMiKTpiKGUsaShmdW5jdGlvbihuLHQpe3ZhciByPWEodCxuLmJ1Zik7cmV0dXJuIHtjb2xsOm4uY29sbC5jb25jYXQoci52KSxidWY6ci5idWZ9fSx7Y29sbDpbXSxidWY6dC5zbGljZShyLGUpfSxuKS5jb2xsKX0pfWZ1bmN0aW9uIHAobix0KXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24ocixlKXtyZXR1cm4gcygpLGUrdD5yLmxlbmd0aD94KGUsdCsiIGJ5dGVzIGZvciAiK24pOmIoZSt0LHIuc2xpY2UoZSxlK3QpKX0pfWZ1bmN0aW9uIGgobix0KXtpZigibnVtYmVyIiE9dHlwZW9mKHI9dCl8fE1hdGguZmxvb3IocikhPT1yfHx0PDB8fHQ+Nil0aHJvdyBuZXcgRXJyb3IobisiIHJlcXVpcmVzIGludGVnZXIgbGVuZ3RoIGluIHJhbmdlIFswLCA2XS4iKTt2YXIgcjt9ZnVuY3Rpb24gZChuKXtyZXR1cm4gaCgidWludEJFIixuKSxwKCJ1aW50QkUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZFVJbnRCRSgwLG4pfSl9ZnVuY3Rpb24gdihuKXtyZXR1cm4gaCgidWludExFIixuKSxwKCJ1aW50TEUoIituKyIpIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZFVJbnRMRSgwLG4pfSl9ZnVuY3Rpb24gZyhuKXtyZXR1cm4gaCgiaW50QkUiLG4pLHAoImludEJFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRJbnRCRSgwLG4pfSl9ZnVuY3Rpb24gbShuKXtyZXR1cm4gaCgiaW50TEUiLG4pLHAoImludExFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRJbnRMRSgwLG4pfSl9ZnVuY3Rpb24geShuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIGV9ZnVuY3Rpb24gRShuKXtyZXR1cm4gIltvYmplY3QgQXJyYXldIj09PXt9LnRvU3RyaW5nLmNhbGwobil9ZnVuY3Rpb24gdyhuKXtyZXR1cm4gYygpJiZCdWZmZXIuaXNCdWZmZXIobil9ZnVuY3Rpb24gYihuLHQpe3JldHVybiB7c3RhdHVzOiEwLGluZGV4Om4sdmFsdWU6dCxmdXJ0aGVzdDotMSxleHBlY3RlZDpbXX19ZnVuY3Rpb24geChuLHQpe3JldHVybiBFKHQpfHwodD1bdF0pLHtzdGF0dXM6ITEsaW5kZXg6LTEsdmFsdWU6bnVsbCxmdXJ0aGVzdDpuLGV4cGVjdGVkOnR9fWZ1bmN0aW9uIEIobix0KXtpZighdClyZXR1cm4gbjtpZihuLmZ1cnRoZXN0PnQuZnVydGhlc3QpcmV0dXJuIG47dmFyIHI9bi5mdXJ0aGVzdD09PXQuZnVydGhlc3Q/ZnVuY3Rpb24obix0KXtpZihmdW5jdGlvbigpe2lmKHZvaWQgMCE9PWUuX3N1cHBvcnRzU2V0KXJldHVybiBlLl9zdXBwb3J0c1NldDt2YXIgbj0idW5kZWZpbmVkIiE9dHlwZW9mIFNldDtyZXR1cm4gZS5fc3VwcG9ydHNTZXQ9bixufSgpJiZBcnJheS5mcm9tKXtmb3IodmFyIHI9bmV3IFNldChuKSx1PTA7dTx0Lmxlbmd0aDt1Kyspci5hZGQodFt1XSk7dmFyIG89QXJyYXkuZnJvbShyKTtyZXR1cm4gby5zb3J0KCksb31mb3IodmFyIGk9e30sZj0wO2Y8bi5sZW5ndGg7ZisrKWlbbltmXV09ITA7Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aDthKyspaVt0W2FdXT0hMDt2YXIgYz1bXTtmb3IodmFyIHMgaW4gaSkoe30pLmhhc093blByb3BlcnR5LmNhbGwoaSxzKSYmYy5wdXNoKHMpO3JldHVybiBjLnNvcnQoKSxjfShuLmV4cGVjdGVkLHQuZXhwZWN0ZWQpOnQuZXhwZWN0ZWQ7cmV0dXJuIHtzdGF0dXM6bi5zdGF0dXMsaW5kZXg6bi5pbmRleCx2YWx1ZTpuLnZhbHVlLGZ1cnRoZXN0OnQuZnVydGhlc3QsZXhwZWN0ZWQ6cn19dmFyIGo9e307ZnVuY3Rpb24gUyhuLHQpe2lmKHcobikpcmV0dXJuIHtvZmZzZXQ6dCxsaW5lOi0xLGNvbHVtbjotMX07biBpbiBqfHwoaltuXT17fSk7Zm9yKHZhciByPWpbbl0sZT0wLHU9MCxvPTAsaT10O2k+PTA7KXtpZihpIGluIHIpe2U9cltpXS5saW5lLDA9PT1vJiYobz1yW2ldLmxpbmVTdGFydCk7YnJlYWt9IlxuIj09PW4uY2hhckF0KGkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS07fXZhciBmPWUrdSxhPXQtbztyZXR1cm4gclt0XT17bGluZTpmLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTpmKzEsY29sdW1uOmErMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHBhcnNlcjogIituKX1mdW5jdGlvbiBMKG4sdCl7cmV0dXJuICJzdHJpbmciPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgbnVtYmVyOiAiK24pfWZ1bmN0aW9uIGsobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBmdW5jdGlvbjogIituKX1mdW5jdGlvbiBQKG4pe2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZzogIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej0iICAiO2Z1bmN0aW9uIFIobix0KXtyZXR1cm4gbmV3IEFycmF5KHQrMSkuam9pbihuKX1mdW5jdGlvbiBVKG4sdCxyKXt2YXIgZT10LW4ubGVuZ3RoO3JldHVybiBlPD0wP246UihyLGUpK259ZnVuY3Rpb24gVyhuLHQscixlKXtyZXR1cm4ge2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxhLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuICJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQiO2lmKHcobikpe3ZhciBwPXMtcyVJLGg9cy1wLGQ9VyhwLEYsTStJLG4ubGVuZ3RoKSx2PWYoZnVuY3Rpb24obil7cmV0dXJuIGYoZnVuY3Rpb24obil7cmV0dXJuIFUobi50b1N0cmluZygxNiksMiwiMCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybiBbbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9cC9JLHI9MypoLGg+PTQmJihyKz0xKSxsPTIsdT1mKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oIiAiKTpuLnNsaWNlKDAsNCkuam9pbigiICIpKyIgICIrbi5zbGljZSg0KS5qb2luKCIgIil9LHYpLChhPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoYT0yKTt9ZWxzZSB7dmFyIGc9bi5zcGxpdCgvXHJcbnxbXG5cclx1MjAyOFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksYT1vLnRvLnRvU3RyaW5nKCkubGVuZ3RoO312YXIgbT1lLW8uZnJvbTtyZXR1cm4gdyhuKSYmKGE9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihhPTIpLGkoZnVuY3Rpb24odCxlLHUpe3ZhciBpLGY9dT09PW0sYz1mPyI+ICI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGEsIjAiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGEsIiAiKSxbXS5jb25jYXQodCxbYytpKyIgfCAiK2VdLGY/W3orUigiICIsYSkrIiB8ICIrVSgiIixyLCIgIikrUigiXiIsbCldOltdKX0sW10sdSkuam9pbigiXG4iKX1mdW5jdGlvbiBOKG4sdCl7cmV0dXJuIFsiXG4iLCItLSBQQVJTSU5HIEZBSUxFRCAiK1IoIi0iLDUwKSwiXG5cbiIsRChuLHQpLCJcblxuIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD8iRXhwZWN0ZWQ6XG5cbiIrclswXToiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxuXG4iK3Iuam9pbigiLCAiKSksIlxuIl0uam9pbigiIik7dmFyIHI7fWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/ImciOiIiLG4uaWdub3JlQ2FzZT8iaSI6IiIsbi5tdWx0aWxpbmU/Im0iOiIiLG4udW5pY29kZT8idSI6IiIsbi5zdGlja3k/InkiOiIiXS5qb2luKCIiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4O31yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTt2YXIgdD1uLnBvcCgpO3JldHVybiBrKHQpLEMuYXBwbHkobnVsbCxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkobnVsbCxuKX0pfWZ1bmN0aW9uIFQoKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aDtpZigwPT09dClyZXR1cm4gWSgiemVybyBhbHRlcm5hdGVzIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBbbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PSInIituKyInIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKCJub3QgYSByZWdleHA6ICIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZigiaSIhPT1lJiYibSIhPT1lJiYidSIhPT1lJiYicyIhPT1lKXRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgIicrZSsnIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cCgiXig/OiIrbi5zb3VyY2UrIikiLEcobikpfShuKSx1PSIiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sZj1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsZil9cmV0dXJuIHgoZSwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gIitvLmxlbmd0aCsiKSBpbiAiK3UpfXJldHVybiB4KGUsdSl9KX1mdW5jdGlvbiBYKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIGIocixuKX0pfWZ1bmN0aW9uIFkobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4geChyLG4pfSl9ZnVuY3Rpb24gWihuKXtpZih5KG4pKXJldHVybiBlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQscik7cmV0dXJuIGUuaW5kZXg9cixlLnZhbHVlPSIiLGV9KTtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gJChuKXtyZXR1cm4gXyhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQsciksdT10LnNsaWNlKHIsZS5pbmRleCk7cmV0dXJuIGUuc3RhdHVzP3gociwnbm90ICInK3UrJyInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngociwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyAiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWSgiZmFudGFzeS1sYW5kL2VtcHR5Iil9dS5wYXJzZT1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcigiLnBhcnNlIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzdHJpbmcgb3IgQnVmZmVyIGFzIGl0cyBhcmd1bWVudCIpO3ZhciB0LHI9dGhpcy5za2lwKGZuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT0iUGFyc2ltbW9uRXJyb3IiLGUucmVzdWx0PXQsZX0sdS5hc3NlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpcy5jaGFpbihmdW5jdGlvbihyKXtyZXR1cm4gbihyKT9YKHIpOlkodCl9KX0sdS5vcj1mdW5jdGlvbihuKXtyZXR1cm4gVCh0aGlzLG4pfSx1LnRyaW09ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMud3JhcChuLG4pfSx1LndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gSihuLHRoaXMsdCxmdW5jdGlvbihuLHQpe3JldHVybiB0fSl9LHUudGhydT1mdW5jdGlvbihuKXtyZXR1cm4gbih0aGlzKX0sdS50aGVuPWZ1bmN0aW9uKG4pe3JldHVybiBfKG4pLEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19KX0sdS5tYW55PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSx1PXZvaWQgMDs7KXtpZighKHU9QihuLl8odCxyKSx1KSkuc3RhdHVzKXJldHVybiBCKGIocixlKSx1KTtpZihyPT09dS5pbmRleCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZSIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSk7fX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXk6ICIrbil9KHQpLHQubGVuZ3RoKXtQKHRbMF0pO2Zvcih2YXIgcj10WzBdLGU9MTtlPHQubGVuZ3RoO2UrKylQKHRbZV0pLHIrPW4rdFtlXTtyZXR1cm4gcn1yZXR1cm4gIiJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKCIiKX0sdS50aW1lcz1mdW5jdGlvbihuLHQpe3ZhciByPXRoaXM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9biksTyhuKSxPKHQpLGUoZnVuY3Rpb24oZSx1KXtmb3IodmFyIG89W10saT12b2lkIDAsZj12b2lkIDAsYT0wO2E8bjthKz0xKXtpZihmPUIoaT1yLl8oZSx1KSxmKSwhaS5zdGF0dXMpcmV0dXJuIGY7dT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTt9Zm9yKDthPHQmJihmPUIoaT1yLl8oZSx1KSxmKSxpLnN0YXR1cyk7YSs9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxmKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJuIHtzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm4ge25hbWU6bix2YWx1ZTpyLHN0YXJ0OnQsZW5kOmV9fSl9LHUuc2VwQnk9ZnVuY3Rpb24obil7cmV0dXJuIFYodGhpcyxuKX0sdS5zZXBCeTE9ZnVuY3Rpb24obil7cmV0dXJuIEgodGhpcyxuKX0sdS5sb29rYWhlYWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcChaKG4pKX0sdS5ub3RGb2xsb3dlZEJ5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoJChuKSl9LHUuZGVzYz1mdW5jdGlvbihuKXtFKG4pfHwobj1bbl0pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXN8fCh1LmV4cGVjdGVkPW4pLHV9KX0sdS5mYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vcihYKG4pKX0sdS5hcD1mdW5jdGlvbihuKXtyZXR1cm4gSihuLHRoaXMsZnVuY3Rpb24obix0KXtyZXR1cm4gbih0KX0pfSx1LmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihuKHUudmFsdWUpLl8ocix1LmluZGV4KSx1KTp1fSl9LHUuY29uY2F0PXUub3IsdS5lbXB0eT1ybix1Lm9mPVgsdVsiZmFudGFzeS1sYW5kL2FwIl09dS5hcCx1WyJmYW50YXN5LWxhbmQvY2hhaW4iXT11LmNoYWluLHVbImZhbnRhc3ktbGFuZC9jb25jYXQiXT11LmNvbmNhdCx1WyJmYW50YXN5LWxhbmQvZW1wdHkiXT11LmVtcHR5LHVbImZhbnRhc3ktbGFuZC9vZiJdPXUub2YsdVsiZmFudGFzeS1sYW5kL21hcCJdPXUubWFwO3ZhciBlbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIodCxTKG4sdCkpfSksdW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0Pj1uLmxlbmd0aD94KHQsImFueSBjaGFyYWN0ZXIvYnl0ZSIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxmbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LCJFT0YiKTpiKHQsbnVsbCl9KSxhbj1RKC9bMC05XS8pLmRlc2MoImEgZGlnaXQiKSxjbj1RKC9bMC05XSovKS5kZXNjKCJvcHRpb25hbCBkaWdpdHMiKSxzbj1RKC9bYS16XS9pKS5kZXNjKCJhIGxldHRlciIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKCJvcHRpb25hbCBsZXR0ZXJzIikscG49USgvXHMqLykuZGVzYygib3B0aW9uYWwgd2hpdGVzcGFjZSIpLGhuPVEoL1xzKy8pLmRlc2MoIndoaXRlc3BhY2UiKSxkbj1LKCJcciIpLHZuPUsoIlxuIiksZ249SygiXHJcbiIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoIm5ld2xpbmUiKSx5bj1UKG1uLGZuKTtlLmFsbD1vbixlLmFsdD1ULGUuYW55PXVuLGUuY3I9ZG4sZS5jcmVhdGVMYW5ndWFnZT1mdW5jdGlvbihuKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmZnVuY3Rpb24ocil7dFtyXT10bihmdW5jdGlvbigpe3JldHVybiBuW3JdKHQpfSk7fShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9YW4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1mbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoIm5vbmUgb2YgJyIrbisiJyIpfSxlLm5vdEZvbGxvd2VkQnk9JCxlLm9mPVgsZS5vbmVPZj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5zcGxpdCgiIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09IiciK3Rbcl0rIiciO3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPj0wfSkuZGVzYyh0KX0sZS5vcHRXaGl0ZXNwYWNlPXBuLGUuUGFyc2VyPWUsZS5yYW5nZT1mdW5jdGlvbihuLHQpe3JldHVybiBubihmdW5jdGlvbihyKXtyZXR1cm4gbjw9ciYmcjw9dH0pLmRlc2MobisiLSIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBmPXVbaV07aWYoIXkoZikpe2lmKEUoZikmJjI9PT1mLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBmWzBdJiZ5KGZbMV0pKXt2YXIgYT1mWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGEpKXRocm93IG5ldyBFcnJvcigic2VxT2JqOiBkdXBsaWNhdGUga2V5ICIrYSk7dFthXT0hMCxyKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLiIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm8iKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGYsYTtpZihFKHVbaV0pPyhmPXVbaV1bMF0sYT11W2ldWzFdKTooZj1udWxsLGE9dVtpXSksIShyPUIoYS5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjtmJiYoZVtmXT1yLnZhbHVlKSx0PXIuaW5kZXg7fXJldHVybiBCKGIodCxlKSxyKX0pfSxlLnN0cmluZz1LLGUuc3VjY2VlZD1YLGUudGFrZVdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cjtlPHQubGVuZ3RoJiZuKEwodCxlKSk7KWUrKztyZXR1cm4gYihlLHQuc2xpY2UocixlKSl9KX0sZS50ZXN0PW5uLGUud2hpdGVzcGFjZT1obixlWyJmYW50YXN5LWxhbmQvZW1wdHkiXT1ybixlWyJmYW50YXN5LWxhbmQvb2YiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWYoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJbIitlLmpvaW4oIiwgIikrIl0gc2hvdWxkIGJlIGxlbmd0aCAyLCBnb3QgbGVuZ3RoICIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiAiK2VbMF0pO3JldHVybiB0W2VbMF1dPSEwLHIrKyxlfXJldHVybiBPKG4pLFtudWxsLG5dfSxuKTtpZihyPDEpdGhyb3cgbmV3IEVycm9yKCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFsiK24uam9pbigiLCAiKSsiXSIpO3ZhciB1PWYoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19LGUpO3JldHVybiBsKGYoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19LGUpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbCE9PXRbMF0mJihuW3RbMF1dPXRbMV0pLG59LHt9LGYoZnVuY3Rpb24odCxyKXtyZXR1cm4gW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcigiVmFsdWUgc3BlY2lmaWVkIHRvIGJ5dGUgY29uc3RydWN0b3IgKCIrbisiPTB4IituLnRvU3RyaW5nKDE2KSsiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLiIpO3ZhciB0PShuPjE1PyIweCI6IjB4MCIpK24udG9TdHJpbmcoMTYpO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9TChyLGUpO3JldHVybiB1PT09bj9iKGUrMSx1KTp4KGUsdCl9KX0sYnVmZmVyOmZ1bmN0aW9uKG4pe3JldHVybiBwKCJidWZmZXIiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBwKCJzdHJpbmciLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOnAoImZsb2F0QkUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRCRSgwKX0pLGZsb2F0TEU6cCgiZmxvYXRMRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6cCgiZG91YmxlQkUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpwKCJkb3VibGVMRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVMRSgwKX0pfSxuLmV4cG9ydHM9ZTt9XSl9KTsKICAgIH0ocGFyc2ltbW9uX3VtZF9taW4pKTsKCiAgICB2YXIgZW1vamlSZWdleCA9ICgpID0+IHsKICAgIAkvLyBodHRwczovL210aHMuYmUvZW1vamkKICAgIAlyZXR1cm4gL1x1RDgzQ1x1REZGNFx1REI0MFx1REM2N1x1REI0MFx1REM2Mig/Olx1REI0MFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3M3xcdURCNDBcdURDNzNcdURCNDBcdURDNjNcdURCNDBcdURDNzR8XHVEQjQwXHVEQzY1XHVEQjQwXHVEQzZFXHVEQjQwXHVEQzY3KVx1REI0MFx1REM3RnwoPzpcdUQ4M0VcdURERDFcdUQ4M0NcdURGRkZcdTIwMERcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP3xcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpPylcdUQ4M0VcdURERDF8XHVEODNEXHVEQzY5XHVEODNDXHVERkZGXHUyMDBEXHVEODNFXHVERDFEXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRVx1REVGMVx1RDgzQ1x1REZGRlx1MjAwRFx1RDgzRVx1REVGMikoPzpcdUQ4M0NbXHVERkZCLVx1REZGRV0pfCg/Olx1RDgzRVx1REREMVx1RDgzQ1x1REZGRVx1MjAwRFx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/fFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/KVx1RDgzRVx1REREMXxcdUQ4M0RcdURDNjlcdUQ4M0NcdURGRkVcdTIwMERcdUQ4M0VcdUREMURcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNFXHVERUYxXHVEODNDXHVERkZFXHUyMDBEXHVEODNFXHVERUYyKSg/Olx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXSl8KD86XHVEODNFXHVEREQxXHVEODNDXHVERkZEXHUyMDBEXHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT98XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT8pXHVEODNFXHVEREQxfFx1RDgzRFx1REM2OVx1RDgzQ1x1REZGRFx1MjAwRFx1RDgzRVx1REQxRFx1MjAwRCg/Olx1RDgzRFtcdURDNjhcdURDNjldKXxcdUQ4M0VcdURFRjFcdUQ4M0NcdURGRkRcdTIwMERcdUQ4M0VcdURFRjIpKD86XHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl0pfCg/Olx1RDgzRVx1REREMVx1RDgzQ1x1REZGQ1x1MjAwRFx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/fFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/KVx1RDgzRVx1REREMXxcdUQ4M0RcdURDNjlcdUQ4M0NcdURGRkNcdTIwMERcdUQ4M0VcdUREMURcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNFXHVERUYxXHVEODNDXHVERkZDXHUyMDBEXHVEODNFXHVERUYyKSg/Olx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSl8KD86XHVEODNFXHVEREQxXHVEODNDXHVERkZCXHUyMDBEXHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT98XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT8pXHVEODNFXHVEREQxfFx1RDgzRFx1REM2OVx1RDgzQ1x1REZGQlx1MjAwRFx1RDgzRVx1REQxRFx1MjAwRCg/Olx1RDgzRFtcdURDNjhcdURDNjldKXxcdUQ4M0VcdURFRjFcdUQ4M0NcdURGRkJcdTIwMERcdUQ4M0VcdURFRjIpKD86XHVEODNDW1x1REZGQy1cdURGRkZdKXxcdUQ4M0RcdURDNjgoPzpcdUQ4M0NcdURGRkIoPzpcdTIwMEQoPzpcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMERcdUQ4M0RcdURDNjgoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pfFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSkpfFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkZdKSkpfFx1RDgzRVx1REQxRFx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkMtXHVERkZGXSl8W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEZ8W1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKSk/fCg/Olx1RDgzQ1tcdURGRkMtXHVERkZGXSlcdTIwMERcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMERcdUQ4M0RcdURDNjgoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pfFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSkpfFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkZdKSkpfFx1MjAwRCg/Olx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/fFx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/KVx1RDgzRFx1REM2OHwoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdTIwMEQoPzpcdUQ4M0RcdURDNjZcdTIwMERcdUQ4M0RcdURDNjZ8XHVEODNEXHVEQzY3XHUyMDBEKD86XHVEODNEW1x1REM2Nlx1REM2N10pKXxcdUQ4M0RcdURDNjZcdTIwMERcdUQ4M0RcdURDNjZ8XHVEODNEXHVEQzY3XHUyMDBEKD86XHVEODNEW1x1REM2Nlx1REM2N10pfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZGXHUyMDBEKD86XHVEODNFXHVERDFEXHUyMDBEXHVEODNEXHVEQzY4KD86XHVEODNDW1x1REZGQi1cdURGRkVdKXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGRVx1MjAwRCg/Olx1RDgzRVx1REQxRFx1MjAwRFx1RDgzRFx1REM2OCg/Olx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXSl8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkRcdTIwMEQoPzpcdUQ4M0VcdUREMURcdTIwMERcdUQ4M0RcdURDNjgoPzpcdUQ4M0NbXHVERkZCXHVERkZDXHVERkZFXHVERkZGXSl8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkNcdTIwMEQoPzpcdUQ4M0VcdUREMURcdTIwMERcdUQ4M0RcdURDNjgoPzpcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8KD86XHVEODNDXHVERkZGXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZFXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZEXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZDXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF0pXHVGRTBGfFx1MjAwRCg/Oig/Olx1RDgzRFtcdURDNjhcdURDNjldKVx1MjAwRCg/Olx1RDgzRFtcdURDNjZcdURDNjddKXxcdUQ4M0RbXHVEQzY2XHVEQzY3XSl8XHVEODNDXHVERkZGXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZFXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZEXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZDXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZGfFx1RDgzQ1x1REZGRXxcdUQ4M0NcdURGRkR8XHVEODNDXHVERkZDfFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdKT98KD86XHVEODNEXHVEQzY5KD86XHVEODNDXHVERkZCXHUyMDBEXHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRFtcdURDNjhcdURDNjldKXxcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNEW1x1REM2OFx1REM2OV0pKXwoPzpcdUQ4M0NbXHVERkZDLVx1REZGRl0pXHUyMDBEXHUyNzY0KD86XHVGRTBGXHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRFtcdURDNjhcdURDNjldKXxcdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQoPzpcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHVEODNEW1x1REM2OFx1REM2OV0pKSl8XHVEODNFXHVEREQxKD86XHVEODNDW1x1REZGQi1cdURGRkZdKVx1MjAwRFx1RDgzRVx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pfFx1RDgzRFx1REM2OVx1MjAwRFx1RDgzRFx1REM2OVx1MjAwRCg/Olx1RDgzRFx1REM2Nlx1MjAwRFx1RDgzRFx1REM2NnxcdUQ4M0RcdURDNjdcdTIwMEQoPzpcdUQ4M0RbXHVEQzY2XHVEQzY3XSkpfFx1RDgzRFx1REM2OSg/Olx1MjAwRCg/Olx1Mjc2NCg/Olx1RkUwRlx1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCg/Olx1RDgzRFtcdURDNjhcdURDNjldKXxcdUQ4M0RbXHVEQzY4XHVEQzY5XSl8XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKD86XHVEODNEW1x1REM2OFx1REM2OV0pfFx1RDgzRFtcdURDNjhcdURDNjldKSl8XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkZcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGRVx1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZEXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkNcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGQlx1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSkpfFx1RDgzRVx1REREMSg/Olx1MjAwRCg/Olx1RDgzRVx1REQxRFx1MjAwRFx1RDgzRVx1REREMXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGRlx1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZFXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKXxcdUQ4M0NcdURGRkRcdTIwMEQoPzpcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0VbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF0pfFx1RDgzQ1x1REZGQ1x1MjAwRCg/Olx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDXHVERkZCXHUyMDBEKD86XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFW1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdKSl8XHVEODNEXHVEQzY5XHUyMDBEXHVEODNEXHVEQzY2XHUyMDBEXHVEODNEXHVEQzY2fFx1RDgzRFx1REM2OVx1MjAwRFx1RDgzRFx1REM2OVx1MjAwRCg/Olx1RDgzRFtcdURDNjZcdURDNjddKXxcdUQ4M0RcdURDNjlcdTIwMERcdUQ4M0RcdURDNjdcdTIwMEQoPzpcdUQ4M0RbXHVEQzY2XHVEQzY3XSl8KD86XHVEODNEXHVEQzQxXHVGRTBGP1x1MjAwRFx1RDgzRFx1RERFOHxcdUQ4M0VcdURERDEoPzpcdUQ4M0NcdURGRkZcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkVcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkRcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkNcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkJcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XSl8XHVEODNEXHVEQzY5KD86XHVEODNDXHVERkZGXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZFXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZEXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZDXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHVEODNDXHVERkZCXHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF18XHUyMDBEW1x1MjY5NVx1MjY5Nlx1MjcwOF0pfFx1RDgzRFx1REUzNlx1MjAwRFx1RDgzQ1x1REYyQnxcdUQ4M0NcdURGRjNcdUZFMEY/XHUyMDBEXHUyNkE3fFx1RDgzRFx1REMzQlx1MjAwRFx1Mjc0NHwoPzooPzpcdUQ4M0NbXHVERkMzXHVERkM0XHVERkNBXXxcdUQ4M0RbXHVEQzZFXHVEQzcwXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdfFx1RDgzRVtcdUREMjZcdUREMzVcdUREMzctXHVERDM5XHVERDNEXHVERDNFXHVEREI4XHVEREI5XHVERENELVx1RERDRlx1RERENFx1RERENi1cdURERERdKSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHVEODNEXHVEQzZGfFx1RDgzRVtcdUREREVcdUREREZdKVx1MjAwRFtcdTI2NDBcdTI2NDJdfCg/Olx1MjZGOXxcdUQ4M0NbXHVERkNCXHVERkNDXXxcdUQ4M0RcdURENzUpKD86KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSlcdTIwMERbXHUyNjQwXHUyNjQyXXxcdTIwMERbXHUyNjQwXHUyNjQyXSl8XHVEODNDXHVERkY0XHUyMDBEXHUyNjIwfCg/Olx1RDgzQ1tcdURGQzNcdURGQzRcdURGQ0FdfFx1RDgzRFtcdURDNkVcdURDNzBcdURDNzFcdURDNzNcdURDNzdcdURDODFcdURDODJcdURDODZcdURDODdcdURFNDUtXHVERTQ3XHVERTRCXHVERTREXHVERTRFXHVERUEzXHVERUI0LVx1REVCNl18XHVEODNFW1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0MtXHVERDNFXHVEREI4XHVEREI5XHVERENELVx1RERDRlx1RERENFx1RERENi1cdURERERdKVx1MjAwRFtcdTI2NDBcdTI2NDJdfFtceEE5XHhBRVx1MjAzQ1x1MjA0OVx1MjEyMlx1MjEzOVx1MjE5NC1cdTIxOTlcdTIxQTlcdTIxQUFcdTIzMUFcdTIzMUJcdTIzMjhcdTIzQ0ZcdTIzRUQtXHUyM0VGXHUyM0YxXHUyM0YyXHUyM0Y4LVx1MjNGQVx1MjRDMlx1MjVBQVx1MjVBQlx1MjVCNlx1MjVDMFx1MjVGQlx1MjVGQ1x1MjVGRVx1MjYwMC1cdTI2MDRcdTI2MEVcdTI2MTFcdTI2MTRcdTI2MTVcdTI2MThcdTI2MjBcdTI2MjJcdTI2MjNcdTI2MjZcdTI2MkFcdTI2MkVcdTI2MkZcdTI2MzgtXHUyNjNBXHUyNjQwXHUyNjQyXHUyNjQ4LVx1MjY1M1x1MjY1Rlx1MjY2MFx1MjY2M1x1MjY2NVx1MjY2Nlx1MjY2OFx1MjY3Qlx1MjY3RVx1MjY3Rlx1MjY5Mlx1MjY5NC1cdTI2OTdcdTI2OTlcdTI2OUJcdTI2OUNcdTI2QTBcdTI2QTdcdTI2QUFcdTI2QjBcdTI2QjFcdTI2QkRcdTI2QkVcdTI2QzRcdTI2QzhcdTI2Q0ZcdTI2RDFcdTI2RDNcdTI2RTlcdTI2RjAtXHUyNkY1XHUyNkY3XHUyNkY4XHUyNkZBXHUyNzAyXHUyNzA4XHUyNzA5XHUyNzBGXHUyNzEyXHUyNzE0XHUyNzE2XHUyNzFEXHUyNzIxXHUyNzMzXHUyNzM0XHUyNzQ0XHUyNzQ3XHUyNzYzXHUyN0ExXHUyOTM0XHUyOTM1XHUyQjA1LVx1MkIwN1x1MkIxQlx1MkIxQ1x1MkI1NVx1MzAzMFx1MzAzRFx1MzI5N1x1MzI5OV18XHVEODNDW1x1REMwNFx1REQ3MFx1REQ3MVx1REQ3RVx1REQ3Rlx1REUwMlx1REUzN1x1REYyMVx1REYyNC1cdURGMkNcdURGMzZcdURGN0RcdURGOTZcdURGOTdcdURGOTktXHVERjlCXHVERjlFXHVERjlGXHVERkNEXHVERkNFXHVERkQ0LVx1REZERlx1REZGNVx1REZGN118XHVEODNEW1x1REMzRlx1RENGRFx1REQ0OVx1REQ0QVx1REQ2Rlx1REQ3MFx1REQ3M1x1REQ3Ni1cdURENzlcdUREODdcdUREOEEtXHVERDhEXHVEREE1XHVEREE4XHVEREIxXHVEREIyXHVEREJDXHVEREMyLVx1RERDNFx1REREMS1cdURERDNcdUREREMtXHVERERFXHVEREUxXHVEREUzXHVEREU4XHVEREVGXHVEREYzXHVEREZBXHVERUNCXHVERUNELVx1REVDRlx1REVFMC1cdURFRTVcdURFRTlcdURFRjBcdURFRjNdKVx1RkUwRnxcdUQ4M0RcdURDNDFcdUZFMEY/XHUyMDBEXHVEODNEXHVEREU4fFx1RDgzRVx1REREMSg/Olx1RDgzQ1x1REZGRlx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGRVx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGRFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGQ1x1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1RDgzQ1x1REZGQlx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdfFx1MjAwRFtcdTI2OTVcdTI2OTZcdTI3MDhdKXxcdUQ4M0RcdURDNjkoPzpcdUQ4M0NcdURGRkZcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkVcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkRcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkNcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdUQ4M0NcdURGRkJcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XXxcdTIwMERbXHUyNjk1XHUyNjk2XHUyNzA4XSl8XHVEODNDXHVERkYzXHVGRTBGP1x1MjAwRFx1RDgzQ1x1REYwOHxcdUQ4M0RcdURDNjlcdTIwMERcdUQ4M0RcdURDNjd8XHVEODNEXHVEQzY5XHUyMDBEXHVEODNEXHVEQzY2fFx1RDgzRFx1REUzNlx1MjAwRFx1RDgzQ1x1REYyQnxcdUQ4M0NcdURGRjNcdUZFMEY/XHUyMDBEXHUyNkE3fFx1RDgzRFx1REUzNVx1MjAwRFx1RDgzRFx1RENBQnxcdUQ4M0RcdURFMkVcdTIwMERcdUQ4M0RcdURDQTh8XHVEODNEXHVEQzE1XHUyMDBEXHVEODNFXHVEREJBfFx1RDgzRVx1REVGMSg/Olx1RDgzQ1x1REZGRnxcdUQ4M0NcdURGRkV8XHVEODNDXHVERkZEfFx1RDgzQ1x1REZGQ3xcdUQ4M0NcdURGRkIpP3xcdUQ4M0VcdURERDEoPzpcdUQ4M0NcdURGRkZ8XHVEODNDXHVERkZFfFx1RDgzQ1x1REZGRHxcdUQ4M0NcdURGRkN8XHVEODNDXHVERkZCKT98XHVEODNEXHVEQzY5KD86XHVEODNDXHVERkZGfFx1RDgzQ1x1REZGRXxcdUQ4M0NcdURGRkR8XHVEODNDXHVERkZDfFx1RDgzQ1x1REZGQik/fFx1RDgzRFx1REMzQlx1MjAwRFx1Mjc0NHwoPzooPzpcdUQ4M0NbXHVERkMzXHVERkM0XHVERkNBXXxcdUQ4M0RbXHVEQzZFXHVEQzcwXHVEQzcxXHVEQzczXHVEQzc3XHVEQzgxXHVEQzgyXHVEQzg2XHVEQzg3XHVERTQ1LVx1REU0N1x1REU0Qlx1REU0RFx1REU0RVx1REVBM1x1REVCNC1cdURFQjZdfFx1RDgzRVtcdUREMjZcdUREMzVcdUREMzctXHVERDM5XHVERDNEXHVERDNFXHVEREI4XHVEREI5XHVERENELVx1RERDRlx1RERENFx1RERENi1cdURERERdKSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSl8XHVEODNEXHVEQzZGfFx1RDgzRVtcdUREREVcdUREREZdKVx1MjAwRFtcdTI2NDBcdTI2NDJdfCg/Olx1MjZGOXxcdUQ4M0NbXHVERkNCXHVERkNDXXxcdUQ4M0RcdURENzUpKD86KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSlcdTIwMERbXHUyNjQwXHUyNjQyXXxcdTIwMERbXHUyNjQwXHUyNjQyXSl8XHVEODNDXHVERkY0XHUyMDBEXHUyNjIwfFx1RDgzQ1x1RERGRFx1RDgzQ1x1RERGMHxcdUQ4M0NcdURERjZcdUQ4M0NcdURERTZ8XHVEODNDXHVEREY0XHVEODNDXHVEREYyfFx1RDgzRFx1REMwOFx1MjAwRFx1MkIxQnxcdTI3NjQoPzpcdUZFMEZcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KXxcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KSl8XHVEODNEXHVEQzQxXHVGRTBGP3xcdUQ4M0NcdURGRjNcdUZFMEY/fCg/Olx1RDgzQ1tcdURGQzNcdURGQzRcdURGQ0FdfFx1RDgzRFtcdURDNkVcdURDNzBcdURDNzFcdURDNzNcdURDNzdcdURDODFcdURDODJcdURDODZcdURDODdcdURFNDUtXHVERTQ3XHVERTRCXHVERTREXHVERTRFXHVERUEzXHVERUI0LVx1REVCNl18XHVEODNFW1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0MtXHVERDNFXHVEREI4XHVEREI5XHVERENELVx1RERDRlx1RERENFx1RERENi1cdURERERdKVx1MjAwRFtcdTI2NDBcdTI2NDJdfFx1RDgzQ1x1RERGRig/Olx1RDgzQ1tcdURERTZcdURERjJcdURERkNdKXxcdUQ4M0NcdURERkUoPzpcdUQ4M0NbXHVEREVBXHVEREY5XSl8XHVEODNDXHVEREZDKD86XHVEODNDW1x1RERFQlx1RERGOF0pfFx1RDgzQ1x1RERGQig/Olx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdKXxcdUQ4M0NcdURERkEoPzpcdUQ4M0NbXHVEREU2XHVEREVDXHVEREYyXHVEREYzXHVEREY4XHVEREZFXHVEREZGXSl8XHVEODNDXHVEREY5KD86XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERURcdURERUYtXHVEREY0XHVEREY3XHVEREY5XHVEREZCXHVEREZDXHVEREZGXSl8XHVEODNDXHVEREY4KD86XHVEODNDW1x1RERFNi1cdURERUFcdURERUMtXHVEREY0XHVEREY3LVx1RERGOVx1RERGQlx1RERGRC1cdURERkZdKXxcdUQ4M0NcdURERjcoPzpcdUQ4M0NbXHVEREVBXHVEREY0XHVEREY4XHVEREZBXHVEREZDXSl8XHVEODNDXHVEREY1KD86XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV0pfFx1RDgzQ1x1RERGMyg/Olx1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXSl8XHVEODNDXHVEREYyKD86XHVEODNDW1x1RERFNlx1RERFOC1cdURERURcdURERjAtXHVEREZGXSl8XHVEODNDXHVEREYxKD86XHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXSl8XHVEODNDXHVEREYwKD86XHVEODNDW1x1RERFQVx1RERFQy1cdURERUVcdURERjJcdURERjNcdURERjVcdURERjdcdURERkNcdURERkVcdURERkZdKXxcdUQ4M0NcdURERUYoPzpcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XSl8XHVEODNDXHVEREVFKD86XHVEODNDW1x1RERFOC1cdURERUFcdURERjEtXHVEREY0XHVEREY2LVx1RERGOV0pfFx1RDgzQ1x1RERFRCg/Olx1RDgzQ1tcdURERjBcdURERjJcdURERjNcdURERjdcdURERjlcdURERkFdKXxcdUQ4M0NcdURERUMoPzpcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXSl8XHVEODNDXHVEREVCKD86XHVEODNDW1x1RERFRS1cdURERjBcdURERjJcdURERjRcdURERjddKXxcdUQ4M0NcdURERUEoPzpcdUQ4M0NbXHVEREU2XHVEREU4XHVEREVBXHVEREVDXHVEREVEXHVEREY3LVx1RERGQV0pfFx1RDgzQ1x1RERFOSg/Olx1RDgzQ1tcdURERUFcdURERUNcdURERUZcdURERjBcdURERjJcdURERjRcdURERkZdKXxcdUQ4M0NcdURERTgoPzpcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRVx1RERGMC1cdURERjVcdURERjdcdURERkEtXHVEREZGXSl8XHVEODNDXHVEREU3KD86XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl0pfFx1RDgzQ1x1RERFNig/Olx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl0pfFsjXCowLTldXHVGRTBGP1x1MjBFM3xcdUQ4M0VcdUREM0MoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pfFx1Mjc2NFx1RkUwRj98KD86XHVEODNDW1x1REZDM1x1REZDNFx1REZDQV18XHVEODNEW1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XXxcdUQ4M0VbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXSkoPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pfCg/Olx1MjZGOXxcdUQ4M0NbXHVERkNCXHVERkNDXXxcdUQ4M0RcdURENzUpKD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFx1RDgzQ1x1REZGNHwoPzpbXHUyNzBBXHUyNzBCXXxcdUQ4M0NbXHVERjg1XHVERkMyXHVERkM3XXxcdUQ4M0RbXHVEQzQyXHVEQzQzXHVEQzQ2LVx1REM1MFx1REM2Nlx1REM2N1x1REM2Qi1cdURDNkRcdURDNzJcdURDNzQtXHVEQzc2XHVEQzc4XHVEQzdDXHVEQzgzXHVEQzg1XHVEQzhGXHVEQzkxXHVEQ0FBXHVERDdBXHVERDk1XHVERDk2XHVERTRDXHVERTRGXHVERUMwXHVERUNDXXxcdUQ4M0VbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGNl0pKD86XHVEODNDW1x1REZGQi1cdURGRkZdKXwoPzpbXHUyNjFEXHUyNzBDXHUyNzBEXXxcdUQ4M0RbXHVERDc0XHVERDkwXSkoPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKXxbXHUyNjFEXHUyNzBBLVx1MjcwRF18XHVEODNDW1x1REY4NVx1REZDMlx1REZDN118XHVEODNEW1x1REMwOFx1REMxNVx1REMzQlx1REM0Mlx1REM0M1x1REM0Ni1cdURDNTBcdURDNjZcdURDNjdcdURDNkItXHVEQzZEXHVEQzcyXHVEQzc0LVx1REM3Nlx1REM3OFx1REM3Q1x1REM4M1x1REM4NVx1REM4Rlx1REM5MVx1RENBQVx1REQ3NFx1REQ3QVx1REQ5MFx1REQ5NVx1REQ5Nlx1REUyRVx1REUzNVx1REUzNlx1REU0Q1x1REU0Rlx1REVDMFx1REVDQ118XHVEODNFW1x1REQwQ1x1REQwRlx1REQxOC1cdUREMUZcdUREMzAtXHVERDM0XHVERDM2XHVERDNDXHVERDc3XHVEREI1XHVEREI2XHVEREJCXHVEREQyXHVEREQzXHVEREQ1XHVERUMzLVx1REVDNVx1REVGMFx1REVGMi1cdURFRjZdfFx1RDgzQ1tcdURGQzNcdURGQzRcdURGQ0FdfFx1RDgzRFtcdURDNkVcdURDNzBcdURDNzFcdURDNzNcdURDNzdcdURDODFcdURDODJcdURDODZcdURDODdcdURFNDUtXHVERTQ3XHVERTRCXHVERTREXHVERTRFXHVERUEzXHVERUI0LVx1REVCNl18XHVEODNFW1x1REQyNlx1REQzNVx1REQzNy1cdUREMzlcdUREM0RcdUREM0VcdUREQjhcdUREQjlcdUREQ0QtXHVERENGXHVEREQ0XHVEREQ2LVx1RERERF18XHVEODNEXHVEQzZGfFx1RDgzRVtcdUREREVcdUREREZdfFtceEE5XHhBRVx1MjAzQ1x1MjA0OVx1MjEyMlx1MjEzOVx1MjE5NC1cdTIxOTlcdTIxQTlcdTIxQUFcdTIzMUFcdTIzMUJcdTIzMjhcdTIzQ0ZcdTIzRUQtXHUyM0VGXHUyM0YxXHUyM0YyXHUyM0Y4LVx1MjNGQVx1MjRDMlx1MjVBQVx1MjVBQlx1MjVCNlx1MjVDMFx1MjVGQlx1MjVGQ1x1MjVGRVx1MjYwMC1cdTI2MDRcdTI2MEVcdTI2MTFcdTI2MTRcdTI2MTVcdTI2MThcdTI2MjBcdTI2MjJcdTI2MjNcdTI2MjZcdTI2MkFcdTI2MkVcdTI2MkZcdTI2MzgtXHUyNjNBXHUyNjQwXHUyNjQyXHUyNjQ4LVx1MjY1M1x1MjY1Rlx1MjY2MFx1MjY2M1x1MjY2NVx1MjY2Nlx1MjY2OFx1MjY3Qlx1MjY3RVx1MjY3Rlx1MjY5Mlx1MjY5NC1cdTI2OTdcdTI2OTlcdTI2OUJcdTI2OUNcdTI2QTBcdTI2QTdcdTI2QUFcdTI2QjBcdTI2QjFcdTI2QkRcdTI2QkVcdTI2QzRcdTI2QzhcdTI2Q0ZcdTI2RDFcdTI2RDNcdTI2RTlcdTI2RjAtXHUyNkY1XHUyNkY3XHUyNkY4XHUyNkZBXHUyNzAyXHUyNzA4XHUyNzA5XHUyNzBGXHUyNzEyXHUyNzE0XHUyNzE2XHUyNzFEXHUyNzIxXHUyNzMzXHUyNzM0XHUyNzQ0XHUyNzQ3XHUyNzYzXHUyN0ExXHUyOTM0XHUyOTM1XHUyQjA1LVx1MkIwN1x1MkIxQlx1MkIxQ1x1MkI1NVx1MzAzMFx1MzAzRFx1MzI5N1x1MzI5OV18XHVEODNDW1x1REMwNFx1REQ3MFx1REQ3MVx1REQ3RVx1REQ3Rlx1REUwMlx1REUzN1x1REYyMVx1REYyNC1cdURGMkNcdURGMzZcdURGN0RcdURGOTZcdURGOTdcdURGOTktXHVERjlCXHVERjlFXHVERjlGXHVERkNEXHVERkNFXHVERkQ0LVx1REZERlx1REZGNVx1REZGN118XHVEODNEW1x1REMzRlx1RENGRFx1REQ0OVx1REQ0QVx1REQ2Rlx1REQ3MFx1REQ3M1x1REQ3Ni1cdURENzlcdUREODdcdUREOEEtXHVERDhEXHVEREE1XHVEREE4XHVEREIxXHVEREIyXHVEREJDXHVEREMyLVx1RERDNFx1REREMS1cdURERDNcdUREREMtXHVERERFXHVEREUxXHVEREUzXHVEREU4XHVEREVGXHVEREYzXHVEREZBXHVERUNCXHVERUNELVx1REVDRlx1REVFMC1cdURFRTVcdURFRTlcdURFRjBcdURFRjNdfFtcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNjkzXHUyNkExXHUyNkFCXHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkZEXHUyNzA1XHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc1N1x1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCNTBdfFx1RDgzQ1tcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVERTAxXHVERTFBXHVERTJGXHVERTMyLVx1REUzNlx1REUzOC1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIwXHVERjJELVx1REYzNVx1REYzNy1cdURGN0NcdURGN0UtXHVERjg0XHVERjg2LVx1REY5M1x1REZBMC1cdURGQzFcdURGQzVcdURGQzZcdURGQzhcdURGQzlcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGOC1cdURGRkZdfFx1RDgzRFtcdURDMDAtXHVEQzA3XHVEQzA5LVx1REMxNFx1REMxNi1cdURDM0FcdURDM0MtXHVEQzNFXHVEQzQwXHVEQzQ0XHVEQzQ1XHVEQzUxLVx1REM2NVx1REM2QVx1REM3OS1cdURDN0JcdURDN0QtXHVEQzgwXHVEQzg0XHVEQzg4LVx1REM4RVx1REM5MFx1REM5Mi1cdURDQTlcdURDQUItXHVEQ0ZDXHVEQ0ZGLVx1REQzRFx1REQ0Qi1cdURENEVcdURENTAtXHVERDY3XHVEREE0XHVEREZCLVx1REUyRFx1REUyRi1cdURFMzRcdURFMzctXHVERTQ0XHVERTQ4LVx1REU0QVx1REU4MC1cdURFQTJcdURFQTQtXHVERUIzXHVERUI3LVx1REVCRlx1REVDMS1cdURFQzVcdURFRDAtXHVERUQyXHVERUQ1LVx1REVEN1x1REVERC1cdURFREZcdURFRUJcdURFRUNcdURFRjQtXHVERUZDXHVERkUwLVx1REZFQlx1REZGMF18XHVEODNFW1x1REQwRFx1REQwRVx1REQxMC1cdUREMTdcdUREMjAtXHVERDI1XHVERDI3LVx1REQyRlx1REQzQVx1REQzRi1cdURENDVcdURENDctXHVERDc2XHVERDc4LVx1RERCNFx1RERCN1x1RERCQVx1RERCQy1cdUREQ0NcdURERDBcdURERTAtXHVEREZGXHVERTcwLVx1REU3NFx1REU3OC1cdURFN0NcdURFODAtXHVERTg2XHVERTkwLVx1REVBQ1x1REVCMC1cdURFQkFcdURFQzAtXHVERUMyXHVERUQwLVx1REVEOVx1REVFMC1cdURFRTddL2c7CiAgICB9OwoKICAgIC8qKiBOb3JtYWxpemUgYSBkdXJhdGlvbiB0byBhbGwgb2YgdGhlIHByb3BlciB1bml0cy4gKi8NCiAgICBmdW5jdGlvbiBub3JtYWxpemVEdXJhdGlvbihkdXIpIHsNCiAgICAgICAgcmV0dXJuIGR1ci5zaGlmdFRvKCJ5ZWFycyIsICJtb250aHMiLCAid2Vla3MiLCAiZGF5cyIsICJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiLCAibWlsbGlzZWNvbmRzIikubm9ybWFsaXplKCk7DQogICAgfQ0KICAgIC8qKiBHZXQgdGhlICJ0aXRsZSIgZm9yIGEgZmlsZSwgYnkgc3RyaXBwaW5nIG90aGVyIHBhcnRzIG9mIHRoZSBwYXRoIGFzIHdlbGwgYXMgdGhlIGV4dGVuc2lvbi4gKi8NCiAgICBmdW5jdGlvbiBnZXRGaWxlVGl0bGUocGF0aCkgew0KICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygiLyIpKQ0KICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoIi8iKSArIDEpOw0KICAgICAgICBpZiAocGF0aC5lbmRzV2l0aCgiLm1kIikpDQogICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTsNCiAgICAgICAgcmV0dXJuIHBhdGg7DQogICAgfQ0KICAgIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLw0KICAgIGNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSkubWFwKHN0ciA9PiBzdHIudG9Mb2NhbGVMb3dlckNhc2UoKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMud2hpdGVzcGFjZS5tYXAoXyA9PiAiLSIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFueS5tYXAoXyA9PiAiIikpDQogICAgICAgIC5tYW55KCkNCiAgICAgICAgLm1hcChyZXN1bHQgPT4gcmVzdWx0LmpvaW4oIiIpKTsNCiAgICAvKiogQ29udmVydCBhbiBhcmJpdHJhcnkgdmFyaWFibGUgbmFtZSBpbnRvIHNvbWV0aGluZyBKUy9xdWVyeSBmcmllbmRseS4gKi8NCiAgICBmdW5jdGlvbiBjYW5vbmljYWxpemVWYXJOYW1lKG5hbWUpIHsNCiAgICAgICAgcmV0dXJuIFZBUl9OQU1FX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UobmFtZSk7DQogICAgfQ0KICAgIGNvbnN0IEhFQURFUl9DQU5PTklDQUxJWkVSID0gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleCgvWzAtOVxwe0xldHRlcn1fLV0rL3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIiAiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbnkubWFwKF8gPT4gIiAiKSkNCiAgICAgICAgLm1hbnkoKQ0KICAgICAgICAubWFwKHJlc3VsdCA9PiB7DQogICAgICAgIHJldHVybiByZXN1bHQuam9pbigiIikuc3BsaXQoL1xzKy8pLmpvaW4oIiAiKS50cmltKCk7DQogICAgfSk7DQogICAgLyoqDQogICAgICogTm9ybWFsaXplcyB0aGUgdGV4dCBpbiBhIGhlYWRlciB0byBiZSBzb21ldGhpbmcgdGhhdCBpcyBhY3R1YWxseSBsaW5rYWJsZSB0by4gVGhpcyBtaW1pY3MNCiAgICAgKiBob3cgT2JzaWRpYW4gZG9lcyBpdCdzIG5vcm1hbGl6YXRpb24sIGNvbGxhcHNpbmcgcmVwZWF0ZWQgc3BhY2VzIGFuZCBzdHJpcHBpbmcgb3V0IGNvbnRyb2wgY2hhcmFjdGVycy4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlcikgew0KICAgICAgICByZXR1cm4gSEVBREVSX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UoaGVhZGVyKTsNCiAgICB9CgogICAgLyoqIEEgc3BlY2lmaWMgdGFzay4gKi8NCiAgICBjbGFzcyBUYXNrIHsNCiAgICAgICAgY29uc3RydWN0b3IoaW5pdCkgew0KICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTsNCiAgICAgICAgICAgIHRoaXMuc3VidGFza3MgPSAodGhpcy5zdWJ0YXNrcyB8fCBbXSkubWFwKHQgPT4gbmV3IFRhc2sodCkpOw0KICAgICAgICB9DQogICAgICAgIC8qKiBDcmVhdGUgYSB0YXNrIGZyb20gYSByZWNvcmQuICovDQogICAgICAgIHN0YXRpYyBmcm9tT2JqZWN0KG9iaikgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBUYXNrKG9iaik7DQogICAgICAgIH0NCiAgICAgICAgaWQoKSB7DQogICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5wYXRofS0ke3RoaXMubGluZX1gOw0KICAgICAgICB9DQogICAgICAgIG1hcmtkb3duKCkgew0KICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGAtIFske3RoaXMuY29tcGxldGVkID8gIngiIDogIiAifV0gJHt0aGlzLnRleHR9YDsNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICAgICAgLyoqIFJldHVybiBhIG5ldyB0YXNrIHdoZXJlIHRoZSBjcmVhdGVkIGFuZCBjb21wbGV0ZWQgZmllbGRzIGFyZSBhc3NpZ25lZCB0byB0aGUgZ2l2ZW4gZGVmYXVsdHMgaWYgbm90IHByZXNlbnQuICovDQogICAgICAgIHdpdGhEZWZhdWx0RGF0ZXMoZGVmYXVsdENyZWF0ZWQsIGRlZmF1bHRDb21wbGV0ZWQpIHsNCiAgICAgICAgICAgIHZhciBfYSwgX2I7DQogICAgICAgICAgICBsZXQgbmV3VGFzayA9IG5ldyBUYXNrKHRoaXMpOw0KICAgICAgICAgICAgbmV3VGFzay5jcmVhdGVkID0gKF9hID0gbmV3VGFzay5jcmVhdGVkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBkZWZhdWx0Q3JlYXRlZDsNCiAgICAgICAgICAgIGlmIChuZXdUYXNrLmNvbXBsZXRlZCkNCiAgICAgICAgICAgICAgICBuZXdUYXNrLmNvbXBsZXRpb24gPSAoX2IgPSBuZXdUYXNrLmNvbXBsZXRpb24pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGRlZmF1bHRDb21wbGV0ZWQ7DQogICAgICAgICAgICBuZXdUYXNrLnN1YnRhc2tzID0gbmV3VGFzay5zdWJ0YXNrcy5tYXAodCA9PiB0LndpdGhEZWZhdWx0RGF0ZXMoZGVmYXVsdENyZWF0ZWQsIGRlZmF1bHRDb21wbGV0ZWQpKTsNCiAgICAgICAgICAgIHJldHVybiBuZXdUYXNrOw0KICAgICAgICB9DQogICAgICAgIHRvT2JqZWN0KGlubGluZUFubm90YXRpb25zID0gdHJ1ZSkgew0KICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsNCiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLnRleHQsDQogICAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLA0KICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCwNCiAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHRoaXMuY29tcGxldGVkLA0KICAgICAgICAgICAgICAgIGZ1bGx5Q29tcGxldGVkOiB0aGlzLmZ1bGx5Q29tcGxldGVkLA0KICAgICAgICAgICAgICAgIHJlYWw6IHRoaXMucmVhbCwNCiAgICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssDQogICAgICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLA0KICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLA0KICAgICAgICAgICAgICAgIHN1YnRhc2tzOiB0aGlzLnN1YnRhc2tzLm1hcCh0ID0+IHQudG9PYmplY3QoaW5saW5lQW5ub3RhdGlvbnMpKSwNCiAgICAgICAgICAgICAgICBhbm5vdGF0ZWQ6ICEhdGhpcy5kdWUgfHwgISF0aGlzLmNvbXBsZXRpb24gfHwgKCEhdGhpcy5hbm5vdGF0aW9ucyAmJiBPYmplY3Qua2V5cyh0aGlzLmFubm90YXRpb25zKS5sZW5ndGggPiAwKSwNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBpZiAodGhpcy5jcmVhdGVkKQ0KICAgICAgICAgICAgICAgIHJlc3VsdC5jcmVhdGVkID0gdGhpcy5jcmVhdGVkOw0KICAgICAgICAgICAgaWYgKHRoaXMuZHVlKQ0KICAgICAgICAgICAgICAgIHJlc3VsdC5kdWUgPSB0aGlzLmR1ZTsNCiAgICAgICAgICAgIGlmICh0aGlzLmNvbXBsZXRpb24pDQogICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRpb24gPSB0aGlzLmNvbXBsZXRpb247DQogICAgICAgICAgICBpZiAodGhpcy5hbm5vdGF0aW9ucykgew0KICAgICAgICAgICAgICAgIGlmIChpbmxpbmVBbm5vdGF0aW9ucykgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5hbm5vdGF0aW9ucykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gcmVzdWx0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFubm90YXRpb25zID0gdGhpcy5hbm5vdGF0aW9uczsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAgfQ0KICAgIC8qKiBBbiBPYnNpZGlhbiBsaW5rIHdpdGggYWxsIGFzc29jaWF0ZWQgbWV0YWRhdGEuICovDQogICAgY2xhc3MgTGluayB7DQogICAgICAgIGNvbnN0cnVjdG9yKGZpZWxkcykgew0KICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpOw0KICAgICAgICB9DQogICAgICAgIHN0YXRpYyBmaWxlKHBhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgTGluayh7DQogICAgICAgICAgICAgICAgcGF0aCwNCiAgICAgICAgICAgICAgICBlbWJlZCwNCiAgICAgICAgICAgICAgICBkaXNwbGF5LA0KICAgICAgICAgICAgICAgIHR5cGU6ICJmaWxlIiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgew0KICAgICAgICAgICAgLy8gSGVhZGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gYWxwaGEtbnVtZXJpYyAmIHdpdGggZXh0cmEgc3BhY2luZyByZW1vdmVkLg0KICAgICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsNCiAgICAgICAgICAgICAgICBwYXRoLA0KICAgICAgICAgICAgICAgIGVtYmVkLA0KICAgICAgICAgICAgICAgIGRpc3BsYXksDQogICAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLA0KICAgICAgICAgICAgICAgIHR5cGU6ICJoZWFkZXIiLA0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgICAgc3RhdGljIGJsb2NrKHBhdGgsIGJsb2NrSWQsIGVtYmVkLCBkaXNwbGF5KSB7DQogICAgICAgICAgICByZXR1cm4gbmV3IExpbmsoew0KICAgICAgICAgICAgICAgIHBhdGgsDQogICAgICAgICAgICAgICAgZW1iZWQsDQogICAgICAgICAgICAgICAgZGlzcGxheSwNCiAgICAgICAgICAgICAgICBzdWJwYXRoOiBibG9ja0lkLA0KICAgICAgICAgICAgICAgIHR5cGU6ICJibG9jayIsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBzdGF0aWMgZnJvbU9iamVjdChvYmplY3QpIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgTGluayhvYmplY3QpOw0KICAgICAgICB9DQogICAgICAgIC8qKiBDaGVja3MgZm9yIGxpbmsgZXF1YWxpdHkgKGkuZS4sIHRoYXQgdGhlIGxpbmtzIGFyZSBwb2ludGluZyB0byB0aGUgc2FtZSBleGFjdCBsb2NhdGlvbikuICovDQogICAgICAgIGVxdWFscyhvdGhlcikgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMucGF0aCA9PSBvdGhlci5wYXRoICYmIHRoaXMudHlwZSA9PSBvdGhlci50eXBlICYmIHRoaXMuc3VicGF0aCA9PSBvdGhlci5zdWJwYXRoOw0KICAgICAgICB9DQogICAgICAgIHRvU3RyaW5nKCkgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTsNCiAgICAgICAgfQ0KICAgICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoICovDQogICAgICAgIHRvT2JqZWN0KCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0aDogdGhpcy5wYXRoLCB0eXBlOiB0aGlzLnR5cGUsIHN1YnBhdGg6IHRoaXMuc3VicGF0aCwgZGlzcGxheTogdGhpcy5kaXNwbGF5LCBlbWJlZDogdGhpcy5lbWJlZCB9Ow0KICAgICAgICB9DQogICAgICAgIC8qKiBSZXR1cm4gYSBuZXcgbGluayB3aGljaCBwb2ludHMgdG8gdGhlIHNhbWUgbG9jYXRpb24gYnV0IHdpdGggYSBuZXcgZGlzcGxheSB2YWx1ZS4gKi8NCiAgICAgICAgd2l0aERpc3BsYXkoZGlzcGxheSkgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgZGlzcGxheSB9KSk7DQogICAgICAgIH0NCiAgICAgICAgLyoqIENvbnZlcnQgYSBmaWxlIGxpbmsgaW50byBhIGxpbmsgdG8gYSBzcGVjaWZpYyBoZWFkZXIuICovDQogICAgICAgIHdpdGhIZWFkZXIoaGVhZGVyKSB7DQogICAgICAgICAgICByZXR1cm4gTGluay5oZWFkZXIodGhpcy5wYXRoLCBoZWFkZXIsIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7DQogICAgICAgIH0NCiAgICAgICAgLyoqIENvbnZlcnQgYW55IGxpbmsgaW50byBhIGxpbmsgdG8gaXRzIGZpbGUuICovDQogICAgICAgIHRvRmlsZSgpIHsNCiAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUodGhpcy5wYXRoLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOw0KICAgICAgICB9DQogICAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayBpbnRvIGFuIGVtYmVkZGVkIGxpbmsuICovDQogICAgICAgIHRvRW1iZWQoKSB7DQogICAgICAgICAgICBpZiAodGhpcy5lbWJlZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsNCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7DQogICAgICAgICAgICAgICAgbGluay5lbWJlZCA9IHRydWU7DQogICAgICAgICAgICAgICAgcmV0dXJuIGxpbms7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi8NCiAgICAgICAgbWFya2Rvd24oKSB7DQogICAgICAgICAgICBsZXQgcmVzdWx0ID0gKHRoaXMuZW1iZWQgPyAiISIgOiAiIikgKyAiW1siICsgdGhpcy5wYXRoOw0KICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIikNCiAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiMiICsgdGhpcy5zdWJwYXRoOw0KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09ICJibG9jayIpDQogICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIjXiIgKyB0aGlzLnN1YnBhdGg7DQogICAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5KQ0KICAgICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyB0aGlzLmRpc3BsYXk7DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXN1bHQgKz0gInwiICsgZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7DQogICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIgPiAiICsgdGhpcy5zdWJwYXRoOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmVzdWx0ICs9ICJdXSI7DQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAgICAgIC8qKiBUaGUgc3RyaXBwZWQgbmFtZSBvZiB0aGUgZmlsZSB0aGlzIGxpbmsgcG9pbnRzIGludG8uICovDQogICAgICAgIGZpbGVOYW1lKCkgew0KICAgICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpLnJlcGxhY2UoIi5tZCIsICIiKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICB2YXIgVmFsdWVzOw0KICAgIChmdW5jdGlvbiAoVmFsdWVzKSB7DQogICAgICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0YXJ5IHZhbHVlIGludG8gYSByZWFzb25hYmxlLCBNYXJrZG93bi1mcmllbmRseSBzdHJpbmcgaWYgcG9zc2libGUuICovDQogICAgICAgIGZ1bmN0aW9uIHRvU3RyaW5nKGZpZWxkLCBzZXR0aW5nID0gREVGQVVMVF9RVUVSWV9TRVRUSU5HUywgcmVjdXJzaXZlID0gZmFsc2UpIHsNCiAgICAgICAgICAgIGxldCB3cmFwcGVkID0gd3JhcFZhbHVlKGZpZWxkKTsNCiAgICAgICAgICAgIGlmICghd3JhcHBlZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gIm51bGwiOw0KICAgICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOg0KICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgIGNhc2UgImh0bWwiOg0KICAgICAgICAgICAgICAgIGNhc2UgIm51bGwiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIgKyB3cmFwcGVkLnZhbHVlOw0KICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOw0KICAgICAgICAgICAgICAgIGNhc2UgInRhc2siOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOw0KICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsNCiAgICAgICAgICAgICAgICBjYXNlICJhcnJheSI6DQogICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyI7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcChmID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKCIsICIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJdIjsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCJ7ICIgKw0KICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbigiLCAiKSArDQogICAgICAgICAgICAgICAgICAgICAgICAiIH0iKTsNCiAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZWQudmFsdWUuc2Vjb25kID09IDAgJiYgd3JhcHBlZC52YWx1ZS5ob3VyID09IDAgJiYgd3JhcHBlZC52YWx1ZS5taW51dGUgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpOw0KICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9JU09UaW1lKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLnRvU3RyaW5nID0gdG9TdHJpbmc7DQogICAgICAgIC8qKiBXcmFwIGEgbGl0ZXJhbCB2YWx1ZSBzbyB5b3UgY2FuIHN3aXRjaCBvbiBpdCBlYXNpbHkuICovDQogICAgICAgIGZ1bmN0aW9uIHdyYXBWYWx1ZSh2YWwpIHsNCiAgICAgICAgICAgIGlmIChpc051bGwodmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVsbCIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm51bWJlciIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogInN0cmluZyIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhbih2YWwpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNEdXJhdGlvbih2YWwpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJkdXJhdGlvbiIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzRGF0ZSh2YWwpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJkYXRlIiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9Ow0KICAgICAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgICBlbHNlIGlmIChpc1Rhc2sodmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAidGFzayIsIHZhbHVlOiB2YWwgfTsNCiAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24odmFsKSkNCiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJvYmplY3QiLCB2YWx1ZTogdmFsIH07DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOw0KICAgICAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGF2aWV3IHZhbHVlLiAqLw0KICAgICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsNCiAgICAgICAgICAgIHZhciBfYSwgX2I7DQogICAgICAgICAgICAvLyBIYW5kbGUgdW5kZWZpbmVkL251bGxzIGZpcnN0Lg0KICAgICAgICAgICAgaWYgKHZhbDEgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICB2YWwxID0gbnVsbDsNCiAgICAgICAgICAgIGlmICh2YWwyID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgICAgdmFsMiA9IG51bGw7DQogICAgICAgICAgICBpZiAodmFsMSA9PT0gbnVsbCAmJiB2YWwyID09PSBudWxsKQ0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgZWxzZSBpZiAodmFsMSA9PT0gbnVsbCkNCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQogICAgICAgICAgICBlbHNlIGlmICh2YWwyID09PSBudWxsKQ0KICAgICAgICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgICAgLy8gQSBub24tbnVsbCB2YWx1ZSBub3cgd2hpY2ggd2UgY2FuIHdyYXAgJiBjb21wYXJlIG9uLg0KICAgICAgICAgICAgbGV0IHdyYXAxID0gd3JhcFZhbHVlKHZhbDEpOw0KICAgICAgICAgICAgbGV0IHdyYXAyID0gd3JhcFZhbHVlKHZhbDIpOw0KICAgICAgICAgICAgaWYgKHdyYXAxID09PSB1bmRlZmluZWQgJiYgd3JhcDIgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpDQogICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgICAgZWxzZSBpZiAod3JhcDIgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgICAgIGlmICh3cmFwMS50eXBlICE9IHdyYXAyLnR5cGUpDQogICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnR5cGUubG9jYWxlQ29tcGFyZSh3cmFwMi50eXBlKTsNCiAgICAgICAgICAgIHN3aXRjaCAod3JhcDEudHlwZSkgew0KICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsNCiAgICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOg0KICAgICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsNCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlID8gMSA6IC0xOw0KICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOg0KICAgICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IGxpbmsyID0gd3JhcDIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemUgPSBsaW5rTm9ybWFsaXplciAhPT0gbnVsbCAmJiBsaW5rTm9ybWFsaXplciAhPT0gdm9pZCAwID8gbGlua05vcm1hbGl6ZXIgOiAoKHgpID0+IHgpOw0KICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4NCiAgICAgICAgICAgICAgICAgICAgbGV0IHBhdGhDb21wYXJlID0gbm9ybWFsaXplKGxpbmsxLnBhdGgpLmxvY2FsZUNvbXBhcmUobm9ybWFsaXplKGxpbmsyLnBhdGgpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGhDb21wYXJlICE9IDApDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7DQogICAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSB0eXBlLg0KICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZUNvbXBhcmUgPSBsaW5rMS50eXBlLmxvY2FsZUNvbXBhcmUobGluazIudHlwZSk7DQogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVDb21wYXJlOw0KICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgc3VicGF0aCBleGlzdGVuY2UuDQogICAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiBsaW5rMi5zdWJwYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChfYSA9IGxpbmsxLnN1YnBhdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICIiKS5sb2NhbGVDb21wYXJlKChfYiA9IGxpbmsyLnN1YnBhdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICIiKTsNCiAgICAgICAgICAgICAgICBjYXNlICJ0YXNrIjoNCiAgICAgICAgICAgICAgICAgICAgbGV0IHRhc2sxID0gd3JhcDEudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIGxldCB0YXNrMiA9IHdyYXAyLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAvLyBVc2Ugb2JqZWN0IGNvbXBhcmlzb24gJiBjb21wYXJlIHRoZSB1bmlxdWUgaWRlbnRpZmllcnMgKHBhdGgsIGxpbmUsIGFuZCB0ZXh0IGFzIGJhY2t1cCkuDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJlVmFsdWUoeyBwYXRoOiB0YXNrMS5wYXRoLCBsaW5lOiB0YXNrMS5saW5lLCB0ZXh0OiB0YXNrMS50ZXh0IH0sIHsgcGF0aDogdGFzazIucGF0aCwgbGluZTogdGFzazIubGluZSwgdGV4dDogdGFzazIudGV4dCB9KTsNCiAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgID8gLTENCiAgICAgICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMTsNCiAgICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlDQogICAgICAgICAgICAgICAgICAgICAgICA/IC0xDQogICAgICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7DQogICAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOg0KICAgICAgICAgICAgICAgICAgICBsZXQgZjEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IGYyID0gd3JhcDIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBNYXRoLm1pbihmMS5sZW5ndGgsIGYyLmxlbmd0aCk7IGluZGV4KyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wID0gY29tcGFyZVZhbHVlKGYxW2luZGV4XSwgZjJbaW5kZXhdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYxLmxlbmd0aCAtIGYyLmxlbmd0aDsNCiAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOg0KICAgICAgICAgICAgICAgICAgICBsZXQgbzEgPSB3cmFwMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IG8yID0gd3JhcDIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIGxldCBrMSA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzEpKTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IGsyID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMikpOw0KICAgICAgICAgICAgICAgICAgICBrMS5zb3J0KCk7DQogICAgICAgICAgICAgICAgICAgIGsyLnNvcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IGtleUNvbXBhcmUgPSBjb21wYXJlVmFsdWUoazEsIGsyKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGtleUNvbXBhcmUgIT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXlDb21wYXJlOw0KICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgazEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wID0gY29tcGFyZVZhbHVlKG8xW2tleV0sIG8yW2tleV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAgIT0gMCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgICAgICBjYXNlICJodG1sIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuY29tcGFyZVZhbHVlID0gY29tcGFyZVZhbHVlOw0KICAgICAgICAvKiogRmluZCB0aGUgY29ycmVzcG9uZGluZyBEYXRhdmVpdyB0eXBlIGZvciBhbiBhcmJpdHJhcnkgdmFsdWUuICovDQogICAgICAgIGZ1bmN0aW9uIHR5cGVPZih2YWwpIHsNCiAgICAgICAgICAgIHZhciBfYTsNCiAgICAgICAgICAgIHJldHVybiAoX2EgPSB3cmFwVmFsdWUodmFsKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnR5cGU7DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLnR5cGVPZiA9IHR5cGVPZjsNCiAgICAgICAgLyoqIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgInRydXRoeSIgKGkuZS4sIGlzIG5vbi1udWxsIGFuZCBoYXMgZGF0YSBpbiBpdCkuICovDQogICAgICAgIGZ1bmN0aW9uIGlzVHJ1dGh5KGZpZWxkKSB7DQogICAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7DQogICAgICAgICAgICBpZiAoIXdyYXBwZWQpDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZSAhPSAwOw0KICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmxlbmd0aCA+IDA7DQogICAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOw0KICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF3cmFwcGVkLnZhbHVlLnBhdGg7DQogICAgICAgICAgICAgICAgY2FzZSAidGFzayI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRleHQubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9NaWxsaXMoKSAhPSAwOw0KICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUuYXMoInNlY29uZHMiKSAhPSAwOw0KICAgICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh3cmFwcGVkLnZhbHVlKS5sZW5ndGggPiAwOw0KICAgICAgICAgICAgICAgIGNhc2UgImFycmF5IjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgICAgICBjYXNlICJudWxsIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIGNhc2UgImh0bWwiOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc1RydXRoeSA9IGlzVHJ1dGh5Ow0KICAgICAgICAvKiogRGVlcCBjb3B5IGEgZmllbGQuICovDQogICAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7DQogICAgICAgICAgICBpZiAoZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7DQogICAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChmaWVsZC5tYXAodiA9PiBkZWVwQ29weSh2KSkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgew0KICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsNCiAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGQpKQ0KICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5kZWVwQ29weSA9IGRlZXBDb3B5Ow0KICAgICAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc1N0cmluZyA9IGlzU3RyaW5nOw0KICAgICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJudW1iZXIiOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOw0KICAgICAgICBmdW5jdGlvbiBpc0RhdGUodmFsKSB7DQogICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZVRpbWVfMTsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNEYXRlID0gaXNEYXRlOw0KICAgICAgICBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbCkgew0KICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIER1cmF0aW9uXzE7DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmlzRHVyYXRpb24gPSBpc0R1cmF0aW9uOw0KICAgICAgICBmdW5jdGlvbiBpc051bGwodmFsKSB7DQogICAgICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc051bGwgPSBpc051bGw7DQogICAgICAgIGZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7DQogICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpOw0KICAgICAgICB9DQogICAgICAgIFZhbHVlcy5pc0FycmF5ID0gaXNBcnJheTsNCiAgICAgICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbCkgew0KICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICJib29sZWFuIjsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNCb29sZWFuID0gaXNCb29sZWFuOw0KICAgICAgICBmdW5jdGlvbiBpc0xpbmsodmFsKSB7DQogICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgTGluazsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNMaW5rID0gaXNMaW5rOw0KICAgICAgICBmdW5jdGlvbiBpc1Rhc2sodmFsKSB7DQogICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgVGFzazsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNUYXNrID0gaXNUYXNrOw0KICAgICAgICBmdW5jdGlvbiBpc0h0bWwodmFsKSB7DQogICAgICAgICAgICBpZiAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAidW5kZWZpbmVkIikgew0KICAgICAgICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNIdG1sID0gaXNIdG1sOw0KICAgICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiAodHlwZW9mIHZhbCA9PSAib2JqZWN0IiAmJg0KICAgICAgICAgICAgICAgICFpc0h0bWwodmFsKSAmJg0KICAgICAgICAgICAgICAgICFpc0FycmF5KHZhbCkgJiYNCiAgICAgICAgICAgICAgICAhaXNEdXJhdGlvbih2YWwpICYmDQogICAgICAgICAgICAgICAgIWlzRGF0ZSh2YWwpICYmDQogICAgICAgICAgICAgICAgIWlzTGluayh2YWwpICYmDQogICAgICAgICAgICAgICAgIWlzVGFzayh2YWwpKTsNCiAgICAgICAgfQ0KICAgICAgICBWYWx1ZXMuaXNPYmplY3QgPSBpc09iamVjdDsNCiAgICAgICAgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHsNCiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJmdW5jdGlvbiI7DQogICAgICAgIH0NCiAgICAgICAgVmFsdWVzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uOw0KICAgIH0pKFZhbHVlcyB8fCAoVmFsdWVzID0ge30pKTsNCiAgICB2YXIgR3JvdXBpbmdzOw0KICAgIChmdW5jdGlvbiAoR3JvdXBpbmdzKSB7DQogICAgICAgIGZ1bmN0aW9uIGJhc2UodmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJiYXNlIiwgdmFsdWUgfTsNCiAgICAgICAgfQ0KICAgICAgICBHcm91cGluZ3MuYmFzZSA9IGJhc2U7DQogICAgICAgIGZ1bmN0aW9uIGdyb3VwZWQodmFsdWVzKSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZ3JvdXBlZCIsIGdyb3VwczogdmFsdWVzIH07DQogICAgICAgIH0NCiAgICAgICAgR3JvdXBpbmdzLmdyb3VwZWQgPSBncm91cGVkOw0KICAgIH0pKEdyb3VwaW5ncyB8fCAoR3JvdXBpbmdzID0ge30pKTsKCiAgICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovDQogICAgdmFyIEZpZWxkczsNCiAgICAoZnVuY3Rpb24gKEZpZWxkcykgew0KICAgICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAidmFyaWFibGUiLCBuYW1lIH07DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7DQogICAgICAgIGZ1bmN0aW9uIGxpdGVyYWwodmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXRlcmFsIiwgdmFsdWUgfTsNCiAgICAgICAgfQ0KICAgICAgICBGaWVsZHMubGl0ZXJhbCA9IGxpdGVyYWw7DQogICAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLmJpbmFyeU9wID0gYmluYXJ5T3A7DQogICAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIG9iamVjdDogb2JqLCBpbmRleCB9Ow0KICAgICAgICB9DQogICAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4Ow0KICAgICAgICAvKiogQ29udmVydHMgYSBzdHJpbmcgaW4gZG90LW5vdGF0aW9uLWZvcm1hdCBpbnRvIGEgdmFyaWFibGUgd2hpY2ggaW5kZXhlcy4gKi8NCiAgICAgICAgZnVuY3Rpb24gaW5kZXhWYXJpYWJsZShuYW1lKSB7DQogICAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7DQogICAgICAgICAgICBsZXQgcmVzdWx0ID0gRmllbGRzLnZhcmlhYmxlKHBhcnRzWzBdKTsNCiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7IGluZGV4KyspIHsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLmluZGV4VmFyaWFibGUgPSBpbmRleFZhcmlhYmxlOw0KICAgICAgICBmdW5jdGlvbiBsYW1iZGEoYXJncywgdmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLmxhbWJkYSA9IGxhbWJkYTsNCiAgICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTsNCiAgICAgICAgfQ0KICAgICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7DQogICAgICAgIGZ1bmN0aW9uIGxpc3QodmFsdWVzKSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGlzdCIsIHZhbHVlcyB9Ow0KICAgICAgICB9DQogICAgICAgIEZpZWxkcy5saXN0ID0gbGlzdDsNCiAgICAgICAgZnVuY3Rpb24gb2JqZWN0KHZhbHVlcykgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9Ow0KICAgICAgICB9DQogICAgICAgIEZpZWxkcy5vYmplY3QgPSBvYmplY3Q7DQogICAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm5lZ2F0ZWQiLCBjaGlsZCB9Ow0KICAgICAgICB9DQogICAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7DQogICAgICAgIGZ1bmN0aW9uIGlzQ29tcGFyZU9wKG9wKSB7DQogICAgICAgICAgICByZXR1cm4gb3AgPT0gIjw9IiB8fCBvcCA9PSAiPCIgfHwgb3AgPT0gIj4iIHx8IG9wID09ICI+PSIgfHwgb3AgPT0gIiE9IiB8fCBvcCA9PSAiPSI7DQogICAgICAgIH0NCiAgICAgICAgRmllbGRzLmlzQ29tcGFyZU9wID0gaXNDb21wYXJlT3A7DQogICAgICAgIEZpZWxkcy5OVUxMID0gRmllbGRzLmxpdGVyYWwobnVsbCk7DQogICAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAgIC8qKiBBU1QgaW1wbGVtZW50YXRpb24gZm9yIHF1ZXJpZXMgb3ZlciBkYXRhIHNvdXJjZXMuICovDQogICAgLyoqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nIHNvdXJjZXMuICovDQogICAgdmFyIFNvdXJjZXM7DQogICAgKGZ1bmN0aW9uIChTb3VyY2VzKSB7DQogICAgICAgIGZ1bmN0aW9uIHRhZyh0YWcpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsNCiAgICAgICAgfQ0KICAgICAgICBTb3VyY2VzLnRhZyA9IHRhZzsNCiAgICAgICAgZnVuY3Rpb24gY3N2KHBhdGgpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJjc3YiLCBwYXRoIH07DQogICAgICAgIH0NCiAgICAgICAgU291cmNlcy5jc3YgPSBjc3Y7DQogICAgICAgIGZ1bmN0aW9uIGZvbGRlcihwcmVmaXgpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmb2xkZXIiLCBmb2xkZXI6IHByZWZpeCB9Ow0KICAgICAgICB9DQogICAgICAgIFNvdXJjZXMuZm9sZGVyID0gZm9sZGVyOw0KICAgICAgICBmdW5jdGlvbiBsaW5rKGZpbGUsIGluY29taW5nKSB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGluayIsIGZpbGUsIGRpcmVjdGlvbjogaW5jb21pbmcgPyAiaW5jb21pbmciIDogIm91dGdvaW5nIiB9Ow0KICAgICAgICB9DQogICAgICAgIFNvdXJjZXMubGluayA9IGxpbms7DQogICAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07DQogICAgICAgIH0NCiAgICAgICAgU291cmNlcy5iaW5hcnlPcCA9IGJpbmFyeU9wOw0KICAgICAgICBmdW5jdGlvbiBuZWdhdGUoY2hpbGQpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGUiLCBjaGlsZCB9Ow0KICAgICAgICB9DQogICAgICAgIFNvdXJjZXMubmVnYXRlID0gbmVnYXRlOw0KICAgICAgICBmdW5jdGlvbiBlbXB0eSgpIHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJlbXB0eSIgfTsNCiAgICAgICAgfQ0KICAgICAgICBTb3VyY2VzLmVtcHR5ID0gZW1wdHk7DQogICAgfSkoU291cmNlcyB8fCAoU291cmNlcyA9IHt9KSk7CgogICAgLyoqIEVtb2ppIHJlZ2V4IHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgZmxhZ3MuICovDQogICAgY29uc3QgRU1PSklfUkVHRVggPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpOw0KICAgIC8qKiBQcm92aWRlcyBhIGxvb2t1cCB0YWJsZSBmb3IgdW5pdCBkdXJhdGlvbnMgb2YgdGhlIGdpdmVuIHR5cGUuICovDQogICAgY29uc3QgRFVSQVRJT05fVFlQRVMgPSB7DQogICAgICAgIHllYXI6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLA0KICAgICAgICB5ZWFyczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksDQogICAgICAgIHlyOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwNCiAgICAgICAgeXJzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwNCiAgICAgICAgbW9udGg6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwNCiAgICAgICAgbW9udGhzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksDQogICAgICAgIG1vOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksDQogICAgICAgIG1vczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLA0KICAgICAgICB3ZWVrOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwNCiAgICAgICAgd2Vla3M6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLA0KICAgICAgICB3azogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksDQogICAgICAgIHdrczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksDQogICAgICAgIHc6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLA0KICAgICAgICBkYXk6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IGRheXM6IDEgfSksDQogICAgICAgIGRheXM6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IGRheXM6IDEgfSksDQogICAgICAgIGQ6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IGRheXM6IDEgfSksDQogICAgICAgIGhvdXI6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLA0KICAgICAgICBob3VyczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksDQogICAgICAgIGhyOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgICAgaHJzOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwNCiAgICAgICAgaDogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksDQogICAgICAgIG1pbnV0ZTogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgICAgbWludXRlczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwNCiAgICAgICAgbWluOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgICBtaW5zOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgICBtOiBEdXJhdGlvbl8xLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLA0KICAgICAgICBzZWNvbmQ6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksDQogICAgICAgIHNlY29uZHM6IER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksDQogICAgICAgIHNlYzogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgICAgc2VjczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICAgICAgczogRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwNCiAgICB9Ow0KICAgIC8qKg0KICAgICAqIEtleXdvcmRzIHdoaWNoIGNhbm5vdCBiZSB1c2VkIGFzIHZhcmlhYmxlcyBkaXJlY3RseS4gVXNlIGByb3cuPHRoaW5nPmAgaWYgaXQgaXMgYSB2YXJpYWJsZSB5b3UgaGF2ZSBkZWZpbmVkIGFuZCB3YW50DQogICAgICogdG8gYWNjZXNzLg0KICAgICAqLw0KICAgIGNvbnN0IEtFWVdPUkRTID0gWyJGUk9NIiwgIldIRVJFIiwgIkxJTUlUIiwgIkdST1VQIiwgIkZMQVRURU4iXTsNCiAgICAvLy8vLy8vLy8vLy8vLy8NCiAgICAvLyBVdGlsaXRpZXMgLy8NCiAgICAvLy8vLy8vLy8vLy8vLy8NCiAgICAvKiogQXR0ZW1wdCB0byBwYXJzZSB0aGUgaW5zaWRlIG9mIGEgbGluayB0byBwdWxsIG91dCBkaXNwbGF5IG5hbWUsIHN1YnBhdGgsIGV0Yy4gKi8NCiAgICBmdW5jdGlvbiBwYXJzZUlubmVyTGluayhsaW5rKSB7DQogICAgICAgIGxldCBkaXNwbGF5ID0gdW5kZWZpbmVkOw0KICAgICAgICBpZiAobGluay5pbmNsdWRlcygifCIpKSB7DQogICAgICAgICAgICBsZXQgc3BsaXQgPSBsaW5rLnNwbGl0KCJ8Iik7DQogICAgICAgICAgICBsaW5rID0gc3BsaXRbMF07DQogICAgICAgICAgICBkaXNwbGF5ID0gc3BsaXRbMV07DQogICAgICAgIH0NCiAgICAgICAgaWYgKGxpbmsuaW5jbHVkZXMoIiNeIikpIHsNCiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmsuc3BsaXQoIiNeIik7DQogICAgICAgICAgICByZXR1cm4gTGluay5ibG9jayhzcGxpdFswXSwgc3BsaXRbMV0sIGZhbHNlLCBkaXNwbGF5KTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChsaW5rLmluY2x1ZGVzKCIjIikpIHsNCiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmsuc3BsaXQoIiMiKTsNCiAgICAgICAgICAgIHJldHVybiBMaW5rLmhlYWRlcihzcGxpdFswXSwgc3BsaXRbMV0sIGZhbHNlLCBkaXNwbGF5KTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gTGluay5maWxlKGxpbmssIGZhbHNlLCBkaXNwbGF5KTsNCiAgICB9DQogICAgLyoqIENyZWF0ZSBhIGxlZnQtYXNzb2NpYXRpdmUgYmluYXJ5IHBhcnNlciB3aGljaCBwYXJzZXMgdGhlIGdpdmVuIHN1Yi1lbGVtZW50IGFuZCBzZXBhcmF0b3IuIEhhbmRsZXMgd2hpdGVzcGFjZS4gKi8NCiAgICBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXIoY2hpbGQsIHNlcCwgY29tYmluZSkgew0KICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAoY2hpbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgc2VwLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gew0KICAgICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09IDApDQogICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Ow0KICAgICAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTsNCiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykgew0KICAgICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfSk7DQogICAgfQ0KICAgIGZ1bmN0aW9uIGNoYWluT3B0KGJhc2UsIC4uLmZ1bmNzKSB7DQogICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmN1c3RvbSgoc3VjY2VzcywgZmFpbHVyZSkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIChpbnB1dCwgaSkgPT4gew0KICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBiYXNlLl8oaW5wdXQsIGkpOw0KICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgICAgICBmb3IgKGxldCBmdW5jIG9mIGZ1bmNzKSB7DQogICAgICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gZnVuYyhyZXN1bHQudmFsdWUpLl8oaW5wdXQsIHJlc3VsdC5pbmRleCk7DQogICAgICAgICAgICAgICAgICAgIGlmICghbmV4dC5zdGF0dXMpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXh0Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICAgICAgfTsNCiAgICAgICAgfSk7DQogICAgfQ0KICAgIGNvbnN0IEVYUFJFU1NJT04gPSBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmNyZWF0ZUxhbmd1YWdlKHsNCiAgICAgICAgLy8gQSBmbG9hdGluZyBwb2ludCBudW1iZXI7IHRoZSBkZWNpbWFsIHBvaW50IGlzIG9wdGlvbmFsLg0KICAgICAgICBudW1iZXI6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoLy0/WzAtOV0rKFwuWzAtOV0rKT8vKQ0KICAgICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkNCiAgICAgICAgICAgIC5kZXNjKCJudW1iZXIiKSwNCiAgICAgICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1wnKS4NCiAgICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCciJykNCiAgICAgICAgICAgIC50aGVuKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHEuZXNjYXBlQ2hhcmFjdGVyLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm5vbmVPZignIlxcJykpDQogICAgICAgICAgICAuYXRMZWFzdCgwKQ0KICAgICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpDQogICAgICAgICAgICAuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygnIicpKQ0KICAgICAgICAgICAgLmRlc2MoInN0cmluZyIpLA0KICAgICAgICBlc2NhcGVDaGFyYWN0ZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIlxcIikNCiAgICAgICAgICAgIC50aGVuKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYW55KQ0KICAgICAgICAgICAgLm1hcChlc2NhcGVkID0+IHsNCiAgICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQ0KICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICciJykNCiAgICAgICAgICAgICAgICByZXR1cm4gJyInOw0KICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpDQogICAgICAgICAgICAgICAgcmV0dXJuICJcXCI7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOw0KICAgICAgICB9KSwNCiAgICAgICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuDQogICAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL3RydWV8ZmFsc2V8VHJ1ZXxGYWxzZS8pDQogICAgICAgICAgICAubWFwKHN0ciA9PiBzdHIudG9Mb3dlckNhc2UoKSA9PSAidHJ1ZSIpDQogICAgICAgICAgICAuZGVzYygiYm9vbGVhbiAoJ3RydWUnIG9yICdmYWxzZScpIiksDQogICAgICAgIC8vIEEgdGFnIG9mIHRoZSBmb3JtICcjc3R1ZmYvaGVsbG8tdGhlcmUnLg0KICAgICAgICB0YWc6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiMiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1tccHtMZXR0ZXJ9MC05Xy8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpKS5tYW55KCksIChzdGFydCwgcmVzdCkgPT4gc3RhcnQgKyByZXN0LmpvaW4oIiIpKS5kZXNjKCJ0YWcgKCcjaGVsbG8vc3R1ZmYnKSIpLA0KICAgICAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yLi4uIGVtb2ppLg0KICAgICAgICBpZGVudGlmaWVyOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9ccHtMZXR0ZXJ9L3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1fLV0vdSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKEVNT0pJX1JFR0VYKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLA0KICAgICAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLiBDYW4gaW5jbHVkZSBkb3RzLg0KICAgICAgICBpZGVudGlmaWVyRG90OiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9ccHtMZXR0ZXJ9L3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cLl8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gZmlyc3QgKyByZXN0LmpvaW4oIiIpKS5kZXNjKCJ2YXJpYWJsZSBpZGVudGlmaWVyIiksDQogICAgICAgIC8vIEFuIE9ic2lkaWFuIGxpbmsgb2YgdGhlIGZvcm0gW1s8bGluaz5dXS4NCiAgICAgICAgbGluazogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQ0KICAgICAgICAgICAgLm1hcChsaW5rSW5uZXIgPT4gcGFyc2VJbm5lckxpbmsobGlua0lubmVyKSkNCiAgICAgICAgICAgIC5kZXNjKCJmaWxlIGxpbmsiKSwNCiAgICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkNCiAgICAgICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuDQogICAgICAgIGVtYmVkTGluazogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiISIpLmF0TW9zdCgxKSwgcS5saW5rLCAocCwgbCkgPT4gew0KICAgICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkNCiAgICAgICAgICAgICAgICBsLmVtYmVkID0gdHJ1ZTsNCiAgICAgICAgICAgIHJldHVybiBsOw0KICAgICAgICB9KSwNCiAgICAgICAgLy8gQmluYXJ5IHBsdXMgb3IgbWludXMgb3BlcmF0b3IuDQogICAgICAgIGJpbmFyeVBsdXNNaW51czogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXCt8LS8pDQogICAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpDQogICAgICAgICAgICAuZGVzYygiJysnIG9yICctJyIpLA0KICAgICAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLg0KICAgICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1wqfFwvLykNCiAgICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikNCiAgICAgICAgICAgIC5kZXNjKCInKicgb3IgJy8nIiksDQogICAgICAgIC8vIEJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9yLg0KICAgICAgICBiaW5hcnlDb21wYXJlT3A6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoLz49fDw9fCE9fD58PHw9LykNCiAgICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikNCiAgICAgICAgICAgIC5kZXNjKCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8JyIpLA0KICAgICAgICAvLyBCaW5hcnkgYm9vbGVhbiBjb21iaW5hdGlvbiBvcGVyYXRvci4NCiAgICAgICAgYmluYXJ5Qm9vbGVhbk9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9hbmR8b3J8JnxcfC9pKQ0KICAgICAgICAgICAgLm1hcChzdHIgPT4gew0KICAgICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJhbmQiKQ0KICAgICAgICAgICAgICAgIHJldHVybiAiJiI7DQogICAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQ0KICAgICAgICAgICAgICAgIHJldHVybiAifCI7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsNCiAgICAgICAgfSkNCiAgICAgICAgICAgIC5kZXNjKCInYW5kJyBvciAnb3InIiksDQogICAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLg0KICAgICAgICByb290RGF0ZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7NH0vKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksICh5ZWFyLCBfLCBtb250aCkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lXzEuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7DQogICAgICAgIH0pLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLA0KICAgICAgICBkYXRlOiBxID0+IGNoYWluT3B0KHEucm9vdERhdGUsICh5bSkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBkYXkpID0+IHltLnNldCh7IGRheTogTnVtYmVyLnBhcnNlSW50KGRheSkgfSkpLCAoeW1kKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiVCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIGhvdXIpID0+IHltZC5zZXQoeyBob3VyOiBOdW1iZXIucGFyc2VJbnQoaG91cikgfSkpLCAoeW1kaCkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBtaW51dGUpID0+IHltZGguc2V0KHsgbWludXRlOiBOdW1iZXIucGFyc2VJbnQobWludXRlKSB9KSksICh5bWRobSkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBzZWNvbmQpID0+IHltZGhtLnNldCh7IHNlY29uZDogTnVtYmVyLnBhcnNlSW50KHNlY29uZCkgfSkpLCAoeW1kaG1zKSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLiIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnJlZ2V4cCgvXGR7M30vKSwgKF8sIG1pbGxpc2Vjb25kKSA9PiB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN1Y2NlZWQoeW1kaG1zKSAvLyBwYXNzDQogICAgICAgICksIChkdCkgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIisiKS5vcihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLSIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJaIiksICgpID0+IGR0LnNldFpvbmUoInV0YyIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMucmVnZXhwKC9bMC05QS1aYS16Ky1cL10rL3UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKS5hc3NlcnQoKGR0KSA9PiBkdC5pc1ZhbGlkLCAidmFsaWQgZGF0ZSIpLA0KICAgICAgICAvLyBBIGRhdGUsIHBsdXMgdmFyaW91cyBzaG9ydGhhbmQgdGltZXMgb2YgZGF5IGl0IGNvdWxkIGJlLg0KICAgICAgICBkYXRlUGx1czogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygibm93IikubWFwKF8gPT4gRGF0ZVRpbWVfMS5sb2NhbCgpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoInRvZGF5IikubWFwKF8gPT4gRGF0ZVRpbWVfMS5sb2NhbCgpLnN0YXJ0T2YoImRheSIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoInRvbW9ycm93IikubWFwKF8gPT4gRGF0ZVRpbWVfMS5sb2NhbCgpDQogICAgICAgICAgICAuc3RhcnRPZigiZGF5IikNCiAgICAgICAgICAgIC5wbHVzKER1cmF0aW9uXzEuZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoInllc3RlcmRheSIpLm1hcChfID0+IERhdGVUaW1lXzEubG9jYWwoKQ0KICAgICAgICAgICAgLnN0YXJ0T2YoImRheSIpDQogICAgICAgICAgICAubWludXMoRHVyYXRpb25fMS5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygic293IikubWFwKF8gPT4gRGF0ZVRpbWVfMS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJzb20iKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkuc3RhcnRPZigibW9udGgiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJzb3kiKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkuc3RhcnRPZigieWVhciIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoImVvdyIpLm1hcChfID0+IERhdGVUaW1lXzEubG9jYWwoKS5lbmRPZigid2VlayIpKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoImVvbSIpLm1hcChfID0+IERhdGVUaW1lXzEubG9jYWwoKS5lbmRPZigibW9udGgiKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJlb3kiKS5tYXAoXyA9PiBEYXRlVGltZV8xLmxvY2FsKCkuZW5kT2YoInllYXIiKSksIHEuZGF0ZSksDQogICAgICAgIC8vIEEgZHVyYXRpb24gb2YgdGltZS4NCiAgICAgICAgZHVyYXRpb25UeXBlOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KC4uLk9iamVjdC5rZXlzKERVUkFUSU9OX1RZUEVTKQ0KICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpDQogICAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKSksDQogICAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEubnVtYmVyLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSkNCiAgICAgICAgICAgIC5zZXBCeTEocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkub3IocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAgIC5tYXAoZHVyYXRpb25zID0+IGR1cmF0aW9ucy5yZWR1Y2UoKHAsIGMpID0+IHAucGx1cyhjKSkpLA0KICAgICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLg0KICAgICAgICByYXdOdWxsOiBfID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJudWxsIiksDQogICAgICAgIC8vIFNvdXJjZSBwYXJzaW5nLg0KICAgICAgICB0YWdTb3VyY2U6IHEgPT4gcS50YWcubWFwKHRhZyA9PiBTb3VyY2VzLnRhZyh0YWcpKSwNCiAgICAgICAgY3N2U291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJjc3YoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLnN0cmluZywgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBwYXRoLCBfMikgPT4gU291cmNlcy5jc3YocGF0aCkpLA0KICAgICAgICBsaW5rSW5jb21pbmdTb3VyY2U6IHEgPT4gcS5saW5rLm1hcChsaW5rID0+IFNvdXJjZXMubGluayhsaW5rLnBhdGgsIHRydWUpKSwNCiAgICAgICAgbGlua091dGdvaW5nU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJvdXRnb2luZygiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEubGluaywgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwNCiAgICAgICAgZm9sZGVyU291cmNlOiBxID0+IHEuc3RyaW5nLm1hcChzdHIgPT4gU291cmNlcy5mb2xkZXIoc3RyKSksDQogICAgICAgIHBhcmVuc1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuc291cmNlLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgXzIsIGZpZWxkLCBfMywgXzQpID0+IGZpZWxkKSwNCiAgICAgICAgbmVnYXRlU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLA0KICAgICAgICBhdG9tU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuYWx0KHEucGFyZW5zU291cmNlLCBxLm5lZ2F0ZVNvdXJjZSwgcS5saW5rT3V0Z29pbmdTb3VyY2UsIHEubGlua0luY29taW5nU291cmNlLCBxLmZvbGRlclNvdXJjZSwgcS50YWdTb3VyY2UsIHEuY3N2U291cmNlKSwNCiAgICAgICAgYmluYXJ5T3BTb3VyY2U6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYXRvbVNvdXJjZSwgcS5iaW5hcnlCb29sZWFuT3AubWFwKHMgPT4gcyksIFNvdXJjZXMuYmluYXJ5T3ApLA0KICAgICAgICBzb3VyY2U6IHEgPT4gcS5iaW5hcnlPcFNvdXJjZSwNCiAgICAgICAgLy8gRmllbGQgcGFyc2luZy4NCiAgICAgICAgdmFyaWFibGVGaWVsZDogcSA9PiBxLmlkZW50aWZpZXINCiAgICAgICAgICAgIC5jaGFpbihyID0+IHsNCiAgICAgICAgICAgIGlmIChLRVlXT1JEUy5pbmNsdWRlcyhyLnRvVXBwZXJDYXNlKCkpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuZmFpbCgiVmFyaWFibGUgZmllbGRzIGNhbm5vdCBiZSBhIGtleXdvcmQgKCIgKyBLRVlXT1JEUy5qb2luKCIgb3IgIikgKyAiKSIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3VjY2VlZChGaWVsZHMudmFyaWFibGUocikpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICAgICAgLmRlc2MoInZhcmlhYmxlIiksDQogICAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksDQogICAgICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygic3RyaW5nIiksDQogICAgICAgIGJvb2xGaWVsZDogcSA9PiBxLmJvb2wubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJib29sZWFuIiksDQogICAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiZGF0ZSgiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkYXRlLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZGF0ZSkpLmRlc2MoImRhdGUiKSwNCiAgICAgICAgZHVyYXRpb25GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiZHVyKCIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb24sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKHByZWZpeCwgXzEsIGR1ciwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGR1cikpLmRlc2MoImR1cmF0aW9uIiksDQogICAgICAgIG51bGxGaWVsZDogcSA9PiBxLnJhd051bGwubWFwKF8gPT4gRmllbGRzLk5VTEwpLA0KICAgICAgICBsaW5rRmllbGQ6IHEgPT4gcS5saW5rLm1hcChmID0+IEZpZWxkcy5saXRlcmFsKGYpKSwNCiAgICAgICAgbGlzdEZpZWxkOiBxID0+IHEuZmllbGQNCiAgICAgICAgICAgIC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJbIikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiXSIpKSkNCiAgICAgICAgICAgIC5tYXAobCA9PiBGaWVsZHMubGlzdChsKSkNCiAgICAgICAgICAgIC5kZXNjKCJsaXN0ICgnWzEsIDIsIDNdJykiKSwNCiAgICAgICAgb2JqZWN0RmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuZmllbGQsIChuYW1lLCBfc2VwLCB2YWx1ZSkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgdmFsdWUgfTsNCiAgICAgICAgfSkNCiAgICAgICAgICAgIC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkNCiAgICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCJ7Iikuc2tpcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygifSIpKSkNCiAgICAgICAgICAgIC5tYXAodmFscyA9PiB7DQogICAgICAgICAgICBsZXQgcmVzID0ge307DQogICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiB2YWxzKQ0KICAgICAgICAgICAgICAgIHJlc1tlbnRyeS5uYW1lXSA9IGVudHJ5LnZhbHVlOw0KICAgICAgICAgICAgcmV0dXJuIEZpZWxkcy5vYmplY3QocmVzKTsNCiAgICAgICAgfSkNCiAgICAgICAgICAgIC5kZXNjKCJvYmplY3QgKCd7IGE6IDEsIGI6IDIgfScpIiksDQogICAgICAgIGF0b21JbmxpbmVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRhdGUsIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLCBxLnN0cmluZywgcS5lbWJlZExpbmssIHEuYm9vbCwgcS5udW1iZXIsIHEucmF3TnVsbCksDQogICAgICAgIGlubGluZUZpZWxkTGlzdDogcSA9PiBxLmF0b21JbmxpbmVGaWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSwNCiAgICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PiBbZl0uY29uY2F0KGwpKSwgcS5hdG9tSW5saW5lRmllbGQpLA0KICAgICAgICBhdG9tRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5hbHQocS5uZWdhdGVkRmllbGQsIHEubGlua0ZpZWxkLCBxLmxpc3RGaWVsZCwgcS5vYmplY3RGaWVsZCwgcS5sYW1iZGFGaWVsZCwgcS5wYXJlbnNGaWVsZCwgcS5ib29sRmllbGQsIHEubnVtYmVyRmllbGQsIHEuc3RyaW5nRmllbGQsIHEuZGF0ZUZpZWxkLCBxLmR1cmF0aW9uRmllbGQsIHEubnVsbEZpZWxkLCBxLnZhcmlhYmxlRmllbGQpLA0KICAgICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHEuYXRvbUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHsNCiAgICAgICAgICAgIGxldCByZXN1bHQgPSBvYmo7DQogICAgICAgICAgICBmb3IgKGxldCBwb3N0IG9mIHBvc3RmaXhlcykgew0KICAgICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgImRvdCI6DQogICAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5mdW5jKHJlc3VsdCwgcG9zdC5maWVsZHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfSksDQogICAgICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiISIpLCBxLmluZGV4RmllbGQsIChfLCBmaWVsZCkgPT4gRmllbGRzLm5lZ2F0ZShmaWVsZCkpLmRlc2MoIm5lZ2F0ZWQgZmllbGQiKSwNCiAgICAgICAgcGFyZW5zRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIigiKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgXzIsIGZpZWxkLCBfMywgXzQpID0+IGZpZWxkKSwNCiAgICAgICAgbGFtYmRhRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyDQogICAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpDQogICAgICAgICAgICAud3JhcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiKCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiPT4iKS50cmltKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuZmllbGQsIChpZGVudCwgX2lnbm9yZSwgdmFsdWUpID0+IHsNCiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGlkZW50LCB2YWx1ZSB9Ow0KICAgICAgICB9KSwNCiAgICAgICAgZG90UG9zdGZpeDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLiIpLCBxLmlkZW50aWZpZXIsIChfLCBmaWVsZCkgPT4gew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBGaWVsZHMubGl0ZXJhbChmaWVsZCkgfTsNCiAgICAgICAgfSksDQogICAgICAgIGluZGV4UG9zdGZpeDogcSA9PiBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQsIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIl0iKSwgKF8sIF8yLCBmaWVsZCwgXzMsIF80KSA9PiB7DQogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBmaWVsZCB9Ow0KICAgICAgICB9KSwNCiAgICAgICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSksIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW4uZXhwb3J0cy5zdHJpbmcoIikiKSwgKF8sIF8xLCBmaWVsZHMsIF8yLCBfMykgPT4gew0KICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgZmllbGRzIH07DQogICAgICAgIH0pLA0KICAgICAgICAvLyBUaGUgcHJlY2VkZW5jZSBoaWVyYXJjaHkgb2Ygb3BlcmF0b3JzIC0gbXVsdGlwbHkvZGl2aWRlLCBhZGQvc3VidHJhY3QsIGNvbXBhcmUsIGFuZCB0aGVuIGJvb2xlYW4gb3BlcmF0aW9ucy4NCiAgICAgICAgYmluYXJ5TXVsRGl2RmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuaW5kZXhGaWVsZCwgcS5iaW5hcnlNdWxEaXYsIEZpZWxkcy5iaW5hcnlPcCksDQogICAgICAgIGJpbmFyeVBsdXNNaW51c0ZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeU11bERpdkZpZWxkLCBxLmJpbmFyeVBsdXNNaW51cywgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgICAgYmluYXJ5Q29tcGFyZUZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeVBsdXNNaW51c0ZpZWxkLCBxLmJpbmFyeUNvbXBhcmVPcCwgRmllbGRzLmJpbmFyeU9wKSwNCiAgICAgICAgYmluYXJ5Qm9vbGVhbkZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeUNvbXBhcmVGaWVsZCwgcS5iaW5hcnlCb29sZWFuT3AsIEZpZWxkcy5iaW5hcnlPcCksDQogICAgICAgIGJpbmFyeU9wRmllbGQ6IHEgPT4gcS5iaW5hcnlCb29sZWFuRmllbGQsDQogICAgICAgIGZpZWxkOiBxID0+IHEuYmluYXJ5T3BGaWVsZCwNCiAgICB9KTsKCiAgICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLw0KICAgIC8qKiBUaGUgd3JhcHBlciBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIGlubGluZSBmaWVsZC4gKi8NCiAgICBjb25zdCBJTkxJTkVfRklFTERfV1JBUFBFUlMgPSBPYmplY3QuZnJlZXplKHsNCiAgICAgICAgIlsiOiAiXSIsDQogICAgICAgICIoIjogIikiLA0KICAgIH0pOw0KICAgIC8qKg0KICAgICAqIEZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNrZXQgdGhhdCBvY2N1cnMgYXQgb3IgYWZ0ZXIgYHN0YXJ0YCwgcmVzcGVjdGluZyBuZXN0aW5nIGFuZCBlc2NhcGVzLiBJZiBmb3VuZCwNCiAgICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGZpbmRDbG9zaW5nKGxpbmUsIHN0YXJ0LCBvcGVuLCBjbG9zZSkgew0KICAgICAgICBsZXQgbmVzdGluZyA9IDA7DQogICAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7DQogICAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHsNCiAgICAgICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpOw0KICAgICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuDQogICAgICAgICAgICBpZiAoY2hhciA9PSAiXFwiKSB7DQogICAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGVzY2FwZWQpIHsNCiAgICAgICAgICAgICAgICBlc2NhcGVkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoY2hhciA9PSBvcGVuKQ0KICAgICAgICAgICAgICAgIG5lc3RpbmcrKzsNCiAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gY2xvc2UpDQogICAgICAgICAgICAgICAgbmVzdGluZy0tOw0KICAgICAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLg0KICAgICAgICAgICAgaWYgKG5lc3RpbmcgPCAwKQ0KICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBsaW5lLnN1YnN0cmluZyhzdGFydCwgaW5kZXgpLnRyaW0oKSwgZW5kSW5kZXg6IGluZGV4ICsgMSB9Ow0KICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgfQ0KICAgIC8qKiBGaW5kIHRoZSAnOjonIHNlcGFyYXRvciBpbiBhbiBpbmxpbmUgZmllbGQuICovDQogICAgZnVuY3Rpb24gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCkgew0KICAgICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsNCiAgICAgICAgbGV0IGtleSA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApOw0KICAgICAgICAvLyBGYWlsIHRoZSBtYXRjaCBpZiB3ZSBmaW5kIGFueSBzZXBhcmF0b3IgY2hhcmFjdGVycyAobm90IGFsbG93ZWQgaW4ga2V5cykuDQogICAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7DQogICAgICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKHNlcCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4geyBrZXk6IGtleS50cmltKCksIHZhbHVlSW5kZXg6IHNlcCArIDIgfTsNCiAgICB9DQogICAgLyoqIFRyeSB0byBjb21wbGV0ZWx5IHBhcnNlIGFuIGlubGluZSBmaWVsZCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIEFzc3VlbXMgYHN0YXJ0YCBpcyBvbiBhIHdyYXBwaW5nIGNoYXJhY3Rlci4gKi8NCiAgICBmdW5jdGlvbiBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBzdGFydCkgew0KICAgICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsNCiAgICAgICAgbGV0IGtleSA9IGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQgKyAxKTsNCiAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgbGV0IHZhbHVlID0gZmluZENsb3NpbmcobGluZSwga2V5LnZhbHVlSW5kZXgsIG9wZW4sIElOTElORV9GSUVMRF9XUkFQUEVSU1tvcGVuXSk7DQogICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQ0KICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgIGtleToga2V5LmtleSwNCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwNCiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwNCiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IGtleS52YWx1ZUluZGV4LA0KICAgICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwNCiAgICAgICAgICAgIHdyYXBwaW5nOiBvcGVuLA0KICAgICAgICB9Ow0KICAgIH0NCiAgICAvKiogUGFyc2UgYSB0ZXh0dWFsIGlubGluZSBmaWVsZCB2YWx1ZSBpbnRvIHNvbWV0aGluZyB3ZSBjYW4gd29yayB3aXRoLiAqLw0KICAgIGZ1bmN0aW9uIHBhcnNlSW5saW5lVmFsdWUodmFsdWUpIHsNCiAgICAgICAgLy8gVGhlIHN0cmlwcGVkIGxpdGVyYWwgZmllbGQgcGFyc2VyIHVuZGVyc3RhbmRzIGFsbCBvZiB0aGUgbm9uLWFycmF5L25vbi1vYmplY3QgZmllbGRzIGFuZCBjYW4gcGFyc2UgdGhlbSBmb3IgdXMuDQogICAgICAgIC8vIElubGluZSBmaWVsZCBvYmplY3RzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZDsgaW5saW5lIGFycmF5IG9iamVjdHMgaGF2ZSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBwYXJzZXINCiAgICAgICAgLy8gc2VwYXJhdGVseS4NCiAgICAgICAgbGV0IGlubGluZSA9IEVYUFJFU1NJT04uaW5saW5lRmllbGQucGFyc2UodmFsdWUpOw0KICAgICAgICBpZiAoaW5saW5lLnN0YXR1cykNCiAgICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICB9DQogICAgLyoqIEV4dHJhY3RzIGlubGluZSBmaWVsZHMgb2YgdGhlIGZvcm0gJ1trZXk6OiB2YWx1ZV0nIGZyb20gYSBsaW5lIG9mIHRleHQuIFRoaXMgaXMgZG9uZSBpbiBhIHJlbGF0aXZlbHkNCiAgICAgKiAicm9idXN0IiB3YXkgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gYmFkIG5lc3Rpbmcgb3Igb3RoZXIgaW50ZXJmZXJpbmcgTWFya2Rvd24gc3ltYm9sczoNCiAgICAgKg0KICAgICAqIC0gTG9vayBmb3IgYW55IHdyYXBwZXJzICgnWycgYW5kICcoJykgaW4gdGhlIGxpbmUsIHRyeWluZyB0byBwYXJzZSB3aGF0ZXZlciBjb21lcyBhZnRlciBpdCBhcyBhbiBpbmxpbmUga2V5OjouDQogICAgICogLSBJZiBzdWNjZXNzZnVsLCBzY2FuIHVudGlsIHlvdSBmaW5kIGEgbWF0Y2hpbmcgZW5kIGJyYWNrZXQsIGFuZCBwYXJzZSB3aGF0ZXZlciByZW1haW5zIGFzIGFuIGlubGluZSB2YWx1ZS4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiBleHRyYWN0SW5saW5lRmllbGRzKGxpbmUpIHsNCiAgICAgICAgbGV0IGZpZWxkcyA9IFtdOw0KICAgICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsNCiAgICAgICAgICAgIGxldCBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIpOw0KICAgICAgICAgICAgd2hpbGUgKGZvdW5kSW5kZXggPj0gMCkgew0KICAgICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOw0KICAgICAgICAgICAgICAgIGlmICghcGFyc2VkRmllbGQpIHsNCiAgICAgICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBmb3VuZEluZGV4ICsgMSk7DQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmaWVsZHMucHVzaChwYXJzZWRGaWVsZCk7DQogICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7DQogICAgICAgIHJldHVybiBmaWVsZHM7DQogICAgfQ0KICAgIGNvbnN0IENSRUFURURfREFURV9SRUdFWCA9IC9cdXsyNzk1fVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsNCiAgICBjb25zdCBEVUVfREFURV9SRUdFWCA9IC9bXHV7MUY0QzV9XHV7MUY0QzZ9XHV7MUY1RDN9XVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsNCiAgICBjb25zdCBET05FX0RBVEVfUkVHRVggPSAvXHV7MjcwNX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7DQogICAgLyoqIFBhcnNlIHNwZWNpYWwgY29tcGxldGVkL2R1ZS9kb25lIHRhc2sgZmllbGRzIHdoaWNoIGFyZSBtYXJrZWQgdmlhIGVtb2ppLiAqLw0KICAgIGZ1bmN0aW9uIGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lLCBhbm5vdGF0aW9ucykgew0KICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfajsNCiAgICAgICAgbGV0IHJlc3VsdCA9IHt9Ow0KICAgICAgICBsZXQgY3JlYXRlZE1hdGNoID0gQ1JFQVRFRF9EQVRFX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgIGlmIChjcmVhdGVkTWF0Y2gpDQogICAgICAgICAgICByZXN1bHQuY3JlYXRlZCA9IERhdGVUaW1lXzEuZnJvbUlTTyhjcmVhdGVkTWF0Y2hbMV0pOw0KICAgICAgICBsZXQgZHVlTWF0Y2ggPSBEVUVfREFURV9SRUdFWC5leGVjKGxpbmUpOw0KICAgICAgICBpZiAoZHVlTWF0Y2gpDQogICAgICAgICAgICByZXN1bHQuZHVlID0gRGF0ZVRpbWVfMS5mcm9tSVNPKGR1ZU1hdGNoWzFdKTsNCiAgICAgICAgbGV0IGNvbXBsZXRlZE1hdGNoID0gRE9ORV9EQVRFX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgIGlmIChjb21wbGV0ZWRNYXRjaCkNCiAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZWQgPSBEYXRlVGltZV8xLmZyb21JU08oY29tcGxldGVkTWF0Y2hbMV0pOw0KICAgICAgICAvLyBBbGxvdyBmb3IgdGV4dHVhbCBmaWVsZHMgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBlbW9qaSBmb3IgbG9zZXJzIGxpa2UgbWUuDQogICAgICAgIGlmIChhbm5vdGF0aW9ucykgew0KICAgICAgICAgICAgbGV0IGFuQ3JlYXRlZCA9IChfYiA9IChfYSA9IGFubm90YXRpb25zLmNyZWF0ZWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGFubm90YXRpb25zLmN0aW1lKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBhbm5vdGF0aW9ucy5jZGF5Ow0KICAgICAgICAgICAgaWYgKGFuQ3JlYXRlZCAmJiBWYWx1ZXMuaXNEYXRlKGFuQ3JlYXRlZCkpDQogICAgICAgICAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSAoX2MgPSByZXN1bHQuY3JlYXRlZCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogYW5DcmVhdGVkOw0KICAgICAgICAgICAgbGV0IGFuQ29tcGxldGVkID0gKF9lID0gKF9kID0gYW5ub3RhdGlvbnMuY29tcGxldGlvbikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogYW5ub3RhdGlvbnMuY29tcHRpbWUpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IGFubm90YXRpb25zLmNvbXBkYXk7DQogICAgICAgICAgICBpZiAoYW5Db21wbGV0ZWQgJiYgVmFsdWVzLmlzRGF0ZShhbkNvbXBsZXRlZCkpDQogICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBsZXRlZCA9IChfZiA9IHJlc3VsdC5jb21wbGV0ZWQpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IGFuQ29tcGxldGVkOw0KICAgICAgICAgICAgbGV0IGFuRHVlID0gKF9oID0gKF9nID0gYW5ub3RhdGlvbnMuZHVlKSAhPT0gbnVsbCAmJiBfZyAhPT0gdm9pZCAwID8gX2cgOiBhbm5vdGF0aW9ucy5kdWV0aW1lKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiBhbm5vdGF0aW9ucy5kdWVkYXk7DQogICAgICAgICAgICBpZiAoYW5EdWUgJiYgVmFsdWVzLmlzRGF0ZShhbkR1ZSkpDQogICAgICAgICAgICAgICAgcmVzdWx0LmR1ZSA9IChfaiA9IHJlc3VsdC5kdWUpICE9PSBudWxsICYmIF9qICE9PSB2b2lkIDAgPyBfaiA6IGFuRHVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgfQoKICAgIC8qKiBJbXBvcnRlciBmb3IgbWFya2Rvd24gZG9jdW1lbnRzLiAqLw0KICAgIC8qKiBNYXRjaGVzIGxpbmVzIG9mIHRoZSBmb3JtICItIFsgXSA8dGFzayB0aGluZz4iLiAqLw0KICAgIGNvbnN0IFRBU0tfUkVHRVggPSAvXihccyopWy0qXVxzKihcW1sgWHhcLl0/XF0pP1xzKihbXi0qXS4qKSQvaXU7DQogICAgLyoqIE1hdGNoZXMgT2JzaWRpYW4gYmxvY2sgSURzLCB3aGljaCBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBvZiB0aGUgZm9ybSBeYmxvY2tpZC4gKi8NCiAgICBjb25zdCBUQVNLX0JMT0NLX1JFR0VYID0gL1xeKFxTKykkLzsNCiAgICAvKiogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHByZWRpY2F0ZSBpcyB0cnVlIGZvciB0aGUgdGFzayBvciBhbnkgc3VidGFza3MuICovDQogICAgZnVuY3Rpb24gdGFza0FueSh0LCBmKSB7DQogICAgICAgIGlmIChmKHQpKQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGZvciAobGV0IHN1YiBvZiB0LnN1YnRhc2tzKQ0KICAgICAgICAgICAgaWYgKHRhc2tBbnkoc3ViLCBmKSkNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCiAgICBmdW5jdGlvbiBhbGFzdChhcnIpIHsNCiAgICAgICAgaWYgKGFyci5sZW5ndGggPiAwKQ0KICAgICAgICAgICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07DQogICAgICAgIGVsc2UNCiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgfQ0KICAgIC8qKiBGaW5kIHRoZSBoZWFkZXIgdGhhdCBpcyBtb3N0IGltbWVkaWF0ZWx5IGFib3ZlIHRoZSBnaXZlbiBsaW5lIG51bWJlci4gKi8NCiAgICBmdW5jdGlvbiBmaW5kUHJldmlvdXNIZWFkZXIobGluZSwgaGVhZGVycykgew0KICAgICAgICBpZiAoaGVhZGVycy5sZW5ndGggPT0gMCkNCiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgICAgIGlmIChoZWFkZXJzWzBdLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPiBsaW5lKQ0KICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsNCiAgICAgICAgbGV0IGluZGV4ID0gaGVhZGVycy5sZW5ndGggLSAxOw0KICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCAmJiBoZWFkZXJzW2luZGV4XS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkNCiAgICAgICAgICAgIGluZGV4LS07DQogICAgICAgIHJldHVybiBoZWFkZXJzW2luZGV4XS5oZWFkaW5nOw0KICAgIH0NCiAgICAvKioNCiAgICAgKiBBIGhhY2t5IGFwcHJvYWNoIHRvIHNjYW5uaW5nIGZvciBhbGwgdGFza3MgdXNpbmcgcmVnZXguIERvZXMgbm90IHN1cHBvcnQgbXVsdGlsaW5lDQogICAgICogdGFza3MgeWV0ICh0aG91Z2ggY2FuIHByb2JhYmx5IGJlIHJldHJvLWZpdHRlZCB0byBkbyBzbykuDQogICAgICovDQogICAgZnVuY3Rpb24gZmluZFRhc2tzSW5GaWxlKHBhdGgsIGZpbGUsIG1ldGFkYXRhKSB7DQogICAgICAgIHZhciBfYSwgX2IsIF9jOw0KICAgICAgICAvLyBEdW1teSB0b3Agb2YgdGhlIHN0YWNrIHRoYXQgd2UnbGwganVzdCBuZXZlciBnZXQgcmlkIG9mLg0KICAgICAgICBsZXQgc3RhY2sgPSBbXTsNCiAgICAgICAgc3RhY2sucHVzaChbDQogICAgICAgICAgICBuZXcgVGFzayh7IHRleHQ6ICJSb290IiwgbGluZTogLTEsIHBhdGgsIGNvbXBsZXRlZDogZmFsc2UsIGZ1bGx5Q29tcGxldGVkOiBmYWxzZSwgcmVhbDogZmFsc2UsIHN1YnRhc2tzOiBbXSB9KSwNCiAgICAgICAgICAgIC00LA0KICAgICAgICBdKTsNCiAgICAgICAgbGV0IGxpbmVubyA9IC0xOw0KICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGZpbGUucmVwbGFjZSgiXHIiLCAiIikuc3BsaXQoIlxuIikpIHsNCiAgICAgICAgICAgIGxpbmVubyArPSAxOw0KICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBhcmUgYWN0dWFsbHkgYSBsaXN0IGVsZW1lbnQsIHRvIHNraXAgbGluZXMgd2hpY2ggb2J2aW91c2x5IHdvbid0IG1hdGNoLg0KICAgICAgICAgICAgaWYgKCFsaW5lLmluY2x1ZGVzKCIqIikgJiYgIWxpbmUuaW5jbHVkZXMoIi0iKSkgew0KICAgICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAxKQ0KICAgICAgICAgICAgICAgICAgICBzdGFjay5wb3AoKTsNCiAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGxldCBtYXRjaCA9IFRBU0tfUkVHRVguZXhlYyhsaW5lKTsNCiAgICAgICAgICAgIGlmICghbWF0Y2gpIHsNCiAgICAgICAgICAgICAgICBpZiAobGluZS50cmltKCkubGVuZ3RoID09IDApDQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIC8vIE5vbi1lbXB0eSBsaW5lIHRoYXQgaXMgbm90IGEgdGFzaywgcmVzZXQuDQogICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDEpDQogICAgICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gTG9vayBmb3IgYmxvY2sgSURzIG9uIHRoaXMgbGluZTsgaWYgcHJlc2VudCwgbGluayB0byB0aGF0LiBPdGhlcndpc2UsIGxpbmsgdG8gdGhlIG5lYXJlc3QgaGVhZGVyDQogICAgICAgICAgICAvLyBhbmQgdGhlbiB0byBqdXN0IHRoZSBwYWdlLg0KICAgICAgICAgICAgbGV0IGxpbmsgPSBMaW5rLmZpbGUocGF0aCwgZmFsc2UpOw0KICAgICAgICAgICAgbGV0IGJsb2NrTWF0Y2ggPSBUQVNLX0JMT0NLX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgICAgICBsZXQgbGFzdEhlYWRlciA9IGZpbmRQcmV2aW91c0hlYWRlcihsaW5lbm8sIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsNCiAgICAgICAgICAgIGlmIChibG9ja01hdGNoKSB7DQogICAgICAgICAgICAgICAgbGluayA9IExpbmsuYmxvY2socGF0aCwgYmxvY2tNYXRjaFsxXSwgZmFsc2UpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAobGFzdEhlYWRlcikgew0KICAgICAgICAgICAgICAgIGxpbmsgPSBMaW5rLmhlYWRlcihwYXRoLCBsYXN0SGVhZGVyLCBmYWxzZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyBBZGQgYWxsIGlubGluZSBmaWVsZCBkZWZpbml0aW9ucy4NCiAgICAgICAgICAgIGxldCBhbm5vdGF0aW9ucyA9IHt9Ow0KICAgICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgZXh0cmFjdElubGluZUZpZWxkcyhsaW5lKSkgew0KICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlSW5saW5lVmFsdWUoZmllbGQudmFsdWUpOw0KICAgICAgICAgICAgICAgIGFubm90YXRpb25zW2ZpZWxkLmtleV0gPSB2YWx1ZTsNCiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uc1tjYW5vbmljYWxpemVWYXJOYW1lKGZpZWxkLmtleSldID0gdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBsZXQgc3BlY2lhbCA9IGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lLCBhbm5vdGF0aW9ucyk7DQogICAgICAgICAgICBsZXQgaW5kZW50ID0gbWF0Y2hbMV0ucmVwbGFjZSgiXHQiLCAiICAgICIpLmxlbmd0aDsNCiAgICAgICAgICAgIGxldCBpc1JlYWwgPSAhIW1hdGNoWzJdICYmIG1hdGNoWzJdLnRyaW0oKS5sZW5ndGggPiAwOw0KICAgICAgICAgICAgbGV0IGlzQ29tcGxldGVkID0gIWlzUmVhbCB8fCBtYXRjaFsyXSA9PSAiW1hdIiB8fCBtYXRjaFsyXSA9PSAiW3hdIjsNCiAgICAgICAgICAgIGxldCB0YXNrID0gbmV3IFRhc2soew0KICAgICAgICAgICAgICAgIHRleHQ6IG1hdGNoWzNdLA0KICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogaXNDb21wbGV0ZWQsDQogICAgICAgICAgICAgICAgZnVsbHlDb21wbGV0ZWQ6IGlzQ29tcGxldGVkLA0KICAgICAgICAgICAgICAgIHJlYWw6IGlzUmVhbCwNCiAgICAgICAgICAgICAgICBwYXRoLA0KICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVubywNCiAgICAgICAgICAgICAgICBzZWN0aW9uOiBsYXN0SGVhZGVyID8gTGluay5oZWFkZXIocGF0aCwgbGFzdEhlYWRlciwgZmFsc2UpIDogTGluay5maWxlKHBhdGgsIGZhbHNlKSwNCiAgICAgICAgICAgICAgICBsaW5rLA0KICAgICAgICAgICAgICAgIHN1YnRhc2tzOiBbXSwNCiAgICAgICAgICAgICAgICBhbm5vdGF0aW9ucywNCiAgICAgICAgICAgICAgICBjcmVhdGVkOiBzcGVjaWFsLmNyZWF0ZWQsDQogICAgICAgICAgICAgICAgZHVlOiBzcGVjaWFsLmR1ZSwNCiAgICAgICAgICAgICAgICBjb21wbGV0aW9uOiBzcGVjaWFsLmNvbXBsZXRlZCwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgd2hpbGUgKGluZGVudCA8PSAoKF9iID0gKF9hID0gYWxhc3Qoc3RhY2spKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IC00KSkNCiAgICAgICAgICAgICAgICBzdGFjay5wb3AoKTsNCiAgICAgICAgICAgIGZvciAobGV0IFtlbGVtLCBfXSBvZiBzdGFjaykNCiAgICAgICAgICAgICAgICBlbGVtLmZ1bGx5Q29tcGxldGVkID0gZWxlbS5mdWxseUNvbXBsZXRlZCAmJiB0YXNrLmZ1bGx5Q29tcGxldGVkOw0KICAgICAgICAgICAgKF9jID0gYWxhc3Qoc3RhY2spKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMF0uc3VidGFza3MucHVzaCh0YXNrKTsNCiAgICAgICAgICAgIHN0YWNrLnB1c2goW3Rhc2ssIGluZGVudF0pOw0KICAgICAgICB9DQogICAgICAgIC8vIFJldHVybiBldmVyeXRoaW5nIHVuZGVyIHRoZSByb290LCB3aGljaCBzaG91bGQgYmUgYWxsIHRhc2tzLg0KICAgICAgICAvLyBTdHJpcCB0cmVlcyBvZiB0YXNrcyB3aGljaCBhcmUgcHVyZWx5IG5vdCByZWFsIChsb2w/KS4NCiAgICAgICAgcmV0dXJuIHN0YWNrWzBdWzBdLnN1YnRhc2tzLmZpbHRlcih0ID0+IHRhc2tBbnkodCwgc3QgPT4gc3QucmVhbCkpOw0KICAgIH0NCiAgICBmdW5jdGlvbiBwYXJzZU1hcmtkb3duKHBhdGgsIG1ldGFkYXRhLCBjb250ZW50cywgaW5saW5lUmVnZXgpIHsNCiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nOw0KICAgICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOw0KICAgICAgICAvLyBUcmF3bCB0aHJvdWdoIGZpbGUgY29udGVudHMgdG8gbG9jYXRlIGN1c3RvbSBpbmxpbmUgZmlsZSBjb250ZW50Li4uDQogICAgICAgIGZvciAobGV0IGxpbmUgb2YgY29udGVudHMuc3BsaXQoIlxuIikpIHsNCiAgICAgICAgICAgIC8vIEZhc3QgYmFpbC1vdXQgZm9yIGxpbmVzIHRoYXQgYXJlIHRvbyBsb25nLg0KICAgICAgICAgICAgaWYgKCFsaW5lLmluY2x1ZGVzKCI6OiIpKQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOw0KICAgICAgICAgICAgLy8gU2tpcCByZWFsIHRhc2sgbGluZXMsIHNpbmNlIHRoZXkgY2FuIGhhdmUgdGhlaXIgb3duIGN1c3RvbSBtZXRhZGF0YS4NCiAgICAgICAgICAgIC8vIFRPRE86IEFic3RyYWN0IHRoaXMgY2hlY2sgKGkuZS4sIGltcHJvdmUgdGFzayBwYXJzaW5nIHRvIGJlIG1vcmUgZW5jYXBzdWxhdGVkKS4NCiAgICAgICAgICAgIGxldCB0YXNrUGFyc2UgPSBUQVNLX1JFR0VYLmV4ZWMobGluZSk7DQogICAgICAgICAgICBpZiAodGFza1BhcnNlICYmICgoX2MgPSAoX2IgPSAoX2EgPSB0YXNrUGFyc2VbMl0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50cmltKCkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDApID4gMCkNCiAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIC8vIEhhbmRsZSBpbmxpbmUtaW5saW5lIGZpZWxkcyAoaGFoYS4uLikNCiAgICAgICAgICAgIGxldCBoYXNJbmxpbmVJbmxpbmUgPSBmYWxzZTsNCiAgICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSkpIHsNCiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUlubGluZVZhbHVlKGZpZWxkLnZhbHVlKTsNCiAgICAgICAgICAgICAgICBmaWVsZHMuc2V0KGZpZWxkLmtleSwgKChfZCA9IGZpZWxkcy5nZXQoZmllbGQua2V5KSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogW10pLmNvbmNhdChbdmFsdWVdKSk7DQogICAgICAgICAgICAgICAgbGV0IHNpbXBsZU5hbWUgPSBjYW5vbmljYWxpemVWYXJOYW1lKGZpZWxkLmtleSk7DQogICAgICAgICAgICAgICAgaWYgKHNpbXBsZU5hbWUubGVuZ3RoID4gMCAmJiBzaW1wbGVOYW1lICE9IGZpZWxkLmtleS50cmltKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgZmllbGRzLnNldChzaW1wbGVOYW1lLCAoKF9lID0gZmllbGRzLmdldChzaW1wbGVOYW1lKSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogW10pLmNvbmNhdChbdmFsdWVdKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGhhc0lubGluZUlubGluZSA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyBIYW5kbGUgZnVsbC1saW5lIGlubGluZSBmaWVsZHMgaWYgdGhlcmUgYXJlIG5vIGlubGluZS1pbmxpbmUgZmllbGRzLg0KICAgICAgICAgICAgaWYgKCFoYXNJbmxpbmVJbmxpbmUpIHsNCiAgICAgICAgICAgICAgICBsZXQgbWF0Y2ggPSBpbmxpbmVSZWdleC5leGVjKGxpbmUpOw0KICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgew0KICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IG1hdGNoWzFdLnRyaW0oKTsNCiAgICAgICAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkID0gcGFyc2VJbmxpbmVWYWx1ZShtYXRjaFsyXSk7DQogICAgICAgICAgICAgICAgICAgIGZpZWxkcy5zZXQobmFtZSwgKChfZiA9IGZpZWxkcy5nZXQobmFtZSkpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IFtdKS5jb25jYXQoW2lubGluZUZpZWxkXSkpOw0KICAgICAgICAgICAgICAgICAgICBsZXQgc2ltcGxlTmFtZSA9IGNhbm9uaWNhbGl6ZVZhck5hbWUobWF0Y2hbMV0udHJpbSgpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbXBsZU5hbWUubGVuZ3RoID4gMCAmJiBzaW1wbGVOYW1lICE9IG1hdGNoWzFdLnRyaW0oKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzLnNldChzaW1wbGVOYW1lLCAoKF9nID0gZmllbGRzLmdldChzaW1wbGVOYW1lKSkgIT09IG51bGwgJiYgX2cgIT09IHZvaWQgMCA/IF9nIDogW10pLmNvbmNhdChbaW5saW5lRmllbGRdKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLy8gQW5kIGV4dHJhY3QgdGFza3MuLi4NCiAgICAgICAgbGV0IHRhc2tzID0gZmluZFRhc2tzSW5GaWxlKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSk7DQogICAgICAgIHJldHVybiB7IGZpZWxkcywgdGFza3MgfTsNCiAgICB9CgogICAgLyoqIEFjdHVhbCByYXcgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBiYWNrZ3JvdW5kIGltcG9ydGVyLiBNYWlubHkgaGFuZGxlcyBtZXNzYWdlIHBhc3NpbmcuICovDQogICAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSkgew0KICAgICAgICByZXR1cm4gcGFyc2VNYXJrZG93bihwYXRoLCBtZXRhZGF0YSwgY29udGVudHMsIC9bX1wqfmBdKihbMC05XHdccHtMZXR0ZXJ9XVstMC05XHdccHtMZXR0ZXJ9XHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxzL10qKVtfXCp+YF0qXHMqOjpccyooLispL3UpOw0KICAgIH0KCiAgICB2YXIgVHJhbnNmZXJhYmxlOw0KICAgIChmdW5jdGlvbiAoVHJhbnNmZXJhYmxlKSB7DQogICAgICAgIC8qKiBDb252ZXJ0IGEgbGl0ZXJhbCB2YWx1ZSB0byBhIHNlcmlhbGl6ZXItZnJpZW5kbHkgdHJhbnNmZXJhYmxlIHZhbHVlLiBEb2VzIG5vdCB3b3JrIGZvciBhbGwgdHlwZXMuICovDQogICAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgew0KICAgICAgICAgICAgLy8gSGFuZGxlIG5vbi1kYXRhdmlldyB2YWx1ZXMgZmlyc3QuDQogICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHsNCiAgICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOw0KICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdmFsdWUuZW50cmllcygpKQ0KICAgICAgICAgICAgICAgICAgICBjb3BpZWQuc2V0KHRyYW5zZmVyYWJsZShrZXkpLCB0cmFuc2ZlcmFibGUodmFsKSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7DQogICAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsNCiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpDQogICAgICAgICAgICAgICAgICAgIGNvcGllZC5hZGQodHJhbnNmZXJhYmxlKHZhbCkpOw0KICAgICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBsZXQgd3JhcHBlZCA9IFZhbHVlcy53cmFwVmFsdWUodmFsdWUpOw0KICAgICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSB2YWx1ZTogIiArIHZhbHVlKTsNCiAgICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7DQogICAgICAgICAgICAgICAgY2FzZSAibnVsbCI6DQogICAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoNCiAgICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOg0KICAgICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsNCiAgICAgICAgICAgICAgICBjYXNlICJkYXRlIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJfX190cmFuc2Zlci10eXBlIjogImRhdGUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpLA0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogeyB6b25lOiB3cmFwcGVkLnZhbHVlLnpvbmVOYW1lIH0sDQogICAgICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJkdXJhdGlvbiIsIHZhbHVlOiB0cmFuc2ZlcmFibGUod3JhcHBlZC52YWx1ZS50b09iamVjdCgpKSB9Ow0KICAgICAgICAgICAgICAgIGNhc2UgImFycmF5IjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFwKHYgPT4gdHJhbnNmZXJhYmxlKHYpKTsNCiAgICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOg0KICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmZXJhYmxlKHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgICAgICBjYXNlICJsaW5rIjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgIl9fX3RyYW5zZmVyLXR5cGUiOiAibGluayIsIHZhbHVlOiB0cmFuc2ZlcmFibGUod3JhcHBlZC52YWx1ZS50b09iamVjdCgpKSB9Ow0KICAgICAgICAgICAgICAgIGNhc2UgInRhc2siOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJ0YXNrIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KGZhbHNlKSkgfTsNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSBsaXRlcmFsIHZhbHVlOiAiICsgdmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIFRyYW5zZmVyYWJsZS50cmFuc2ZlcmFibGUgPSB0cmFuc2ZlcmFibGU7DQogICAgICAgIC8qKiBDb252ZXJ0IGEgdHJhbnNmZXJhYmxlIHZhbHVlIGJhY2sgdG8gYSBsaXRlcmFsIHZhbHVlIHdlIGNhbiB3b3JrIHdpdGguICovDQogICAgICAgIGZ1bmN0aW9uIHZhbHVlKHRyYW5zZmVyYWJsZSkgew0KICAgICAgICAgICAgaWYgKHRyYW5zZmVyYWJsZSA9PT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlID09PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgTWFwKSB7DQogICAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgTWFwKCk7DQogICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiB0cmFuc2ZlcmFibGUuZW50cmllcygpKQ0KICAgICAgICAgICAgICAgICAgICByZWFsLnNldCh2YWx1ZShrZXkpLCB2YWx1ZSh2YWwpKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gcmVhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZmVyYWJsZSBpbnN0YW5jZW9mIFNldCkgew0KICAgICAgICAgICAgICAgIGxldCByZWFsID0gbmV3IFNldCgpOw0KICAgICAgICAgICAgICAgIGZvciAobGV0IHZhbCBvZiB0cmFuc2ZlcmFibGUpDQogICAgICAgICAgICAgICAgICAgIHJlYWwuYWRkKHZhbHVlKHZhbCkpOw0KICAgICAgICAgICAgICAgIHJldHVybiByZWFsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0cmFuc2ZlcmFibGUpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZmVyYWJsZS5tYXAodiA9PiB2YWx1ZSh2KSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdHJhbnNmZXJhYmxlID09PSAib2JqZWN0Iikgew0KICAgICAgICAgICAgICAgIGlmICgiX19fdHJhbnNmZXItdHlwZSIgaW4gdHJhbnNmZXJhYmxlKSB7DQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHJhbnNmZXJhYmxlWyJfX190cmFuc2Zlci10eXBlIl0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImRhdGUiOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByYXdEYXRlID0gRGF0ZVRpbWVfMS5mcm9tT2JqZWN0KHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlT3B0cyA9IHZhbHVlKHRyYW5zZmVyYWJsZS5vcHRpb25zKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZU9wdHMuem9uZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3RGF0ZS5zZXRab25lKGRhdGVPcHRzLnpvbmUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByYXdEYXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBEdXJhdGlvbl8xLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJsaW5rIjoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGluay5mcm9tT2JqZWN0KHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFzayI6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVucmVjb2duaXplZCB0cmFuc2ZlciB0eXBlICcke3RyYW5zZmVyYWJsZVsiX19fdHJhbnNmZXItdHlwZSJdfSdgKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307DQogICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh0cmFuc2ZlcmFibGUpKQ0KICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlKHZhbCk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlcmFibGU7DQogICAgICAgIH0NCiAgICAgICAgVHJhbnNmZXJhYmxlLnZhbHVlID0gdmFsdWU7DQogICAgfSkoVHJhbnNmZXJhYmxlIHx8IChUcmFuc2ZlcmFibGUgPSB7fSkpOwoKICAgIC8qKiBFbnRyeS1wb2ludCBzY3JpcHQgdXNlZCBieSB0aGUgaW5kZXggYXMgYSB3ZWIgd29ya2VyLiAqLw0KICAgIG9ubWVzc2FnZSA9IChldnQpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICBsZXQgcmVzdWx0ID0gcnVuSW1wb3J0KGV2dC5kYXRhLnBhdGgsIGV2dC5kYXRhLmNvbnRlbnRzLCBldnQuZGF0YS5tZXRhZGF0YSk7DQogICAgICAgIHBvc3RNZXNzYWdlKHsgcGF0aDogZXZ0LmRhdGEucGF0aCwgcmVzdWx0OiBUcmFuc2ZlcmFibGUudHJhbnNmZXJhYmxlKHJlc3VsdCkgfSk7DQogICAgfSk7Cgp9KSgpOwoK', null, false); /* eslint-enable */ /** Controls and creates Dataview file importers, allowing for asynchronous loading and parsing of files. */ @@ -11125,7 +11160,7 @@ class BinaryOpHandler { let handler4 = this.map.get(BinaryOpHandler.repr(op, "*", "*")); if (handler4) return Result.success(handler4(left, right, ctx)); - return Result.failure(`Operator '${op}' is not supported for '${leftType}' and '${rightType}`); + return Result.failure(`No implementation found for '${leftType} ${op} ${rightType}'`); } /** Create a string representation of the given triplet for unique lookup in the map. */ static repr(op, left, right) { @@ -11373,11 +11408,30 @@ var DefaultFunctions; .add1("null", () => null) .vectorize(1, [0]) .build(); + /** Duration constructor function. */ + DefaultFunctions.dur = new FunctionBuilder("dur") + .add1("string", str => { + let parsedDur = EXPRESSION.duration.parse(str.trim()); + if (parsedDur.status) + return parsedDur.value; + else + return null; + }) + .add1("duration", d => d) + .add1("null", d => d) + .vectorize(1, [0]) + .build(); /** Format a date using a luxon/moment-style date format. */ DefaultFunctions.dateformat = new FunctionBuilder("dateformat") .add2("date", "string", (date, format) => date.toFormat(format, { locale: currentLocale() })) + .add2("null", "string", (_nul, _format) => null) .vectorize(2, [0]) .build(); + DefaultFunctions.localtime = new FunctionBuilder("localtime") + .add1("date", d => d.toLocal()) + .add1("null", () => null) + .vectorize(1, [0]) + .build(); const NUMBER_REGEX = /-?[0-9]+(\.[0-9]+)?/; /** Number constructor function. */ DefaultFunctions.number = new FunctionBuilder("number") @@ -11441,6 +11495,7 @@ var DefaultFunctions; return c; }).value; }) + .add2("null", "function", (_arr, _func, _ctx) => null) .build(); DefaultFunctions.maxby = new FunctionBuilder("maxby") .add2("array", "function", (arr, func, ctx) => { @@ -11459,6 +11514,7 @@ var DefaultFunctions; return c; }).value; }) + .add2("null", "function", (_arr, _func, _ctx) => null) .build(); DefaultFunctions.striptime = new FunctionBuilder("striptime") .add1("date", d => DateTime_1.fromObject({ year: d.year, month: d.month, day: d.day })) @@ -11601,24 +11657,43 @@ var DefaultFunctions; DefaultFunctions.split = new FunctionBuilder("split") .add2("string", "string", (string, splitter) => splitImpl(string, splitter)) .add3("string", "string", "number", (string, splitter, limit) => splitImpl(string, splitter, limit)) + .add2("null", "*", () => null) + .add2("*", "null", () => null) + .add3("*", "*", "null", () => null) + .add3("*", "null", "*", () => null) + .add3("null", "*", "*", () => null) .build(); DefaultFunctions.startswith = new FunctionBuilder("startswith") .add2("string", "string", (str, starting) => str.startsWith(starting)) + .add2("null", "*", () => null) + .add2("*", "null", () => null) .vectorize(2, [0, 1]) .build(); DefaultFunctions.endswith = new FunctionBuilder("endswith") .add2("string", "string", (str, ending) => str.endsWith(ending)) + .add2("null", "*", () => null) + .add2("*", "null", () => null) .vectorize(2, [0, 1]) .build(); DefaultFunctions.padleft = new FunctionBuilder("padleft") .add2("string", "number", (str, len) => str.padStart(len, " ")) .add3("string", "number", "string", (str, len, padding) => str.padStart(len, padding)) + .add2("null", "*", () => null) + .add2("*", "null", () => null) + .add3("null", "*", "*", () => null) + .add3("*", "null", "*", () => null) + .add3("*", "*", "null", () => null) .vectorize(2, [0, 1]) .vectorize(3, [0, 1, 2]) .build(); DefaultFunctions.padright = new FunctionBuilder("padright") .add2("string", "number", (str, len) => str.padEnd(len, " ")) .add3("string", "number", "string", (str, len, padding) => str.padEnd(len, padding)) + .add2("null", "*", () => null) + .add2("*", "null", () => null) + .add3("null", "*", "*", () => null) + .add3("*", "null", "*", () => null) + .add3("*", "*", "null", () => null) .vectorize(2, [0, 1]) .vectorize(3, [0, 1, 2]) .build(); @@ -11705,6 +11780,19 @@ var DefaultFunctions; DefaultFunctions.nonnull = new FunctionBuilder("nonnull") .vararg((_ctx, ...args) => args.filter(v => Values.typeOf(v) != "null")) .build(); + /** Gets an object containing a link's own properties */ + DefaultFunctions.meta = new FunctionBuilder("meta") + .add1("link", link => { + var _c, _d; + return ({ + display: (_c = link.display) !== null && _c !== void 0 ? _c : null, + embed: link.embed, + path: link.path, + subpath: (_d = link.subpath) !== null && _d !== void 0 ? _d : null, + type: link.type, + }); + }) + .build(); })(DefaultFunctions || (DefaultFunctions = {})); /** Default function implementations for the expression evaluator. */ const DEFAULT_FUNCTIONS = { @@ -11714,7 +11802,9 @@ const DEFAULT_FUNCTIONS = { link: DefaultFunctions.link, elink: DefaultFunctions.elink, date: DefaultFunctions.date, + dur: DefaultFunctions.dur, dateformat: DefaultFunctions.dateformat, + localtime: DefaultFunctions.localtime, number: DefaultFunctions.number, string: DefaultFunctions.string, object: DefaultFunctions.object, @@ -11761,6 +11851,7 @@ const DEFAULT_FUNCTIONS = { default: DefaultFunctions.fdefault, ldefault: DefaultFunctions.ldefault, choice: DefaultFunctions.choice, + meta: DefaultFunctions.meta, }; /** Core implementation of the query language evaluation engine. */ @@ -12503,6 +12594,8 @@ class DataviewApi { this.settings = settings; /** Value utility functions for comparisons and type-checking. */ this.value = Values; + /** Re-exporting of luxon for people who can't easily require it. Sorry! */ + this.luxon = Luxon; this.evaluationContext = new Context(defaultLinkHandler(index, ""), settings); this.func = Functions.bindAll(DEFAULT_FUNCTIONS, this.evaluationContext); this.io = new DataviewIOApi(this); @@ -12573,6 +12666,10 @@ class DataviewApi { date(pathlike) { return this.func.date(pathlike); } + /** Attempt to extract a duration from a string or duration. */ + duration(str) { + return this.func.dur(str); + } /** * Compare two arbitrary JavaScript values using Dataview's default comparison rules. Returns a negative value if * a < b, 0 if a = b, and a positive value if a > b. @@ -12667,6 +12764,8 @@ class DataviewInlineApi { var _a, _b; /** Value utilities which allow for type-checking and comparisons. */ this.value = Values; + /** Re-exporting of luxon for people who can't easily require it. Sorry! */ + this.luxon = Luxon; this.index = index; this.component = component; this.container = container; @@ -12717,10 +12816,22 @@ class DataviewInlineApi { fileLink(path, embed = false, display) { return Link.file(path, embed, display); } + /** Create a dataview section link to the given path. */ + sectionLink(path, section, embed = false, display) { + return Link.header(path, section, embed, display); + } + /** Create a dataview block link to the given path. */ + blockLink(path, blockId, embed = false, display) { + return Link.block(path, blockId, embed, display); + } /** Attempt to extract a date from a string, link or date. */ date(pathlike) { return this.api.date(pathlike); } + /** Attempt to extract a duration from a string or duration. */ + duration(dur) { + return this.api.duration(dur); + } /** * Compare two arbitrary JavaScript values using Dataview's default comparison rules. Returns a negative value if * a < b, 0 if a = b, and a positive value if a > b. @@ -12736,49 +12847,37 @@ class DataviewInlineApi { // Rendering Functions // ///////////////////////// /** Render an HTML element, containing arbitrary text. */ - el(el, text) { - let wrapped = Values.wrapValue(text); - if (wrapped === null || wrapped === undefined) { - this.container.createEl(el, { text }); - return; - } - let _el = this.container.createEl(el); - renderValue(wrapped.value, _el, this.currentFilePath, this.component, this.settings, true); + el(el, text, options) { + return __awaiter(this, void 0, void 0, function* () { + let wrapped = Values.wrapValue(text); + if (wrapped === null || wrapped === undefined) { + return this.container.createEl(el, Object.assign({ text }, options)); + } + let _el = this.container.createEl(el, options); + yield renderValue(wrapped.value, _el, this.currentFilePath, this.component, this.settings, true); + return _el; + }); } /** Render an HTML header; the level can be anything from 1 - 6. */ - header(level, text) { - let headerType; - switch (level) { - case 1: - headerType = "h1"; - break; - case 2: - headerType = "h2"; - break; - case 3: - headerType = "h3"; - break; - case 4: - headerType = "h4"; - break; - case 5: - headerType = "h5"; - break; - case 6: - headerType = "h6"; - break; - default: - throw new Error(`Invalid header level ${level}`); - } - this.el(headerType, text); + header(level, text, options) { + return __awaiter(this, void 0, void 0, function* () { + let header = { 1: "h1", 2: "h2", 3: "h3", 4: "h4", 5: "h5", 6: "h6" }[level]; + if (!header) + throw Error(`Unrecognized level '${level}' (expected 1, 2, 3, 4, 5, or 6)`); + return this.el(header, text, options); + }); } /** Render an HTML paragraph, containing arbitrary text. */ - paragraph(text) { - this.el("p", text); + paragraph(text, options) { + return __awaiter(this, void 0, void 0, function* () { + return this.el("p", text, options); + }); } /** Render an inline span, containing arbitrary text. */ - span(text) { - this.el("span", text); + span(text, options) { + return __awaiter(this, void 0, void 0, function* () { + return this.el("span", text, options); + }); } /** * Render HTML from the output of a template "view" saved as a file in the vault. @@ -12867,6 +12966,13 @@ function makeApiContext(index, component, app, settings, container, originFile) } class DataviewPlugin extends obsidian.Plugin { + constructor() { + super(...arguments); + /** The current dataview version. */ + this.version = "0.4.21"; + /** The date that this version of the plugin was compiled. */ + this.versionDate = "November 20, 2021 14:41:21"; + } onload() { var _a; return __awaiter(this, void 0, void 0, function* () { @@ -12876,9 +12982,9 @@ class DataviewPlugin extends obsidian.Plugin { this.index = FullIndex.create(this.app.vault, this.app.metadataCache, this.app.metadataCache); this.api = new DataviewApi(this.app, this.index, this.settings); // Dataview query language code blocks. - this.registerHighPriorityCodeblockProcessor("dataview", (source, el, ctx) => __awaiter(this, void 0, void 0, function* () { return this.dataview(source, el, ctx, ctx.sourcePath); })); + this.registerPriorityCodeblockPostProcessor("dataview", -100, (source, el, ctx) => __awaiter(this, void 0, void 0, function* () { return this.dataview(source, el, ctx, ctx.sourcePath); })); // DataviewJS codeblocks. - this.registerHighPriorityCodeblockProcessor("dataviewjs", (source, el, ctx) => __awaiter(this, void 0, void 0, function* () { return this.dataviewjs(source, el, ctx, ctx.sourcePath); })); + this.registerPriorityCodeblockPostProcessor("dataviewjs", -100, (source, el, ctx) => __awaiter(this, void 0, void 0, function* () { return this.dataviewjs(source, el, ctx, ctx.sourcePath); })); // Dataview inline queries. this.registerPriorityMarkdownPostProcessor(-100, (el, ctx) => __awaiter(this, void 0, void 0, function* () { return this.dataviewInline(el, ctx, ctx.sourcePath); })); // Dataview inline-inline query fancy rendering. Runs at a low priority; should apply to Dataview views. @@ -12899,43 +13005,19 @@ class DataviewPlugin extends obsidian.Plugin { } // Not required anymore, though holding onto it for backwards-compatibility. this.app.metadataCache.trigger("dataview:api-ready", this.api); - console.log("Dataview: Version 0.4.x Loaded"); + console.log(`Dataview: Version ${this.version} Loaded (Compiled ${this.versionDate})`); }); } onunload() { } + /** Register a markdown post processor with the given priority. */ registerPriorityMarkdownPostProcessor(priority, processor) { - let realProcessor = (el, ctx) => processor(el, ctx); - realProcessor.sortOrder = priority; - this.registerMarkdownPostProcessor(realProcessor); + let registered = this.registerMarkdownPostProcessor(processor); + registered.sortOrder = priority; } - /** - * Utility function for registering high priority codeblocks which run before any other post processing, such as - * emoji-twitter. - */ - registerHighPriorityCodeblockProcessor(language, processor) { - this.registerPriorityMarkdownPostProcessor(-100, (el, ctx) => __awaiter(this, void 0, void 0, function* () { - let codeblocks = el.querySelectorAll("pre > code"); - if (!codeblocks) - return; - for (let index = 0; index < codeblocks.length; index++) { - let codeblock = codeblocks.item(index); - let clanguages = Array.from(codeblock.classList) - .filter(c => c.startsWith("language-")) - .map(c => c.substring("language-".length)); - clanguages = clanguages.concat(Array.from(codeblock.classList) - .filter(c => c.startsWith(":")) - .map(c => c.substring(":".length))); - if (!clanguages.contains(language)) - continue; - if (!codeblock.parentElement) - continue; - let code = codeblock.innerText; - // We know the parent element is a pre, replace it. - let replacement = document.createElement("div"); - codeblock.parentElement.replaceWith(replacement); - yield processor(code, replacement, ctx); - } - })); + /** Register a markdown codeblock post processor with the given priority. */ + registerPriorityCodeblockPostProcessor(language, priority, processor) { + let registered = this.registerMarkdownCodeBlockProcessor(language, processor); + registered.sortOrder = priority; } /** * Based on the source, generate a dataview view. This works by doing an initial parsing pass, and then adding @@ -13069,6 +13151,14 @@ class DataviewSettingsTab extends obsidian.PluginSettingTab { yield this.plugin.updateSettings({ renderNullAs: value }); this.plugin.index.touch(); }))); + new obsidian.Setting(this.containerEl) + .setName("Automatic View Refreshing") + .setDesc("If enabled, views will automatically refresh when files in your vault change; this can negatively affect" + + " some functionality like embeds in views, so turn it off if such functionality is not working.") + .addToggle(toggle => toggle.setValue(this.plugin.settings.refreshEnabled).onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.updateSettings({ warnOnEmptyResult: value }); + this.plugin.index.touch(); + }))); new obsidian.Setting(this.containerEl) .setName("Refresh Interval") .setDesc("How frequently views are updated (in milliseconds) in preview mode when files are changing.") @@ -13181,10 +13271,12 @@ class DataviewListRenderer extends obsidian.MarkdownRenderChild { onload() { return __awaiter(this, void 0, void 0, function* () { yield this.render(); - onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { - this.container.innerHTML = ""; - yield this.render(); - })); + if (this.settings.refreshEnabled) { + onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { + this.container.innerHTML = ""; + yield this.render(); + })); + } }); } render() { @@ -13233,10 +13325,12 @@ class DataviewTableRenderer extends obsidian.MarkdownRenderChild { onload() { return __awaiter(this, void 0, void 0, function* () { yield this.render(); - onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { - this.container.innerHTML = ""; - yield this.render(); - })); + if (this.settings.refreshEnabled) { + onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { + this.container.innerHTML = ""; + yield this.render(); + })); + } }); } render() { @@ -13280,12 +13374,14 @@ class DataviewTaskRenderer extends obsidian.MarkdownRenderChild { onload() { return __awaiter(this, void 0, void 0, function* () { yield this.render(); - onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { - if (this.taskBindings) - this.removeChild(this.taskBindings); - this.container.innerHTML = ""; - yield this.render(); - })); + if (this.settings.refreshEnabled) { + onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { + if (this.taskBindings) + this.removeChild(this.taskBindings); + this.container.innerHTML = ""; + yield this.render(); + })); + } }); } render() { @@ -13331,11 +13427,13 @@ class DataviewInlineRenderer extends obsidian.MarkdownRenderChild { onload() { return __awaiter(this, void 0, void 0, function* () { yield this.render(); - onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { - var _a; - (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); - yield this.render(); - })); + if (this.settings.refreshEnabled) { + onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { + var _a; + (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); + yield this.render(); + })); + } }); } render() { @@ -13366,10 +13464,12 @@ class DataviewJSRenderer extends obsidian.MarkdownRenderChild { onload() { return __awaiter(this, void 0, void 0, function* () { yield this.render(); - onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { - this.container.innerHTML = ""; - yield this.render(); - })); + if (this.settings.refreshEnabled) { + onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { + this.container.innerHTML = ""; + yield this.render(); + })); + } }); } render() { @@ -13406,11 +13506,13 @@ class DataviewInlineJSRenderer extends obsidian.MarkdownRenderChild { onload() { return __awaiter(this, void 0, void 0, function* () { yield this.render(); - onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { - var _a; - (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); - yield this.render(); - })); + if (this.settings.refreshEnabled) { + onIndexChange(this.index, this.settings.refreshInterval, this, () => __awaiter(this, void 0, void 0, function* () { + var _a; + (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); + yield this.render(); + })); + } }); } render() { @@ -13482,4 +13584,4 @@ function replaceInlineFields(ctx, container, originFile, settings) { } module.exports = DataviewPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9idWlsZC9janMtYnJvd3Nlci9sdXhvbi5qcyIsIi4uL3NyYy9zZXR0aW5ncy50cyIsIi4uL3NyYy9hcGkvcmVzdWx0LnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcnNpbW1vbi9idWlsZC9wYXJzaW1tb24udW1kLm1pbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9lbW9qaS1yZWdleC9pbmRleC5qcyIsIi4uL3NyYy91dGlsL25vcm1hbGl6ZS50cyIsIi4uL3NyYy9kYXRhL3ZhbHVlLnRzIiwiLi4vc3JjL2FwaS9kYXRhLWFycmF5LnRzIiwiLi4vc3JjL3V0aWwvbG9jYWxlLnRzIiwiLi4vc3JjL3VpL3JlbmRlci50cyIsIi4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwiLi4vc3JjL2RhdGEvc291cmNlLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCIuLi9zcmMvZGF0YS9wYXJzZS9pbmxpbmUtZmllbGQudHMiLCIuLi9zcmMvZGF0YS9tZXRhZGF0YS50cyIsIi4uL3NyYy9kYXRhL3BhcnNlL21hcmtkb3duLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzIiwiLi4vc3JjL2RhdGEvcGFyc2UvY3N2LnRzIiwiLi4vc3JjL2RhdGEvdHJhbnNmZXJhYmxlLnRzIiwiLi4vc3JjL2RhdGEvaW1wb3J0L2ltcG9ydC1tYW5hZ2VyLnRzIiwiLi4vc3JjL2RhdGEvaW5kZXgudHMiLCIuLi9zcmMvdWkvdGFza3MudHMiLCIuLi9zcmMvcXVlcnkvcXVlcnkudHMiLCIuLi9zcmMvcXVlcnkvcGFyc2UudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9iaW5hcnlvcC50cyIsIi4uL3NyYy9leHByZXNzaW9uL2Z1bmN0aW9ucy50cyIsIi4uL3NyYy9leHByZXNzaW9uL2NvbnRleHQudHMiLCIuLi9zcmMvZGF0YS9yZXNvbHZlci50cyIsIi4uL3NyYy9xdWVyeS9lbmdpbmUudHMiLCIuLi9zcmMvYXBpL3BsdWdpbi1hcGkudHMiLCIuLi9zcmMvYXBpL2lubGluZS1hcGkudHMiLCIuLi9zcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsidGhpcyIsIkRhdGVUaW1lIiwiUC5hbHQiLCJQLnJlZ2V4IiwiUC53aGl0ZXNwYWNlIiwiUC5hbnkiLCJEdXJhdGlvbiIsIk1hcmtkb3duUmVuZGVyZXIiLCJQLnNlcU1hcCIsIlAuc2VxIiwiUC5vcHRXaGl0ZXNwYWNlIiwiUC5jdXN0b20iLCJQLmNyZWF0ZUxhbmd1YWdlIiwiUC5yZWdleHAiLCJQLnN0cmluZyIsIlAubm9uZU9mIiwiUC5zdWNjZWVkIiwiUC5mYWlsIiwiZ2V0QWxsVGFncyIsInBhcnNlRnJvbnRNYXR0ZXJUYWdzIiwicGFyc2VGcm9udE1hdHRlckFsaWFzZXMiLCJQYXBhLnBhcnNlIiwiRGF0YXZpZXdJbXBvcnRXb3JrZXIiLCJURmlsZSIsIkNvbXBvbmVudCIsIlAuc2VwQnkiLCJQbHVnaW4iLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyIsIk1hcmtkb3duUmVuZGVyQ2hpbGQiLCJUYXNrcy5yZW5kZXJUYXNrcyJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF1REE7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FB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QUFDSCxDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsUUFBUSxFQUFFO0FBQy9CO0FBQ0EsRUFBRSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUU7QUFDckUsSUFBSSxPQUFPLFNBQVMsQ0FBQztBQUNyQixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQy9DLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLEdBQUc7QUFDSCxDQUFDO0FBQ0QsU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUU7QUFDN0MsRUFBRSxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRTtBQUM3QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFDdkIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7QUFDbkMsTUFBTSxPQUFPLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNyRCxFQUFFLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDM0MsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFO0FBQzFCLEVBQUUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFDRCxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDMUIsRUFBRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxD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QUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzVELEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxPQUFPO0FBQ2hCLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDekQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxVQUFVO0FBQ25CLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDNUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxRQUFRO0FBQ2pCLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDMUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxPQUFPO0FBQ2hCLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDekQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxNQUFNO0FBQ2YsSUFBSSxHQUFH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SUFBSSxDQUFDO0FBQ3BCLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUMxQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMxQixFQUFFLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEM7QUFDQSxFQUFFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3BCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNmO0FBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxNQUFNLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkM7QUFDQSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUMxRCxRQUFRLEtBQUssSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE9BQU8sTUFBTTtBQUNiLFFBQVEsS0FBSyxJQUFJLEdBQUcsSUFBSSxxQkFBcUIsRUFBRTtBQUMvQyxVQUFVLElBQUksb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDO0FBQy9ELGNBQWMsR0FBRyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQztBQUMzQyxjQUFjLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QztBQUNBLFVBQVUsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUU7QUFDMUMsWUFBWSxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNoQyxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvQixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSCxDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUNsQyxFQUFFLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7QUFDN0M7QUFDQSxFQUFFLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sSUFBSSxNQUFNLENBQUMsRUFBRSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBQ0Q7QUFDQSxJQUFJLFdBQVcsR0FBRyxtREFBbUQsQ0FBQztBQUN0RTtBQUNBLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDOUIsRUFBRSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN2QixJQUFJLElBQUksR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDNUIsTUFBTSxPQUFPLENBQUMsQ0FBQztBQUNmLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTztBQUNULElBQUksS0FBSyxFQUFFLEtBQUs7QUFDaEIsSUFBSSxLQUFLLEVBQUUsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ2hDLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsS0FBSztBQUNMLEdBQUcsQ0FBQztBQUNKLENBQUM7QUFDRDtBQUNBLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEMsSUFBSSxXQUFXLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7QUFDckMsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckQ7QUFDQSxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUU7QUFDekI7QUFDQTtBQUNBLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUNEO0FBQ0EsU0FBUyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUU7QUFDakMsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUM3QixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUM7QUFDbEMsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQ3BDLEVBQUUsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQ3hCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRyxNQUFNO0FBQ1QsSUFBSSxPQUFPO0FBQ1gsTUFBTSxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sS0FBSyxFQUFFLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUNuQyxRQUFRLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixRQUFRLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUM5QyxVQUFVLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3hCLE9BQU87QUFDUCxLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUMvQixFQUFFLE9BQU87QUFDVCxJQUFJLEtBQUssRUFBRSxLQUFLO0FBQ2hCLElBQUksS0FBSyxFQUFFLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUNqQyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEIsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sT0FBTyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxJQUFJLE1BQU0sRUFBRSxNQUFNO0FBQ2xCLEdBQUcsQ0FBQztBQUNKLENBQUM7QUFDRDtBQUNBLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUN2QixFQUFFLE9BQU87QUFDVCxJQUFJLEtBQUssRUFBRSxLQUFLO0FBQ2hCLElBQUksS0FBSyxFQUFFLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUNqQyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQ2YsS0FBSztBQUNMLEdBQUcsQ0FBQztBQUNKLENBQUM7QUFDRDtBQUNBLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRTtBQUM1QixFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztBQUMzQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztBQUNsQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztBQUNwQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztBQUNuQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUMzQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUN6QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUMxQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztBQUMxQyxNQUFNLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUU7QUFDcEMsSUFBSSxPQUFPO0FBQ1gsTUFBTSxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkMsTUFBTSxLQUFLLEVBQUUsU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsT0FBTztBQUNQLE1BQU0sT0FBTyxFQUFFLElBQUk7QUFDbkIsS0FBSyxDQUFDO0FBQ04sR0FBRztBQUNILE1BQU0sT0FBTyxHQUFHLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRTtBQUNwQyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtBQUN2QixNQUFNLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLEtBQUs7QUFDTDtBQUNBLElBQUksUUFBUSxDQUFDLENBQUMsR0FBRztBQUNqQjtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRDtBQUNBLE1BQU0sS0FBSyxJQUFJO0FBQ2YsUUFBUSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRDtBQUNBO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNsRDtBQUNBLE1BQU0sS0FBSyxNQUFNO0FBQ2pCLFFBQVEsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0I7QUFDQSxNQUFNLEtBQUssT0FBTztBQUNsQixRQUFRLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsTUFBTSxLQUFLLFFBQVE7QUFDbkIsUUFBUSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxLQUFLLEtBQUs7QUFDaEIsUUFBUSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUQ7QUFDQSxNQUFNLEtBQUssTUFBTTtBQUNqQixRQUFRLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RDtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqQztBQUNBLE1BQU0sS0FBSyxJQUFJO0FBQ2YsUUFBUSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBLE1BQU0sS0FBSyxLQUFLO0FBQ2hCLFFBQVEsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNEO0FBQ0EsTUFBTSxLQUFLLE1BQU07QUFDakIsUUFBUSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUQ7QUFDQTtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqQztBQUNBLE1BQU0sS0FBSyxJQUFJO0FBQ2YsUUFBUSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25DO0FBQ0EsTUFBTSxLQUFLLEtBQUs7QUFDaEIsUUFBUSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QjtBQUNBO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25DO0FBQ0EsTUFBTSxLQUFLLEtBQUs7QUFDaEIsUUFBUSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QjtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqQztBQUNBO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QztBQUNBO0FBQ0EsTUFBTSxLQUFLLE1BQU07QUFDakIsUUFBUSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QjtBQUNBLE1BQU0sS0FBSyxJQUFJO0FBQ2YsUUFBUSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDbEQ7QUFDQTtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqQztBQUNBLE1BQU0sS0FBSyxJQUFJO0FBQ2YsUUFBUSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBO0FBQ0EsTUFBTSxLQUFLLEdBQUcsQ0FBQztBQUNmLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QjtBQUNBLE1BQU0sS0FBSyxLQUFLO0FBQ2hCLFFBQVEsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdEO0FBQ0EsTUFBTSxLQUFLLE1BQU07QUFDakIsUUFBUSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7QUFDQSxNQUFNLEtBQUssS0FBSztBQUNoQixRQUFRLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RDtBQUNBLE1BQU0sS0FBSyxNQUFNO0FBQ2pCLFFBQVEsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNEO0FBQ0E7QUFDQSxNQUFNLEtBQUssR0FBRyxDQUFDO0FBQ2YsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hHO0FBQ0EsTUFBTSxLQUFLLEtBQUs7QUFDaEIsUUFBUSxPQUFPLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRjtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUM1QztBQUNBLE1BQU07QUFDTixRQUFRLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLEtBQUs7QUFDTCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQy9CLElBQUksYUFBYSxFQUFFLFdBQVc7QUFDOUIsR0FBRyxDQUFDO0FBQ0osRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUNEO0FBQ0EsSUFBSSx1QkFBdUIsR0FBRztBQUM5QixFQUFFLElBQUksRUFBRTtBQUNSLElBQUksU0FBUyxFQUFFLElBQUk7QUFDbkIsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUNwQixHQUFHO0FBQ0gsRUFBRSxLQUFLLEVBQUU7QUFDVCxJQUFJLE9BQU8sRUFBRSxHQUFHO0FBQ2hCLElBQUksU0FBUyxFQUFFLElBQUk7QUFDbkIsSUFBSSxLQUFLLEVBQUUsS0FBSztBQUNoQixJQUFJLElBQUksRUFBRSxNQUFNO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLEdBQUcsRUFBRTtBQUNQLElBQUksT0FBTyxFQUFFLEdBQUc7QUFDaEIsSUFBSSxTQUFTLEVBQUUsSUFBSTtBQUNuQixHQUFHO0FBQ0gsRUFBRSxPQUFPLEVBQUU7QUFDWCxJQUFJLEtBQUssRUFBRSxLQUFLO0FBQ2hCLElBQUksSUFBSSxFQUFFLE1BQU07QUFDaEIsR0FBRztBQUNILEVBQUUsU0FBUyxFQUFFLEdBQUc7QUFDaEIsRUFBRSxTQUFTLEVBQUUsR0FBRztBQUNoQixFQUFFLElBQUksRUFBRTtBQUNSLElBQUksT0FBTyxFQUFFLEdBQUc7QUFDaEIsSUFBSSxTQUFTLEVBQUUsSUFBSTtBQUNuQixHQUFHO0FBQ0gsRUFBRSxNQUFNLEVBQUU7QUFDVixJQUFJLE9BQU8sRUFBRSxHQUFHO0FBQ2hCLElBQUksU0FBUyxFQUFFLElBQUk7QUFDbkIsR0FBRztBQUNILEVBQUUsTUFBTSxFQUFFO0FBQ1YsSUFBSSxPQUFPLEVBQUUsR0FBRztBQUNoQixJQUFJLFNBQVMsRUFBRSxJQUFJO0FBQ25CLEdBQUc7QUFDSCxDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO0FBQ2hELEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUk7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUN6QjtBQUNBLEVBQUUsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQzFCLElBQUksT0FBTztBQUNYLE1BQU0sT0FBTyxFQUFFLElBQUk7QUFDbkIsTUFBTSxHQUFHLEVBQUUsS0FBSztBQUNoQixLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksR0FBRyxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtBQUMvQixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUcsRUFBRTtBQUNYLElBQUksT0FBTztBQUNYLE1BQU0sT0FBTyxFQUFFLEtBQUs7QUFDcEIsTUFBTSxHQUFHLEVBQUUsR0FBRztBQUNkLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFO0FBQzNCLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUNsQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNuQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzVCLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ3BDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFDRDtBQUNBLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0FBQ3ZDLEVBQUUsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQztBQUNBLEVBQUUsSUFBSSxPQUFPLEVBQUU7QUFDZixJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNqQixJQUFJLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUN2QjtBQUNBLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxRQUFRLEVBQUU7QUFDNUIsTUFBTSxJQUFJLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDdkMsUUFBUSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFlBQVksTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pEO0FBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ25DLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN4RixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFVBQVUsSUFBSSxNQUFNLENBQUM7QUFDN0IsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsbUJBQW1CLENBQUMsT0FBTyxFQUFFO0FBQ3RDLEVBQUUsSUFBSSxPQUFPLEdBQUcsU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ3hDLElBQUksUUFBUSxLQUFLO0FBQ2pCLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLGFBQWEsQ0FBQztBQUM3QjtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUN4QjtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUN4QjtBQUNBLE1BQU0sS0FBSyxHQUFHLENBQUM7QUFDZixNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDdEI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckI7QUFDQSxNQUFNLEtBQUssR0FBRztBQUNkLFFBQVEsT0FBTyxTQUFTLENBQUM7QUFDekI7QUFDQSxNQUFNLEtBQUssR0FBRyxDQUFDO0FBQ2YsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sT0FBTyxDQUFDO0FBQ3ZCO0FBQ0EsTUFBTSxLQUFLLEdBQUc7QUFDZCxRQUFRLE9BQU8sTUFBTSxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxLQUFLLEdBQUcsQ0FBQztBQUNmLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLFNBQVMsQ0FBQztBQUN6QjtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLFlBQVksQ0FBQztBQUM1QjtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLFVBQVUsQ0FBQztBQUMxQjtBQUNBLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLFNBQVMsQ0FBQztBQUN6QjtBQUNBLE1BQU07QUFDTixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDWDtBQUNBLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDL0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN0QyxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMvQixJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDL0IsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzNDLE1BQU0sT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEIsS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDcEQsTUFBTSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUU7QUFDcEMsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMzQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQy9CLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3pELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCO0FBQ0EsSUFBSSxJQUFJLENBQUMsRUFBRTtBQUNYLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFDRDtBQUNBLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQzlCO0FBQ0EsU0FBUyxnQkFBZ0IsR0FBRztBQUM1QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtBQUMzQixJQUFJLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDNUQsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFDRDtBQUNBLFNBQVMscUJBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUM5QyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtBQUNyQixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvRDtBQUNBLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtBQUNuQixJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQsRUFBRSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFLEVBQUUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUN0QyxJQUFJLE9BQU8sWUFBWSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDL0MsR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLEVBQUUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0FBQ2xDLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDM0MsRUFBRSxJQUFJLGdCQUFnQixDQUFDO0FBQ3ZCO0FBQ0EsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDckcsSUFBSSxPQUFPLHFCQUFxQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ2xELEVBQUUsSUFBSSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7QUFDdkUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtBQUN0QyxJQUFJLE9BQU8sWUFBWSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuQyxHQUFHLENBQUM7QUFDSixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDbEQsSUFBSSxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUM7QUFDM0IsR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLEVBQUUsSUFBSSxpQkFBaUIsRUFBRTtBQUN6QixJQUFJLE9BQU87QUFDWCxNQUFNLEtBQUssRUFBRSxLQUFLO0FBQ2xCLE1BQU0sTUFBTSxFQUFFLE1BQU07QUFDcEIsTUFBTSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsYUFBYTtBQUNwRCxLQUFLLENBQUM7QUFDTixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7QUFDdkMsUUFBUSxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwQyxRQUFRLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLFFBQVEsS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO0FBQ3hDLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQztBQUM5QyxRQUFRLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFFBQVEsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDM0IsUUFBUSxLQUFLLEdBQUcsT0FBTyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNyRSxRQUFRLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLFFBQVEsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QjtBQUNBLElBQUksSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDdEUsTUFBTSxNQUFNLElBQUksNkJBQTZCLENBQUMsdURBQXVELENBQUMsQ0FBQztBQUN2RyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxNQUFNLEtBQUssRUFBRSxLQUFLO0FBQ2xCLE1BQU0sTUFBTSxFQUFFLE1BQU07QUFDcEIsTUFBTSxLQUFLLEVBQUUsS0FBSztBQUNsQixNQUFNLFVBQVUsRUFBRSxVQUFVO0FBQzVCLE1BQU0sT0FBTyxFQUFFLE9BQU87QUFDdEIsTUFBTSxNQUFNLEVBQUUsTUFBTTtBQUNwQixNQUFNLElBQUksRUFBRSxJQUFJO0FBQ2hCLEtBQUssQ0FBQztBQUNOLEdBQUc7QUFDSCxDQUFDO0FBQ0QsU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDaEQsRUFBRSxJQUFJLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO0FBQ25FLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU07QUFDeEMsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsSUFBSTtBQUNwQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7QUFDdkQ7QUFDQSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFDRDtBQUNBLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDM0UsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3pFO0FBQ0EsU0FBUyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUNyQyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxHQUFHLFlBQVksR0FBRyxPQUFPLEtBQUssR0FBRyxTQUFTLEdBQUcsSUFBSSxHQUFHLG9CQUFvQixDQUFDLENBQUM7QUFDNUksQ0FBQztBQUNEO0FBQ0EsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDckMsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDaEUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMxQyxFQUFFLE9BQU8sR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxhQUFhLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFDRDtBQUNBLFNBQVMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUN6QyxFQUFFLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsYUFBYTtBQUMzRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQzVDLElBQUksT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLEdBQUcsQ0FBQztBQUNKLE1BQU0sR0FBRyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEMsRUFBRSxPQUFPO0FBQ1QsSUFBSSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDckIsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUNaLEdBQUcsQ0FBQztBQUNKLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxlQUFlLENBQUMsT0FBTyxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUk7QUFDekIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUs7QUFDM0IsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUc7QUFDdkIsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ2hELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLEVBQUUsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzRCxNQUFNLFFBQVEsQ0FBQztBQUNmO0FBQ0EsRUFBRSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUU7QUFDdEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN4QixJQUFJLFVBQVUsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDM0MsR0FBRyxNQUFNLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNqRCxJQUFJLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUNuQixHQUFHLE1BQU07QUFDVCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDcEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixJQUFJLFFBQVEsRUFBRSxRQUFRO0FBQ3RCLElBQUksVUFBVSxFQUFFLFVBQVU7QUFDMUIsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUNwQixHQUFHLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUNELFNBQVMsZUFBZSxDQUFDLFFBQVEsRUFBRTtBQUNuQyxFQUFFLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRO0FBQ2xDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVO0FBQ3RDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPO0FBQ2hDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsRUFBRSxJQUFJLE9BQU8sR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxhQUFhLEdBQUcsQ0FBQztBQUM1RCxNQUFNLElBQUksQ0FBQztBQUNYO0FBQ0EsRUFBRSxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUU7QUFDbkIsSUFBSSxJQUFJLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN4QixJQUFJLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEMsR0FBRyxNQUFNLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRTtBQUNuQyxJQUFJLElBQUksR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLElBQUksT0FBTyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNwQyxHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksR0FBRyxRQUFRLENBQUM7QUFDcEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7QUFDekQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSztBQUNyQyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7QUFDbEM7QUFDQSxFQUFFLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLElBQUksSUFBSSxFQUFFLElBQUk7QUFDZCxJQUFJLEtBQUssRUFBRSxLQUFLO0FBQ2hCLElBQUksR0FBRyxFQUFFLEdBQUc7QUFDWixHQUFHLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUNELFNBQVMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO0FBQ3RDLEVBQUUsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7QUFDMUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUs7QUFDNUIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztBQUN6QixFQUFFLElBQUksT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUNkLElBQUksT0FBTyxFQUFFLE9BQU87QUFDcEIsR0FBRyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLFdBQVcsRUFBRTtBQUN6QyxFQUFFLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJO0FBQzdCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7QUFDcEM7QUFDQSxFQUFFLElBQUksa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztBQUMxRCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLO0FBQ3RDLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztBQUNuQztBQUNBLEVBQUUsT0FBTyxRQUFRLENBQUM7QUFDbEIsSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUNkLElBQUksS0FBSyxFQUFFLEtBQUs7QUFDaEIsSUFBSSxHQUFHLEVBQUUsR0FBRztBQUNaLEdBQUcsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0QsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7QUFDakMsRUFBRSxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN6QyxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkQ7QUFDQSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDbEIsSUFBSSxPQUFPLGNBQWMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BELEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ3pCLElBQUksT0FBTyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRTtBQUM1QixJQUFJLE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEQsR0FBRyxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ3RCLENBQUM7QUFDRCxTQUFTLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtBQUNwQyxFQUFFLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ3JDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUU7QUFDQSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDbEIsSUFBSSxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQzVCLElBQUksT0FBTyxjQUFjLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsRCxHQUFHLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsdUJBQXVCLENBQUMsR0FBRyxFQUFFO0FBQ3RDLEVBQUUsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDckMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNuRCxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUU7QUFDQSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDbEIsSUFBSSxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQzFCLElBQUksT0FBTyxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUN4QixJQUFJLE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsR0FBRyxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ3RCLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRTtBQUNqQyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJO0FBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNO0FBQ3pCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNO0FBQ3pCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7QUFDcEMsRUFBRSxJQUFJLFNBQVMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBRSxJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQztBQUNqSCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDakQsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0Q7QUFDQSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDbEIsSUFBSSxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEMsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDM0IsSUFBSSxPQUFPLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUMsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDM0IsSUFBSSxPQUFPLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUMsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtBQUNoQyxJQUFJLE9BQU8sY0FBYyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN0RCxHQUFHLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDdEIsQ0FBQztBQUNEO0FBQ0EsSUFBSSxPQUFPLEdBQUcsa0JBQWtCLENBQUM7QUFDakMsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCO0FBQ0EsU0FBUyxlQUFlLENBQUMsSUFBSSxFQUFFO0FBQy9CLEVBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO0FBQzVGLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxzQkFBc0IsQ0FBQyxFQUFFLEVBQUU7QUFDcEMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO0FBQzVCLElBQUksRUFBRSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO0FBQ3JCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzNCLEVBQUUsSUFBSSxPQUFPLEdBQUc7QUFDaEIsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDZixJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtBQUNuQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNiLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2IsSUFBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7QUFDakIsSUFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87QUFDekIsR0FBRyxDQUFDO0FBQ0osRUFBRSxPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNsRCxJQUFJLEdBQUcsRUFBRSxPQUFPO0FBQ2hCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7QUFDbkM7QUFDQSxFQUFFLElBQUksUUFBUSxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN6QztBQUNBLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQjtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFO0FBQ2hCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ25DO0FBQ0EsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9CO0FBQ0EsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFDakIsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUU7QUFDN0IsRUFBRSxFQUFFLElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDM0IsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QixFQUFFLE9BQU87QUFDVCxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFO0FBQzVCLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO0FBQzlCLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7QUFDdkIsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtBQUN6QixJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFO0FBQzdCLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUU7QUFDN0IsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFO0FBQ3ZDLEdBQUcsQ0FBQztBQUNKLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDcEMsRUFBRSxPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtBQUMvQixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQ2xGLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUMvQixJQUFJLElBQUksRUFBRSxJQUFJO0FBQ2QsSUFBSSxLQUFLLEVBQUUsS0FBSztBQUNoQixJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQzFHLEdBQUcsQ0FBQztBQUNKLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDeEMsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDckQsSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDL0MsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDekMsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7QUFD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Q0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUNoQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUc7QUFDaEMsSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxLQUFLLEdBQUc7QUFDcEMsSUFBSSxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQ3ZDLFFBQVEsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsUUFBUSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMzQixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLFFBQVEsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkIsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyQixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4QixRQUFRLFdBQVcsR0FBRyxJQUFJ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SztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUN2QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxHQUFHO0FBQ3hDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxHQUFHO0FBQ3RDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxHQUFHO0FBQ3hDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLFNBQVMsR0FBRztBQUMxQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7QUFDL0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsTUFBTSxHQUFHO0FBQ3BDLElBQUksT0FBTyxJ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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFNLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtGQUErRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU0sMEJBQTBCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0lBQWdJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsMENBQTBDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENB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USxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsR0FBRyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXRDLEtBQUssRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxNQUFNLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDMUMsRUFBRSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV2QyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkMsS0FBSyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLEVBQUUsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXBDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRW5DLElBQUksRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsTUFBTSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNDLE9BQU8sRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsSUFBSSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3pDLENBQUMsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVDLEdBQUcs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LEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsa05BQWtOLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsNERBQTRELENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxZQUFZLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7OztBQ0QzemtCO1NBQ2dCLFFBQVEsQ0FBQyxPQUFlO0lBQ3BDLElBQUksTUFB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QUFDLENBQUM7U0FDakIsS0FBSyxFQUFFLENBQUM7SUFFQSxvQkFBRyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0QsS0FBSyxFQUFFLENBQUM7SUFFQSxvQkFBRyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUQsS0FBSyxFQUFFLENBQUM7SUFFQSxxQkFBSSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN6QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4RCxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUQsS0FBSyxFQUFFLENBQUM7SUFFQSx1QkFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQztTQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsS0FBSyxFQUFFLENBQUM7SUFFQSxvQkFBRyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFH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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9idWlsZC9janMtYnJvd3Nlci9sdXhvbi5qcyIsIi4uL3NyYy9zZXR0aW5ncy50cyIsIi4uL3NyYy9hcGkvcmVzdWx0LnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcnNpbW1vbi9idWlsZC9wYXJzaW1tb24udW1kLm1pbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9lbW9qaS1yZWdleC9pbmRleC5qcyIsIi4uL3NyYy91dGlsL25vcm1hbGl6ZS50cyIsIi4uL3NyYy9kYXRhL3ZhbHVlLnRzIiwiLi4vc3JjL2FwaS9kYXRhLWFycmF5LnRzIiwiLi4vc3JjL3V0aWwvbG9jYWxlLnRzIiwiLi4vc3JjL3VpL3JlbmRlci50cyIsIi4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwiLi4vc3JjL2RhdGEvc291cmNlLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCIuLi9zcmMvZGF0YS9wYXJzZS9pbmxpbmUtZmllbGQudHMiLCIuLi9zcmMvZGF0YS9tZXRhZGF0YS50cyIsIi4uL3NyYy9kYXRhL3BhcnNlL21hcmtkb3duLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzIiwiLi4vc3JjL2RhdGEvcGFyc2UvY3N2LnRzIiwiLi4vc3JjL2RhdGEvdHJhbnNmZXJhYmxlLnRzIiwiLi4vc3JjL2RhdGEvaW1wb3J0L2ltcG9ydC1tYW5hZ2VyLnRzIiwiLi4vc3JjL2RhdGEvaW5kZXgudHMiLCIuLi9zcmMvdWkvdGFza3MudHMiLCIuLi9zcmMvcXVlcnkvcXVlcnkudHMiLCIuLi9zcmMvcXVlcnkvcGFyc2UudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9iaW5hcnlvcC50cyIsIi4uL3NyYy9leHByZXNzaW9uL2Z1bmN0aW9ucy50cyIsIi4uL3NyYy9leHByZXNzaW9uL2NvbnRleHQudHMiLCIuLi9zcmMvZGF0YS9yZXNvbHZlci50cyIsIi4uL3NyYy9xdWVyeS9lbmdpbmUudHMiLCIuLi9zcmMvYXBpL3BsdWdpbi1hcGkudHMiLCIuLi9zcmMvYXBpL2lubGluZS1hcGkudHMiLCIuLi9zcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsidGhpcyIsIkRhdGVUaW1lIiwiUC5hbHQiLCJQLnJlZ2V4IiwiUC53aGl0ZXNwYWNlIiwiUC5hbnkiLCJEdXJhdGlvbiIsIk1hcmtkb3duUmVuZGVyZXIiLCJQLnNlcU1hcCIsIlAuc2VxIiwiUC5vcHRXaGl0ZXNwYWNlIiwiUC5jdXN0b20iLCJQLmNyZWF0ZUxhbmd1YWdlIiwiUC5yZWdleHAiLCJQLnN0cmluZyIsIlAubm9uZU9mIiwiUC5zdWNjZWVkIiwiUC5mYWlsIiwiZ2V0QWxsVGFncyIsInBhcnNlRnJvbnRNYXR0ZXJUYWdzIiwicGFyc2VGcm9udE1hdHRlckFsaWFzZXMiLCJQYXBhLnBhcnNlIiwiRGF0YXZpZXdJbXBvcnRXb3JrZXIiLCJURmlsZSIsIkNvbXBvbmVudCIsIlAuc2VwQnkiLCJQbHVnaW4iLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyIsIk1hcmtkb3duUmVuZGVyQ2hpbGQiLCJUYXNrcy5yZW5kZXJUYXNrcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF1REE7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFB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QUFHLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQztBQUNBLEVBQUUsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFO0FBQ3RCLElBQUksT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN6QyxHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1RSxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxZQUFZLENBQUMsR0FBRyxFQUFFO0FBQzNCLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3hHO0FBQ0EsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO0FBQ3ZDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLElBQUks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QUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzVELEtBQUs7QUFDTCxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxPQUFPO0FBQ2hCLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDekQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxVQUFVO0FBQ25CLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDNUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxRQUFRO0FBQ2pCLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDMUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxPQUFPO0FBQ2hCLElBQUksR0FBRyxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDekQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTCxJQUFJLEdBQUcsRUFBRSxNQUFN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QUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDMUMsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMxRixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxPQUFPLEdBQUc7QUFDdEMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNqRCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxRQUFRLEVBQUU7QUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNwQyxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxRQUFRLENBQUMsUUFBUSxFQUFFO0FBQ2hELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDO0FBQzlCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRTtB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Q0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUMxQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMxQixFQUFFLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEM7QUFDQSxFQUFFLElBQUks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RyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0FBQ2xGLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUMvQixJQUFJLElBQUksRUFBRSxJQUFJO0FBQ2QsSUFBSSxLQUFLLEVBQUUsS0FBSztBQUNoQixJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQzFHLEdBQUcsQ0FBQztBQUNKLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDeEMsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDckQsSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDL0MsSUFBSSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDNUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDekMsSUFBSSxLQUFLLEVBQUUsR0FB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LENBQUM7QUFDaEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUN2QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxHQUFHO0FBQ3hDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsT0FBTyxHQUFHO0FBQ3RDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxHQUFHO0FBQ3hDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLFNBQVMsR0FBRztBQUMxQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7QUFDL0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVMsTUFBTSxHQUFHO0FB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LEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFjLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU0sV0FBVyxFQUFFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0ZBQStGLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLDJFQUEyRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsMERBQTBELENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTSwwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnSUFBZ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFD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SUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFakQ7QUFDTyxNQUFNLGNBQWMsR0FBRztJQUMxQixJQUFJLEVBQUVELFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkMsS0FBSyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hDLEVBQUUsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFdEMsS0FBSyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxQyxFQUFFLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsR0FBRyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXZDLElBQUksRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsRUFBRSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFcEMsR0FBRyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLElBQUksRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFFbkMsSUFBSSxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3ZDLEtBQUssRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsR0FBRyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUMsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxNQUFNLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDM0MsT0FBTyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVDLEdBQUcsRUFBRUEsVUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUVBLFVBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQyxFQUFFQSxVQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLENB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QUVELGdDQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDakcsQ0FBQyxHQUFhLEtBQ1ZMLGdDQUFRLENBQUNNLGdDQUFRLENBQUMsR0FBRyxDQUFDLEVBQUVELGdDQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDckcsQ0FBQyxJQUFjLEtBQ1hMLGdDQUFRLENBQUNNLGdDQUFRLENBQUMsR0FBRyxDQUFDLEVBQUVELGdDQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUNqRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUNoRCxFQUNMLENBQUMsS0FBZSxLQUNaTCxnQ0FBUSxDQUFDTSxnQ0FBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFRCxnQ0FBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FDakQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FDakQsRUFDTCxDQUFDLE1BQWdCLEtBQ2JYLDZCQUFLLENBQ0RNLGdDQUFRLENBQUNNLGdDQUFRLENBQUMsR0FBRyxDQUFDLEVBQUVELGdDQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxLQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxD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QUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsa05BQWtOLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsNERBQTRELENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsS0FB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QkFBdUIsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUU1RSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLE9BQU87WUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzs7UUFHOUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O1FBR2hFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDOztRQUdoRSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVoRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLFFBQVEs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QUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQy9CLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2xHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLGlCQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzRixLQUFLLEVBQUUsQ0FBQztJQUVBLG9CQUFHLEdBQWlCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN0RCxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQy9CLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMs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QUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQ3JHO1NBQ0EsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCLEtBQUssRUFBRSxDQUFDOztJQUdBLDBCQUFTLEdBQWlCLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztTQUNsRSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxLQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDN0c7U0FDQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEtBQUssUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQztTQUNsRCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxLQUNsQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQ3JHO1NBQ0EsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCLEtBQUssRUFBRSxDQUFDOztJQUdBLDZCQUFZLEdB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QU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RCxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RCxLQUFLLEVBQUUsQ0FBQztJQUVBLG9CQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4RCxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RCxLQUFLLEVBQUUsQ0FBQztJQUVBLHFCQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RCxLQUFLLEVBQUUsQ0FBQztJQUVBLHVCQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO1NBQzlDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixLQUFLLEVBQUUsQ0FBQztJQUVBLG9CQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLEtBQUssRUFBRSxDQUFDO0lBRUEsd0JBQU8s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 diff --git a/.obsidian/plugins/dataview/manifest.json b/.obsidian/plugins/dataview/manifest.json index 6d5c44aa..272c4874 100644 --- a/.obsidian/plugins/dataview/manifest.json +++ b/.obsidian/plugins/dataview/manifest.json @@ -1,7 +1,7 @@ { "id": "dataview", "name": "Dataview", - "version": "0.4.20", + "version": "0.4.21", "minAppVersion": "0.12.0", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", diff --git a/.obsidian/plugins/obsidian-admonition/data.json b/.obsidian/plugins/obsidian-admonition/data.json index d005b9b6..0a6ccf46 100644 --- a/.obsidian/plugins/obsidian-admonition/data.json +++ b/.obsidian/plugins/obsidian-admonition/data.json @@ -93,10 +93,11 @@ }, "syntaxHighlight": false, "copyButton": true, - "version": "6.6.1", + "version": "6.7.0", "autoCollapse": false, "defaultCollapseType": "open", "syncLinks": true, "enableMarkdownProcessor": false, - "injectColor": true + "injectColor": true, + "parseTitles": true } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-admonition/main.js b/.obsidian/plugins/obsidian-admonition/main.js index 4d78ba5b..118ccef8 100644 --- a/.obsidian/plugins/obsidian-admonition/main.js +++ b/.obsidian/plugins/obsidian-admonition/main.js @@ -1,2 +1,2 @@ /*! For license information please see main.js.LICENSE.txt */ -(()=>{"use strict";var c={d:(a,l)=>{for(var e in l)c.o(l,e)&&!c.o(a,e)&&Object.defineProperty(a,e,{enumerable:!0,get:l[e]})},o:(c,a)=>Object.prototype.hasOwnProperty.call(c,a),r:c=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})}},a={};function l(c,a,l,e){return new(l||(l=Promise))((function(i,o){function n(c){try{t(e.next(c))}catch(c){o(c)}}function s(c){try{t(e.throw(c))}catch(c){o(c)}}function t(c){var a;c.done?i(c.value):(a=c.value,a instanceof l?a:new l((function(c){c(a)}))).then(n,s)}t((e=e.apply(c,a||[])).next())}))}c.r(a),c.d(a,{default:()=>zl}),Object.create,Object.create;const e=require("obsidian");var i={prefix:"far",iconName:"copy",icon:[448,512,[],"f0c5","M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"]},o={faAddressBook:{prefix:"far",iconName:"address-book",icon:[448,512,[],"f2b9","M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"]},faAddressCard:{prefix:"far",iconName:"address-card",icon:[576,512,[],"f2bb","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z"]},faAngry:{prefix:"far",iconName:"angry",icon:[496,512,[],"f556","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z"]},faArrowAltCircleDown:{prefix:"far",iconName:"arrow-alt-circle-down",icon:[512,512,[],"f358","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z"]},faArrowAltCircleLeft:{prefix:"far",iconName:"arrow-alt-circle-left",icon:[512,512,[],"f359","M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z"]},faArrowAltCircleRight:{prefix:"far",iconName:"arrow-alt-circle-right",icon:[512,512,[],"f35a","M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z"]},faArrowAltCircleUp:{prefix:"far",iconName:"arrow-alt-circle-up",icon:[512,512,[],"f35b","M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z"]},faBell:{prefix:"far",iconName:"bell",icon:[448,512,[],"f0f3","M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"]},faBellSlash:{prefix:"far",iconName:"bell-slash",icon:[640,512,[],"f1f6","M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]},faBookmark:{prefix:"far",iconName:"bookmark",icon:[384,512,[],"f02e","M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z"]},faBuilding:{prefix:"far",iconName:"building",icon:[448,512,[],"f1ad","M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z"]},faCalendar:{prefix:"far",iconName:"calendar",icon:[448,512,[],"f133","M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z"]},faCalendarAlt:{prefix:"far",iconName:"calendar-alt",icon:[448,512,[],"f073","M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCalendarCheck:{prefix:"far",iconName:"calendar-check",icon:[448,512,[],"f274","M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z"]},faCalendarMinus:{prefix:"far",iconName:"calendar-minus",icon:[448,512,[],"f272","M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCalendarPlus:{prefix:"far",iconName:"calendar-plus",icon:[448,512,[],"f271","M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCalendarTimes:{prefix:"far",iconName:"calendar-times",icon:[448,512,[],"f273","M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareDown:{prefix:"far",iconName:"caret-square-down",icon:[448,512,[],"f150","M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareLeft:{prefix:"far",iconName:"caret-square-left",icon:[448,512,[],"f191","M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareRight:{prefix:"far",iconName:"caret-square-right",icon:[448,512,[],"f152","M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareUp:{prefix:"far",iconName:"caret-square-up",icon:[448,512,[],"f151","M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faChartBar:{prefix:"far",iconName:"chart-bar",icon:[512,512,[],"f080","M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z"]},faCheckCircle:{prefix:"far",iconName:"check-circle",icon:[512,512,[],"f058","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"]},faCheckSquare:{prefix:"far",iconName:"check-square",icon:[448,512,[],"f14a","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"]},faCircle:{prefix:"far",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"]},faClipboard:{prefix:"far",iconName:"clipboard",icon:[384,512,[],"f328","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z"]},faClock:{prefix:"far",iconName:"clock",icon:[512,512,[],"f017","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"]},faClone:{prefix:"far",iconName:"clone",icon:[512,512,[],"f24d","M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z"]},faClosedCaptioning:{prefix:"far",iconName:"closed-captioning",icon:[512,512,[],"f20a","M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z"]},faComment:{prefix:"far",iconName:"comment",icon:[512,512,[],"f075","M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"]},faCommentAlt:{prefix:"far",iconName:"comment-alt",icon:[512,512,[],"f27a","M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z"]},faCommentDots:{prefix:"far",iconName:"comment-dots",icon:[512,512,[],"f4ad","M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"]},faComments:{prefix:"far",iconName:"comments",icon:[576,512,[],"f086","M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"]},faCompass:{prefix:"far",iconName:"compass",icon:[496,512,[],"f14e","M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"]},faCopy:i,faCopyright:{prefix:"far",iconName:"copyright",icon:[512,512,[],"f1f9","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z"]},faCreditCard:{prefix:"far",iconName:"credit-card",icon:[576,512,[],"f09d","M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z"]},faDizzy:{prefix:"far",iconName:"dizzy",icon:[496,512,[],"f567","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z"]},faDotCircle:{prefix:"far",iconName:"dot-circle",icon:[512,512,[],"f192","M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z"]},faEdit:{prefix:"far",iconName:"edit",icon:[576,512,[],"f044","M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z"]},faEnvelope:{prefix:"far",iconName:"envelope",icon:[512,512,[],"f0e0","M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"]},faEnvelopeOpen:{prefix:"far",iconName:"envelope-open",icon:[512,512,[],"f2b6","M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z"]},faEye:{prefix:"far",iconName:"eye",icon:[576,512,[],"f06e","M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"]},faEyeSlash:{prefix:"far",iconName:"eye-slash",icon:[640,512,[],"f070","M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z"]},faFile:{prefix:"far",iconName:"file",icon:[384,512,[],"f15b","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"]},faFileAlt:{prefix:"far",iconName:"file-alt",icon:[384,512,[],"f15c","M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"]},faFileArchive:{prefix:"far",iconName:"file-archive",icon:[384,512,[],"f1c6","M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z"]},faFileAudio:{prefix:"far",iconName:"file-audio",icon:[384,512,[],"f1c7","M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z"]},faFileCode:{prefix:"far",iconName:"file-code",icon:[384,512,[],"f1c9","M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"]},faFileExcel:{prefix:"far",iconName:"file-excel",icon:[384,512,[],"f1c3","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z"]},faFileImage:{prefix:"far",iconName:"file-image",icon:[384,512,[],"f1c5","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z"]},faFilePdf:{prefix:"far",iconName:"file-pdf",icon:[384,512,[],"f1c1","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z"]},faFilePowerpoint:{prefix:"far",iconName:"file-powerpoint",icon:[384,512,[],"f1c4","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z"]},faFileVideo:{prefix:"far",iconName:"file-video",icon:[384,512,[],"f1c8","M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z"]},faFileWord:{prefix:"far",iconName:"file-word",icon:[384,512,[],"f1c2","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z"]},faFlag:{prefix:"far",iconName:"flag",icon:[512,512,[],"f024","M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z"]},faFlushed:{prefix:"far",iconName:"flushed",icon:[496,512,[],"f579","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},faFolder:{prefix:"far",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"]},faFolderOpen:{prefix:"far",iconName:"folder-open",icon:[576,512,[],"f07c","M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z"]},faFontAwesomeLogoFull:{prefix:"far",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]},faFrown:{prefix:"far",iconName:"frown",icon:[496,512,[],"f119","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"]},faFrownOpen:{prefix:"far",iconName:"frown-open",icon:[496,512,[],"f57a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z"]},faFutbol:{prefix:"far",iconName:"futbol",icon:[496,512,[],"f1e3","M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z"]},faGem:{prefix:"far",iconName:"gem",icon:[576,512,[],"f3a5","M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z"]},faGrimace:{prefix:"far",iconName:"grimace",icon:[496,512,[],"f57f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z"]},faGrin:{prefix:"far",iconName:"grin",icon:[496,512,[],"f580","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},faGrinAlt:{prefix:"far",iconName:"grin-alt",icon:[496,512,[],"f581","M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z"]},faGrinBeam:{prefix:"far",iconName:"grin-beam",icon:[496,512,[],"f582","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z"]},faGrinBeamSweat:{prefix:"far",iconName:"grin-beam-sweat",icon:[496,512,[],"f583","M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"]},faGrinHearts:{prefix:"far",iconName:"grin-hearts",icon:[496,512,[],"f584","M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z"]},faGrinSquint:{prefix:"far",iconName:"grin-squint",icon:[496,512,[],"f585","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z"]},faGrinSquintTears:{prefix:"far",iconName:"grin-squint-tears",icon:[512,512,[],"f586","M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z"]},faGrinStars:{prefix:"far",iconName:"grin-stars",icon:[496,512,[],"f587","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z"]},faGrinTears:{prefix:"far",iconName:"grin-tears",icon:[640,512,[],"f588","M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"]},faGrinTongue:{prefix:"far",iconName:"grin-tongue",icon:[496,512,[],"f589","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faGrinTongueSquint:{prefix:"far",iconName:"grin-tongue-squint",icon:[496,512,[],"f58a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z"]},faGrinTongueWink:{prefix:"far",iconName:"grin-tongue-wink",icon:[496,512,[],"f58b","M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z"]},faGrinWink:{prefix:"far",iconName:"grin-wink",icon:[496,512,[],"f58c","M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"]},faHandLizard:{prefix:"far",iconName:"hand-lizard",icon:[576,512,[],"f258","M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z"]},faHandPaper:{prefix:"far",iconName:"hand-paper",icon:[448,512,[],"f256","M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z"]},faHandPeace:{prefix:"far",iconName:"hand-peace",icon:[448,512,[],"f25b","M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z"]},faHandPointDown:{prefix:"far",iconName:"hand-point-down",icon:[448,512,[],"f0a7","M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z"]},faHandPointLeft:{prefix:"far",iconName:"hand-point-left",icon:[512,512,[],"f0a5","M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"]},faHandPointRight:{prefix:"far",iconName:"hand-point-right",icon:[512,512,[],"f0a4","M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"]},faHandPointUp:{prefix:"far",iconName:"hand-point-up",icon:[448,512,[],"f0a6","M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"]},faHandPointer:{prefix:"far",iconName:"hand-pointer",icon:[448,512,[],"f25a","M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z"]},faHandRock:{prefix:"far",iconName:"hand-rock",icon:[512,512,[],"f255","M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z"]},faHandScissors:{prefix:"far",iconName:"hand-scissors",icon:[512,512,[],"f257","M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z"]},faHandSpock:{prefix:"far",iconName:"hand-spock",icon:[512,512,[],"f259","M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z"]},faHandshake:{prefix:"far",iconName:"handshake",icon:[640,512,[],"f2b5","M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z"]},faHdd:{prefix:"far",iconName:"hdd",icon:[576,512,[],"f0a0","M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z"]},faHeart:{prefix:"far",iconName:"heart",icon:[512,512,[],"f004","M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z"]},faHospital:{prefix:"far",iconName:"hospital",icon:[448,512,[],"f0f8","M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z"]},faHourglass:{prefix:"far",iconName:"hourglass",icon:[384,512,[],"f254","M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z"]},faIdBadge:{prefix:"far",iconName:"id-badge",icon:[384,512,[],"f2c1","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"]},faIdCard:{prefix:"far",iconName:"id-card",icon:[576,512,[],"f2c2","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]},faImage:{prefix:"far",iconName:"image",icon:[512,512,[],"f03e","M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"]},faImages:{prefix:"far",iconName:"images",icon:[576,512,[],"f302","M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z"]},faKeyboard:{prefix:"far",iconName:"keyboard",icon:[576,512,[],"f11c","M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z"]},faKiss:{prefix:"far",iconName:"kiss",icon:[496,512,[],"f596","M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faKissBeam:{prefix:"far",iconName:"kiss-beam",icon:[496,512,[],"f597","M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z"]},faKissWinkHeart:{prefix:"far",iconName:"kiss-wink-heart",icon:[504,512,[],"f598","M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z"]},faLaugh:{prefix:"far",iconName:"laugh",icon:[496,512,[],"f599","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLaughBeam:{prefix:"far",iconName:"laugh-beam",icon:[496,512,[],"f59a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLaughSquint:{prefix:"far",iconName:"laugh-squint",icon:[496,512,[],"f59b","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLaughWink:{prefix:"far",iconName:"laugh-wink",icon:[496,512,[],"f59c","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLemon:{prefix:"far",iconName:"lemon",icon:[512,512,[],"f094","M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z"]},faLifeRing:{prefix:"far",iconName:"life-ring",icon:[512,512,[],"f1cd","M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z"]},faLightbulb:{prefix:"far",iconName:"lightbulb",icon:[352,512,[],"f0eb","M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"]},faListAlt:{prefix:"far",iconName:"list-alt",icon:[512,512,[],"f022","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z"]},faMap:{prefix:"far",iconName:"map",icon:[576,512,[],"f279","M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z"]},faMeh:{prefix:"far",iconName:"meh",icon:[496,512,[],"f11a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},faMehBlank:{prefix:"far",iconName:"meh-blank",icon:[496,512,[],"f5a4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faMehRollingEyes:{prefix:"far",iconName:"meh-rolling-eyes",icon:[496,512,[],"f5a5","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},faMinusSquare:{prefix:"far",iconName:"minus-square",icon:[448,512,[],"f146","M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faMoneyBillAlt:{prefix:"far",iconName:"money-bill-alt",icon:[640,512,[],"f3d1","M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z"]},faMoon:{prefix:"far",iconName:"moon",icon:[512,512,[],"f186","M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z"]},faNewspaper:{prefix:"far",iconName:"newspaper",icon:[576,512,[],"f1ea","M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z"]},faObjectGroup:{prefix:"far",iconName:"object-group",icon:[512,512,[],"f247","M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z"]},faObjectUngroup:{prefix:"far",iconName:"object-ungroup",icon:[576,512,[],"f248","M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z"]},faPaperPlane:{prefix:"far",iconName:"paper-plane",icon:[512,512,[],"f1d8","M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"]},faPauseCircle:{prefix:"far",iconName:"pause-circle",icon:[512,512,[],"f28b","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z"]},faPlayCircle:{prefix:"far",iconName:"play-circle",icon:[512,512,[],"f144","M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z"]},faPlusSquare:{prefix:"far",iconName:"plus-square",icon:[448,512,[],"f0fe","M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faQuestionCircle:{prefix:"far",iconName:"question-circle",icon:[512,512,[],"f059","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"]},faRegistered:{prefix:"far",iconName:"registered",icon:[512,512,[],"f25d","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z"]},faSadCry:{prefix:"far",iconName:"sad-cry",icon:[496,512,[],"f5b3","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z"]},faSadTear:{prefix:"far",iconName:"sad-tear",icon:[496,512,[],"f5b4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z"]},faSave:{prefix:"far",iconName:"save",icon:[448,512,[],"f0c7","M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"]},faShareSquare:{prefix:"far",iconName:"share-square",icon:[576,512,[],"f14d","M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z"]},faSmile:{prefix:"far",iconName:"smile",icon:[496,512,[],"f118","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"]},faSmileBeam:{prefix:"far",iconName:"smile-beam",icon:[496,512,[],"f5b8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z"]},faSmileWink:{prefix:"far",iconName:"smile-wink",icon:[496,512,[],"f4da","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z"]},faSnowflake:{prefix:"far",iconName:"snowflake",icon:[448,512,[],"f2dc","M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z"]},faSquare:{prefix:"far",iconName:"square",icon:[448,512,[],"f0c8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z"]},faStar:{prefix:"far",iconName:"star",icon:[576,512,[],"f005","M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"]},faStarHalf:{prefix:"far",iconName:"star-half",icon:[576,512,[],"f089","M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z"]},faStickyNote:{prefix:"far",iconName:"sticky-note",icon:[448,512,[],"f249","M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z"]},faStopCircle:{prefix:"far",iconName:"stop-circle",icon:[512,512,[],"f28d","M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z"]},faSun:{prefix:"far",iconName:"sun",icon:[512,512,[],"f185","M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z"]},faSurprise:{prefix:"far",iconName:"surprise",icon:[496,512,[],"f5c2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faThumbsDown:{prefix:"far",iconName:"thumbs-down",icon:[512,512,[],"f165","M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z"]},faThumbsUp:{prefix:"far",iconName:"thumbs-up",icon:[512,512,[],"f164","M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"]},faTimesCircle:{prefix:"far",iconName:"times-circle",icon:[512,512,[],"f057","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"]},faTired:{prefix:"far",iconName:"tired",icon:[496,512,[],"f5c8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z"]},faTrashAlt:{prefix:"far",iconName:"trash-alt",icon:[448,512,[],"f2ed","M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z"]},faUser:{prefix:"far",iconName:"user",icon:[448,512,[],"f007","M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"]},faUserCircle:{prefix:"far",iconName:"user-circle",icon:[496,512,[],"f2bd","M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"]},faWindowClose:{prefix:"far",iconName:"window-close",icon:[512,512,[],"f410","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z"]},faWindowMaximize:{prefix:"far",iconName:"window-maximize",icon:[512,512,[],"f2d0","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z"]},faWindowMinimize:{prefix:"far",iconName:"window-minimize",icon:[512,512,[],"f2d1","M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z"]},faWindowRestore:{prefix:"far",iconName:"window-restore",icon:[512,512,[],"f2d2","M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z"]}},n={faAd:{prefix:"fas",iconName:"ad",icon:[512,512,[],"f641","M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z"]},faAddressBook:{prefix:"fas",iconName:"address-book",icon:[448,512,[],"f2b9","M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},faAddressCard:{prefix:"fas",iconName:"address-card",icon:[576,512,[],"f2bb","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]},faAdjust:{prefix:"fas",iconName:"adjust",icon:[512,512,[],"f042","M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z"]},faAirFreshener:{prefix:"fas",iconName:"air-freshener",icon:[512,512,[],"f5d0","M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z"]},faAlignCenter:{prefix:"fas",iconName:"align-center",icon:[448,512,[],"f037","M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z"]},faAlignJustify:{prefix:"fas",iconName:"align-justify",icon:[448,512,[],"f039","M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faAlignLeft:{prefix:"fas",iconName:"align-left",icon:[448,512,[],"f036","M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faAlignRight:{prefix:"fas",iconName:"align-right",icon:[448,512,[],"f038","M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z"]},faAllergies:{prefix:"fas",iconName:"allergies",icon:[448,512,[],"f461","M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faAmbulance:{prefix:"fas",iconName:"ambulance",icon:[640,512,[],"f0f9","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},faAmericanSignLanguageInterpreting:{prefix:"fas",iconName:"american-sign-language-interpreting",icon:[640,512,[],"f2a3","M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z"]},faAnchor:{prefix:"fas",iconName:"anchor",icon:[576,512,[],"f13d","M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z"]},faAngleDoubleDown:{prefix:"fas",iconName:"angle-double-down",icon:[320,512,[],"f103","M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"]},faAngleDoubleLeft:{prefix:"fas",iconName:"angle-double-left",icon:[448,512,[],"f100","M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"]},faAngleDoubleRight:{prefix:"fas",iconName:"angle-double-right",icon:[448,512,[],"f101","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"]},faAngleDoubleUp:{prefix:"fas",iconName:"angle-double-up",icon:[320,512,[],"f102","M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"]},faAngleDown:{prefix:"fas",iconName:"angle-down",icon:[320,512,[],"f107","M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"]},faAngleLeft:{prefix:"fas",iconName:"angle-left",icon:[256,512,[],"f104","M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"]},faAngleRight:{prefix:"fas",iconName:"angle-right",icon:[256,512,[],"f105","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"]},faAngleUp:{prefix:"fas",iconName:"angle-up",icon:[320,512,[],"f106","M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"]},faAngry:{prefix:"fas",iconName:"angry",icon:[496,512,[],"f556","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z"]},faAnkh:{prefix:"fas",iconName:"ankh",icon:[320,512,[],"f644","M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z"]},faAppleAlt:{prefix:"fas",iconName:"apple-alt",icon:[448,512,[],"f5d1","M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z"]},faArchive:{prefix:"fas",iconName:"archive",icon:[512,512,[],"f187","M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"]},faArchway:{prefix:"fas",iconName:"archway",icon:[576,512,[],"f557","M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]},faArrowAltCircleDown:{prefix:"fas",iconName:"arrow-alt-circle-down",icon:[512,512,[],"f358","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"]},faArrowAltCircleLeft:{prefix:"fas",iconName:"arrow-alt-circle-left",icon:[512,512,[],"f359","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"]},faArrowAltCircleRight:{prefix:"fas",iconName:"arrow-alt-circle-right",icon:[512,512,[],"f35a","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"]},faArrowAltCircleUp:{prefix:"fas",iconName:"arrow-alt-circle-up",icon:[512,512,[],"f35b","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"]},faArrowCircleDown:{prefix:"fas",iconName:"arrow-circle-down",icon:[512,512,[],"f0ab","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"]},faArrowCircleLeft:{prefix:"fas",iconName:"arrow-circle-left",icon:[512,512,[],"f0a8","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"]},faArrowCircleRight:{prefix:"fas",iconName:"arrow-circle-right",icon:[512,512,[],"f0a9","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"]},faArrowCircleUp:{prefix:"fas",iconName:"arrow-circle-up",icon:[512,512,[],"f0aa","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"]},faArrowDown:{prefix:"fas",iconName:"arrow-down",icon:[448,512,[],"f063","M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"]},faArrowLeft:{prefix:"fas",iconName:"arrow-left",icon:[448,512,[],"f060","M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"]},faArrowRight:{prefix:"fas",iconName:"arrow-right",icon:[448,512,[],"f061","M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"]},faArrowUp:{prefix:"fas",iconName:"arrow-up",icon:[448,512,[],"f062","M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"]},faArrowsAlt:{prefix:"fas",iconName:"arrows-alt",icon:[512,512,[],"f0b2","M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"]},faArrowsAltH:{prefix:"fas",iconName:"arrows-alt-h",icon:[512,512,[],"f337","M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"]},faArrowsAltV:{prefix:"fas",iconName:"arrows-alt-v",icon:[256,512,[],"f338","M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]},faAssistiveListeningSystems:{prefix:"fas",iconName:"assistive-listening-systems",icon:[512,512,[],"f2a2","M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z"]},faAsterisk:{prefix:"fas",iconName:"asterisk",icon:[512,512,[],"f069","M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"]},faAt:{prefix:"fas",iconName:"at",icon:[512,512,[],"f1fa","M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z"]},faAtlas:{prefix:"fas",iconName:"atlas",icon:[448,512,[],"f558","M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z"]},faAtom:{prefix:"fas",iconName:"atom",icon:[448,512,[],"f5d2","M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z"]},faAudioDescription:{prefix:"fas",iconName:"audio-description",icon:[512,512,[],"f29e","M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z"]},faAward:{prefix:"fas",iconName:"award",icon:[384,512,[],"f559","M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z"]},faBaby:{prefix:"fas",iconName:"baby",icon:[384,512,[],"f77c","M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z"]},faBabyCarriage:{prefix:"fas",iconName:"baby-carriage",icon:[512,512,[],"f77d","M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z"]},faBackspace:{prefix:"fas",iconName:"backspace",icon:[640,512,[],"f55a","M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z"]},faBackward:{prefix:"fas",iconName:"backward",icon:[512,512,[],"f04a","M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"]},faBacon:{prefix:"fas",iconName:"bacon",icon:[576,512,[],"f7e5","M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z"]},faBacteria:{prefix:"fas",iconName:"bacteria",icon:[640,512,[],"e059","M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z"]},faBacterium:{prefix:"fas",iconName:"bacterium",icon:[512,512,[],"e05a","M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z"]},faBahai:{prefix:"fas",iconName:"bahai",icon:[512,512,[],"f666","M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z"]},faBalanceScale:{prefix:"fas",iconName:"balance-scale",icon:[640,512,[],"f24e","M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faBalanceScaleLeft:{prefix:"fas",iconName:"balance-scale-left",icon:[640,512,[],"f515","M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z"]},faBalanceScaleRight:{prefix:"fas",iconName:"balance-scale-right",icon:[640,512,[],"f516","M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z"]},faBan:{prefix:"fas",iconName:"ban",icon:[512,512,[],"f05e","M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z"]},faBandAid:{prefix:"fas",iconName:"band-aid",icon:[640,512,[],"f462","M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z"]},faBarcode:{prefix:"fas",iconName:"barcode",icon:[512,512,[],"f02a","M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z"]},faBars:{prefix:"fas",iconName:"bars",icon:[448,512,[],"f0c9","M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"]},faBaseballBall:{prefix:"fas",iconName:"baseball-ball",icon:[496,512,[],"f433","M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z"]},faBasketballBall:{prefix:"fas",iconName:"basketball-ball",icon:[496,512,[],"f434","M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z"]},faBath:{prefix:"fas",iconName:"bath",icon:[512,512,[],"f2cd","M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z"]},faBatteryEmpty:{prefix:"fas",iconName:"battery-empty",icon:[640,512,[],"f244","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z"]},faBatteryFull:{prefix:"fas",iconName:"battery-full",icon:[640,512,[],"f240","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z"]},faBatteryHalf:{prefix:"fas",iconName:"battery-half",icon:[640,512,[],"f242","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z"]},faBatteryQuarter:{prefix:"fas",iconName:"battery-quarter",icon:[640,512,[],"f243","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z"]},faBatteryThreeQuarters:{prefix:"fas",iconName:"battery-three-quarters",icon:[640,512,[],"f241","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z"]},faBed:{prefix:"fas",iconName:"bed",icon:[640,512,[],"f236","M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z"]},faBeer:{prefix:"fas",iconName:"beer",icon:[448,512,[],"f0fc","M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z"]},faBell:{prefix:"fas",iconName:"bell",icon:[448,512,[],"f0f3","M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z"]},faBellSlash:{prefix:"fas",iconName:"bell-slash",icon:[640,512,[],"f1f6","M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]},faBezierCurve:{prefix:"fas",iconName:"bezier-curve",icon:[640,512,[],"f55b","M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},faBible:{prefix:"fas",iconName:"bible",icon:[448,512,[],"f647","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]},faBicycle:{prefix:"fas",iconName:"bicycle",icon:[640,512,[],"f206","M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z"]},faBiking:{prefix:"fas",iconName:"biking",icon:[640,512,[],"f84a","M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]},faBinoculars:{prefix:"fas",iconName:"binoculars",icon:[512,512,[],"f1e5","M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z"]},faBiohazard:{prefix:"fas",iconName:"biohazard",icon:[576,512,[],"f780","M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},faBirthdayCake:{prefix:"fas",iconName:"birthday-cake",icon:[448,512,[],"f1fd","M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z"]},faBlender:{prefix:"fas",iconName:"blender",icon:[512,512,[],"f517","M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z"]},faBlenderPhone:{prefix:"fas",iconName:"blender-phone",icon:[576,512,[],"f6b6","M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faBlind:{prefix:"fas",iconName:"blind",icon:[384,512,[],"f29d","M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z"]},faBlog:{prefix:"fas",iconName:"blog",icon:[512,512,[],"f781","M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z"]},faBold:{prefix:"fas",iconName:"bold",icon:[384,512,[],"f032","M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z"]},faBolt:{prefix:"fas",iconName:"bolt",icon:[320,512,[],"f0e7","M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z"]},faBomb:{prefix:"fas",iconName:"bomb",icon:[512,512,[],"f1e2","M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z"]},faBone:{prefix:"fas",iconName:"bone",icon:[640,512,[],"f5d7","M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z"]},faBong:{prefix:"fas",iconName:"bong",icon:[448,512,[],"f55c","M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z"]},faBook:{prefix:"fas",iconName:"book",icon:[448,512,[],"f02d","M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"]},faBookDead:{prefix:"fas",iconName:"book-dead",icon:[448,512,[],"f6b7","M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"]},faBookMedical:{prefix:"fas",iconName:"book-medical",icon:[448,512,[],"f7e6","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z"]},faBookOpen:{prefix:"fas",iconName:"book-open",icon:[576,512,[],"f518","M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"]},faBookReader:{prefix:"fas",iconName:"book-reader",icon:[512,512,[],"f5da","M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z"]},faBookmark:{prefix:"fas",iconName:"bookmark",icon:[384,512,[],"f02e","M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]},faBorderAll:{prefix:"fas",iconName:"border-all",icon:[448,512,[],"f84c","M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z"]},faBorderNone:{prefix:"fas",iconName:"border-none",icon:[448,512,[],"f850","M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faBorderStyle:{prefix:"fas",iconName:"border-style",icon:[448,512,[],"f853","M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faBowlingBall:{prefix:"fas",iconName:"bowling-ball",icon:[496,512,[],"f436","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faBox:{prefix:"fas",iconName:"box",icon:[512,512,[],"f466","M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z"]},faBoxOpen:{prefix:"fas",iconName:"box-open",icon:[640,512,[],"f49e","M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"]},faBoxTissue:{prefix:"fas",iconName:"box-tissue",icon:[512,512,[],"e05b","M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z"]},faBoxes:{prefix:"fas",iconName:"boxes",icon:[576,512,[],"f468","M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"]},faBraille:{prefix:"fas",iconName:"braille",icon:[640,512,[],"f2a1","M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},faBrain:{prefix:"fas",iconName:"brain",icon:[576,512,[],"f5dc","M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z"]},faBreadSlice:{prefix:"fas",iconName:"bread-slice",icon:[576,512,[],"f7ec","M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z"]},faBriefcase:{prefix:"fas",iconName:"briefcase",icon:[512,512,[],"f0b1","M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"]},faBriefcaseMedical:{prefix:"fas",iconName:"briefcase-medical",icon:[512,512,[],"f469","M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z"]},faBroadcastTower:{prefix:"fas",iconName:"broadcast-tower",icon:[640,512,[],"f519","M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z"]},faBroom:{prefix:"fas",iconName:"broom",icon:[640,512,[],"f51a","M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z"]},faBrush:{prefix:"fas",iconName:"brush",icon:[384,512,[],"f55d","M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z"]},faBug:{prefix:"fas",iconName:"bug",icon:[512,512,[],"f188","M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"]},faBuilding:{prefix:"fas",iconName:"building",icon:[448,512,[],"f1ad","M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z"]},faBullhorn:{prefix:"fas",iconName:"bullhorn",icon:[576,512,[],"f0a1","M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z"]},faBullseye:{prefix:"fas",iconName:"bullseye",icon:[496,512,[],"f140","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z"]},faBurn:{prefix:"fas",iconName:"burn",icon:[384,512,[],"f46a","M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z"]},faBus:{prefix:"fas",iconName:"bus",icon:[512,512,[],"f207","M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faBusAlt:{prefix:"fas",iconName:"bus-alt",icon:[512,512,[],"f55e","M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faBusinessTime:{prefix:"fas",iconName:"business-time",icon:[640,512,[],"f64a","M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z"]},faCalculator:{prefix:"fas",iconName:"calculator",icon:[448,512,[],"f1ec","M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z"]},faCalendar:{prefix:"fas",iconName:"calendar",icon:[448,512,[],"f133","M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z"]},faCalendarAlt:{prefix:"fas",iconName:"calendar-alt",icon:[448,512,[],"f073","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},faCalendarCheck:{prefix:"fas",iconName:"calendar-check",icon:[448,512,[],"f274","M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z"]},faCalendarDay:{prefix:"fas",iconName:"calendar-day",icon:[448,512,[],"f783","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},faCalendarMinus:{prefix:"fas",iconName:"calendar-minus",icon:[448,512,[],"f272","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z"]},faCalendarPlus:{prefix:"fas",iconName:"calendar-plus",icon:[448,512,[],"f271","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z"]},faCalendarTimes:{prefix:"fas",iconName:"calendar-times",icon:[448,512,[],"f273","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z"]},faCalendarWeek:{prefix:"fas",iconName:"calendar-week",icon:[448,512,[],"f784","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},faCamera:{prefix:"fas",iconName:"camera",icon:[512,512,[],"f030","M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z"]},faCameraRetro:{prefix:"fas",iconName:"camera-retro",icon:[512,512,[],"f083","M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z"]},faCampground:{prefix:"fas",iconName:"campground",icon:[640,512,[],"f6bb","M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z"]},faCandyCane:{prefix:"fas",iconName:"candy-cane",icon:[512,512,[],"f786","M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z"]},faCannabis:{prefix:"fas",iconName:"cannabis",icon:[512,512,[],"f55f","M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z"]},faCapsules:{prefix:"fas",iconName:"capsules",icon:[576,512,[],"f46b","M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z"]},faCar:{prefix:"fas",iconName:"car",icon:[512,512,[],"f1b9","M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]},faCarAlt:{prefix:"fas",iconName:"car-alt",icon:[480,512,[],"f5de","M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]},faCarBattery:{prefix:"fas",iconName:"car-battery",icon:[512,512,[],"f5df","M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z"]},faCarCrash:{prefix:"fas",iconName:"car-crash",icon:[640,512,[],"f5e1","M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z"]},faCarSide:{prefix:"fas",iconName:"car-side",icon:[640,512,[],"f5e4","M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]},faCaravan:{prefix:"fas",iconName:"caravan",icon:[640,512,[],"f8ff","M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z"]},faCaretDown:{prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"]},faCaretLeft:{prefix:"fas",iconName:"caret-left",icon:[192,512,[],"f0d9","M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z"]},faCaretRight:{prefix:"fas",iconName:"caret-right",icon:[192,512,[],"f0da","M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"]},faCaretSquareDown:{prefix:"fas",iconName:"caret-square-down",icon:[448,512,[],"f150","M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z"]},faCaretSquareLeft:{prefix:"fas",iconName:"caret-square-left",icon:[448,512,[],"f191","M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z"]},faCaretSquareRight:{prefix:"fas",iconName:"caret-square-right",icon:[448,512,[],"f152","M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z"]},faCaretSquareUp:{prefix:"fas",iconName:"caret-square-up",icon:[448,512,[],"f151","M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z"]},faCaretUp:{prefix:"fas",iconName:"caret-up",icon:[320,512,[],"f0d8","M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"]},faCarrot:{prefix:"fas",iconName:"carrot",icon:[512,512,[],"f787","M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z"]},faCartArrowDown:{prefix:"fas",iconName:"cart-arrow-down",icon:[576,512,[],"f218","M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z"]},faCartPlus:{prefix:"fas",iconName:"cart-plus",icon:[576,512,[],"f217","M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z"]},faCashRegister:{prefix:"fas",iconName:"cash-register",icon:[512,512,[],"f788","M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z"]},faCat:{prefix:"fas",iconName:"cat",icon:[512,512,[],"f6be","M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},faCertificate:{prefix:"fas",iconName:"certificate",icon:[512,512,[],"f0a3","M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z"]},faChair:{prefix:"fas",iconName:"chair",icon:[448,512,[],"f6c0","M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z"]},faChalkboard:{prefix:"fas",iconName:"chalkboard",icon:[640,512,[],"f51b","M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faChalkboardTeacher:{prefix:"fas",iconName:"chalkboard-teacher",icon:[640,512,[],"f51c","M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z"]},faChargingStation:{prefix:"fas",iconName:"charging-station",icon:[576,512,[],"f5e7","M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z"]},faChartArea:{prefix:"fas",iconName:"chart-area",icon:[512,512,[],"f1fe","M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z"]},faChartBar:{prefix:"fas",iconName:"chart-bar",icon:[512,512,[],"f080","M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faChartLine:{prefix:"fas",iconName:"chart-line",icon:[512,512,[],"f201","M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z"]},faChartPie:{prefix:"fas",iconName:"chart-pie",icon:[544,512,[],"f200","M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z"]},faCheck:{prefix:"fas",iconName:"check",icon:[512,512,[],"f00c","M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]},faCheckCircle:{prefix:"fas",iconName:"check-circle",icon:[512,512,[],"f058","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"]},faCheckDouble:{prefix:"fas",iconName:"check-double",icon:[512,512,[],"f560","M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z"]},faCheckSquare:{prefix:"fas",iconName:"check-square",icon:[448,512,[],"f14a","M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z"]},faCheese:{prefix:"fas",iconName:"cheese",icon:[512,512,[],"f7ef","M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z"]},faChess:{prefix:"fas",iconName:"chess",icon:[512,512,[],"f439","M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z"]},faChessBishop:{prefix:"fas",iconName:"chess-bishop",icon:[320,512,[],"f43a","M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChessBoard:{prefix:"fas",iconName:"chess-board",icon:[512,512,[],"f43c","M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z"]},faChessKing:{prefix:"fas",iconName:"chess-king",icon:[448,512,[],"f43f","M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z"]},faChessKnight:{prefix:"fas",iconName:"chess-knight",icon:[384,512,[],"f441","M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChessPawn:{prefix:"fas",iconName:"chess-pawn",icon:[320,512,[],"f443","M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChessQueen:{prefix:"fas",iconName:"chess-queen",icon:[512,512,[],"f445","M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z"]},faChessRook:{prefix:"fas",iconName:"chess-rook",icon:[384,512,[],"f447","M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChevronCircleDown:{prefix:"fas",iconName:"chevron-circle-down",icon:[512,512,[],"f13a","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z"]},faChevronCircleLeft:{prefix:"fas",iconName:"chevron-circle-left",icon:[512,512,[],"f137","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z"]},faChevronCircleRight:{prefix:"fas",iconName:"chevron-circle-right",icon:[512,512,[],"f138","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z"]},faChevronCircleUp:{prefix:"fas",iconName:"chevron-circle-up",icon:[512,512,[],"f139","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z"]},faChevronDown:{prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},faChevronLeft:{prefix:"fas",iconName:"chevron-left",icon:[320,512,[],"f053","M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"]},faChevronRight:{prefix:"fas",iconName:"chevron-right",icon:[320,512,[],"f054","M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"]},faChevronUp:{prefix:"fas",iconName:"chevron-up",icon:[448,512,[],"f077","M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"]},faChild:{prefix:"fas",iconName:"child",icon:[384,512,[],"f1ae","M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z"]},faChurch:{prefix:"fas",iconName:"church",icon:[640,512,[],"f51d","M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z"]},faCircle:{prefix:"fas",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]},faCircleNotch:{prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z"]},faCity:{prefix:"fas",iconName:"city",icon:[640,512,[],"f64f","M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z"]},faClinicMedical:{prefix:"fas",iconName:"clinic-medical",icon:[576,512,[],"f7f2","M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z"]},faClipboard:{prefix:"fas",iconName:"clipboard",icon:[384,512,[],"f328","M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z"]},faClipboardCheck:{prefix:"fas",iconName:"clipboard-check",icon:[384,512,[],"f46c","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z"]},faClipboardList:{prefix:"fas",iconName:"clipboard-list",icon:[384,512,[],"f46d","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]},faClock:{prefix:"fas",iconName:"clock",icon:[512,512,[],"f017","M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z"]},faClone:{prefix:"fas",iconName:"clone",icon:[512,512,[],"f24d","M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z"]},faClosedCaptioning:{prefix:"fas",iconName:"closed-captioning",icon:[512,512,[],"f20a","M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z"]},faCloud:{prefix:"fas",iconName:"cloud",icon:[640,512,[],"f0c2","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"]},faCloudDownloadAlt:{prefix:"fas",iconName:"cloud-download-alt",icon:[640,512,[],"f381","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"]},faCloudMeatball:{prefix:"fas",iconName:"cloud-meatball",icon:[512,512,[],"f73b","M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z"]},faCloudMoon:{prefix:"fas",iconName:"cloud-moon",icon:[576,512,[],"f6c3","M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z"]},faCloudMoonRain:{prefix:"fas",iconName:"cloud-moon-rain",icon:[576,512,[],"f73c","M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]},faCloudRain:{prefix:"fas",iconName:"cloud-rain",icon:[512,512,[],"f73d","M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z"]},faCloudShowersHeavy:{prefix:"fas",iconName:"cloud-showers-heavy",icon:[512,512,[],"f740","M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z"]},faCloudSun:{prefix:"fas",iconName:"cloud-sun",icon:[640,512,[],"f6c4","M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z"]},faCloudSunRain:{prefix:"fas",iconName:"cloud-sun-rain",icon:[576,512,[],"f743","M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]},faCloudUploadAlt:{prefix:"fas",iconName:"cloud-upload-alt",icon:[640,512,[],"f382","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"]},faCocktail:{prefix:"fas",iconName:"cocktail",icon:[576,512,[],"f561","M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z"]},faCode:{prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"]},faCodeBranch:{prefix:"fas",iconName:"code-branch",icon:[384,512,[],"f126","M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z"]},faCoffee:{prefix:"fas",iconName:"coffee",icon:[640,512,[],"f0f4","M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z"]},faCog:{prefix:"fas",iconName:"cog",icon:[512,512,[],"f013","M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faCogs:{prefix:"fas",iconName:"cogs",icon:[640,512,[],"f085","M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"]},faCoins:{prefix:"fas",iconName:"coins",icon:[512,512,[],"f51e","M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z"]},faColumns:{prefix:"fas",iconName:"columns",icon:[512,512,[],"f0db","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"]},faComment:{prefix:"fas",iconName:"comment",icon:[512,512,[],"f075","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z"]},faCommentAlt:{prefix:"fas",iconName:"comment-alt",icon:[512,512,[],"f27a","M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z"]},faCommentDollar:{prefix:"fas",iconName:"comment-dollar",icon:[512,512,[],"f651","M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z"]},faCommentDots:{prefix:"fas",iconName:"comment-dots",icon:[512,512,[],"f4ad","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faCommentMedical:{prefix:"fas",iconName:"comment-medical",icon:[512,512,[],"f7f5","M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z"]},faCommentSlash:{prefix:"fas",iconName:"comment-slash",icon:[640,512,[],"f4b3","M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]},faComments:{prefix:"fas",iconName:"comments",icon:[576,512,[],"f086","M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z"]},faCommentsDollar:{prefix:"fas",iconName:"comments-dollar",icon:[576,512,[],"f653","M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z"]},faCompactDisc:{prefix:"fas",iconName:"compact-disc",icon:[496,512,[],"f51f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faCompass:{prefix:"fas",iconName:"compass",icon:[496,512,[],"f14e","M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z"]},faCompress:{prefix:"fas",iconName:"compress",icon:[448,512,[],"f066","M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]},faCompressAlt:{prefix:"fas",iconName:"compress-alt",icon:[448,512,[],"f422","M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z"]},faCompressArrowsAlt:{prefix:"fas",iconName:"compress-arrows-alt",icon:[512,512,[],"f78c","M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"]},faConciergeBell:{prefix:"fas",iconName:"concierge-bell",icon:[512,512,[],"f562","M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faCookie:{prefix:"fas",iconName:"cookie",icon:[512,512,[],"f563","M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faCookieBite:{prefix:"fas",iconName:"cookie-bite",icon:[512,512,[],"f564","M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faCopy:{prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"]},faCopyright:{prefix:"fas",iconName:"copyright",icon:[512,512,[],"f1f9","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z"]},faCouch:{prefix:"fas",iconName:"couch",icon:[640,512,[],"f4b8","M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z"]},faCreditCard:{prefix:"fas",iconName:"credit-card",icon:[576,512,[],"f09d","M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"]},faCrop:{prefix:"fas",iconName:"crop",icon:[512,512,[],"f125","M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},faCropAlt:{prefix:"fas",iconName:"crop-alt",icon:[512,512,[],"f565","M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z"]},faCross:{prefix:"fas",iconName:"cross",icon:[384,512,[],"f654","M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},faCrosshairs:{prefix:"fas",iconName:"crosshairs",icon:[512,512,[],"f05b","M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"]},faCrow:{prefix:"fas",iconName:"crow",icon:[640,512,[],"f520","M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faCrown:{prefix:"fas",iconName:"crown",icon:[640,512,[],"f521","M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z"]},faCrutch:{prefix:"fas",iconName:"crutch",icon:[512,512,[],"f7f7","M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z"]},faCube:{prefix:"fas",iconName:"cube",icon:[512,512,[],"f1b2","M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"]},faCubes:{prefix:"fas",iconName:"cubes",icon:[512,512,[],"f1b3","M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"]},faCut:{prefix:"fas",iconName:"cut",icon:[448,512,[],"f0c4","M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]},faDatabase:{prefix:"fas",iconName:"database",icon:[448,512,[],"f1c0","M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"]},faDeaf:{prefix:"fas",iconName:"deaf",icon:[512,512,[],"f2a4","M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z"]},faDemocrat:{prefix:"fas",iconName:"democrat",icon:[640,512,[],"f747","M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z"]},faDesktop:{prefix:"fas",iconName:"desktop",icon:[576,512,[],"f108","M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"]},faDharmachakra:{prefix:"fas",iconName:"dharmachakra",icon:[512,512,[],"f655","M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z"]},faDiagnoses:{prefix:"fas",iconName:"diagnoses",icon:[640,512,[],"f470","M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faDice:{prefix:"fas",iconName:"dice",icon:[640,512,[],"f522","M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faDiceD20:{prefix:"fas",iconName:"dice-d20",icon:[480,512,[],"f6cf","M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z"]},faDiceD6:{prefix:"fas",iconName:"dice-d6",icon:[448,512,[],"f6d1","M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z"]},faDiceFive:{prefix:"fas",iconName:"dice-five",icon:[448,512,[],"f523","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceFour:{prefix:"fas",iconName:"dice-four",icon:[448,512,[],"f524","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceOne:{prefix:"fas",iconName:"dice-one",icon:[448,512,[],"f525","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceSix:{prefix:"fas",iconName:"dice-six",icon:[448,512,[],"f526","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceThree:{prefix:"fas",iconName:"dice-three",icon:[448,512,[],"f527","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceTwo:{prefix:"fas",iconName:"dice-two",icon:[448,512,[],"f528","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDigitalTachograph:{prefix:"fas",iconName:"digital-tachograph",icon:[640,512,[],"f566","M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z"]},faDirections:{prefix:"fas",iconName:"directions",icon:[512,512,[],"f5eb","M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z"]},faDisease:{prefix:"fas",iconName:"disease",icon:[512,512,[],"f7fa","M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z"]},faDivide:{prefix:"fas",iconName:"divide",icon:[448,512,[],"f529","M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faDizzy:{prefix:"fas",iconName:"dizzy",icon:[496,512,[],"f567","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z"]},faDna:{prefix:"fas",iconName:"dna",icon:[448,512,[],"f471","M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z"]},faDog:{prefix:"fas",iconName:"dog",icon:[576,512,[],"f6d3","M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z"]},faDollarSign:{prefix:"fas",iconName:"dollar-sign",icon:[288,512,[],"f155","M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z"]},faDolly:{prefix:"fas",iconName:"dolly",icon:[576,512,[],"f472","M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},faDollyFlatbed:{prefix:"fas",iconName:"dolly-flatbed",icon:[640,512,[],"f474","M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faDonate:{prefix:"fas",iconName:"donate",icon:[512,512,[],"f4b9","M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z"]},faDoorClosed:{prefix:"fas",iconName:"door-closed",icon:[640,512,[],"f52a","M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z"]},faDoorOpen:{prefix:"fas",iconName:"door-open",icon:[640,512,[],"f52b","M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"]},faDotCircle:{prefix:"fas",iconName:"dot-circle",icon:[512,512,[],"f192","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z"]},faDove:{prefix:"fas",iconName:"dove",icon:[512,512,[],"f4ba","M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faDownload:{prefix:"fas",iconName:"download",icon:[512,512,[],"f019","M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},faDraftingCompass:{prefix:"fas",iconName:"drafting-compass",icon:[512,512,[],"f568","M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"]},faDragon:{prefix:"fas",iconName:"dragon",icon:[640,512,[],"f6d5","M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z"]},faDrawPolygon:{prefix:"fas",iconName:"draw-polygon",icon:[448,512,[],"f5ee","M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z"]},faDrum:{prefix:"fas",iconName:"drum",icon:[512,512,[],"f569","M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z"]},faDrumSteelpan:{prefix:"fas",iconName:"drum-steelpan",icon:[576,512,[],"f56a","M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z"]},faDrumstickBite:{prefix:"fas",iconName:"drumstick-bite",icon:[512,512,[],"f6d7","M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z"]},faDumbbell:{prefix:"fas",iconName:"dumbbell",icon:[640,512,[],"f44b","M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z"]},faDumpster:{prefix:"fas",iconName:"dumpster",icon:[576,512,[],"f793","M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faDumpsterFire:{prefix:"fas",iconName:"dumpster-fire",icon:[640,512,[],"f794","M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z"]},faDungeon:{prefix:"fas",iconName:"dungeon",icon:[512,512,[],"f6d9","M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z"]},faEdit:{prefix:"fas",iconName:"edit",icon:[576,512,[],"f044","M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"]},faEgg:{prefix:"fas",iconName:"egg",icon:[384,512,[],"f7fb","M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z"]},faEject:{prefix:"fas",iconName:"eject",icon:[448,512,[],"f052","M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z"]},faEllipsisH:{prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},faEllipsisV:{prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},faEnvelope:{prefix:"fas",iconName:"envelope",icon:[512,512,[],"f0e0","M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]},faEnvelopeOpen:{prefix:"fas",iconName:"envelope-open",icon:[512,512,[],"f2b6","M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z"]},faEnvelopeOpenText:{prefix:"fas",iconName:"envelope-open-text",icon:[512,512,[],"f658","M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z"]},faEnvelopeSquare:{prefix:"fas",iconName:"envelope-square",icon:[448,512,[],"f199","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z"]},faEquals:{prefix:"fas",iconName:"equals",icon:[448,512,[],"f52c","M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faEraser:{prefix:"fas",iconName:"eraser",icon:[512,512,[],"f12d","M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"]},faEthernet:{prefix:"fas",iconName:"ethernet",icon:[512,512,[],"f796","M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z"]},faEuroSign:{prefix:"fas",iconName:"euro-sign",icon:[320,512,[],"f153","M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z"]},faExchangeAlt:{prefix:"fas",iconName:"exchange-alt",icon:[512,512,[],"f362","M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z"]},faExclamation:{prefix:"fas",iconName:"exclamation",icon:[192,512,[],"f12a","M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z"]},faExclamationCircle:{prefix:"fas",iconName:"exclamation-circle",icon:[512,512,[],"f06a","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},faExclamationTriangle:{prefix:"fas",iconName:"exclamation-triangle",icon:[576,512,[],"f071","M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},faExpand:{prefix:"fas",iconName:"expand",icon:[448,512,[],"f065","M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"]},faExpandAlt:{prefix:"fas",iconName:"expand-alt",icon:[448,512,[],"f424","M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z"]},faExpandArrowsAlt:{prefix:"fas",iconName:"expand-arrows-alt",icon:[448,512,[],"f31e","M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]},faExternalLinkAlt:{prefix:"fas",iconName:"external-link-alt",icon:[512,512,[],"f35d","M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"]},faExternalLinkSquareAlt:{prefix:"fas",iconName:"external-link-square-alt",icon:[448,512,[],"f360","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z"]},faEye:{prefix:"fas",iconName:"eye",icon:[576,512,[],"f06e","M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]},faEyeDropper:{prefix:"fas",iconName:"eye-dropper",icon:[512,512,[],"f1fb","M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"]},faEyeSlash:{prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]},faFan:{prefix:"fas",iconName:"fan",icon:[512,512,[],"f863","M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]},faFastBackward:{prefix:"fas",iconName:"fast-backward",icon:[512,512,[],"f049","M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z"]},faFastForward:{prefix:"fas",iconName:"fast-forward",icon:[512,512,[],"f050","M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z"]},faFaucet:{prefix:"fas",iconName:"faucet",icon:[512,512,[],"e005","M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z"]},faFax:{prefix:"fas",iconName:"fax",icon:[512,512,[],"f1ac","M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z"]},faFeather:{prefix:"fas",iconName:"feather",icon:[512,512,[],"f52d","M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z"]},faFeatherAlt:{prefix:"fas",iconName:"feather-alt",icon:[512,512,[],"f56b","M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z"]},faFemale:{prefix:"fas",iconName:"female",icon:[256,512,[],"f182","M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z"]},faFighterJet:{prefix:"fas",iconName:"fighter-jet",icon:[640,512,[],"f0fb","M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z"]},faFile:{prefix:"fas",iconName:"file",icon:[384,512,[],"f15b","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileAlt:{prefix:"fas",iconName:"file-alt",icon:[384,512,[],"f15c","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileArchive:{prefix:"fas",iconName:"file-archive",icon:[384,512,[],"f1c6","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z"]},faFileAudio:{prefix:"fas",iconName:"file-audio",icon:[384,512,[],"f1c7","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileCode:{prefix:"fas",iconName:"file-code",icon:[384,512,[],"f1c9","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z"]},faFileContract:{prefix:"fas",iconName:"file-contract",icon:[384,512,[],"f56c","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileCsv:{prefix:"fas",iconName:"file-csv",icon:[384,512,[],"f6dd","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileDownload:{prefix:"fas",iconName:"file-download",icon:[384,512,[],"f56d","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileExcel:{prefix:"fas",iconName:"file-excel",icon:[384,512,[],"f1c3","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileExport:{prefix:"fas",iconName:"file-export",icon:[576,512,[],"f56e","M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z"]},faFileImage:{prefix:"fas",iconName:"file-image",icon:[384,512,[],"f1c5","M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"]},faFileImport:{prefix:"fas",iconName:"file-import",icon:[512,512,[],"f56f","M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z"]},faFileInvoice:{prefix:"fas",iconName:"file-invoice",icon:[384,512,[],"f570","M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z"]},faFileInvoiceDollar:{prefix:"fas",iconName:"file-invoice-dollar",icon:[384,512,[],"f571","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z"]},faFileMedical:{prefix:"fas",iconName:"file-medical",icon:[384,512,[],"f477","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z"]},faFileMedicalAlt:{prefix:"fas",iconName:"file-medical-alt",icon:[448,512,[],"f478","M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFilePdf:{prefix:"fas",iconName:"file-pdf",icon:[384,512,[],"f1c1","M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z"]},faFilePowerpoint:{prefix:"fas",iconName:"file-powerpoint",icon:[384,512,[],"f1c4","M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z"]},faFilePrescription:{prefix:"fas",iconName:"file-prescription",icon:[384,512,[],"f572","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileSignature:{prefix:"fas",iconName:"file-signature",icon:[576,512,[],"f573","M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z"]},faFileUpload:{prefix:"fas",iconName:"file-upload",icon:[384,512,[],"f574","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileVideo:{prefix:"fas",iconName:"file-video",icon:[384,512,[],"f1c8","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"]},faFileWord:{prefix:"fas",iconName:"file-word",icon:[384,512,[],"f1c2","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFill:{prefix:"fas",iconName:"fill",icon:[512,512,[],"f575","M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z"]},faFillDrip:{prefix:"fas",iconName:"fill-drip",icon:[576,512,[],"f576","M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"]},faFilm:{prefix:"fas",iconName:"film",icon:[512,512,[],"f008","M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]},faFilter:{prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]},faFingerprint:{prefix:"fas",iconName:"fingerprint",icon:[512,512,[],"f577","M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"]},faFire:{prefix:"fas",iconName:"fire",icon:[384,512,[],"f06d","M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z"]},faFireAlt:{prefix:"fas",iconName:"fire-alt",icon:[448,512,[],"f7e4","M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z"]},faFireExtinguisher:{prefix:"fas",iconName:"fire-extinguisher",icon:[448,512,[],"f134","M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z"]},faFirstAid:{prefix:"fas",iconName:"first-aid",icon:[576,512,[],"f479","M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},faFish:{prefix:"fas",iconName:"fish",icon:[576,512,[],"f578","M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]},faFistRaised:{prefix:"fas",iconName:"fist-raised",icon:[384,512,[],"f6de","M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z"]},faFlag:{prefix:"fas",iconName:"flag",icon:[512,512,[],"f024","M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"]},faFlagCheckered:{prefix:"fas",iconName:"flag-checkered",icon:[512,512,[],"f11e","M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"]},faFlagUsa:{prefix:"fas",iconName:"flag-usa",icon:[512,512,[],"f74d","M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z"]},faFlask:{prefix:"fas",iconName:"flask",icon:[448,512,[],"f0c3","M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z"]},faFlushed:{prefix:"fas",iconName:"flushed",icon:[496,512,[],"f579","M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z"]},faFolder:{prefix:"fas",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]},faFolderMinus:{prefix:"fas",iconName:"folder-minus",icon:[512,512,[],"f65d","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z"]},faFolderOpen:{prefix:"fas",iconName:"folder-open",icon:[576,512,[],"f07c","M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"]},faFolderPlus:{prefix:"fas",iconName:"folder-plus",icon:[512,512,[],"f65e","M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"]},faFont:{prefix:"fas",iconName:"font",icon:[448,512,[],"f031","M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"]},faFontAwesomeLogoFull:{prefix:"fas",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]},faFootballBall:{prefix:"fas",iconName:"football-ball",icon:[496,512,[],"f44e","M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z"]},faForward:{prefix:"fas",iconName:"forward",icon:[512,512,[],"f04e","M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"]},faFrog:{prefix:"fas",iconName:"frog",icon:[576,512,[],"f52e","M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]},faFrown:{prefix:"fas",iconName:"frown",icon:[496,512,[],"f119","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z"]},faFrownOpen:{prefix:"fas",iconName:"frown-open",icon:[496,512,[],"f57a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faFunnelDollar:{prefix:"fas",iconName:"funnel-dollar",icon:[640,512,[],"f662","M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z"]},faFutbol:{prefix:"fas",iconName:"futbol",icon:[512,512,[],"f1e3","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z"]},faGamepad:{prefix:"fas",iconName:"gamepad",icon:[640,512,[],"f11b","M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z"]},faGasPump:{prefix:"fas",iconName:"gas-pump",icon:[512,512,[],"f52f","M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z"]},faGavel:{prefix:"fas",iconName:"gavel",icon:[512,512,[],"f0e3","M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"]},faGem:{prefix:"fas",iconName:"gem",icon:[576,512,[],"f3a5","M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z"]},faGenderless:{prefix:"fas",iconName:"genderless",icon:[288,512,[],"f22d","M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z"]},faGhost:{prefix:"fas",iconName:"ghost",icon:[384,512,[],"f6e2","M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faGift:{prefix:"fas",iconName:"gift",icon:[512,512,[],"f06b","M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z"]},faGifts:{prefix:"fas",iconName:"gifts",icon:[640,512,[],"f79c","M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z"]},faGlassCheers:{prefix:"fas",iconName:"glass-cheers",icon:[640,512,[],"f79f","M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z"]},faGlassMartini:{prefix:"fas",iconName:"glass-martini",icon:[512,512,[],"f000","M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z"]},faGlassMartiniAlt:{prefix:"fas",iconName:"glass-martini-alt",icon:[512,512,[],"f57b","M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z"]},faGlassWhiskey:{prefix:"fas",iconName:"glass-whiskey",icon:[512,512,[],"f7a0","M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z"]},faGlasses:{prefix:"fas",iconName:"glasses",icon:[576,512,[],"f530","M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z"]},faGlobe:{prefix:"fas",iconName:"globe",icon:[496,512,[],"f0ac","M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"]},faGlobeAfrica:{prefix:"fas",iconName:"globe-africa",icon:[496,512,[],"f57c","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z"]},faGlobeAmericas:{prefix:"fas",iconName:"globe-americas",icon:[496,512,[],"f57d","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z"]},faGlobeAsia:{prefix:"fas",iconName:"globe-asia",icon:[496,512,[],"f57e","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z"]},faGlobeEurope:{prefix:"fas",iconName:"globe-europe",icon:[496,512,[],"f7a2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z"]},faGolfBall:{prefix:"fas",iconName:"golf-ball",icon:[416,512,[],"f450","M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z"]},faGopuram:{prefix:"fas",iconName:"gopuram",icon:[512,512,[],"f664","M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z"]},faGraduationCap:{prefix:"fas",iconName:"graduation-cap",icon:[640,512,[],"f19d","M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z"]},faGreaterThan:{prefix:"fas",iconName:"greater-than",icon:[384,512,[],"f531","M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z"]},faGreaterThanEqual:{prefix:"fas",iconName:"greater-than-equal",icon:[448,512,[],"f532","M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},faGrimace:{prefix:"fas",iconName:"grimace",icon:[496,512,[],"f57f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z"]},faGrin:{prefix:"fas",iconName:"grin",icon:[496,512,[],"f580","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinAlt:{prefix:"fas",iconName:"grin-alt",icon:[496,512,[],"f581","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinBeam:{prefix:"fas",iconName:"grin-beam",icon:[496,512,[],"f582","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinBeamSweat:{prefix:"fas",iconName:"grin-beam-sweat",icon:[504,512,[],"f583","M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinHearts:{prefix:"fas",iconName:"grin-hearts",icon:[496,512,[],"f584","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z"]},faGrinSquint:{prefix:"fas",iconName:"grin-squint",icon:[496,512,[],"f585","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinSquintTears:{prefix:"fas",iconName:"grin-squint-tears",icon:[512,512,[],"f586","M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z"]},faGrinStars:{prefix:"fas",iconName:"grin-stars",icon:[496,512,[],"f587","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"]},faGrinTears:{prefix:"fas",iconName:"grin-tears",icon:[640,512,[],"f588","M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinTongue:{prefix:"fas",iconName:"grin-tongue",icon:[496,512,[],"f589","M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]},faGrinTongueSquint:{prefix:"fas",iconName:"grin-tongue-squint",icon:[496,512,[],"f58a","M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z"]},faGrinTongueWink:{prefix:"fas",iconName:"grin-tongue-wink",icon:[496,512,[],"f58b","M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]},faGrinWink:{prefix:"fas",iconName:"grin-wink",icon:[496,512,[],"f58c","M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z"]},faGripHorizontal:{prefix:"fas",iconName:"grip-horizontal",icon:[448,512,[],"f58d","M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},faGripLines:{prefix:"fas",iconName:"grip-lines",icon:[512,512,[],"f7a4","M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faGripLinesVertical:{prefix:"fas",iconName:"grip-lines-vertical",icon:[256,512,[],"f7a5","M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z"]},faGripVertical:{prefix:"fas",iconName:"grip-vertical",icon:[320,512,[],"f58e","M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},faGuitar:{prefix:"fas",iconName:"guitar",icon:[512,512,[],"f7a6","M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]},faHSquare:{prefix:"fas",iconName:"h-square",icon:[448,512,[],"f0fd","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z"]},faHamburger:{prefix:"fas",iconName:"hamburger",icon:[512,512,[],"f805","M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z"]},faHammer:{prefix:"fas",iconName:"hammer",icon:[576,512,[],"f6e3","M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z"]},faHamsa:{prefix:"fas",iconName:"hamsa",icon:[512,512,[],"f665","M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]},faHandHolding:{prefix:"fas",iconName:"hand-holding",icon:[576,512,[],"f4bd","M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},faHandHoldingHeart:{prefix:"fas",iconName:"hand-holding-heart",icon:[576,512,[],"f4be","M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},faHandHoldingMedical:{prefix:"fas",iconName:"hand-holding-medical",icon:[576,512,[],"e05c","M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z"]},faHandHoldingUsd:{prefix:"fas",iconName:"hand-holding-usd",icon:[576,512,[],"f4c0","M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z"]},faHandHoldingWater:{prefix:"fas",iconName:"hand-holding-water",icon:[576,512,[],"f4c1","M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},faHandLizard:{prefix:"fas",iconName:"hand-lizard",icon:[576,512,[],"f258","M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z"]},faHandMiddleFinger:{prefix:"fas",iconName:"hand-middle-finger",icon:[512,512,[],"f806","M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z"]},faHandPaper:{prefix:"fas",iconName:"hand-paper",icon:[448,512,[],"f256","M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z"]},faHandPeace:{prefix:"fas",iconName:"hand-peace",icon:[448,512,[],"f25b","M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z"]},faHandPointDown:{prefix:"fas",iconName:"hand-point-down",icon:[384,512,[],"f0a7","M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]},faHandPointLeft:{prefix:"fas",iconName:"hand-point-left",icon:[512,512,[],"f0a5","M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z"]},faHandPointRight:{prefix:"fas",iconName:"hand-point-right",icon:[512,512,[],"f0a4","M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]},faHandPointUp:{prefix:"fas",iconName:"hand-point-up",icon:[384,512,[],"f0a6","M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z"]},faHandPointer:{prefix:"fas",iconName:"hand-pointer",icon:[448,512,[],"f25a","M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z"]},faHandRock:{prefix:"fas",iconName:"hand-rock",icon:[512,512,[],"f255","M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z"]},faHandScissors:{prefix:"fas",iconName:"hand-scissors",icon:[512,512,[],"f257","M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z"]},faHandSparkles:{prefix:"fas",iconName:"hand-sparkles",icon:[640,512,[],"e05d","M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z"]},faHandSpock:{prefix:"fas",iconName:"hand-spock",icon:[512,512,[],"f259","M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z"]},faHands:{prefix:"fas",iconName:"hands",icon:[640,512,[],"f4c2","M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z"]},faHandsHelping:{prefix:"fas",iconName:"hands-helping",icon:[640,512,[],"f4c4","M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z"]},faHandsWash:{prefix:"fas",iconName:"hands-wash",icon:[576,512,[],"e05e","M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z"]},faHandshake:{prefix:"fas",iconName:"handshake",icon:[640,512,[],"f2b5","M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z"]},faHandshakeAltSlash:{prefix:"fas",iconName:"handshake-alt-slash",icon:[640,512,[],"e05f","M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z"]},faHandshakeSlash:{prefix:"fas",iconName:"handshake-slash",icon:[640,512,[],"e060","M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z"]},faHanukiah:{prefix:"fas",iconName:"hanukiah",icon:[640,512,[],"f6e6","M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z"]},faHardHat:{prefix:"fas",iconName:"hard-hat",icon:[512,512,[],"f807","M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faHashtag:{prefix:"fas",iconName:"hashtag",icon:[448,512,[],"f292","M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z"]},faHatCowboy:{prefix:"fas",iconName:"hat-cowboy",icon:[640,512,[],"f8c0","M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z"]},faHatCowboySide:{prefix:"fas",iconName:"hat-cowboy-side",icon:[640,512,[],"f8c1","M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z"]},faHatWizard:{prefix:"fas",iconName:"hat-wizard",icon:[512,512,[],"f6e8","M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z"]},faHdd:{prefix:"fas",iconName:"hdd",icon:[576,512,[],"f0a0","M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},faHeadSideCough:{prefix:"fas",iconName:"head-side-cough",icon:[640,512,[],"e061","M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z"]},faHeadSideCoughSlash:{prefix:"fas",iconName:"head-side-cough-slash",icon:[640,512,[],"e062","M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z"]},faHeadSideMask:{prefix:"fas",iconName:"head-side-mask",icon:[512,512,[],"e063","M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z"]},faHeadSideVirus:{prefix:"fas",iconName:"head-side-virus",icon:[512,512,[],"e064","M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z"]},faHeading:{prefix:"fas",iconName:"heading",icon:[512,512,[],"f1dc","M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z"]},faHeadphones:{prefix:"fas",iconName:"headphones",icon:[512,512,[],"f025","M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z"]},faHeadphonesAlt:{prefix:"fas",iconName:"headphones-alt",icon:[512,512,[],"f58f","M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z"]},faHeadset:{prefix:"fas",iconName:"headset",icon:[512,512,[],"f590","M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z"]},faHeart:{prefix:"fas",iconName:"heart",icon:[512,512,[],"f004","M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z"]},faHeartBroken:{prefix:"fas",iconName:"heart-broken",icon:[512,512,[],"f7a9","M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z"]},faHeartbeat:{prefix:"fas",iconName:"heartbeat",icon:[512,512,[],"f21e","M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z"]},faHelicopter:{prefix:"fas",iconName:"helicopter",icon:[640,512,[],"f533","M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z"]},faHighlighter:{prefix:"fas",iconName:"highlighter",icon:[544,512,[],"f591","M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"]},faHiking:{prefix:"fas",iconName:"hiking",icon:[384,512,[],"f6ec","M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z"]},faHippo:{prefix:"fas",iconName:"hippo",icon:[640,512,[],"f6ed","M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},faHistory:{prefix:"fas",iconName:"history",icon:[512,512,[],"f1da","M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"]},faHockeyPuck:{prefix:"fas",iconName:"hockey-puck",icon:[512,512,[],"f453","M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z"]},faHollyBerry:{prefix:"fas",iconName:"holly-berry",icon:[448,512,[],"f7aa","M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z"]},faHome:{prefix:"fas",iconName:"home",icon:[576,512,[],"f015","M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]},faHorse:{prefix:"fas",iconName:"horse",icon:[576,512,[],"f6f0","M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},faHorseHead:{prefix:"fas",iconName:"horse-head",icon:[512,512,[],"f7ab","M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"]},faHospital:{prefix:"fas",iconName:"hospital",icon:[448,512,[],"f0f8","M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z"]},faHospitalAlt:{prefix:"fas",iconName:"hospital-alt",icon:[576,512,[],"f47d","M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]},faHospitalSymbol:{prefix:"fas",iconName:"hospital-symbol",icon:[512,512,[],"f47e","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z"]},faHospitalUser:{prefix:"fas",iconName:"hospital-user",icon:[640,512,[],"f80d","M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z"]},faHotTub:{prefix:"fas",iconName:"hot-tub",icon:[512,512,[],"f593","M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z"]},faHotdog:{prefix:"fas",iconName:"hotdog",icon:[512,512,[],"f80f","M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z"]},faHotel:{prefix:"fas",iconName:"hotel",icon:[576,512,[],"f594","M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]},faHourglass:{prefix:"fas",iconName:"hourglass",icon:[384,512,[],"f254","M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z"]},faHourglassEnd:{prefix:"fas",iconName:"hourglass-end",icon:[384,512,[],"f253","M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z"]},faHourglassHalf:{prefix:"fas",iconName:"hourglass-half",icon:[384,512,[],"f252","M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"]},faHourglassStart:{prefix:"fas",iconName:"hourglass-start",icon:[384,512,[],"f251","M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z"]},faHouseDamage:{prefix:"fas",iconName:"house-damage",icon:[576,512,[],"f6f1","M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z"]},faHouseUser:{prefix:"fas",iconName:"house-user",icon:[576,512,[],"e065","M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z"]},faHryvnia:{prefix:"fas",iconName:"hryvnia",icon:[384,512,[],"f6f2","M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z"]},faICursor:{prefix:"fas",iconName:"i-cursor",icon:[256,512,[],"f246","M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z"]},faIceCream:{prefix:"fas",iconName:"ice-cream",icon:[448,512,[],"f810","M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z"]},faIcicles:{prefix:"fas",iconName:"icicles",icon:[512,512,[],"f7ad","M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z"]},faIcons:{prefix:"fas",iconName:"icons",icon:[512,512,[],"f86d","M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z"]},faIdBadge:{prefix:"fas",iconName:"id-badge",icon:[384,512,[],"f2c1","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},faIdCard:{prefix:"fas",iconName:"id-card",icon:[576,512,[],"f2c2","M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"]},faIdCardAlt:{prefix:"fas",iconName:"id-card-alt",icon:[576,512,[],"f47f","M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"]},faIgloo:{prefix:"fas",iconName:"igloo",icon:[576,512,[],"f7ae","M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z"]},faImage:{prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"]},faImages:{prefix:"fas",iconName:"images",icon:[576,512,[],"f302","M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z"]},faInbox:{prefix:"fas",iconName:"inbox",icon:[576,512,[],"f01c","M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"]},faIndent:{prefix:"fas",iconName:"indent",icon:[448,512,[],"f03c","M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faIndustry:{prefix:"fas",iconName:"industry",icon:[512,512,[],"f275","M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z"]},faInfinity:{prefix:"fas",iconName:"infinity",icon:[640,512,[],"f534","M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"]},faInfo:{prefix:"fas",iconName:"info",icon:[192,512,[],"f129","M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"]},faInfoCircle:{prefix:"fas",iconName:"info-circle",icon:[512,512,[],"f05a","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]},faItalic:{prefix:"fas",iconName:"italic",icon:[320,512,[],"f033","M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z"]},faJedi:{prefix:"fas",iconName:"jedi",icon:[576,512,[],"f669","M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z"]},faJoint:{prefix:"fas",iconName:"joint",icon:[640,512,[],"f595","M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z"]},faJournalWhills:{prefix:"fas",iconName:"journal-whills",icon:[448,512,[],"f66a","M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z"]},faKaaba:{prefix:"fas",iconName:"kaaba",icon:[576,512,[],"f66b","M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z"]},faKey:{prefix:"fas",iconName:"key",icon:[512,512,[],"f084","M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"]},faKeyboard:{prefix:"fas",iconName:"keyboard",icon:[576,512,[],"f11c","M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]},faKhanda:{prefix:"fas",iconName:"khanda",icon:[512,512,[],"f66d","M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z"]},faKiss:{prefix:"fas",iconName:"kiss",icon:[496,512,[],"f596","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faKissBeam:{prefix:"fas",iconName:"kiss-beam",icon:[496,512,[],"f597","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z"]},faKissWinkHeart:{prefix:"fas",iconName:"kiss-wink-heart",icon:[504,512,[],"f598","M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z"]},faKiwiBird:{prefix:"fas",iconName:"kiwi-bird",icon:[576,512,[],"f535","M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z"]},faLandmark:{prefix:"fas",iconName:"landmark",icon:[512,512,[],"f66f","M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faLanguage:{prefix:"fas",iconName:"language",icon:[640,512,[],"f1ab","M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z"]},faLaptop:{prefix:"fas",iconName:"laptop",icon:[640,512,[],"f109","M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]},faLaptopCode:{prefix:"fas",iconName:"laptop-code",icon:[640,512,[],"f5fc","M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]},faLaptopHouse:{prefix:"fas",iconName:"laptop-house",icon:[640,512,[],"e066","M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]},faLaptopMedical:{prefix:"fas",iconName:"laptop-medical",icon:[640,512,[],"f812","M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]},faLaugh:{prefix:"fas",iconName:"laugh",icon:[496,512,[],"f599","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z"]},faLaughBeam:{prefix:"fas",iconName:"laugh-beam",icon:[496,512,[],"f59a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},faLaughSquint:{prefix:"fas",iconName:"laugh-squint",icon:[496,512,[],"f59b","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},faLaughWink:{prefix:"fas",iconName:"laugh-wink",icon:[496,512,[],"f59c","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},faLayerGroup:{prefix:"fas",iconName:"layer-group",icon:[512,512,[],"f5fd","M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"]},faLeaf:{prefix:"fas",iconName:"leaf",icon:[576,512,[],"f06c","M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z"]},faLemon:{prefix:"fas",iconName:"lemon",icon:[512,512,[],"f094","M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z"]},faLessThan:{prefix:"fas",iconName:"less-than",icon:[384,512,[],"f536","M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z"]},faLessThanEqual:{prefix:"fas",iconName:"less-than-equal",icon:[448,512,[],"f537","M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},faLevelDownAlt:{prefix:"fas",iconName:"level-down-alt",icon:[320,512,[],"f3be","M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z"]},faLevelUpAlt:{prefix:"fas",iconName:"level-up-alt",icon:[320,512,[],"f3bf","M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z"]},faLifeRing:{prefix:"fas",iconName:"life-ring",icon:[512,512,[],"f1cd","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z"]},faLightbulb:{prefix:"fas",iconName:"lightbulb",icon:[352,512,[],"f0eb","M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]},faLink:{prefix:"fas",iconName:"link",icon:[512,512,[],"f0c1","M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"]},faLiraSign:{prefix:"fas",iconName:"lira-sign",icon:[384,512,[],"f195","M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z"]},faList:{prefix:"fas",iconName:"list",icon:[512,512,[],"f03a","M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faListAlt:{prefix:"fas",iconName:"list-alt",icon:[512,512,[],"f022","M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z"]},faListOl:{prefix:"fas",iconName:"list-ol",icon:[512,512,[],"f0cb","M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"]},faListUl:{prefix:"fas",iconName:"list-ul",icon:[512,512,[],"f0ca","M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faLocationArrow:{prefix:"fas",iconName:"location-arrow",icon:[512,512,[],"f124","M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z"]},faLock:{prefix:"fas",iconName:"lock",icon:[448,512,[],"f023","M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"]},faLockOpen:{prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"]},faLongArrowAltDown:{prefix:"fas",iconName:"long-arrow-alt-down",icon:[256,512,[],"f309","M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z"]},faLongArrowAltLeft:{prefix:"fas",iconName:"long-arrow-alt-left",icon:[448,512,[],"f30a","M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z"]},faLongArrowAltRight:{prefix:"fas",iconName:"long-arrow-alt-right",icon:[448,512,[],"f30b","M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"]},faLongArrowAltUp:{prefix:"fas",iconName:"long-arrow-alt-up",icon:[256,512,[],"f30c","M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z"]},faLowVision:{prefix:"fas",iconName:"low-vision",icon:[576,512,[],"f2a8","M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z"]},faLuggageCart:{prefix:"fas",iconName:"luggage-cart",icon:[640,512,[],"f59d","M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z"]},faLungs:{prefix:"fas",iconName:"lungs",icon:[640,512,[],"f604","M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z"]},faLungsVirus:{prefix:"fas",iconName:"lungs-virus",icon:[640,512,[],"e067","M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z"]},faMagic:{prefix:"fas",iconName:"magic",icon:[512,512,[],"f0d0","M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"]},faMagnet:{prefix:"fas",iconName:"magnet",icon:[512,512,[],"f076","M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z"]},faMailBulk:{prefix:"fas",iconName:"mail-bulk",icon:[576,512,[],"f674","M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z"]},faMale:{prefix:"fas",iconName:"male",icon:[192,512,[],"f183","M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z"]},faMap:{prefix:"fas",iconName:"map",icon:[576,512,[],"f279","M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z"]},faMapMarked:{prefix:"fas",iconName:"map-marked",icon:[576,512,[],"f59f","M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]},faMapMarkedAlt:{prefix:"fas",iconName:"map-marked-alt",icon:[576,512,[],"f5a0","M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]},faMapMarker:{prefix:"fas",iconName:"map-marker",icon:[384,512,[],"f041","M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z"]},faMapMarkerAlt:{prefix:"fas",iconName:"map-marker-alt",icon:[384,512,[],"f3c5","M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"]},faMapPin:{prefix:"fas",iconName:"map-pin",icon:[288,512,[],"f276","M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z"]},faMapSigns:{prefix:"fas",iconName:"map-signs",icon:[512,512,[],"f277","M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z"]},faMarker:{prefix:"fas",iconName:"marker",icon:[512,512,[],"f5a1","M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z"]},faMars:{prefix:"fas",iconName:"mars",icon:[384,512,[],"f222","M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faMarsDouble:{prefix:"fas",iconName:"mars-double",icon:[512,512,[],"f227","M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z"]},faMarsStroke:{prefix:"fas",iconName:"mars-stroke",icon:[384,512,[],"f229","M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faMarsStrokeH:{prefix:"fas",iconName:"mars-stroke-h",icon:[480,512,[],"f22b","M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]},faMarsStrokeV:{prefix:"fas",iconName:"mars-stroke-v",icon:[288,512,[],"f22a","M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]},faMask:{prefix:"fas",iconName:"mask",icon:[640,512,[],"f6fa","M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"]},faMedal:{prefix:"fas",iconName:"medal",icon:[512,512,[],"f5a2","M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]},faMedkit:{prefix:"fas",iconName:"medkit",icon:[512,512,[],"f0fa","M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z"]},faMeh:{prefix:"fas",iconName:"meh",icon:[496,512,[],"f11a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faMehBlank:{prefix:"fas",iconName:"meh-blank",icon:[496,512,[],"f5a4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faMehRollingEyes:{prefix:"fas",iconName:"meh-rolling-eyes",icon:[496,512,[],"f5a5","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z"]},faMemory:{prefix:"fas",iconName:"memory",icon:[640,512,[],"f538","M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z"]},faMenorah:{prefix:"fas",iconName:"menorah",icon:[640,512,[],"f676","M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z"]},faMercury:{prefix:"fas",iconName:"mercury",icon:[288,512,[],"f223","M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]},faMeteor:{prefix:"fas",iconName:"meteor",icon:[512,512,[],"f753","M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z"]},faMicrochip:{prefix:"fas",iconName:"microchip",icon:[512,512,[],"f2db","M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z"]},faMicrophone:{prefix:"fas",iconName:"microphone",icon:[352,512,[],"f130","M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z"]},faMicrophoneAlt:{prefix:"fas",iconName:"microphone-alt",icon:[352,512,[],"f3c9","M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z"]},faMicrophoneAltSlash:{prefix:"fas",iconName:"microphone-alt-slash",icon:[640,512,[],"f539","M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]},faMicrophoneSlash:{prefix:"fas",iconName:"microphone-slash",icon:[640,512,[],"f131","M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]},faMicroscope:{prefix:"fas",iconName:"microscope",icon:[512,512,[],"f610","M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z"]},faMinus:{prefix:"fas",iconName:"minus",icon:[448,512,[],"f068","M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faMinusCircle:{prefix:"fas",iconName:"minus-circle",icon:[512,512,[],"f056","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"]},faMinusSquare:{prefix:"fas",iconName:"minus-square",icon:[448,512,[],"f146","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"]},faMitten:{prefix:"fas",iconName:"mitten",icon:[448,512,[],"f7b5","M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z"]},faMobile:{prefix:"fas",iconName:"mobile",icon:[320,512,[],"f10b","M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faMobileAlt:{prefix:"fas",iconName:"mobile-alt",icon:[320,512,[],"f3cd","M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z"]},faMoneyBill:{prefix:"fas",iconName:"money-bill",icon:[640,512,[],"f0d6","M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]},faMoneyBillAlt:{prefix:"fas",iconName:"money-bill-alt",icon:[640,512,[],"f3d1","M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]},faMoneyBillWave:{prefix:"fas",iconName:"money-bill-wave",icon:[640,512,[],"f53a","M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z"]},faMoneyBillWaveAlt:{prefix:"fas",iconName:"money-bill-wave-alt",icon:[640,512,[],"f53b","M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z"]},faMoneyCheck:{prefix:"fas",iconName:"money-check",icon:[640,512,[],"f53c","M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z"]},faMoneyCheckAlt:{prefix:"fas",iconName:"money-check-alt",icon:[640,512,[],"f53d","M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z"]},faMonument:{prefix:"fas",iconName:"monument",icon:[384,512,[],"f5a6","M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]},faMoon:{prefix:"fas",iconName:"moon",icon:[512,512,[],"f186","M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"]},faMortarPestle:{prefix:"fas",iconName:"mortar-pestle",icon:[512,512,[],"f5a7","M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faMosque:{prefix:"fas",iconName:"mosque",icon:[640,512,[],"f678","M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z"]},faMotorcycle:{prefix:"fas",iconName:"motorcycle",icon:[640,512,[],"f21c","M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z"]},faMountain:{prefix:"fas",iconName:"mountain",icon:[640,512,[],"f6fc","M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z"]},faMouse:{prefix:"fas",iconName:"mouse",icon:[384,512,[],"f8cc","M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z"]},faMousePointer:{prefix:"fas",iconName:"mouse-pointer",icon:[320,512,[],"f245","M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z"]},faMugHot:{prefix:"fas",iconName:"mug-hot",icon:[512,512,[],"f7b6","M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]},faMusic:{prefix:"fas",iconName:"music",icon:[512,512,[],"f001","M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z"]},faNetworkWired:{prefix:"fas",iconName:"network-wired",icon:[640,512,[],"f6ff","M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z"]},faNeuter:{prefix:"fas",iconName:"neuter",icon:[288,512,[],"f22c","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faNewspaper:{prefix:"fas",iconName:"newspaper",icon:[576,512,[],"f1ea","M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z"]},faNotEqual:{prefix:"fas",iconName:"not-equal",icon:[448,512,[],"f53e","M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z"]},faNotesMedical:{prefix:"fas",iconName:"notes-medical",icon:[384,512,[],"f481","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z"]},faObjectGroup:{prefix:"fas",iconName:"object-group",icon:[512,512,[],"f247","M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]},faObjectUngroup:{prefix:"fas",iconName:"object-ungroup",icon:[576,512,[],"f248","M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z"]},faOilCan:{prefix:"fas",iconName:"oil-can",icon:[640,512,[],"f613","M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z"]},faOm:{prefix:"fas",iconName:"om",icon:[512,512,[],"f679","M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z"]},faOtter:{prefix:"fas",iconName:"otter",icon:[640,512,[],"f700","M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z"]},faOutdent:{prefix:"fas",iconName:"outdent",icon:[448,512,[],"f03b","M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faPager:{prefix:"fas",iconName:"pager",icon:[512,512,[],"f815","M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z"]},faPaintBrush:{prefix:"fas",iconName:"paint-brush",icon:[512,512,[],"f1fc","M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"]},faPaintRoller:{prefix:"fas",iconName:"paint-roller",icon:[512,512,[],"f5aa","M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z"]},faPalette:{prefix:"fas",iconName:"palette",icon:[512,512,[],"f53f","M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faPallet:{prefix:"fas",iconName:"pallet",icon:[640,512,[],"f482","M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z"]},faPaperPlane:{prefix:"fas",iconName:"paper-plane",icon:[512,512,[],"f1d8","M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"]},faPaperclip:{prefix:"fas",iconName:"paperclip",icon:[448,512,[],"f0c6","M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"]},faParachuteBox:{prefix:"fas",iconName:"parachute-box",icon:[512,512,[],"f4cd","M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z"]},faParagraph:{prefix:"fas",iconName:"paragraph",icon:[448,512,[],"f1dd","M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z"]},faParking:{prefix:"fas",iconName:"parking",icon:[448,512,[],"f540","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z"]},faPassport:{prefix:"fas",iconName:"passport",icon:[448,512,[],"f5ab","M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z"]},faPastafarianism:{prefix:"fas",iconName:"pastafarianism",icon:[640,512,[],"f67b","M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z"]},faPaste:{prefix:"fas",iconName:"paste",icon:[448,512,[],"f0ea","M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"]},faPause:{prefix:"fas",iconName:"pause",icon:[448,512,[],"f04c","M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"]},faPauseCircle:{prefix:"fas",iconName:"pause-circle",icon:[512,512,[],"f28b","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z"]},faPaw:{prefix:"fas",iconName:"paw",icon:[512,512,[],"f1b0","M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z"]},faPeace:{prefix:"fas",iconName:"peace",icon:[496,512,[],"f67c","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z"]},faPen:{prefix:"fas",iconName:"pen",icon:[512,512,[],"f304","M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]},faPenAlt:{prefix:"fas",iconName:"pen-alt",icon:[512,512,[],"f305","M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z"]},faPenFancy:{prefix:"fas",iconName:"pen-fancy",icon:[512,512,[],"f5ac","M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z"]},faPenNib:{prefix:"fas",iconName:"pen-nib",icon:[512,512,[],"f5ad","M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z"]},faPenSquare:{prefix:"fas",iconName:"pen-square",icon:[448,512,[],"f14b","M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z"]},faPencilAlt:{prefix:"fas",iconName:"pencil-alt",icon:[512,512,[],"f303","M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]},faPencilRuler:{prefix:"fas",iconName:"pencil-ruler",icon:[512,512,[],"f5ae","M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z"]},faPeopleArrows:{prefix:"fas",iconName:"people-arrows",icon:[576,512,[],"e068","M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z"]},faPeopleCarry:{prefix:"fas",iconName:"people-carry",icon:[640,512,[],"f4ce","M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z"]},faPepperHot:{prefix:"fas",iconName:"pepper-hot",icon:[512,512,[],"f816","M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z"]},faPercent:{prefix:"fas",iconName:"percent",icon:[448,512,[],"f295","M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"]},faPercentage:{prefix:"fas",iconName:"percentage",icon:[384,512,[],"f541","M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z"]},faPersonBooth:{prefix:"fas",iconName:"person-booth",icon:[576,512,[],"f756","M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z"]},faPhone:{prefix:"fas",iconName:"phone",icon:[512,512,[],"f095","M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"]},faPhoneAlt:{prefix:"fas",iconName:"phone-alt",icon:[512,512,[],"f879","M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"]},faPhoneSlash:{prefix:"fas",iconName:"phone-slash",icon:[640,512,[],"f3dd","M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]},faPhoneSquare:{prefix:"fas",iconName:"phone-square",icon:[448,512,[],"f098","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z"]},faPhoneSquareAlt:{prefix:"fas",iconName:"phone-square-alt",icon:[448,512,[],"f87b","M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z"]},faPhoneVolume:{prefix:"fas",iconName:"phone-volume",icon:[384,512,[],"f2a0","M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z"]},faPhotoVideo:{prefix:"fas",iconName:"photo-video",icon:[640,512,[],"f87c","M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z"]},faPiggyBank:{prefix:"fas",iconName:"piggy-bank",icon:[576,512,[],"f4d3","M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z"]},faPills:{prefix:"fas",iconName:"pills",icon:[576,512,[],"f484","M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z"]},faPizzaSlice:{prefix:"fas",iconName:"pizza-slice",icon:[512,512,[],"f818","M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]},faPlaceOfWorship:{prefix:"fas",iconName:"place-of-worship",icon:[640,512,[],"f67f","M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z"]},faPlane:{prefix:"fas",iconName:"plane",icon:[576,512,[],"f072","M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z"]},faPlaneArrival:{prefix:"fas",iconName:"plane-arrival",icon:[640,512,[],"f5af","M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z"]},faPlaneDeparture:{prefix:"fas",iconName:"plane-departure",icon:[640,512,[],"f5b0","M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z"]},faPlaneSlash:{prefix:"fas",iconName:"plane-slash",icon:[640,512,[],"e069","M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z"]},faPlay:{prefix:"fas",iconName:"play",icon:[448,512,[],"f04b","M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"]},faPlayCircle:{prefix:"fas",iconName:"play-circle",icon:[512,512,[],"f144","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z"]},faPlug:{prefix:"fas",iconName:"plug",icon:[384,512,[],"f1e6","M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"]},faPlus:{prefix:"fas",iconName:"plus",icon:[448,512,[],"f067","M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faPlusCircle:{prefix:"fas",iconName:"plus-circle",icon:[512,512,[],"f055","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},faPlusSquare:{prefix:"fas",iconName:"plus-square",icon:[448,512,[],"f0fe","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},faPodcast:{prefix:"fas",iconName:"podcast",icon:[448,512,[],"f2ce","M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z"]},faPoll:{prefix:"fas",iconName:"poll",icon:[448,512,[],"f681","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z"]},faPollH:{prefix:"fas",iconName:"poll-h",icon:[448,512,[],"f682","M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z"]},faPoo:{prefix:"fas",iconName:"poo",icon:[512,512,[],"f2fe","M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faPooStorm:{prefix:"fas",iconName:"poo-storm",icon:[448,512,[],"f75a","M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z"]},faPoop:{prefix:"fas",iconName:"poop",icon:[512,512,[],"f619","M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z"]},faPortrait:{prefix:"fas",iconName:"portrait",icon:[384,512,[],"f3e0","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},faPoundSign:{prefix:"fas",iconName:"pound-sign",icon:[320,512,[],"f154","M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z"]},faPowerOff:{prefix:"fas",iconName:"power-off",icon:[512,512,[],"f011","M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"]},faPray:{prefix:"fas",iconName:"pray",icon:[384,512,[],"f683","M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z"]},faPrayingHands:{prefix:"fas",iconName:"praying-hands",icon:[640,512,[],"f684","M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z"]},faPrescription:{prefix:"fas",iconName:"prescription",icon:[384,512,[],"f5b1","M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z"]},faPrescriptionBottle:{prefix:"fas",iconName:"prescription-bottle",icon:[384,512,[],"f485","M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z"]},faPrescriptionBottleAlt:{prefix:"fas",iconName:"prescription-bottle-alt",icon:[384,512,[],"f486","M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z"]},faPrint:{prefix:"fas",iconName:"print",icon:[512,512,[],"f02f","M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faProcedures:{prefix:"fas",iconName:"procedures",icon:[640,512,[],"f487","M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]},faProjectDiagram:{prefix:"fas",iconName:"project-diagram",icon:[640,512,[],"f542","M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"]},faPumpMedical:{prefix:"fas",iconName:"pump-medical",icon:[384,512,[],"e06a","M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z"]},faPumpSoap:{prefix:"fas",iconName:"pump-soap",icon:[384,512,[],"e06b","M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z"]},faPuzzlePiece:{prefix:"fas",iconName:"puzzle-piece",icon:[576,512,[],"f12e","M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"]},faQrcode:{prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z"]},faQuestion:{prefix:"fas",iconName:"question",icon:[384,512,[],"f128","M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z"]},faQuestionCircle:{prefix:"fas",iconName:"question-circle",icon:[512,512,[],"f059","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]},faQuidditch:{prefix:"fas",iconName:"quidditch",icon:[640,512,[],"f458","M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z"]},faQuoteLeft:{prefix:"fas",iconName:"quote-left",icon:[512,512,[],"f10d","M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]},faQuoteRight:{prefix:"fas",iconName:"quote-right",icon:[512,512,[],"f10e","M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"]},faQuran:{prefix:"fas",iconName:"quran",icon:[448,512,[],"f687","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]},faRadiation:{prefix:"fas",iconName:"radiation",icon:[496,512,[],"f7b9","M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z"]},faRadiationAlt:{prefix:"fas",iconName:"radiation-alt",icon:[496,512,[],"f7ba","M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},faRainbow:{prefix:"fas",iconName:"rainbow",icon:[576,512,[],"f75b","M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z"]},faRandom:{prefix:"fas",iconName:"random",icon:[512,512,[],"f074","M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"]},faReceipt:{prefix:"fas",iconName:"receipt",icon:[384,512,[],"f543","M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z"]},faRecordVinyl:{prefix:"fas",iconName:"record-vinyl",icon:[512,512,[],"f8d9","M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z"]},faRecycle:{prefix:"fas",iconName:"recycle",icon:[512,512,[],"f1b8","M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"]},faRedo:{prefix:"fas",iconName:"redo",icon:[512,512,[],"f01e","M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]},faRedoAlt:{prefix:"fas",iconName:"redo-alt",icon:[512,512,[],"f2f9","M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z"]},faRegistered:{prefix:"fas",iconName:"registered",icon:[512,512,[],"f25d","M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z"]},faRemoveFormat:{prefix:"fas",iconName:"remove-format",icon:[640,512,[],"f87d","M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z"]},faReply:{prefix:"fas",iconName:"reply",icon:[512,512,[],"f3e5","M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"]},faReplyAll:{prefix:"fas",iconName:"reply-all",icon:[576,512,[],"f122","M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"]},faRepublican:{prefix:"fas",iconName:"republican",icon:[640,512,[],"f75e","M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z"]},faRestroom:{prefix:"fas",iconName:"restroom",icon:[640,512,[],"f7bd","M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z"]},faRetweet:{prefix:"fas",iconName:"retweet",icon:[640,512,[],"f079","M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z"]},faRibbon:{prefix:"fas",iconName:"ribbon",icon:[448,512,[],"f4d6","M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z"]},faRing:{prefix:"fas",iconName:"ring",icon:[512,512,[],"f70b","M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z"]},faRoad:{prefix:"fas",iconName:"road",icon:[576,512,[],"f018","M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z"]},faRobot:{prefix:"fas",iconName:"robot",icon:[640,512,[],"f544","M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"]},faRocket:{prefix:"fas",iconName:"rocket",icon:[512,512,[],"f135","M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"]},faRoute:{prefix:"fas",iconName:"route",icon:[512,512,[],"f4d7","M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faRss:{prefix:"fas",iconName:"rss",icon:[448,512,[],"f09e","M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"]},faRssSquare:{prefix:"fas",iconName:"rss-square",icon:[448,512,[],"f143","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"]},faRubleSign:{prefix:"fas",iconName:"ruble-sign",icon:[384,512,[],"f158","M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z"]},faRuler:{prefix:"fas",iconName:"ruler",icon:[640,512,[],"f545","M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z"]},faRulerCombined:{prefix:"fas",iconName:"ruler-combined",icon:[512,512,[],"f546","M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},faRulerHorizontal:{prefix:"fas",iconName:"ruler-horizontal",icon:[576,512,[],"f547","M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z"]},faRulerVertical:{prefix:"fas",iconName:"ruler-vertical",icon:[256,512,[],"f548","M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"]},faRunning:{prefix:"fas",iconName:"running",icon:[416,512,[],"f70c","M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"]},faRupeeSign:{prefix:"fas",iconName:"rupee-sign",icon:[320,512,[],"f156","M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z"]},faSadCry:{prefix:"fas",iconName:"sad-cry",icon:[496,512,[],"f5b3","M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z"]},faSadTear:{prefix:"fas",iconName:"sad-tear",icon:[496,512,[],"f5b4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z"]},faSatellite:{prefix:"fas",iconName:"satellite",icon:[512,512,[],"f7bf","M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z"]},faSatelliteDish:{prefix:"fas",iconName:"satellite-dish",icon:[512,512,[],"f7c0","M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z"]},faSave:{prefix:"fas",iconName:"save",icon:[448,512,[],"f0c7","M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"]},faSchool:{prefix:"fas",iconName:"school",icon:[640,512,[],"f549","M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z"]},faScrewdriver:{prefix:"fas",iconName:"screwdriver",icon:[512,512,[],"f54a","M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"]},faScroll:{prefix:"fas",iconName:"scroll",icon:[640,512,[],"f70e","M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z"]},faSdCard:{prefix:"fas",iconName:"sd-card",icon:[384,512,[],"f7c2","M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"]},faSearch:{prefix:"fas",iconName:"search",icon:[512,512,[],"f002","M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]},faSearchDollar:{prefix:"fas",iconName:"search-dollar",icon:[512,512,[],"f688","M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z"]},faSearchLocation:{prefix:"fas",iconName:"search-location",icon:[512,512,[],"f689","M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faSearchMinus:{prefix:"fas",iconName:"search-minus",icon:[512,512,[],"f010","M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]},faSearchPlus:{prefix:"fas",iconName:"search-plus",icon:[512,512,[],"f00e","M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]},faSeedling:{prefix:"fas",iconName:"seedling",icon:[512,512,[],"f4d8","M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"]},faServer:{prefix:"fas",iconName:"server",icon:[512,512,[],"f233","M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"]},faShapes:{prefix:"fas",iconName:"shapes",icon:[512,512,[],"f61f","M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z"]},faShare:{prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},faShareAlt:{prefix:"fas",iconName:"share-alt",icon:[448,512,[],"f1e0","M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"]},faShareAltSquare:{prefix:"fas",iconName:"share-alt-square",icon:[448,512,[],"f1e1","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z"]},faShareSquare:{prefix:"fas",iconName:"share-square",icon:[576,512,[],"f14d","M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z"]},faShekelSign:{prefix:"fas",iconName:"shekel-sign",icon:[448,512,[],"f20b","M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z"]},faShieldAlt:{prefix:"fas",iconName:"shield-alt",icon:[512,512,[],"f3ed","M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z"]},faShieldVirus:{prefix:"fas",iconName:"shield-virus",icon:[512,512,[],"e06c","M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z"]},faShip:{prefix:"fas",iconName:"ship",icon:[640,512,[],"f21a","M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z"]},faShippingFast:{prefix:"fas",iconName:"shipping-fast",icon:[640,512,[],"f48b","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},faShoePrints:{prefix:"fas",iconName:"shoe-prints",icon:[640,512,[],"f54b","M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z"]},faShoppingBag:{prefix:"fas",iconName:"shopping-bag",icon:[448,512,[],"f290","M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z"]},faShoppingBasket:{prefix:"fas",iconName:"shopping-basket",icon:[576,512,[],"f291","M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z"]},faShoppingCart:{prefix:"fas",iconName:"shopping-cart",icon:[576,512,[],"f07a","M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"]},faShower:{prefix:"fas",iconName:"shower",icon:[512,512,[],"f2cc","M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z"]},faShuttleVan:{prefix:"fas",iconName:"shuttle-van",icon:[640,512,[],"f5b6","M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z"]},faSign:{prefix:"fas",iconName:"sign",icon:[512,512,[],"f4d9","M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z"]},faSignInAlt:{prefix:"fas",iconName:"sign-in-alt",icon:[512,512,[],"f2f6","M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z"]},faSignLanguage:{prefix:"fas",iconName:"sign-language",icon:[448,512,[],"f2a7","M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z"]},faSignOutAlt:{prefix:"fas",iconName:"sign-out-alt",icon:[512,512,[],"f2f5","M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"]},faSignal:{prefix:"fas",iconName:"signal",icon:[640,512,[],"f012","M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]},faSignature:{prefix:"fas",iconName:"signature",icon:[640,512,[],"f5b7","M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z"]},faSimCard:{prefix:"fas",iconName:"sim-card",icon:[384,512,[],"f7c4","M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z"]},faSink:{prefix:"fas",iconName:"sink",icon:[512,512,[],"e06d","M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z"]},faSitemap:{prefix:"fas",iconName:"sitemap",icon:[640,512,[],"f0e8","M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},faSkating:{prefix:"fas",iconName:"skating",icon:[448,512,[],"f7c5","M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z"]},faSkiing:{prefix:"fas",iconName:"skiing",icon:[512,512,[],"f7c9","M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z"]},faSkiingNordic:{prefix:"fas",iconName:"skiing-nordic",icon:[576,512,[],"f7ca","M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z"]},faSkull:{prefix:"fas",iconName:"skull",icon:[512,512,[],"f54c","M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z"]},faSkullCrossbones:{prefix:"fas",iconName:"skull-crossbones",icon:[448,512,[],"f714","M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z"]},faSlash:{prefix:"fas",iconName:"slash",icon:[640,512,[],"f715","M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"]},faSleigh:{prefix:"fas",iconName:"sleigh",icon:[640,512,[],"f7cc","M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z"]},faSlidersH:{prefix:"fas",iconName:"sliders-h",icon:[512,512,[],"f1de","M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]},faSmile:{prefix:"fas",iconName:"smile",icon:[496,512,[],"f118","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"]},faSmileBeam:{prefix:"fas",iconName:"smile-beam",icon:[496,512,[],"f5b8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z"]},faSmileWink:{prefix:"fas",iconName:"smile-wink",icon:[496,512,[],"f4da","M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z"]},faSmog:{prefix:"fas",iconName:"smog",icon:[640,512,[],"f75f","M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z"]},faSmoking:{prefix:"fas",iconName:"smoking",icon:[640,512,[],"f48d","M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"]},faSmokingBan:{prefix:"fas",iconName:"smoking-ban",icon:[512,512,[],"f54d","M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z"]},faSms:{prefix:"fas",iconName:"sms",icon:[512,512,[],"f7cd","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z"]},faSnowboarding:{prefix:"fas",iconName:"snowboarding",icon:[512,512,[],"f7ce","M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z"]},faSnowflake:{prefix:"fas",iconName:"snowflake",icon:[448,512,[],"f2dc","M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"]},faSnowman:{prefix:"fas",iconName:"snowman",icon:[512,512,[],"f7d0","M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faSnowplow:{prefix:"fas",iconName:"snowplow",icon:[640,512,[],"f7d2","M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]},faSoap:{prefix:"fas",iconName:"soap",icon:[512,512,[],"e06e","M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z"]},faSocks:{prefix:"fas",iconName:"socks",icon:[512,512,[],"f696","M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z"]},faSolarPanel:{prefix:"fas",iconName:"solar-panel",icon:[640,512,[],"f5ba","M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z"]},faSort:{prefix:"fas",iconName:"sort",icon:[320,512,[],"f0dc","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]},faSortAlphaDown:{prefix:"fas",iconName:"sort-alpha-down",icon:[448,512,[],"f15d","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]},faSortAlphaDownAlt:{prefix:"fas",iconName:"sort-alpha-down-alt",icon:[448,512,[],"f881","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]},faSortAlphaUp:{prefix:"fas",iconName:"sort-alpha-up",icon:[448,512,[],"f15e","M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]},faSortAlphaUpAlt:{prefix:"fas",iconName:"sort-alpha-up-alt",icon:[448,512,[],"f882","M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]},faSortAmountDown:{prefix:"fas",iconName:"sort-amount-down",icon:[512,512,[],"f160","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faSortAmountDownAlt:{prefix:"fas",iconName:"sort-amount-down-alt",icon:[512,512,[],"f884","M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]},faSortAmountUp:{prefix:"fas",iconName:"sort-amount-up",icon:[512,512,[],"f161","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faSortAmountUpAlt:{prefix:"fas",iconName:"sort-amount-up-alt",icon:[512,512,[],"f885","M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"]},faSortDown:{prefix:"fas",iconName:"sort-down",icon:[320,512,[],"f0dd","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z"]},faSortNumericDown:{prefix:"fas",iconName:"sort-numeric-down",icon:[448,512,[],"f162","M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]},faSortNumericDownAlt:{prefix:"fas",iconName:"sort-numeric-down-alt",icon:[448,512,[],"f886","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]},faSortNumericUp:{prefix:"fas",iconName:"sort-numeric-up",icon:[448,512,[],"f163","M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z"]},faSortNumericUpAlt:{prefix:"fas",iconName:"sort-numeric-up-alt",icon:[448,512,[],"f887","M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]},faSortUp:{prefix:"fas",iconName:"sort-up",icon:[320,512,[],"f0de","M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"]},faSpa:{prefix:"fas",iconName:"spa",icon:[576,512,[],"f5bb","M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z"]},faSpaceShuttle:{prefix:"fas",iconName:"space-shuttle",icon:[640,512,[],"f197","M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z"]},faSpellCheck:{prefix:"fas",iconName:"spell-check",icon:[576,512,[],"f891","M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z"]},faSpider:{prefix:"fas",iconName:"spider",icon:[576,512,[],"f717","M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z"]},faSpinner:{prefix:"fas",iconName:"spinner",icon:[512,512,[],"f110","M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"]},faSplotch:{prefix:"fas",iconName:"splotch",icon:[512,512,[],"f5bc","M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z"]},faSprayCan:{prefix:"fas",iconName:"spray-can",icon:[512,512,[],"f5bd","M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]},faSquare:{prefix:"fas",iconName:"square",icon:[448,512,[],"f0c8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},faSquareFull:{prefix:"fas",iconName:"square-full",icon:[512,512,[],"f45c","M512 512H0V0h512v512z"]},faSquareRootAlt:{prefix:"fas",iconName:"square-root-alt",icon:[576,512,[],"f698","M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"]},faStamp:{prefix:"fas",iconName:"stamp",icon:[512,512,[],"f5bf","M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z"]},faStar:{prefix:"fas",iconName:"star",icon:[576,512,[],"f005","M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"]},faStarAndCrescent:{prefix:"fas",iconName:"star-and-crescent",icon:[512,512,[],"f699","M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z"]},faStarHalf:{prefix:"fas",iconName:"star-half",icon:[576,512,[],"f089","M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z"]},faStarHalfAlt:{prefix:"fas",iconName:"star-half-alt",icon:[536,512,[],"f5c0","M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z"]},faStarOfDavid:{prefix:"fas",iconName:"star-of-david",icon:[464,512,[],"f69a","M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z"]},faStarOfLife:{prefix:"fas",iconName:"star-of-life",icon:[480,512,[],"f621","M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z"]},faStepBackward:{prefix:"fas",iconName:"step-backward",icon:[448,512,[],"f048","M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]},faStepForward:{prefix:"fas",iconName:"step-forward",icon:[448,512,[],"f051","M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]},faStethoscope:{prefix:"fas",iconName:"stethoscope",icon:[512,512,[],"f0f1","M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faStickyNote:{prefix:"fas",iconName:"sticky-note",icon:[448,512,[],"f249","M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z"]},faStop:{prefix:"fas",iconName:"stop",icon:[448,512,[],"f04d","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},faStopCircle:{prefix:"fas",iconName:"stop-circle",icon:[512,512,[],"f28d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z"]},faStopwatch:{prefix:"fas",iconName:"stopwatch",icon:[448,512,[],"f2f2","M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]},faStopwatch20:{prefix:"fas",iconName:"stopwatch-20",icon:[448,512,[],"e06f","M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z"]},faStore:{prefix:"fas",iconName:"store",icon:[616,512,[],"f54e","M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z"]},faStoreAlt:{prefix:"fas",iconName:"store-alt",icon:[640,512,[],"f54f","M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z"]},faStoreAltSlash:{prefix:"fas",iconName:"store-alt-slash",icon:[640,512,[],"e070","M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z"]},faStoreSlash:{prefix:"fas",iconName:"store-slash",icon:[640,512,[],"e071","M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z"]},faStream:{prefix:"fas",iconName:"stream",icon:[512,512,[],"f550","M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"]},faStreetView:{prefix:"fas",iconName:"street-view",icon:[512,512,[],"f21d","M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"]},faStrikethrough:{prefix:"fas",iconName:"strikethrough",icon:[512,512,[],"f0cc","M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z"]},faStroopwafel:{prefix:"fas",iconName:"stroopwafel",icon:[512,512,[],"f551","M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z"]},faSubscript:{prefix:"fas",iconName:"subscript",icon:[512,512,[],"f12c","M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]},faSubway:{prefix:"fas",iconName:"subway",icon:[448,512,[],"f239","M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]},faSuitcase:{prefix:"fas",iconName:"suitcase",icon:[512,512,[],"f0f2","M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z"]},faSuitcaseRolling:{prefix:"fas",iconName:"suitcase-rolling",icon:[384,512,[],"f5c1","M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z"]},faSun:{prefix:"fas",iconName:"sun",icon:[512,512,[],"f185","M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"]},faSuperscript:{prefix:"fas",iconName:"superscript",icon:[512,512,[],"f12b","M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]},faSurprise:{prefix:"fas",iconName:"surprise",icon:[496,512,[],"f5c2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faSwatchbook:{prefix:"fas",iconName:"swatchbook",icon:[512,512,[],"f5c3","M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z"]},faSwimmer:{prefix:"fas",iconName:"swimmer",icon:[640,512,[],"f5c4","M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z"]},faSwimmingPool:{prefix:"fas",iconName:"swimming-pool",icon:[640,512,[],"f5c5","M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z"]},faSynagogue:{prefix:"fas",iconName:"synagogue",icon:[640,512,[],"f69b","M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z"]},faSync:{prefix:"fas",iconName:"sync",icon:[512,512,[],"f021","M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"]},faSyncAlt:{prefix:"fas",iconName:"sync-alt",icon:[512,512,[],"f2f1","M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"]},faSyringe:{prefix:"fas",iconName:"syringe",icon:[512,512,[],"f48e","M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z"]},faTable:{prefix:"fas",iconName:"table",icon:[512,512,[],"f0ce","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z"]},faTableTennis:{prefix:"fas",iconName:"table-tennis",icon:[512,512,[],"f45d","M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z"]},faTablet:{prefix:"fas",iconName:"tablet",icon:[448,512,[],"f10a","M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faTabletAlt:{prefix:"fas",iconName:"tablet-alt",icon:[448,512,[],"f3fa","M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z"]},faTablets:{prefix:"fas",iconName:"tablets",icon:[640,512,[],"f490","M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z"]},faTachometerAlt:{prefix:"fas",iconName:"tachometer-alt",icon:[576,512,[],"f3fd","M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faTag:{prefix:"fas",iconName:"tag",icon:[512,512,[],"f02b","M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]},faTags:{prefix:"fas",iconName:"tags",icon:[640,512,[],"f02c","M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z"]},faTape:{prefix:"fas",iconName:"tape",icon:[640,512,[],"f4db","M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"]},faTasks:{prefix:"fas",iconName:"tasks",icon:[512,512,[],"f0ae","M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faTaxi:{prefix:"fas",iconName:"taxi",icon:[512,512,[],"f1ba","M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faTeeth:{prefix:"fas",iconName:"teeth",icon:[640,512,[],"f62e","M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z"]},faTeethOpen:{prefix:"fas",iconName:"teeth-open",icon:[640,512,[],"f62f","M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z"]},faTemperatureHigh:{prefix:"fas",iconName:"temperature-high",icon:[512,512,[],"f769","M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]},faTemperatureLow:{prefix:"fas",iconName:"temperature-low",icon:[512,512,[],"f76b","M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]},faTenge:{prefix:"fas",iconName:"tenge",icon:[384,512,[],"f7d7","M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z"]},faTerminal:{prefix:"fas",iconName:"terminal",icon:[640,512,[],"f120","M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"]},faTextHeight:{prefix:"fas",iconName:"text-height",icon:[576,512,[],"f034","M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"]},faTextWidth:{prefix:"fas",iconName:"text-width",icon:[448,512,[],"f035","M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z"]},faTh:{prefix:"fas",iconName:"th",icon:[512,512,[],"f00a","M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"]},faThLarge:{prefix:"fas",iconName:"th-large",icon:[512,512,[],"f009","M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z"]},faThList:{prefix:"fas",iconName:"th-list",icon:[512,512,[],"f00b","M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"]},faTheaterMasks:{prefix:"fas",iconName:"theater-masks",icon:[640,512,[],"f630","M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z"]},faThermometer:{prefix:"fas",iconName:"thermometer",icon:[512,512,[],"f491","M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z"]},faThermometerEmpty:{prefix:"fas",iconName:"thermometer-empty",icon:[256,512,[],"f2cb","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThermometerFull:{prefix:"fas",iconName:"thermometer-full",icon:[256,512,[],"f2c7","M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z"]},faThermometerHalf:{prefix:"fas",iconName:"thermometer-half",icon:[256,512,[],"f2c9","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThermometerQuarter:{prefix:"fas",iconName:"thermometer-quarter",icon:[256,512,[],"f2ca","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThermometerThreeQuarters:{prefix:"fas",iconName:"thermometer-three-quarters",icon:[256,512,[],"f2c8","M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThumbsDown:{prefix:"fas",iconName:"thumbs-down",icon:[512,512,[],"f165","M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z"]},faThumbsUp:{prefix:"fas",iconName:"thumbs-up",icon:[512,512,[],"f164","M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z"]},faThumbtack:{prefix:"fas",iconName:"thumbtack",icon:[384,512,[],"f08d","M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z"]},faTicketAlt:{prefix:"fas",iconName:"ticket-alt",icon:[576,512,[],"f3ff","M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z"]},faTimes:{prefix:"fas",iconName:"times",icon:[352,512,[],"f00d","M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]},faTimesCircle:{prefix:"fas",iconName:"times-circle",icon:[512,512,[],"f057","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"]},faTint:{prefix:"fas",iconName:"tint",icon:[352,512,[],"f043","M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]},faTintSlash:{prefix:"fas",iconName:"tint-slash",icon:[640,512,[],"f5c7","M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z"]},faTired:{prefix:"fas",iconName:"tired",icon:[496,512,[],"f5c8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z"]},faToggleOff:{prefix:"fas",iconName:"toggle-off",icon:[576,512,[],"f204","M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z"]},faToggleOn:{prefix:"fas",iconName:"toggle-on",icon:[576,512,[],"f205","M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"]},faToilet:{prefix:"fas",iconName:"toilet",icon:[384,512,[],"f7d8","M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z"]},faToiletPaper:{prefix:"fas",iconName:"toilet-paper",icon:[576,512,[],"f71e","M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z"]},faToiletPaperSlash:{prefix:"fas",iconName:"toilet-paper-slash",icon:[640,512,[],"e072","M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z"]},faToolbox:{prefix:"fas",iconName:"toolbox",icon:[512,512,[],"f552","M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z"]},faTools:{prefix:"fas",iconName:"tools",icon:[512,512,[],"f7d9","M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"]},faTooth:{prefix:"fas",iconName:"tooth",icon:[448,512,[],"f5c9","M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z"]},faTorah:{prefix:"fas",iconName:"torah",icon:[640,512,[],"f6a0","M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z"]},faToriiGate:{prefix:"fas",iconName:"torii-gate",icon:[512,512,[],"f6a1","M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z"]},faTractor:{prefix:"fas",iconName:"tractor",icon:[640,512,[],"f722","M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z"]},faTrademark:{prefix:"fas",iconName:"trademark",icon:[640,512,[],"f25c","M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z"]},faTrafficLight:{prefix:"fas",iconName:"traffic-light",icon:[384,512,[],"f637","M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]},faTrailer:{prefix:"fas",iconName:"trailer",icon:[640,512,[],"e041","M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z"]},faTrain:{prefix:"fas",iconName:"train",icon:[448,512,[],"f238","M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z"]},faTram:{prefix:"fas",iconName:"tram",icon:[512,512,[],"f7da","M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},faTransgender:{prefix:"fas",iconName:"transgender",icon:[384,512,[],"f224","M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faTransgenderAlt:{prefix:"fas",iconName:"transgender-alt",icon:[480,512,[],"f225","M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faTrash:{prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]},faTrashAlt:{prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faTrashRestore:{prefix:"fas",iconName:"trash-restore",icon:[448,512,[],"f829","M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faTrashRestoreAlt:{prefix:"fas",iconName:"trash-restore-alt",icon:[448,512,[],"f82a","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faTree:{prefix:"fas",iconName:"tree",icon:[384,512,[],"f1bb","M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z"]},faTrophy:{prefix:"fas",iconName:"trophy",icon:[576,512,[],"f091","M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z"]},faTruck:{prefix:"fas",iconName:"truck",icon:[640,512,[],"f0d1","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},faTruckLoading:{prefix:"fas",iconName:"truck-loading",icon:[640,512,[],"f4de","M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},faTruckMonster:{prefix:"fas",iconName:"truck-monster",icon:[640,512,[],"f63b","M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]},faTruckMoving:{prefix:"fas",iconName:"truck-moving",icon:[640,512,[],"f4df","M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z"]},faTruckPickup:{prefix:"fas",iconName:"truck-pickup",icon:[640,512,[],"f63c","M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]},faTshirt:{prefix:"fas",iconName:"tshirt",icon:[640,512,[],"f553","M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z"]},faTty:{prefix:"fas",iconName:"tty",icon:[512,512,[],"f1e4","M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]},faTv:{prefix:"fas",iconName:"tv",icon:[640,512,[],"f26c","M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z"]},faUmbrella:{prefix:"fas",iconName:"umbrella",icon:[576,512,[],"f0e9","M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z"]},faUmbrellaBeach:{prefix:"fas",iconName:"umbrella-beach",icon:[640,512,[],"f5ca","M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z"]},faUnderline:{prefix:"fas",iconName:"underline",icon:[448,512,[],"f0cd","M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faUndo:{prefix:"fas",iconName:"undo",icon:[512,512,[],"f0e2","M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]},faUndoAlt:{prefix:"fas",iconName:"undo-alt",icon:[512,512,[],"f2ea","M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"]},faUniversalAccess:{prefix:"fas",iconName:"universal-access",icon:[512,512,[],"f29a","M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"]},faUniversity:{prefix:"fas",iconName:"university",icon:[512,512,[],"f19c","M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z"]},faUnlink:{prefix:"fas",iconName:"unlink",icon:[512,512,[],"f127","M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z"]},faUnlock:{prefix:"fas",iconName:"unlock",icon:[448,512,[],"f09c","M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]},faUnlockAlt:{prefix:"fas",iconName:"unlock-alt",icon:[448,512,[],"f13e","M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z"]},faUpload:{prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},faUser:{prefix:"fas",iconName:"user",icon:[448,512,[],"f007","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUserAlt:{prefix:"fas",iconName:"user-alt",icon:[512,512,[],"f406","M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z"]},faUserAltSlash:{prefix:"fas",iconName:"user-alt-slash",icon:[640,512,[],"f4fa","M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z"]},faUserAstronaut:{prefix:"fas",iconName:"user-astronaut",icon:[448,512,[],"f4fb","M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z"]},faUserCheck:{prefix:"fas",iconName:"user-check",icon:[640,512,[],"f4fc","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"]},faUserCircle:{prefix:"fas",iconName:"user-circle",icon:[496,512,[],"f2bd","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z"]},faUserClock:{prefix:"fas",iconName:"user-clock",icon:[640,512,[],"f4fd","M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z"]},faUserCog:{prefix:"fas",iconName:"user-cog",icon:[640,512,[],"f4fe","M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"]},faUserEdit:{prefix:"fas",iconName:"user-edit",icon:[640,512,[],"f4ff","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"]},faUserFriends:{prefix:"fas",iconName:"user-friends",icon:[640,512,[],"f500","M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"]},faUserGraduate:{prefix:"fas",iconName:"user-graduate",icon:[448,512,[],"f501","M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z"]},faUserInjured:{prefix:"fas",iconName:"user-injured",icon:[448,512,[],"f728","M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z"]},faUserLock:{prefix:"fas",iconName:"user-lock",icon:[640,512,[],"f502","M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z"]},faUserMd:{prefix:"fas",iconName:"user-md",icon:[448,512,[],"f0f0","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z"]},faUserMinus:{prefix:"fas",iconName:"user-minus",icon:[640,512,[],"f503","M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUserNinja:{prefix:"fas",iconName:"user-ninja",icon:[448,512,[],"f504","M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z"]},faUserNurse:{prefix:"fas",iconName:"user-nurse",icon:[448,512,[],"f82f","M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z"]},faUserPlus:{prefix:"fas",iconName:"user-plus",icon:[640,512,[],"f234","M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUserSecret:{prefix:"fas",iconName:"user-secret",icon:[448,512,[],"f21b","M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"]},faUserShield:{prefix:"fas",iconName:"user-shield",icon:[640,512,[],"f505","M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z"]},faUserSlash:{prefix:"fas",iconName:"user-slash",icon:[640,512,[],"f506","M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z"]},faUserTag:{prefix:"fas",iconName:"user-tag",icon:[640,512,[],"f507","M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z"]},faUserTie:{prefix:"fas",iconName:"user-tie",icon:[448,512,[],"f508","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z"]},faUserTimes:{prefix:"fas",iconName:"user-times",icon:[640,512,[],"f235","M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUsers:{prefix:"fas",iconName:"users",icon:[640,512,[],"f0c0","M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]},faUsersCog:{prefix:"fas",iconName:"users-cog",icon:[640,512,[],"f509","M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]},faUsersSlash:{prefix:"fas",iconName:"users-slash",icon:[640,512,[],"e073","M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z"]},faUtensilSpoon:{prefix:"fas",iconName:"utensil-spoon",icon:[512,512,[],"f2e5","M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z"]},faUtensils:{prefix:"fas",iconName:"utensils",icon:[416,512,[],"f2e7","M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z"]},faVectorSquare:{prefix:"fas",iconName:"vector-square",icon:[512,512,[],"f5cb","M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z"]},faVenus:{prefix:"fas",iconName:"venus",icon:[288,512,[],"f221","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]},faVenusDouble:{prefix:"fas",iconName:"venus-double",icon:[512,512,[],"f226","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z"]},faVenusMars:{prefix:"fas",iconName:"venus-mars",icon:[576,512,[],"f228","M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faVest:{prefix:"fas",iconName:"vest",icon:[448,512,[],"e085","M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z"]},faVestPatches:{prefix:"fas",iconName:"vest-patches",icon:[448,512,[],"e086","M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z"]},faVial:{prefix:"fas",iconName:"vial",icon:[480,512,[],"f492","M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"]},faVials:{prefix:"fas",iconName:"vials",icon:[640,512,[],"f493","M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z"]},faVideo:{prefix:"fas",iconName:"video",icon:[576,512,[],"f03d","M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"]},faVideoSlash:{prefix:"fas",iconName:"video-slash",icon:[640,512,[],"f4e2","M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z"]},faVihara:{prefix:"fas",iconName:"vihara",icon:[640,512,[],"f6a7","M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z"]},faVirus:{prefix:"fas",iconName:"virus",icon:[512,512,[],"e074","M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z"]},faVirusSlash:{prefix:"fas",iconName:"virus-slash",icon:[640,512,[],"e075","M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z"]},faViruses:{prefix:"fas",iconName:"viruses",icon:[640,512,[],"e076","M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z"]},faVoicemail:{prefix:"fas",iconName:"voicemail",icon:[640,512,[],"f897","M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z"]},faVolleyballBall:{prefix:"fas",iconName:"volleyball-ball",icon:[512,512,[],"f45f","M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z"]},faVolumeDown:{prefix:"fas",iconName:"volume-down",icon:[384,512,[],"f027","M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"]},faVolumeMute:{prefix:"fas",iconName:"volume-mute",icon:[512,512,[],"f6a9","M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"]},faVolumeOff:{prefix:"fas",iconName:"volume-off",icon:[256,512,[],"f026","M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z"]},faVolumeUp:{prefix:"fas",iconName:"volume-up",icon:[576,512,[],"f028","M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"]},faVoteYea:{prefix:"fas",iconName:"vote-yea",icon:[640,512,[],"f772","M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z"]},faVrCardboard:{prefix:"fas",iconName:"vr-cardboard",icon:[640,512,[],"f729","M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z"]},faWalking:{prefix:"fas",iconName:"walking",icon:[320,512,[],"f554","M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z"]},faWallet:{prefix:"fas",iconName:"wallet",icon:[512,512,[],"f555","M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faWarehouse:{prefix:"fas",iconName:"warehouse",icon:[640,512,[],"f494","M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z"]},faWater:{prefix:"fas",iconName:"water",icon:[576,512,[],"f773","M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z"]},faWaveSquare:{prefix:"fas",iconName:"wave-square",icon:[640,512,[],"f83e","M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z"]},faWeight:{prefix:"fas",iconName:"weight",icon:[512,512,[],"f496","M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z"]},faWeightHanging:{prefix:"fas",iconName:"weight-hanging",icon:[512,512,[],"f5cd","M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]},faWheelchair:{prefix:"fas",iconName:"wheelchair",icon:[512,512,[],"f193","M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z"]},faWifi:{prefix:"fas",iconName:"wifi",icon:[640,512,[],"f1eb","M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z"]},faWind:{prefix:"fas",iconName:"wind",icon:[512,512,[],"f72e","M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z"]},faWindowClose:{prefix:"fas",iconName:"window-close",icon:[512,512,[],"f410","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z"]},faWindowMaximize:{prefix:"fas",iconName:"window-maximize",icon:[512,512,[],"f2d0","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z"]},faWindowMinimize:{prefix:"fas",iconName:"window-minimize",icon:[512,512,[],"f2d1","M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z"]},faWindowRestore:{prefix:"fas",iconName:"window-restore",icon:[512,512,[],"f2d2","M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z"]},faWineBottle:{prefix:"fas",iconName:"wine-bottle",icon:[512,512,[],"f72f","M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z"]},faWineGlass:{prefix:"fas",iconName:"wine-glass",icon:[288,512,[],"f4e3","M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z"]},faWineGlassAlt:{prefix:"fas",iconName:"wine-glass-alt",icon:[288,512,[],"f5ce","M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z"]},faWonSign:{prefix:"fas",iconName:"won-sign",icon:[576,512,[],"f159","M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z"]},faWrench:{prefix:"fas",iconName:"wrench",icon:[512,512,[],"f0ad","M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faXRay:{prefix:"fas",iconName:"x-ray",icon:[640,512,[],"f497","M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z"]},faYenSign:{prefix:"fas",iconName:"yen-sign",icon:[384,512,[],"f157","M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z"]},faYinYang:{prefix:"fas",iconName:"yin-yang",icon:[496,512,[],"f6ad","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]}},s={fa500px:{prefix:"fab",iconName:"500px",icon:[448,512,[],"f26e","M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"]},faAccessibleIcon:{prefix:"fab",iconName:"accessible-icon",icon:[448,512,[],"f368","M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"]},faAccusoft:{prefix:"fab",iconName:"accusoft",icon:[640,512,[],"f369","M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"]},faAcquisitionsIncorporated:{prefix:"fab",iconName:"acquisitions-incorporated",icon:[384,512,[],"f6af","M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z"]},faAdn:{prefix:"fab",iconName:"adn",icon:[496,512,[],"f170","M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"]},faAdversal:{prefix:"fab",iconName:"adversal",icon:[512,512,[],"f36a","M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"]},faAffiliatetheme:{prefix:"fab",iconName:"affiliatetheme",icon:[512,512,[],"f36b","M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z"]},faAirbnb:{prefix:"fab",iconName:"airbnb",icon:[448,512,[],"f834","M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z"]},faAlgolia:{prefix:"fab",iconName:"algolia",icon:[448,512,[],"f36c","M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z"]},faAlipay:{prefix:"fab",iconName:"alipay",icon:[448,512,[],"f642","M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z"]},faAmazon:{prefix:"fab",iconName:"amazon",icon:[448,512,[],"f270","M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"]},faAmazonPay:{prefix:"fab",iconName:"amazon-pay",icon:[640,512,[],"f42c","M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"]},faAmilia:{prefix:"fab",iconName:"amilia",icon:[448,512,[],"f36d","M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"]},faAndroid:{prefix:"fab",iconName:"android",icon:[576,512,[],"f17b","M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55"]},faAngellist:{prefix:"fab",iconName:"angellist",icon:[448,512,[],"f209","M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"]},faAngrycreative:{prefix:"fab",iconName:"angrycreative",icon:[640,512,[],"f36e","M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"]},faAngular:{prefix:"fab",iconName:"angular",icon:[448,512,[],"f420","M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"]},faAppStore:{prefix:"fab",iconName:"app-store",icon:[512,512,[],"f36f","M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"]},faAppStoreIos:{prefix:"fab",iconName:"app-store-ios",icon:[448,512,[],"f370","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"]},faApper:{prefix:"fab",iconName:"apper",icon:[640,512,[],"f371","M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"]},faApple:{prefix:"fab",iconName:"apple",icon:[384,512,[],"f179","M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"]},faApplePay:{prefix:"fab",iconName:"apple-pay",icon:[640,512,[],"f415","M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z"]},faArtstation:{prefix:"fab",iconName:"artstation",icon:[512,512,[],"f77a","M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"]},faAsymmetrik:{prefix:"fab",iconName:"asymmetrik",icon:[576,512,[],"f372","M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"]},faAtlassian:{prefix:"fab",iconName:"atlassian",icon:[512,512,[],"f77b","M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z"]},faAudible:{prefix:"fab",iconName:"audible",icon:[640,512,[],"f373","M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"]},faAutoprefixer:{prefix:"fab",iconName:"autoprefixer",icon:[640,512,[],"f41c","M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"]},faAvianex:{prefix:"fab",iconName:"avianex",icon:[512,512,[],"f374","M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"]},faAviato:{prefix:"fab",iconName:"aviato",icon:[640,512,[],"f421","M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"]},faAws:{prefix:"fab",iconName:"aws",icon:[640,512,[],"f375","M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"]},faBandcamp:{prefix:"fab",iconName:"bandcamp",icon:[512,512,[],"f2d5","M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z"]},faBattleNet:{prefix:"fab",iconName:"battle-net",icon:[512,512,[],"f835","M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8"]},faBehance:{prefix:"fab",iconName:"behance",icon:[576,512,[],"f1b4","M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"]},faBehanceSquare:{prefix:"fab",iconName:"behance-square",icon:[448,512,[],"f1b5","M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z"]},faBimobject:{prefix:"fab",iconName:"bimobject",icon:[448,512,[],"f378","M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"]},faBitbucket:{prefix:"fab",iconName:"bitbucket",icon:[512,512,[],"f171","M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"]},faBitcoin:{prefix:"fab",iconName:"bitcoin",icon:[512,512,[],"f379","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"]},faBity:{prefix:"fab",iconName:"bity",icon:[496,512,[],"f37a","M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"]},faBlackTie:{prefix:"fab",iconName:"black-tie",icon:[448,512,[],"f27e","M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"]},faBlackberry:{prefix:"fab",iconName:"blackberry",icon:[512,512,[],"f37b","M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z"]},faBlogger:{prefix:"fab",iconName:"blogger",icon:[448,512,[],"f37c","M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"]},faBloggerB:{prefix:"fab",iconName:"blogger-b",icon:[448,512,[],"f37d","M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"]},faBluetooth:{prefix:"fab",iconName:"bluetooth",icon:[448,512,[],"f293","M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"]},faBluetoothB:{prefix:"fab",iconName:"bluetooth-b",icon:[320,512,[],"f294","M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"]},faBootstrap:{prefix:"fab",iconName:"bootstrap",icon:[576,512,[],"f836","M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z"]},faBtc:{prefix:"fab",iconName:"btc",icon:[384,512,[],"f15a","M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z"]},faBuffer:{prefix:"fab",iconName:"buffer",icon:[448,512,[],"f837","M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"]},faBuromobelexperte:{prefix:"fab",iconName:"buromobelexperte",icon:[448,512,[],"f37f","M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"]},faBuyNLarge:{prefix:"fab",iconName:"buy-n-large",icon:[576,512,[],"f8a6","M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z"]},faBuysellads:{prefix:"fab",iconName:"buysellads",icon:[448,512,[],"f20d","M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"]},faCanadianMapleLeaf:{prefix:"fab",iconName:"canadian-maple-leaf",icon:[512,512,[],"f785","M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"]},faCcAmazonPay:{prefix:"fab",iconName:"cc-amazon-pay",icon:[576,512,[],"f42d","M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"]},faCcAmex:{prefix:"fab",iconName:"cc-amex",icon:[576,512,[],"f1f3","M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"]},faCcApplePay:{prefix:"fab",iconName:"cc-apple-pay",icon:[576,512,[],"f416","M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"]},faCcDinersClub:{prefix:"fab",iconName:"cc-diners-club",icon:[576,512,[],"f24c","M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"]},faCcDiscover:{prefix:"fab",iconName:"cc-discover",icon:[576,512,[],"f1f2","M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"]},faCcJcb:{prefix:"fab",iconName:"cc-jcb",icon:[576,512,[],"f24b","M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"]},faCcMastercard:{prefix:"fab",iconName:"cc-mastercard",icon:[576,512,[],"f1f1","M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"]},faCcPaypal:{prefix:"fab",iconName:"cc-paypal",icon:[576,512,[],"f1f4","M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"]},faCcStripe:{prefix:"fab",iconName:"cc-stripe",icon:[576,512,[],"f1f5","M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"]},faCcVisa:{prefix:"fab",iconName:"cc-visa",icon:[576,512,[],"f1f0","M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"]},faCentercode:{prefix:"fab",iconName:"centercode",icon:[512,512,[],"f380","M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"]},faCentos:{prefix:"fab",iconName:"centos",icon:[448,512,[],"f789","M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"]},faChrome:{prefix:"fab",iconName:"chrome",icon:[496,512,[],"f268","M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z"]},faChromecast:{prefix:"fab",iconName:"chromecast",icon:[512,512,[],"f838","M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z"]},faCloudflare:{prefix:"fab",iconName:"cloudflare",icon:[640,512,[],"e07d","M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z"]},faCloudscale:{prefix:"fab",iconName:"cloudscale",icon:[448,512,[],"f383","M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"]},faCloudsmith:{prefix:"fab",iconName:"cloudsmith",icon:[332,512,[],"f384","M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z"]},faCloudversify:{prefix:"fab",iconName:"cloudversify",icon:[616,512,[],"f385","M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"]},faCodepen:{prefix:"fab",iconName:"codepen",icon:[512,512,[],"f1cb","M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"]},faCodiepie:{prefix:"fab",iconName:"codiepie",icon:[472,512,[],"f284","M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"]},faConfluence:{prefix:"fab",iconName:"confluence",icon:[512,512,[],"f78d","M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"]},faConnectdevelop:{prefix:"fab",iconName:"connectdevelop",icon:[576,512,[],"f20e","M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z"]},faContao:{prefix:"fab",iconName:"contao",icon:[512,512,[],"f26d","M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"]},faCottonBureau:{prefix:"fab",iconName:"cotton-bureau",icon:[512,512,[],"f89e","M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"]},faCpanel:{prefix:"fab",iconName:"cpanel",icon:[640,512,[],"f388","M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"]},faCreativeCommons:{prefix:"fab",iconName:"creative-commons",icon:[496,512,[],"f25e","M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"]},faCreativeCommonsBy:{prefix:"fab",iconName:"creative-commons-by",icon:[496,512,[],"f4e7","M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"]},faCreativeCommonsNc:{prefix:"fab",iconName:"creative-commons-nc",icon:[496,512,[],"f4e8","M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"]},faCreativeCommonsNcEu:{prefix:"fab",iconName:"creative-commons-nc-eu",icon:[496,512,[],"f4e9","M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"]},faCreativeCommonsNcJp:{prefix:"fab",iconName:"creative-commons-nc-jp",icon:[496,512,[],"f4ea","M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"]},faCreativeCommonsNd:{prefix:"fab",iconName:"creative-commons-nd",icon:[496,512,[],"f4eb","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"]},faCreativeCommonsPd:{prefix:"fab",iconName:"creative-commons-pd",icon:[496,512,[],"f4ec","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"]},faCreativeCommonsPdAlt:{prefix:"fab",iconName:"creative-commons-pd-alt",icon:[496,512,[],"f4ed","M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z"]},faCreativeCommonsRemix:{prefix:"fab",iconName:"creative-commons-remix",icon:[496,512,[],"f4ee","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"]},faCreativeCommonsSa:{prefix:"fab",iconName:"creative-commons-sa",icon:[496,512,[],"f4ef","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"]},faCreativeCommonsSampling:{prefix:"fab",iconName:"creative-commons-sampling",icon:[496,512,[],"f4f0","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"]},faCreativeCommonsSamplingPlus:{prefix:"fab",iconName:"creative-commons-sampling-plus",icon:[496,512,[],"f4f1","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"]},faCreativeCommonsShare:{prefix:"fab",iconName:"creative-commons-share",icon:[496,512,[],"f4f2","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"]},faCreativeCommonsZero:{prefix:"fab",iconName:"creative-commons-zero",icon:[496,512,[],"f4f3","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"]},faCriticalRole:{prefix:"fab",iconName:"critical-role",icon:[448,512,[],"f6c9","M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"]},faCss3:{prefix:"fab",iconName:"css3",icon:[512,512,[],"f13c","M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"]},faCss3Alt:{prefix:"fab",iconName:"css3-alt",icon:[384,512,[],"f38b","M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"]},faCuttlefish:{prefix:"fab",iconName:"cuttlefish",icon:[440,512,[],"f38c","M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"]},faDAndD:{prefix:"fab",iconName:"d-and-d",icon:[576,512,[],"f38d","M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"]},faDAndDBeyond:{prefix:"fab",iconName:"d-and-d-beyond",icon:[640,512,[],"f6ca","M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"]},faDailymotion:{prefix:"fab",iconName:"dailymotion",icon:[448,512,[],"e052","M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z"]},faDashcube:{prefix:"fab",iconName:"dashcube",icon:[448,512,[],"f210","M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"]},faDeezer:{prefix:"fab",iconName:"deezer",icon:[576,512,[],"e077","M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z"]},faDelicious:{prefix:"fab",iconName:"delicious",icon:[448,512,[],"f1a5","M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"]},faDeploydog:{prefix:"fab",iconName:"deploydog",icon:[512,512,[],"f38e","M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"]},faDeskpro:{prefix:"fab",iconName:"deskpro",icon:[480,512,[],"f38f","M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"]},faDev:{prefix:"fab",iconName:"dev",icon:[448,512,[],"f6cc","M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"]},faDeviantart:{prefix:"fab",iconName:"deviantart",icon:[320,512,[],"f1bd","M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"]},faDhl:{prefix:"fab",iconName:"dhl",icon:[640,512,[],"f790","M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"]},faDiaspora:{prefix:"fab",iconName:"diaspora",icon:[512,512,[],"f791","M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"]},faDigg:{prefix:"fab",iconName:"digg",icon:[512,512,[],"f1a6","M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"]},faDigitalOcean:{prefix:"fab",iconName:"digital-ocean",icon:[512,512,[],"f391","M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"]},faDiscord:{prefix:"fab",iconName:"discord",icon:[640,512,[],"f392","M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"]},faDiscourse:{prefix:"fab",iconName:"discourse",icon:[448,512,[],"f393","M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"]},faDochub:{prefix:"fab",iconName:"dochub",icon:[416,512,[],"f394","M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"]},faDocker:{prefix:"fab",iconName:"docker",icon:[640,512,[],"f395","M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"]},faDraft2digital:{prefix:"fab",iconName:"draft2digital",icon:[480,512,[],"f396","M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"]},faDribbble:{prefix:"fab",iconName:"dribbble",icon:[512,512,[],"f17d","M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"]},faDribbbleSquare:{prefix:"fab",iconName:"dribbble-square",icon:[448,512,[],"f397","M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z"]},faDropbox:{prefix:"fab",iconName:"dropbox",icon:[528,512,[],"f16b","M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"]},faDrupal:{prefix:"fab",iconName:"drupal",icon:[448,512,[],"f1a9","M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z"]},faDyalog:{prefix:"fab",iconName:"dyalog",icon:[416,512,[],"f399","M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"]},faEarlybirds:{prefix:"fab",iconName:"earlybirds",icon:[480,512,[],"f39a","M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"]},faEbay:{prefix:"fab",iconName:"ebay",icon:[640,512,[],"f4f4","M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"]},faEdge:{prefix:"fab",iconName:"edge",icon:[512,512,[],"f282","M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z"]},faEdgeLegacy:{prefix:"fab",iconName:"edge-legacy",icon:[512,512,[],"e078","M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z"]},faElementor:{prefix:"fab",iconName:"elementor",icon:[448,512,[],"f430","M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z"]},faEllo:{prefix:"fab",iconName:"ello",icon:[496,512,[],"f5f1","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"]},faEmber:{prefix:"fab",iconName:"ember",icon:[640,512,[],"f423","M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"]},faEmpire:{prefix:"fab",iconName:"empire",icon:[496,512,[],"f1d1","M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"]},faEnvira:{prefix:"fab",iconName:"envira",icon:[448,512,[],"f299","M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"]},faErlang:{prefix:"fab",iconName:"erlang",icon:[640,512,[],"f39d","M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"]},faEthereum:{prefix:"fab",iconName:"ethereum",icon:[320,512,[],"f42e","M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"]},faEtsy:{prefix:"fab",iconName:"etsy",icon:[384,512,[],"f2d7","M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z"]},faEvernote:{prefix:"fab",iconName:"evernote",icon:[384,512,[],"f839","M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"]},faExpeditedssl:{prefix:"fab",iconName:"expeditedssl",icon:[496,512,[],"f23e","M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"]},faFacebook:{prefix:"fab",iconName:"facebook",icon:[512,512,[],"f09a","M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"]},faFacebookF:{prefix:"fab",iconName:"facebook-f",icon:[320,512,[],"f39e","M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"]},faFacebookMessenger:{prefix:"fab",iconName:"facebook-messenger",icon:[512,512,[],"f39f","M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"]},faFacebookSquare:{prefix:"fab",iconName:"facebook-square",icon:[448,512,[],"f082","M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z"]},faFantasyFlightGames:{prefix:"fab",iconName:"fantasy-flight-games",icon:[512,512,[],"f6dc","M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"]},faFedex:{prefix:"fab",iconName:"fedex",icon:[640,512,[],"f797","M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"]},faFedora:{prefix:"fab",iconName:"fedora",icon:[448,512,[],"f798","M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z"]},faFigma:{prefix:"fab",iconName:"figma",icon:[384,512,[],"f799","M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z"]},faFirefox:{prefix:"fab",iconName:"firefox",icon:[512,512,[],"f269","M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z"]},faFirefoxBrowser:{prefix:"fab",iconName:"firefox-browser",icon:[512,512,[],"e007","M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z"]},faFirstOrder:{prefix:"fab",iconName:"first-order",icon:[448,512,[],"f2b0","M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"]},faFirstOrderAlt:{prefix:"fab",iconName:"first-order-alt",icon:[496,512,[],"f50a","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"]},faFirstdraft:{prefix:"fab",iconName:"firstdraft",icon:[384,512,[],"f3a1","M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"]},faFlickr:{prefix:"fab",iconName:"flickr",icon:[448,512,[],"f16e","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"]},faFlipboard:{prefix:"fab",iconName:"flipboard",icon:[448,512,[],"f44d","M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"]},faFly:{prefix:"fab",iconName:"fly",icon:[384,512,[],"f417","M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"]},faFontAwesome:{prefix:"fab",iconName:"font-awesome",icon:[448,512,[],"f2b4","M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32ZM336 312c-31.6 11.2-41.2 16-59.8 16-31.4 0-43.2-16-74.6-16a80 80 0 0 0-25.6 4V284a85.9 85.9 0 0 1 25.6-4c31.2 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.2-16-74.6-16-25.4 0-37.4 10.4-57.6 14.4V352a16 16 0 0 1-32 0V160a16 16 0 0 1 32 0v6.4c20.2-4 32.2-14.4 57.6-14.4 31.2 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16Z"]},faFontAwesomeAlt:{prefix:"fab",iconName:"font-awesome-alt",icon:[448,512,[],"f35c","M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32Zm16 400a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16V80A16 16 0 0 1 48 64H400a16 16 0 0 1 16 16ZM201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160a16 16 0 0 0-32 0V352a16 16 0 0 0 32 0V198.4c20.2-4 32.2-14.4 57.6-14.4 31.4 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.4-16-74.6-16a85.9 85.9 0 0 0-25.6 4v32a80 80 0 0 1 25.6-4c31.4 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152Z"]},faFontAwesomeFlag:{prefix:"fab",iconName:"font-awesome-flag",icon:[448,512,[],"f425","M448 48V384c-63 23-82 32-119 32-63 0-87-32-150-32-20 0-36 4-51 8V328c15-4 31-8 51-8 63 0 87 32 150 32 20 0 35-3 55-9V135c-20 6-35 9-55 9-63 0-87-32-150-32-51 0-75 21-115 29V448a31.6 31.6 0 0 1-32 32A31.6 31.6 0 0 1 0 448V64A31.6 31.6 0 0 1 32 32 31.6 31.6 0 0 1 64 64V77c40-8 64-29 115-29 63 0 87 32 150 32C366 80 385 71 448 48Z"]},faFontAwesomeLogoFull:{prefix:"fab",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M1209.7 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C1311.7 200.4 1267.5 156.5 1209.7 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C1261.1 281.8 1244.8 309.2 1209.7 309.2Zm962.1-136.1c-4.4-10.9-12.3-16.5-23.5-16.5s-19.1 5.6-23.5 16.5l-59.4 145.8c-7.2 17.7 2.8 27.4 4.4 29a24.6 24.6 0 0 0 17.5 6.8c10.8 0 18.7-6 23.1-18.1l4-10.1h67.7l4 10.1c4.8 12.1 12.3 18.1 23.1 18.1a24.6 24.6 0 0 0 17.5-6.8c10-10.1 6.8-22.6 4.4-29Zm-43 113.6 19.1-56 19.1 56Zm-574.5-130.1c-14.3 0-24.7 10.9-24.7 25.4v76.5l-68.5-85.8c-4.4-5.6-11.6-16.1-25.5-16.1-19.1 0-24.3 17.7-24.3 25.4V329.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V252.8l68.9 86.2c4.8 5.6 11.6 16.1 25.5 16.1 19.1 0 23.9-17.3 23.9-25.4V181.9C1579 167.4 1568.6 156.5 1554.3 156.5Zm-554.1 1.6H916.5c-19.9 0-25.1 17.3-25.1 25.4V328.1c0 19.7 16.7 25.4 24.7 25.4 8 0 24.7-5.2 24.7-25.4V285h44.6c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.1-22.7-22.1H940.8V203.6h59.4c12.8 0 22.7-9.3 22.7-22.6C1022.9 163 1007.3 158.1 1000.2 158.1Zm815.1 0H1691.7c-7.2 0-22.7 4.4-22.7 22.2 0 13.3 10 22.6 22.7 22.6h37V327.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V202.8h37c12.7 0 22.7-9.3 22.7-22.6C1837.9 163 1822.4 158.1 1815.2 158.1Zm1789.5-1.6c-9.6 0-17.5 6-25.1 18.1l-46.6 76.1L3486.4 174.6q-10.8-18.1-25.1-18.1c-19.5 0-24.7 18.1-24.7 25.8V329.7c0 14.1 10.4 25.4 24.7 25.4s24.7-10.9 24.7-25.4V262.8L3510.7 302.7c6.4 10.1 13.9 15.3 22.3 15.3 8.8 0 15.9-5.2 22.3-15.3l24.7-39.9v66.9c0 14.1 10.3 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V182.3C3629.4 174.2 3624.6 156.5 3604.7 156.5Zm248.6 149.8h-65.7V272.9h39.4c11.9 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.6-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.8 0 22.7-9.3 22.7-22.6C3876 311.2 3860.5 306.3 3853.3 306.3ZM3235 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C3337 200.4 3292.8 156.5 3235 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C3286.8 281.8 3270.1 309.2 3235 309.2ZM2550.2 156.5c-11.2 0-19.1 5.6-23.1 16.5l-34.3 94.7-31.5-92.2c-4.4-12.5-12.3-18.9-24.3-18.9-11.9 0-19.9 6.4-24.3 18.9l-31.5 92.2-34.3-95.5q-5.4-15.7-22.7-15.7c-6.8 0-12.3 2.4-17.5 7.3-5.2 5.2-10.8 14.5-4.8 28.6l55.8 145.8c4 11.3 11.6 16.9 23.1 16.9q16.7 0 22.7-16.9l33.5-91.8 33.5 91.8q6 16.9 22.7 16.9c11.2 0 19.1-5.6 23.1-16.9l55.8-145.8c3.6-9.3 4.4-19.3-4.8-28.6A23 23 0 0 0 2550.2 156.5Zm444.2 81-21.9-9.3c-11.9-4.8-16.3-8.5-16.3-15.7q0-12.1 16.7-12.1c12.7 0 19.5 7.7 24.3 10.9 7.2 5.2 18.3 6.8 27.9-2 10.8-10.5 6.8-23.8 1.2-30.6-12.3-14.9-30.3-22.2-53.8-22.2-19.1 0-35.1 5.2-47.4 15.7-12.3 10.5-18.7 24.2-18.7 41.1 0 24.2 15.9 43.5 47.8 57.6l19.5 8.9c15.9 6.8 19.1 9.7 19.1 17.7 0 9.3-6.4 14.1-19.5 14.1-19.1 0-34.7-14.9-36.3-16.1-10.8-7.3-21.5-2-26.3 2.8-6.8 6.4-12.7 20.9 3.2 36.2 6.8 6.4 15.5 11.7 26.7 15.3a94.6 94.6 0 0 0 32.7 5.6c19.9 0 36.7-5.2 49.8-16.1 13.1-10.9 19.5-25.4 19.5-43.5q0-20.5-12-33.8C3022.7 253.2 3010.7 244.3 2994.4 237.5Zm-206.4 68.9h-65.7V272.9h39.4c12 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.7 0 22.7-9.3 22.7-22.6C2810.8 311.2 2795.2 306.3 2788 306.3ZM178.3 49.1c-50.5 0-74.4 20.7-114.6 28.7V65A31.8 31.8 0 1 0 0 65V447a31.8 31.8 0 0 0 63.7 0V141.4c40.2-8 64.1-28.7 114.6-28.7 62.5 0 86 31.8 148.4 31.8 20.3 0 35.4-2.8 55.3-9.2v191c-19.9 6.4-35 9.2-55.3 9.2-62.5 0-86.4-31.8-148.4-31.8-20.3 0-36.2 3.6-50.9 8V375.4a159.1 159.1 0 0 1 50.9-8c62.5 0 86 31.8 148.4 31.8 37 0 56.1-9.6 119-31.8V49.1C382.8 71.4 363.7 80.9 326.7 80.9 264.2 80.9 240.4 49.1 178.3 49.1Z"]},faFonticons:{prefix:"fab",iconName:"fonticons",icon:[448,512,[],"f280","M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"]},faFonticonsFi:{prefix:"fab",iconName:"fonticons-fi",icon:[384,512,[],"f3a2","M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"]},faFortAwesome:{prefix:"fab",iconName:"fort-awesome",icon:[512,512,[],"f286","M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"]},faFortAwesomeAlt:{prefix:"fab",iconName:"fort-awesome-alt",icon:[512,512,[],"f3a3","M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"]},faForumbee:{prefix:"fab",iconName:"forumbee",icon:[448,512,[],"f211","M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"]},faFoursquare:{prefix:"fab",iconName:"foursquare",icon:[368,512,[],"f180","M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"]},faFreeCodeCamp:{prefix:"fab",iconName:"free-code-camp",icon:[576,512,[],"f2c5","M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z"]},faFreebsd:{prefix:"fab",iconName:"freebsd",icon:[448,512,[],"f3a4","M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"]},faFulcrum:{prefix:"fab",iconName:"fulcrum",icon:[320,512,[],"f50b","M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z"]},faGalacticRepublic:{prefix:"fab",iconName:"galactic-republic",icon:[496,512,[],"f50c","M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z"]},faGalacticSenate:{prefix:"fab",iconName:"galactic-senate",icon:[512,512,[],"f50d","M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"]},faGetPocket:{prefix:"fab",iconName:"get-pocket",icon:[448,512,[],"f265","M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"]},faGg:{prefix:"fab",iconName:"gg",icon:[512,512,[],"f260","M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"]},faGgCircle:{prefix:"fab",iconName:"gg-circle",icon:[512,512,[],"f261","M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"]},faGit:{prefix:"fab",iconName:"git",icon:[512,512,[],"f1d3","M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"]},faGitAlt:{prefix:"fab",iconName:"git-alt",icon:[448,512,[],"f841","M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"]},faGitSquare:{prefix:"fab",iconName:"git-square",icon:[448,512,[],"f1d2","M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"]},faGithub:{prefix:"fab",iconName:"github",icon:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]},faGithubAlt:{prefix:"fab",iconName:"github-alt",icon:[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"]},faGithubSquare:{prefix:"fab",iconName:"github-square",icon:[448,512,[],"f092","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z"]},faGitkraken:{prefix:"fab",iconName:"gitkraken",icon:[592,512,[],"f3a6","M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"]},faGitlab:{prefix:"fab",iconName:"gitlab",icon:[512,512,[],"f296","M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z"]},faGitter:{prefix:"fab",iconName:"gitter",icon:[384,512,[],"f426","M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"]},faGlide:{prefix:"fab",iconName:"glide",icon:[448,512,[],"f2a5","M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z"]},faGlideG:{prefix:"fab",iconName:"glide-g",icon:[448,512,[],"f2a6","M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"]},faGofore:{prefix:"fab",iconName:"gofore",icon:[400,512,[],"f3a7","M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"]},faGoodreads:{prefix:"fab",iconName:"goodreads",icon:[448,512,[],"f3a8","M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"]},faGoodreadsG:{prefix:"fab",iconName:"goodreads-g",icon:[384,512,[],"f3a9","M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"]},faGoogle:{prefix:"fab",iconName:"google",icon:[488,512,[],"f1a0","M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"]},faGoogleDrive:{prefix:"fab",iconName:"google-drive",icon:[512,512,[],"f3aa","M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"]},faGooglePay:{prefix:"fab",iconName:"google-pay",icon:[640,512,[],"e079","M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z"]},faGooglePlay:{prefix:"fab",iconName:"google-play",icon:[512,512,[],"f3ab","M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"]},faGooglePlus:{prefix:"fab",iconName:"google-plus",icon:[512,512,[],"f2b3","M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z"]},faGooglePlusG:{prefix:"fab",iconName:"google-plus-g",icon:[640,512,[],"f0d5","M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z"]},faGooglePlusSquare:{prefix:"fab",iconName:"google-plus-square",icon:[448,512,[],"f0d4","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z"]},faGoogleWallet:{prefix:"fab",iconName:"google-wallet",icon:[448,512,[],"f1ee","M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"]},faGratipay:{prefix:"fab",iconName:"gratipay",icon:[496,512,[],"f184","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"]},faGrav:{prefix:"fab",iconName:"grav",icon:[512,512,[],"f2d6","M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"]},faGripfire:{prefix:"fab",iconName:"gripfire",icon:[384,512,[],"f3ac","M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"]},faGrunt:{prefix:"fab",iconName:"grunt",icon:[384,512,[],"f3ad","M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"]},faGuilded:{prefix:"fab",iconName:"guilded",icon:[448,512,[],"e07e","M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z"]},faGulp:{prefix:"fab",iconName:"gulp",icon:[256,512,[],"f3ae","M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z"]},faHackerNews:{prefix:"fab",iconName:"hacker-news",icon:[448,512,[],"f1d4","M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"]},faHackerNewsSquare:{prefix:"fab",iconName:"hacker-news-square",icon:[448,512,[],"f3af","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"]},faHackerrank:{prefix:"fab",iconName:"hackerrank",icon:[512,512,[],"f5f7","M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"]},faHips:{prefix:"fab",iconName:"hips",icon:[640,512,[],"f452","M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"]},faHireAHelper:{prefix:"fab",iconName:"hire-a-helper",icon:[512,512,[],"f3b0","M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"]},faHive:{prefix:"fab",iconName:"hive",icon:[512,512,[],"e07f","M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z"]},faHooli:{prefix:"fab",iconName:"hooli",icon:[640,512,[],"f427","M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"]},faHornbill:{prefix:"fab",iconName:"hornbill",icon:[512,512,[],"f592","M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"]},faHotjar:{prefix:"fab",iconName:"hotjar",icon:[448,512,[],"f3b1","M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z"]},faHouzz:{prefix:"fab",iconName:"houzz",icon:[448,512,[],"f27c","M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"]},faHtml5:{prefix:"fab",iconName:"html5",icon:[384,512,[],"f13b","M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"]},faHubspot:{prefix:"fab",iconName:"hubspot",icon:[512,512,[],"f3b2","M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"]},faIdeal:{prefix:"fab",iconName:"ideal",icon:[576,512,[],"e013","M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z"]},faImdb:{prefix:"fab",iconName:"imdb",icon:[448,512,[],"f2d8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z"]},faInnosoft:{prefix:"fab",iconName:"innosoft",icon:[448,512,[],"e080","M422.559,159.71a27.379,27.379,0,0,0-13.866-23.337,26.42,26.42,0,0,0-26.211.133L73.943,314.647V176.261a11.955,11.955,0,0,1,6.047-10.34L218.066,86.208a12.153,12.153,0,0,1,11.922.025l32.656,18.853L112.581,191.723v56L359.642,105.086,241.129,36.679c-10.992-6.129-22.3-6.255-33.8-.27l-164.6,95.026c-10.634,6.12-16.771,16.39-17.29,29.124l0,191.5c.17,10.135,5.08,18.672,13.474,23.428a27.037,27.037,0,0,0,26.736-.045L374.057,197.376V335.657a11.976,11.976,0,0,1-5.92,10.368L230.025,425.77a12.175,12.175,0,0,1-11.937.062l-32.723-18.9,150.051-86.627v-56L88.367,406.932l118.794,68.583a33.88,33.88,0,0,0,34.25-.327l164.527-94.995c10.746-6.631,16.649-17.118,16.624-29.528Z"]},faInstagram:{prefix:"fab",iconName:"instagram",icon:[448,512,[],"f16d","M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]},faInstagramSquare:{prefix:"fab",iconName:"instagram-square",icon:[448,512,[],"e055","M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z"]},faInstalod:{prefix:"fab",iconName:"instalod",icon:[512,512,[],"e081","M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z"]},faIntercom:{prefix:"fab",iconName:"intercom",icon:[448,512,[],"f7af","M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"]},faInternetExplorer:{prefix:"fab",iconName:"internet-explorer",icon:[512,512,[],"f26b","M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z"]},faInvision:{prefix:"fab",iconName:"invision",icon:[448,512,[],"f7b0","M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"]},faIoxhost:{prefix:"fab",iconName:"ioxhost",icon:[640,512,[],"f208","M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"]},faItchIo:{prefix:"fab",iconName:"itch-io",icon:[512,512,[],"f83a","M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"]},faItunes:{prefix:"fab",iconName:"itunes",icon:[448,512,[],"f3b4","M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"]},faItunesNote:{prefix:"fab",iconName:"itunes-note",icon:[384,512,[],"f3b5","M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z"]},faJava:{prefix:"fab",iconName:"java",icon:[384,512,[],"f4e4","M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z"]},faJediOrder:{prefix:"fab",iconName:"jedi-order",icon:[448,512,[],"f50e","M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"]},faJenkins:{prefix:"fab",iconName:"jenkins",icon:[512,512,[],"f3b6","M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"]},faJira:{prefix:"fab",iconName:"jira",icon:[496,512,[],"f7b1","M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"]},faJoget:{prefix:"fab",iconName:"joget",icon:[496,512,[],"f3b7","M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"]},faJoomla:{prefix:"fab",iconName:"joomla",icon:[448,512,[],"f1aa","M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"]},faJs:{prefix:"fab",iconName:"js",icon:[448,512,[],"f3b8","M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"]},faJsSquare:{prefix:"fab",iconName:"js-square",icon:[448,512,[],"f3b9","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"]},faJsfiddle:{prefix:"fab",iconName:"jsfiddle",icon:[576,512,[],"f1cc","M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z"]},faKaggle:{prefix:"fab",iconName:"kaggle",icon:[320,512,[],"f5fa","M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"]},faKeybase:{prefix:"fab",iconName:"keybase",icon:[448,512,[],"f4f5","M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z"]},faKeycdn:{prefix:"fab",iconName:"keycdn",icon:[512,512,[],"f3ba","M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160"]},faKickstarter:{prefix:"fab",iconName:"kickstarter",icon:[448,512,[],"f3bb","M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z"]},faKickstarterK:{prefix:"fab",iconName:"kickstarter-k",icon:[384,512,[],"f3bc","M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z"]},faKorvue:{prefix:"fab",iconName:"korvue",icon:[446,512,[],"f42f","M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"]},faLaravel:{prefix:"fab",iconName:"laravel",icon:[512,512,[],"f3bd","M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z"]},faLastfm:{prefix:"fab",iconName:"lastfm",icon:[512,512,[],"f202","M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"]},faLastfmSquare:{prefix:"fab",iconName:"lastfm-square",icon:[448,512,[],"f203","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z"]},faLeanpub:{prefix:"fab",iconName:"leanpub",icon:[576,512,[],"f212","M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z"]},faLess:{prefix:"fab",iconName:"less",icon:[640,512,[],"f41d","M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"]},faLine:{prefix:"fab",iconName:"line",icon:[448,512,[],"f3c0","M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z"]},faLinkedin:{prefix:"fab",iconName:"linkedin",icon:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]},faLinkedinIn:{prefix:"fab",iconName:"linkedin-in",icon:[448,512,[],"f0e1","M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"]},faLinode:{prefix:"fab",iconName:"linode",icon:[448,512,[],"f2b8","M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z"]},faLinux:{prefix:"fab",iconName:"linux",icon:[448,512,[],"f17c","M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"]},faLyft:{prefix:"fab",iconName:"lyft",icon:[512,512,[],"f3c3","M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"]},faMagento:{prefix:"fab",iconName:"magento",icon:[448,512,[],"f3c4","M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"]},faMailchimp:{prefix:"fab",iconName:"mailchimp",icon:[448,512,[],"f59e","M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z"]},faMandalorian:{prefix:"fab",iconName:"mandalorian",icon:[448,512,[],"f50f","M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z"]},faMarkdown:{prefix:"fab",iconName:"markdown",icon:[640,512,[],"f60f","M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"]},faMastodon:{prefix:"fab",iconName:"mastodon",icon:[448,512,[],"f4f6","M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"]},faMaxcdn:{prefix:"fab",iconName:"maxcdn",icon:[512,512,[],"f136","M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"]},faMdb:{prefix:"fab",iconName:"mdb",icon:[576,512,[],"f8ca","M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"]},faMedapps:{prefix:"fab",iconName:"medapps",icon:[320,512,[],"f3c6","M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"]},faMedium:{prefix:"fab",iconName:"medium",icon:[448,512,[],"f23a","M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z"]},faMediumM:{prefix:"fab",iconName:"medium-m",icon:[512,512,[],"f3c7","M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z"]},faMedrt:{prefix:"fab",iconName:"medrt",icon:[544,512,[],"f3c8","M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"]},faMeetup:{prefix:"fab",iconName:"meetup",icon:[512,512,[],"f2e0","M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"]},faMegaport:{prefix:"fab",iconName:"megaport",icon:[496,512,[],"f5a3","M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"]},faMendeley:{prefix:"fab",iconName:"mendeley",icon:[640,512,[],"f7b3","M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"]},faMicroblog:{prefix:"fab",iconName:"microblog",icon:[448,512,[],"e01a","M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z"]},faMicrosoft:{prefix:"fab",iconName:"microsoft",icon:[448,512,[],"f3ca","M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"]},faMix:{prefix:"fab",iconName:"mix",icon:[448,512,[],"f3cb","M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"]},faMixcloud:{prefix:"fab",iconName:"mixcloud",icon:[640,512,[],"f289","M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z"]},faMixer:{prefix:"fab",iconName:"mixer",icon:[512,512,[],"e056","M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z"]},faMizuni:{prefix:"fab",iconName:"mizuni",icon:[496,512,[],"f3cc","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"]},faModx:{prefix:"fab",iconName:"modx",icon:[448,512,[],"f285","M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"]},faMonero:{prefix:"fab",iconName:"monero",icon:[496,512,[],"f3d0","M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"]},faNapster:{prefix:"fab",iconName:"napster",icon:[496,512,[],"f3d2","M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"]},faNeos:{prefix:"fab",iconName:"neos",icon:[512,512,[],"f612","M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z"]},faNimblr:{prefix:"fab",iconName:"nimblr",icon:[384,512,[],"f5a8","M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z"]},faNode:{prefix:"fab",iconName:"node",icon:[640,512,[],"f419","M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"]},faNodeJs:{prefix:"fab",iconName:"node-js",icon:[448,512,[],"f3d3","M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"]},faNpm:{prefix:"fab",iconName:"npm",icon:[576,512,[],"f3d4","M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"]},faNs8:{prefix:"fab",iconName:"ns8",icon:[640,512,[],"f3d5","M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z"]},faNutritionix:{prefix:"fab",iconName:"nutritionix",icon:[400,512,[],"f3d6","M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"]},faOctopusDeploy:{prefix:"fab",iconName:"octopus-deploy",icon:[512,512,[],"e082","M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z"]},faOdnoklassniki:{prefix:"fab",iconName:"odnoklassniki",icon:[320,512,[],"f263","M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"]},faOdnoklassnikiSquare:{prefix:"fab",iconName:"odnoklassniki-square",icon:[448,512,[],"f264","M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z"]},faOldRepublic:{prefix:"fab",iconName:"old-republic",icon:[496,512,[],"f510","M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"]},faOpencart:{prefix:"fab",iconName:"opencart",icon:[640,512,[],"f23d","M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"]},faOpenid:{prefix:"fab",iconName:"openid",icon:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"]},faOpera:{prefix:"fab",iconName:"opera",icon:[496,512,[],"f26a","M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"]},faOptinMonster:{prefix:"fab",iconName:"optin-monster",icon:[576,512,[],"f23c","M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z"]},faOrcid:{prefix:"fab",iconName:"orcid",icon:[512,512,[],"f8d2","M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z"]},faOsi:{prefix:"fab",iconName:"osi",icon:[512,512,[],"f41a","M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"]},faPage4:{prefix:"fab",iconName:"page4",icon:[496,512,[],"f3d7","M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"]},faPagelines:{prefix:"fab",iconName:"pagelines",icon:[384,512,[],"f18c","M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"]},faPalfed:{prefix:"fab",iconName:"palfed",icon:[576,512,[],"f3d8","M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"]},faPatreon:{prefix:"fab",iconName:"patreon",icon:[512,512,[],"f3d9","M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"]},faPaypal:{prefix:"fab",iconName:"paypal",icon:[384,512,[],"f1ed","M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"]},faPennyArcade:{prefix:"fab",iconName:"penny-arcade",icon:[640,512,[],"f704","M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z"]},faPerbyte:{prefix:"fab",iconName:"perbyte",icon:[448,512,[],"e083","M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z"]},faPeriscope:{prefix:"fab",iconName:"periscope",icon:[448,512,[],"f3da","M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"]},faPhabricator:{prefix:"fab",iconName:"phabricator",icon:[496,512,[],"f3db","M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"]},faPhoenixFramework:{prefix:"fab",iconName:"phoenix-framework",icon:[640,512,[],"f3dc","M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"]},faPhoenixSquadron:{prefix:"fab",iconName:"phoenix-squadron",icon:[512,512,[],"f511","M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"]},faPhp:{prefix:"fab",iconName:"php",icon:[640,512,[],"f457","M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"]},faPiedPiper:{prefix:"fab",iconName:"pied-piper",icon:[480,512,[],"f2ae","M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z"]},faPiedPiperAlt:{prefix:"fab",iconName:"pied-piper-alt",icon:[576,512,[],"f1a8","M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"]},faPiedPiperHat:{prefix:"fab",iconName:"pied-piper-hat",icon:[640,512,[],"f4e5","M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"]},faPiedPiperPp:{prefix:"fab",iconName:"pied-piper-pp",icon:[448,512,[],"f1a7","M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"]},faPiedPiperSquare:{prefix:"fab",iconName:"pied-piper-square",icon:[448,512,[],"e01e","M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"]},faPinterest:{prefix:"fab",iconName:"pinterest",icon:[496,512,[],"f0d2","M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"]},faPinterestP:{prefix:"fab",iconName:"pinterest-p",icon:[384,512,[],"f231","M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"]},faPinterestSquare:{prefix:"fab",iconName:"pinterest-square",icon:[448,512,[],"f0d3","M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z"]},faPlaystation:{prefix:"fab",iconName:"playstation",icon:[576,512,[],"f3df","M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"]},faProductHunt:{prefix:"fab",iconName:"product-hunt",icon:[512,512,[],"f288","M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"]},faPushed:{prefix:"fab",iconName:"pushed",icon:[432,512,[],"f3e1","M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"]},faPython:{prefix:"fab",iconName:"python",icon:[448,512,[],"f3e2","M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"]},faQq:{prefix:"fab",iconName:"qq",icon:[448,512,[],"f1d6","M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z"]},faQuinscape:{prefix:"fab",iconName:"quinscape",icon:[512,512,[],"f459","M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z"]},faQuora:{prefix:"fab",iconName:"quora",icon:[448,512,[],"f2c4","M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z"]},faRProject:{prefix:"fab",iconName:"r-project",icon:[581,512,[],"f4f7","M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"]},faRaspberryPi:{prefix:"fab",iconName:"raspberry-pi",icon:[407,512,[],"f7bb","M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"]},faRavelry:{prefix:"fab",iconName:"ravelry",icon:[512,512,[],"f2d9","M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z"]},faReact:{prefix:"fab",iconName:"react",icon:[512,512,[],"f41b","M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"]},faReacteurope:{prefix:"fab",iconName:"reacteurope",icon:[576,512,[],"f75d","M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"]},faReadme:{prefix:"fab",iconName:"readme",icon:[576,512,[],"f4d5","M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"]},faRebel:{prefix:"fab",iconName:"rebel",icon:[512,512,[],"f1d0","M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"]},faRedRiver:{prefix:"fab",iconName:"red-river",icon:[448,512,[],"f3e3","M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"]},faReddit:{prefix:"fab",iconName:"reddit",icon:[512,512,[],"f1a1","M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"]},faRedditAlien:{prefix:"fab",iconName:"reddit-alien",icon:[512,512,[],"f281","M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z"]},faRedditSquare:{prefix:"fab",iconName:"reddit-square",icon:[448,512,[],"f1a2","M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"]},faRedhat:{prefix:"fab",iconName:"redhat",icon:[512,512,[],"f7bc","M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24"]},faRenren:{prefix:"fab",iconName:"renren",icon:[512,512,[],"f18b","M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"]},faReplyd:{prefix:"fab",iconName:"replyd",icon:[448,512,[],"f3e6","M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"]},faResearchgate:{prefix:"fab",iconName:"researchgate",icon:[448,512,[],"f4f8","M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"]},faResolving:{prefix:"fab",iconName:"resolving",icon:[496,512,[],"f3e7","M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"]},faRev:{prefix:"fab",iconName:"rev",icon:[448,512,[],"f5b2","M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"]},faRocketchat:{prefix:"fab",iconName:"rocketchat",icon:[576,512,[],"f3e8","M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z"]},faRockrms:{prefix:"fab",iconName:"rockrms",icon:[496,512,[],"f3e9","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z"]},faRust:{prefix:"fab",iconName:"rust",icon:[512,512,[],"e07a","M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z"]},faSafari:{prefix:"fab",iconName:"safari",icon:[512,512,[],"f267","M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"]},faSalesforce:{prefix:"fab",iconName:"salesforce",icon:[640,512,[],"f83b","M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"]},faSass:{prefix:"fab",iconName:"sass",icon:[640,512,[],"f41e","M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"]},faSchlix:{prefix:"fab",iconName:"schlix",icon:[448,512,[],"f3ea","M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"]},faScribd:{prefix:"fab",iconName:"scribd",icon:[384,512,[],"f28a","M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"]},faSearchengin:{prefix:"fab",iconName:"searchengin",icon:[460,512,[],"f3eb","M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"]},faSellcast:{prefix:"fab",iconName:"sellcast",icon:[448,512,[],"f2da","M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"]},faSellsy:{prefix:"fab",iconName:"sellsy",icon:[640,512,[],"f213","M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z"]},faServicestack:{prefix:"fab",iconName:"servicestack",icon:[496,512,[],"f3ec","M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"]},faShirtsinbulk:{prefix:"fab",iconName:"shirtsinbulk",icon:[448,512,[],"f214","M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"]},faShopify:{prefix:"fab",iconName:"shopify",icon:[448,512,[],"e057","M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z"]},faShopware:{prefix:"fab",iconName:"shopware",icon:[512,512,[],"f5b5","M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z"]},faSimplybuilt:{prefix:"fab",iconName:"simplybuilt",icon:[512,512,[],"f215","M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"]},faSistrix:{prefix:"fab",iconName:"sistrix",icon:[448,512,[],"f3ee","M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"]},faSith:{prefix:"fab",iconName:"sith",icon:[448,512,[],"f512","M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z"]},faSketch:{prefix:"fab",iconName:"sketch",icon:[512,512,[],"f7c6","M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"]},faSkyatlas:{prefix:"fab",iconName:"skyatlas",icon:[640,512,[],"f216","M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"]},faSkype:{prefix:"fab",iconName:"skype",icon:[448,512,[],"f17e","M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"]},faSlack:{prefix:"fab",iconName:"slack",icon:[448,512,[],"f198","M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"]},faSlackHash:{prefix:"fab",iconName:"slack-hash",icon:[448,512,[],"f3ef","M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z"]},faSlideshare:{prefix:"fab",iconName:"slideshare",icon:[512,512,[],"f1e7","M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"]},faSnapchat:{prefix:"fab",iconName:"snapchat",icon:[496,512,[],"f2ab","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"]},faSnapchatGhost:{prefix:"fab",iconName:"snapchat-ghost",icon:[512,512,[],"f2ac","M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z"]},faSnapchatSquare:{prefix:"fab",iconName:"snapchat-square",icon:[448,512,[],"f2ad","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"]},faSoundcloud:{prefix:"fab",iconName:"soundcloud",icon:[640,512,[],"f1be","M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"]},faSourcetree:{prefix:"fab",iconName:"sourcetree",icon:[448,512,[],"f7d3","M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"]},faSpeakap:{prefix:"fab",iconName:"speakap",icon:[448,512,[],"f3f3","M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z"]},faSpeakerDeck:{prefix:"fab",iconName:"speaker-deck",icon:[512,512,[],"f83c","M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"]},faSpotify:{prefix:"fab",iconName:"spotify",icon:[496,512,[],"f1bc","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"]},faSquarespace:{prefix:"fab",iconName:"squarespace",icon:[512,512,[],"f5be","M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z"]},faStackExchange:{prefix:"fab",iconName:"stack-exchange",icon:[448,512,[],"f18d","M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"]},faStackOverflow:{prefix:"fab",iconName:"stack-overflow",icon:[384,512,[],"f16c","M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"]},faStackpath:{prefix:"fab",iconName:"stackpath",icon:[448,512,[],"f842","M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z"]},faStaylinked:{prefix:"fab",iconName:"staylinked",icon:[440,512,[],"f3f5","M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"]},faSteam:{prefix:"fab",iconName:"steam",icon:[496,512,[],"f1b6","M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"]},faSteamSquare:{prefix:"fab",iconName:"steam-square",icon:[448,512,[],"f1b7","M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"]},faSteamSymbol:{prefix:"fab",iconName:"steam-symbol",icon:[448,512,[],"f3f6","M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z"]},faStickerMule:{prefix:"fab",iconName:"sticker-mule",icon:[576,512,[],"f3f7","M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"]},faStrava:{prefix:"fab",iconName:"strava",icon:[384,512,[],"f428","M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"]},faStripe:{prefix:"fab",iconName:"stripe",icon:[640,512,[],"f429","M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"]},faStripeS:{prefix:"fab",iconName:"stripe-s",icon:[384,512,[],"f42a","M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"]},faStudiovinari:{prefix:"fab",iconName:"studiovinari",icon:[512,512,[],"f3f8","M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"]},faStumbleupon:{prefix:"fab",iconName:"stumbleupon",icon:[512,512,[],"f1a4","M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"]},faStumbleuponCircle:{prefix:"fab",iconName:"stumbleupon-circle",icon:[496,512,[],"f1a3","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"]},faSuperpowers:{prefix:"fab",iconName:"superpowers",icon:[448,512,[],"f2dd","M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"]},faSupple:{prefix:"fab",iconName:"supple",icon:[640,512,[],"f3f9","M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"]},faSuse:{prefix:"fab",iconName:"suse",icon:[640,512,[],"f7d6","M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z"]},faSwift:{prefix:"fab",iconName:"swift",icon:[448,512,[],"f8e1","M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"]},faSymfony:{prefix:"fab",iconName:"symfony",icon:[512,512,[],"f83d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z"]},faTeamspeak:{prefix:"fab",iconName:"teamspeak",icon:[512,512,[],"f4f9","M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z"]},faTelegram:{prefix:"fab",iconName:"telegram",icon:[496,512,[],"f2c6","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z"]},faTelegramPlane:{prefix:"fab",iconName:"telegram-plane",icon:[448,512,[],"f3fe","M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z"]},faTencentWeibo:{prefix:"fab",iconName:"tencent-weibo",icon:[384,512,[],"f1d5","M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"]},faTheRedYeti:{prefix:"fab",iconName:"the-red-yeti",icon:[512,512,[],"f69d","M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z"]},faThemeco:{prefix:"fab",iconName:"themeco",icon:[448,512,[],"f5c6","M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"]},faThemeisle:{prefix:"fab",iconName:"themeisle",icon:[512,512,[],"f2b2","M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z"]},faThinkPeaks:{prefix:"fab",iconName:"think-peaks",icon:[576,512,[],"f731","M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z"]},faTiktok:{prefix:"fab",iconName:"tiktok",icon:[448,512,[],"e07b","M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"]},faTradeFederation:{prefix:"fab",iconName:"trade-federation",icon:[496,512,[],"f513","M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"]},faTrello:{prefix:"fab",iconName:"trello",icon:[448,512,[],"f181","M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"]},faTumblr:{prefix:"fab",iconName:"tumblr",icon:[320,512,[],"f173","M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"]},faTumblrSquare:{prefix:"fab",iconName:"tumblr-square",icon:[448,512,[],"f174","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z"]},faTwitch:{prefix:"fab",iconName:"twitch",icon:[512,512,[],"f1e8","M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"]},faTwitter:{prefix:"fab",iconName:"twitter",icon:[512,512,[],"f099","M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]},faTwitterSquare:{prefix:"fab",iconName:"twitter-square",icon:[448,512,[],"f081","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"]},faTypo3:{prefix:"fab",iconName:"typo3",icon:[448,512,[],"f42b","M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"]},faUber:{prefix:"fab",iconName:"uber",icon:[448,512,[],"f402","M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"]},faUbuntu:{prefix:"fab",iconName:"ubuntu",icon:[496,512,[],"f7df","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"]},faUikit:{prefix:"fab",iconName:"uikit",icon:[448,512,[],"f403","M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"]},faUmbraco:{prefix:"fab",iconName:"umbraco",icon:[510,512,[],"f8e8","M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z"]},faUncharted:{prefix:"fab",iconName:"uncharted",icon:[448,512,[],"e084","M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z"]},faUniregistry:{prefix:"fab",iconName:"uniregistry",icon:[384,512,[],"f404","M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"]},faUnity:{prefix:"fab",iconName:"unity",icon:[576,512,[],"e049","M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z"]},faUnsplash:{prefix:"fab",iconName:"unsplash",icon:[448,512,[],"e07c","M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z"]},faUntappd:{prefix:"fab",iconName:"untappd",icon:[640,512,[],"f405","M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"]},faUps:{prefix:"fab",iconName:"ups",icon:[384,512,[],"f7e0","M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"]},faUsb:{prefix:"fab",iconName:"usb",icon:[640,512,[],"f287","M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"]},faUsps:{prefix:"fab",iconName:"usps",icon:[576,512,[],"f7e1","M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"]},faUssunnah:{prefix:"fab",iconName:"ussunnah",icon:[512,512,[],"f407","M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"]},faVaadin:{prefix:"fab",iconName:"vaadin",icon:[448,512,[],"f408","M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"]},faViacoin:{prefix:"fab",iconName:"viacoin",icon:[384,512,[],"f237","M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"]},faViadeo:{prefix:"fab",iconName:"viadeo",icon:[448,512,[],"f2a9","M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"]},faViadeoSquare:{prefix:"fab",iconName:"viadeo-square",icon:[448,512,[],"f2aa","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z"]},faViber:{prefix:"fab",iconName:"viber",icon:[512,512,[],"f409","M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"]},faVimeo:{prefix:"fab",iconName:"vimeo",icon:[448,512,[],"f40a","M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"]},faVimeoSquare:{prefix:"fab",iconName:"vimeo-square",icon:[448,512,[],"f194","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z"]},faVimeoV:{prefix:"fab",iconName:"vimeo-v",icon:[448,512,[],"f27d","M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"]},faVine:{prefix:"fab",iconName:"vine",icon:[384,512,[],"f1ca","M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"]},faVk:{prefix:"fab",iconName:"vk",icon:[576,512,[],"f189","M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z"]},faVnv:{prefix:"fab",iconName:"vnv",icon:[640,512,[],"f40b","M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"]},faVuejs:{prefix:"fab",iconName:"vuejs",icon:[448,512,[],"f41f","M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"]},faWatchmanMonitoring:{prefix:"fab",iconName:"watchman-monitoring",icon:[512,512,[],"e087","M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z"]},faWaze:{prefix:"fab",iconName:"waze",icon:[512,512,[],"f83f","M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"]},faWeebly:{prefix:"fab",iconName:"weebly",icon:[512,512,[],"f5cc","M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"]},faWeibo:{prefix:"fab",iconName:"weibo",icon:[512,512,[],"f18a","M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"]},faWeixin:{prefix:"fab",iconName:"weixin",icon:[576,512,[],"f1d7","M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z"]},faWhatsapp:{prefix:"fab",iconName:"whatsapp",icon:[448,512,[],"f232","M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"]},faWhatsappSquare:{prefix:"fab",iconName:"whatsapp-square",icon:[448,512,[],"f40c","M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z"]},faWhmcs:{prefix:"fab",iconName:"whmcs",icon:[448,512,[],"f40d","M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"]},faWikipediaW:{prefix:"fab",iconName:"wikipedia-w",icon:[640,512,[],"f266","M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z"]},faWindows:{prefix:"fab",iconName:"windows",icon:[448,512,[],"f17a","M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"]},faWix:{prefix:"fab",iconName:"wix",icon:[640,512,[],"f5cf","M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z"]},faWizardsOfTheCoast:{prefix:"fab",iconName:"wizards-of-the-coast",icon:[640,512,[],"f730","M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"]},faWodu:{prefix:"fab",iconName:"wodu",icon:[640,512,[],"e088","M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z"]},faWolfPackBattalion:{prefix:"fab",iconName:"wolf-pack-battalion",icon:[512,512,[],"f514","M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"]},faWordpress:{prefix:"fab",iconName:"wordpress",icon:[512,512,[],"f19a","M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"]},faWordpressSimple:{prefix:"fab",iconName:"wordpress-simple",icon:[512,512,[],"f411","M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"]},faWpbeginner:{prefix:"fab",iconName:"wpbeginner",icon:[512,512,[],"f297","M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z"]},faWpexplorer:{prefix:"fab",iconName:"wpexplorer",icon:[512,512,[],"f2de","M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"]},faWpforms:{prefix:"fab",iconName:"wpforms",icon:[448,512,[],"f298","M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"]},faWpressr:{prefix:"fab",iconName:"wpressr",icon:[496,512,[],"f3e4","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z"]},faXbox:{prefix:"fab",iconName:"xbox",icon:[512,512,[],"f412","M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"]},faXing:{prefix:"fab",iconName:"xing",icon:[384,512,[],"f168","M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"]},faXingSquare:{prefix:"fab",iconName:"xing-square",icon:[448,512,[],"f169","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z"]},faYCombinator:{prefix:"fab",iconName:"y-combinator",icon:[448,512,[],"f23b","M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"]},faYahoo:{prefix:"fab",iconName:"yahoo",icon:[512,512,[],"f19e","M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z"]},faYammer:{prefix:"fab",iconName:"yammer",icon:[512,512,[],"f840","M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z"]},faYandex:{prefix:"fab",iconName:"yandex",icon:[256,512,[],"f413","M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"]},faYandexInternational:{prefix:"fab",iconName:"yandex-international",icon:[320,512,[],"f414","M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"]},faYarn:{prefix:"fab",iconName:"yarn",icon:[496,512,[],"f7e3","M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"]},faYelp:{prefix:"fab",iconName:"yelp",icon:[384,512,[],"f1e9","M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"]},faYoast:{prefix:"fab",iconName:"yoast",icon:[448,512,[],"f2b1","M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"]},faYoutube:{prefix:"fab",iconName:"youtube",icon:[576,512,[],"f167","M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"]},faYoutubeSquare:{prefix:"fab",iconName:"youtube-square",icon:[448,512,[],"f431","M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z"]},faZhihu:{prefix:"fab",iconName:"zhihu",icon:[640,512,[],"f63f","M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"]}};function t(c){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&"function"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},t(c)}function h(c,a){for(var l=0;l0;)a+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return a}function lc(c){return"".concat(c).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function ec(c){return Object.keys(c||{}).reduce((function(a,l){return a+"".concat(l,": ").concat(c[l],";")}),"")}function ic(c){return c.size!==cc.size||c.x!==cc.x||c.y!==cc.y||c.rotate!==cc.rotate||c.flipX||c.flipY}function oc(c){var a=c.transform,l=c.containerWidth,e=c.iconWidth,i={transform:"translate(".concat(l/2," 256)")},o="translate(".concat(32*a.x,", ").concat(32*a.y,") "),n="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),s="rotate(".concat(a.rotate," 0 0)");return{outer:i,inner:{transform:"".concat(o," ").concat(n," ").concat(s)},path:{transform:"translate(".concat(e/2*-1," -256)")}}}var nc={x:0,y:0,width:"100%",height:"100%"};function sc(c){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return c.attributes&&(c.attributes.fill||a)&&(c.attributes.fill="black"),c}function tc(c){var a=c.icons,l=a.main,e=a.mask,i=c.prefix,o=c.iconName,n=c.transform,s=c.symbol,t=c.title,h=c.maskId,r=c.titleId,v=c.extra,f=c.watchable,z=void 0!==f&&f,p=e.found?e:l,g=p.width,M=p.height,C="fak"===i,d=C?"":"fa-w-".concat(Math.ceil(g/M*16)),x=[A.replacementClass,o?"".concat(A.familyPrefix,"-").concat(o):"",d].filter((function(c){return-1===v.classes.indexOf(c)})).filter((function(c){return""!==c||!!c})).concat(v.classes).join(" "),w={children:[],attributes:m({},v.attributes,{"data-prefix":i,"data-icon":o,class:x,role:v.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(M)})},H=C&&!~v.classes.indexOf("fa-fw")?{width:"".concat(g/M*16*.0625,"em")}:{};z&&(w.attributes["data-fa-i2svg"]=""),t&&w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(r||ac())},children:[t]});var V=m({},w,{prefix:i,iconName:o,main:l,mask:e,maskId:h,transform:n,symbol:s,styles:m({},H,v.styles)}),u=e.found&&l.found?function(c){var a,l=c.children,e=c.attributes,i=c.main,o=c.mask,n=c.maskId,s=c.transform,t=i.width,h=i.icon,r=o.width,v=o.icon,f=oc({transform:s,containerWidth:r,iconWidth:t}),z={tag:"rect",attributes:m({},nc,{fill:"white"})},p=h.children?{children:h.children.map(sc)}:{},g={tag:"g",attributes:m({},f.inner),children:[sc(m({tag:h.tag,attributes:m({},h.attributes,f.path)},p))]},M={tag:"g",attributes:m({},f.outer),children:[g]},C="mask-".concat(n||ac()),d="clip-".concat(n||ac()),x={tag:"mask",attributes:m({},nc,{id:C,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[z,M]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:d},children:(a=v,"g"===a.tag?a.children:[a])},x]};return l.push(w,{tag:"rect",attributes:m({fill:"currentColor","clip-path":"url(#".concat(d,")"),mask:"url(#".concat(C,")")},nc)}),{children:l,attributes:e}}(V):function(c){var a=c.children,l=c.attributes,e=c.main,i=c.transform,o=ec(c.styles);if(o.length>0&&(l.style=o),ic(i)){var n=oc({transform:i,containerWidth:e.width,iconWidth:e.width});a.push({tag:"g",attributes:m({},n.outer),children:[{tag:"g",attributes:m({},n.inner),children:[{tag:e.icon.tag,children:e.icon.children,attributes:m({},e.icon.attributes,n.path)}]}]})}else a.push(e.icon);return{children:a,attributes:l}}(V),L=u.children,b=u.attributes;return V.children=L,V.attributes=b,s?function(c){var a=c.prefix,l=c.iconName,e=c.children,i=c.attributes,o=c.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:m({},i,{id:!0===o?"".concat(a,"-").concat(A.familyPrefix,"-").concat(l):o}),children:e}]}]}(V):function(c){var a=c.children,l=c.main,e=c.mask,i=c.attributes,o=c.styles,n=c.transform;if(ic(n)&&l.found&&!e.found){var s={x:l.width/l.height/2,y:.5};i.style=ec(m({},o,{"transform-origin":"".concat(s.x+n.x/16,"em ").concat(s.y+n.y/16,"em")}))}return[{tag:"svg",attributes:i,children:a}]}(V)}var hc=(A.measurePerformance&&w&&w.mark&&w.measure,function(c,a,l,e){var i,o,n,s=Object.keys(c),t=s.length,h=void 0!==e?function(c,a){return function(l,e,i,o){return c.call(a,l,e,i,o)}}(a,e):a;for(void 0===l?(i=1,n=c[s[0]]):(i=0,n=l);i2&&void 0!==arguments[2]?arguments[2]:{},e=l.skipHooks,i=void 0!==e&&e,o=Object.keys(a).reduce((function(c,l){var e=a[l];return e.icon?c[e.iconName]=e.icon:c[l]=e,c}),{});"function"!=typeof U.hooks.addPack||i?U.styles[c]=m({},U.styles[c]||{},o):U.hooks.addPack(c,o),"fas"===c&&rc("fa",a)}var mc=U.styles,vc=U.shims,fc=function(){var c=function(c){return hc(mc,(function(a,l,e){return a[e]=hc(l,c,{}),a}),{})};c((function(c,a,l){return a[3]&&(c[a[3]]=l),c})),c((function(c,a,l){var e=a[2];return c[l]=l,e.forEach((function(a){c[a]=l})),c}));var a="far"in mc;hc(vc,(function(c,l){var e=l[0],i=l[1],o=l[2];return"far"!==i||a||(i="fas"),c[e]={prefix:i,iconName:o},c}),{})};function zc(c,a,l){if(c&&c[a]&&c[a][l])return{prefix:a,iconName:l,icon:c[a][l]}}function pc(c){var a=c.tag,l=c.attributes,e=void 0===l?{}:l,i=c.children,o=void 0===i?[]:i;return"string"==typeof c?lc(c):"<".concat(a," ").concat(function(c){return Object.keys(c||{}).reduce((function(a,l){return a+"".concat(l,'="').concat(lc(c[l]),'" ')}),"").trim()}(e),">").concat(o.map(pc).join(""),"")}function gc(c){this.name="MissingIcon",this.message=c||"Icon unavailable",this.stack=(new Error).stack}fc(),U.styles,gc.prototype=Object.create(Error.prototype),gc.prototype.constructor=gc;var Mc={fill:"currentColor"},Cc={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},dc=(m({},Mc,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}),m({},Cc,{attributeName:"opacity"}));function xc(c){var a=c[0],l=c[1],e=v(c.slice(4),1)[0];return{found:!0,width:a,height:l,icon:Array.isArray(e)?{tag:"g",attributes:{class:"".concat(A.familyPrefix,"-").concat(b.GROUP)},children:[{tag:"path",attributes:{class:"".concat(A.familyPrefix,"-").concat(b.SECONDARY),fill:"currentColor",d:e[0]}},{tag:"path",attributes:{class:"".concat(A.familyPrefix,"-").concat(b.PRIMARY),fill:"currentColor",d:e[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:e}}}}m({},Mc,{cx:"256",cy:"364",r:"28"}),m({},Cc,{attributeName:"r",values:"28;14;28;28;14;28;"}),m({},dc,{values:"1;0;1;1;0;1;"}),m({},Mc,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),m({},dc,{values:"1;0;0;0;0;1;"}),m({},Mc,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),m({},dc,{values:"0;0;1;1;0;0;"}),U.styles,U.styles;var wc=function(){function c(){!function(c,a){if(!(c instanceof a))throw new TypeError("Cannot call a class as a function")}(this,c),this.definitions={}}var a,l;return a=c,l=[{key:"add",value:function(){for(var c=this,a=arguments.length,l=new Array(a),e=0;e-1;i--){var o=l[i],n=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(n)>-1&&(e=o)}x.head.insertBefore(a,e)}}(function(){var c="fa",a=V,l=A.familyPrefix,e=A.replacementClass,i='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if(l!==c||e!==a){var o=new RegExp("\\.".concat(c,"\\-"),"g"),n=new RegExp("\\--".concat(c,"\\-"),"g"),s=new RegExp("\\.".concat(a),"g");i=i.replace(o,".".concat(l,"-")).replace(n,"--".concat(l,"-")).replace(s,".".concat(e))}return i}()),Nc=!0)}function Vc(c,a){return Object.defineProperty(c,"abstract",{get:a}),Object.defineProperty(c,"html",{get:function(){return c.abstract.map((function(c){return pc(c)}))}}),Object.defineProperty(c,"node",{get:function(){if(H){var a=x.createElement("div");return a.innerHTML=c.html,a.children}}}),c}function uc(c){var a=c.prefix,l=void 0===a?"fa":a,e=c.iconName;if(e)return zc(bc.definitions,l,e)||zc(U.styles,l,e)}var Lc,bc=new wc,Nc=!1,Bc=(Lc=function(c){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=a.transform,e=void 0===l?cc:l,i=a.symbol,o=void 0!==i&&i,n=a.mask,s=void 0===n?null:n,t=a.maskId,h=void 0===t?null:t,r=a.title,v=void 0===r?null:r,f=a.titleId,z=void 0===f?null:f,p=a.classes,g=void 0===p?[]:p,M=a.attributes,C=void 0===M?{}:M,d=a.styles,x=void 0===d?{}:d;if(c){var w=c.prefix,H=c.iconName,V=c.icon;return Vc(m({type:"icon"},c),(function(){return Hc(),A.autoA11y&&(v?C["aria-labelledby"]="".concat(A.replacementClass,"-title-").concat(z||ac()):(C["aria-hidden"]="true",C.focusable="false")),tc({icons:{main:xc(V),mask:s?xc(s.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:H,transform:m({},cc,e),symbol:o,title:v,maskId:h,titleId:z,extra:{attributes:C,styles:x,classes:g}})}))}},function(c){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=(c||{}).icon?c:uc(c||{}),e=a.mask;return e&&(e=(e||{}).icon?e:uc(e||{})),Lc(l,m({},a,{mask:e}))});const Ac={acid:'',acorn:'',"alien-fire":'',"all-for-one":'',"alligator-clip":'',"ammo-bag":'',anchor:'',"angel-wings":'',ankh:'',anvil:'',apple:'',aquarius:'',"arcane-mask":'',archer:'',"archery-target":'',arena:'',aries:'',"arrow-cluster":'',"arrow-flights":'',arson:'',aura:'',aware:'',"axe-swing":'',axe:'',ball:'',"barbed-arrow":'',barrier:'',"bat-sword":'',"battered-axe":'',batteries:'',"battery-0":'',"battery-100":'',"battery-25":'',"battery-50":'',"battery-75":'',"battery-black":'',"battery-negative":'',"battery-positive":'',"battery-white":'',batwings:'',"beam-wake":'',"bear-trap":'',beer:'',beetle:'',bell:'',biohazard:'',"bird-claw":'',"bird-mask":'',"blade-bite":'',blast:'',blaster:'',"bleeding-eye":'',"bleeding-hearts":'',"bolt-shield":'',"bomb-explosion":'',bombs:'',"bone-bite":'',"bone-knife":'',book:'',boomerang:'',"boot-stomp":'',"bottle-vapors":'',"bottled-bolt":'',"bottom-right":'',"bowie-knife":'',"bowling-pin":'',"brain-freeze":'',"brandy-bottle":'',bridge:'',"broadhead-arrow":'',broadsword:'',"broken-bone":'',"broken-bottle":'',"broken-heart":'',"broken-shield":'',"broken-skull":'',"bubbling-potion":'',bullets:'',"burning-book":'',"burning-embers":'',"burning-eye":'',"burning-meteor":'',"burst-blob":'',butterfly:'',campfire:'',cancel:'',cancer:'',"candle-fire":'',candle:'',"cannon-shot":'',capitol:'',capricorn:'',carrot:'',"castle-emblem":'',"castle-flag":'',cat:'',chain:'',cheese:'',"chemical-arrow":'',chessboard:'',"chicken-leg":'',"circle-of-circles":'',"circular-saw":'',"circular-shield":'',"cloak-and-dagger":'',clockwork:'',clover:'',"clovers-card":'',clovers:'',"cluster-bomb":'',"coffee-mug":'',"cog-wheel":'',cog:'',"cold-heart":'',compass:'',"corked-tube":'',"crab-claw":'',"cracked-helm":'',"cracked-shield":'',"croc-sword":'',crossbow:'',"crossed-axes":'',"crossed-bones":'',"crossed-pistols":'',"crossed-sabres":'',"crossed-swords":'',"crown-of-thorns":'',crown:'',"crowned-heart":'',crush:'',"crystal-ball":'',"crystal-cluster":'',"crystal-wand":'',crystals:'',cubes:'',"cut-palm":'',cycle:'',daggers:'',daisy:'',"dead-tree":'',"death-skull":'',decapitation:'',defibrillate:'',demolish:'',"dervish-swords":'',"desert-skull":'',diamond:'',"diamonds-card":'',diamonds:'',"dice-five":'',"dice-four":'',"dice-one":'',"dice-six":'',"dice-three":'',"dice-two":'',dinosaur:'',divert:'',"diving-dagger":'',"double-team":'',doubled:'',"dragon-breath":'',"dragon-wing":'',dragon:'',dragonfly:'',drill:'',"dripping-blade":'',"dripping-knife":'',"dripping-sword":'',"droplet-splash":'',droplet:'',droplets:'',duel:'',"egg-pod":'',egg:'',eggplant:'',emerald:'',energise:'',explosion:'',"explosive-materials":'',"eye-monster":'',"eye-shield":'',eyeball:'',"fairy-wand":'',fairy:'',"fall-down":'',falling:'',"fast-ship":'',"feather-wing":'',"feathered-wing":'',fedora:'',"fire-bomb":'',"fire-breath":'',"fire-ring":'',"fire-shield":'',"fire-symbol":'',fire:'',"fireball-sword":'',fish:'',"fizzing-flask":'',"flame-symbol":'',"flaming-arrow":'',"flaming-claw":'',"flaming-trident":'',flask:'',"flat-hammer":'',flower:'',flowers:'',"fluffy-swirl":'',"focused-lightning":'',"food-chain":'',footprint:'',forging:'',forward:'',fox:'',"frost-emblem":'',frostfire:'',"frozen-arrow":'',"gamepad-cross":'',gavel:'',"gear-hammer":'',"gear-heart":'',gears:'',gecko:'',"gem-pendant":'',gem:'',gemini:'',"glass-heart":'',gloop:'',"gold-bar":'',"grappling-hook":'',"grass-patch":'',grass:'',grenade:'',groundbreaker:'',"guarded-tower":'',guillotine:'',halberd:'',"hammer-drop":'',hammer:'',"hand-emblem":'',"hand-saw":'',hand:'',"harpoon-trident":'',"health-decrease":'',"health-increase":'',health:'',"heart-bottle":'',"heart-tower":'',heartburn:'',"hearts-card":'',hearts:'',"heat-haze":'',"heavy-fall":'',"heavy-shield":'',helmet:'',help:'',"hive-emblem":'',"hole-ladder":'',honeycomb:'',hood:'',"horn-call":'',horns:'',horseshoe:'',"hospital-cross":'',"hot-surface":'',hourglass:'',"hydra-shot":'',hydra:'',"ice-cube":'',implosion:'',incense:'',"insect-jaws":'',interdiction:'',jetpack:'',"jigsaw-piece":'',kaleidoscope:'',kettlebell:'',"key-basic":'',key:'',"kitchen-knives":'',"knife-fork":'',knife:'',"knight-helmet":'',kunai:'',"lantern-flame":'',"large-hammer":'',"laser-blast":'',"laser-site":'',lava:'',leaf:'',leo:'',"level-four-advanced":'',"level-four":'',"level-three-advanced":'',"level-three":'',"level-two-advanced":'',"level-two":'',lever:'',libra:'',"light-bulb":'',lighthouse:'',"lightning-bolt":'',"lightning-storm":'',"lightning-sword":'',"lightning-trio":'',lightning:'',lion:'',"lit-candelabra":'',load:'',"locked-fortress":'',"love-howl":'',maggot:'',magnet:'',"mass-driver":'',match:'',"meat-hook":'',meat:'',"medical-pack":'',"metal-gate":'',microphone:'',"mine-wagon":'',"mining-diamonds":'',mirror:'',"monster-skull":'',montains:'',"moon-sun":'',mp5:'',"muscle-fat":'',"muscle-up":'',musket:'',nails:'',nodular:'',noose:'',nuclear:'',ocarina:'',"ocean-emblem":'',octopus:'',omega:'',"on-target":'',ophiuchus:'',overhead:'',overmind:'',"palm-tree":'',pawn:'',pawprint:'',"perspective-dice-five":'',"perspective-dice-four":'',"perspective-dice-one":'',"perspective-dice-random":'',"perspective-dice-six-two":'',"perspective-dice-six":'',"perspective-dice-three":'',pill:'',pills:'',"pine-tree":'',"ping-pong":'',pisces:'',"plain-dagger":'',"player-despair":'',"player-dodge":'',"player-king":'',"player-lift":'',"player-pain":'',"player-pyromaniac":'',"player-shot":'',"player-teleport":'',"player-thunder-struck":'',player:'',podium:'',"poison-cloud":'',potion:'',pyramids:'',"queen-crown":'',"quill-ink":'',rabbit:'',"radar-dish":'',"radial-balance":'',radioactive:'',raven:'',reactor:'',recycle:'',regeneration:'',"relic-blade":'',repair:'',reverse:'',revolver:'',rifle:'',"ringing-bell":'',"roast-chicken":'',"robot-arm":'',"round-bottom-flask":'',"round-shield":'',rss:'',"rune-stone":'',sagittarius:'',sapphire:'',satellite:'',save:'',scorpio:'',"scroll-unfurled":'',scythe:'',"sea-serpent":'',seagull:'',shark:'',sheep:'',sheriff:'',shield:'',"ship-emblem":'',"shoe-prints":'',"shot-through-the-heart":'',"shotgun-shell":'',shovel:'',shuriken:'',sickle:'',sideswipe:'',site:'',"skull-trophy":'',skull:'',"slash-ring":'',"small-fire":'',snail:'',snake:'',snorkel:'',snowflake:'',"soccer-ball":'',"spades-card":'',spades:'',"spawn-node":'',"spear-head":'',"speech-bubble":'',"speech-bubbles":'',"spider-face":'',spikeball:'',"spiked-mace":'',"spiked-tentacle":'',"spinning-sword":'',"spiral-shell":'',splash:'',"spray-can":'',"sprout-emblem":'',sprout:'',stopwatch:'',"suckered-tentacle":'',suits:'',"sun-symbol":'',sun:'',sunbeams:'',"super-mushroom":'',"supersonic-arrow":'',"surveillance-camera":'',syringe:'',"target-arrows":'',"target-laser":'',targeted:'',taurus:'',telescope:'',tentacle:'',tesla:'',"thorn-arrow":'',"thorny-vine":'',"three-keys":'',"tic-tac-toe":'',toast:'',tombstone:'',tooth:'',torch:'',tower:'',trail:'',"trefoil-lily":'',trident:'',triforce:'',trophy:'',turd:'',"two-dragons":'',"two-hearts":'',uncertainty:'',underhand:'',unplugged:'',vase:'',"venomous-snake":'',vest:'',vial:'',"vine-whip":'',virgo:'',"water-drop":'',wifi:'',"wireless-signal":'',"wolf-head":'',"wolf-howl":'',"wooden-sign":'',wrench:'',wyvern:'',"x-mark":'',"zebra-shield":'',"zigzag-leaf":''};bc.add(n,o,s,i);const Qc=Bc(uc({iconName:"copy",prefix:"far"})).node[0],Uc=Bc(uc({iconName:"exclamation-triangle",prefix:"fas"})).node[0],yc=new Map(Object.keys(Ac).map((c=>[c,{name:c,type:"rpg"}]))),Fc=new Map([Object.values(n),Object.values(o),Object.values(s)].flat().map((c=>[c.iconName,{name:c.iconName,type:"font-awesome"}]))),Sc=[...Fc.values(),...yc.values()];function Ic(c){return uc({iconName:c,prefix:"fas"})||uc({iconName:c,prefix:"far"})||uc({iconName:c,prefix:"fab"})?"font-awesome":Ac[c]?"rpg":void 0}function kc(c){return"rpg"===c.type?"RPG Awesome":"font-awesome"===c.type?"Font Awesome":void 0}function Ec(c){if("image"===c.type){const a=new Image;return a.src=c.name,a}if("rpg"===c.type){if(!Ac[c.name])return null;const a=createDiv();return a.innerHTML=Ac[c.name],a.children[0]}return uc({iconName:c.name,prefix:"fas"})?Bc(uc({iconName:c.name,prefix:"fas"})).node[0]:uc({iconName:c.name,prefix:"far"})?Bc(uc({iconName:c.name,prefix:"far"})).node[0]:uc({iconName:c.name,prefix:"fab"})?Bc(uc({iconName:c.name,prefix:"fab"})).node[0]:void 0}function Zc(){return"ID_xyxyxyxyxyxy".replace(/[xy]/g,(function(c){var a=16*Math.random()|0;return("x"==c?a:3&a|8).toString(16)}))}function Dc(c,a,l){const e=c.split("\n").slice(a),i=e.indexOf(e.find((c=>c==l)));let o=i+1;for(;o=0?c.ownerDocument.body:Yc(c)&&aa(c)?c:oa(ia(c))}function na(c,a){var l;void 0===a&&(a=[]);var e=oa(c),i=e===(null==(l=c.ownerDocument)?void 0:l.body),o=Pc(e),n=i?[o].concat(o.visualViewport||[],aa(e)?e:[]):e,s=a.concat(n);return i?s:s.concat(na(ia(n)))}function sa(c){return["table","td","th"].indexOf(_c(c))>=0}function ta(c){return Yc(c)&&"fixed"!==ca(c).position?c.offsetParent:null}function ha(c){for(var a=Pc(c),l=ta(c);l&&sa(l)&&"static"===ca(l).position;)l=ta(l);return l&&("html"===_c(l)||"body"===_c(l)&&"static"===ca(l).position)?a:l||function(c){var a=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&Yc(c)&&"fixed"===ca(c).position)return null;for(var l=ia(c);Yc(l)&&["html","body"].indexOf(_c(l))<0;){var e=ca(l);if("none"!==e.transform||"none"!==e.perspective||"paint"===e.contain||-1!==["transform","perspective"].indexOf(e.willChange)||a&&"filter"===e.willChange||a&&e.filter&&"none"!==e.filter)return l;l=l.parentNode}return null}(c)||a}var ra="top",ma="bottom",va="right",fa="left",za="auto",pa=[ra,ma,va,fa],ga="start",Ma="end",Ca="viewport",da="popper",xa=pa.reduce((function(c,a){return c.concat([a+"-"+ga,a+"-"+Ma])}),[]),wa=[].concat(pa,[za]).reduce((function(c,a){return c.concat([a,a+"-"+ga,a+"-"+Ma])}),[]),Ha=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Va(c){var a=new Map,l=new Set,e=[];function i(c){l.add(c.name),[].concat(c.requires||[],c.requiresIfExists||[]).forEach((function(c){if(!l.has(c)){var e=a.get(c);e&&i(e)}})),e.push(c)}return c.forEach((function(c){a.set(c.name,c)})),c.forEach((function(c){l.has(c.name)||i(c)})),e}var ua={placement:"bottom",modifiers:[],strategy:"absolute"};function La(){for(var c=arguments.length,a=new Array(c),l=0;l=0?"x":"y"}function ya(c){var a,l=c.reference,e=c.element,i=c.placement,o=i?Aa(i):null,n=i?Qa(i):null,s=l.x+l.width/2-e.width/2,t=l.y+l.height/2-e.height/2;switch(o){case ra:a={x:s,y:l.y-e.height};break;case ma:a={x:s,y:l.y+l.height};break;case va:a={x:l.x+l.width,y:t};break;case fa:a={x:l.x-e.width,y:t};break;default:a={x:l.x,y:l.y}}var h=o?Ua(o):null;if(null!=h){var r="y"===h?"height":"width";switch(n){case ga:a[h]=a[h]-(l[r]/2-e[r]/2);break;case Ma:a[h]=a[h]+(l[r]/2-e[r]/2)}}return a}const Fa={name:"popperOffsets",enabled:!0,phase:"read",fn:function(c){var a=c.state,l=c.name;a.modifiersData[l]=ya({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})},data:{}};var Sa=Math.max,Ia=Math.min,ka=Math.round,Ea={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Za(c){var a,l=c.popper,e=c.popperRect,i=c.placement,o=c.offsets,n=c.position,s=c.gpuAcceleration,t=c.adaptive,h=c.roundOffsets,r=!0===h?function(c){var a=c.x,l=c.y,e=window.devicePixelRatio||1;return{x:ka(ka(a*e)/e)||0,y:ka(ka(l*e)/e)||0}}(o):"function"==typeof h?h(o):o,m=r.x,v=void 0===m?0:m,f=r.y,z=void 0===f?0:f,p=o.hasOwnProperty("x"),g=o.hasOwnProperty("y"),M=fa,C=ra,d=window;if(t){var x=ha(l),w="clientHeight",H="clientWidth";x===Pc(l)&&"static"!==ca(x=Kc(l)).position&&(w="scrollHeight",H="scrollWidth"),x=x,i===ra&&(C=ma,z-=x[w]-e.height,z*=s?1:-1),i===fa&&(M=va,v-=x[H]-e.width,v*=s?1:-1)}var V,u=Object.assign({position:n},t&&Ea);return s?Object.assign({},u,((V={})[C]=g?"0":"",V[M]=p?"0":"",V.transform=(d.devicePixelRatio||1)<2?"translate("+v+"px, "+z+"px)":"translate3d("+v+"px, "+z+"px, 0)",V)):Object.assign({},u,((a={})[C]=g?z+"px":"",a[M]=p?v+"px":"",a.transform="",a))}var Da={left:"right",right:"left",bottom:"top",top:"bottom"};function Ra(c){return c.replace(/left|right|bottom|top/g,(function(c){return Da[c]}))}var Ga={start:"end",end:"start"};function Ta(c){return c.replace(/start|end/g,(function(c){return Ga[c]}))}function Wa(c,a){var l=a.getRootNode&&a.getRootNode();if(c.contains(a))return!0;if(l&&qc(l)){var e=a;do{if(e&&c.isSameNode(e))return!0;e=e.parentNode||e.host}while(e)}return!1}function Oa(c){return Object.assign({},c,{left:c.x,top:c.y,right:c.x+c.width,bottom:c.y+c.height})}function Xa(c,a){return a===Ca?Oa(function(c){var a=Pc(c),l=Kc(c),e=a.visualViewport,i=l.clientWidth,o=l.clientHeight,n=0,s=0;return e&&(i=e.width,o=e.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(n=e.offsetLeft,s=e.offsetTop)),{width:i,height:o,x:n+$c(c),y:s}}(c)):Yc(a)?function(c){var a=Xc(c);return a.top=a.top+c.clientTop,a.left=a.left+c.clientLeft,a.bottom=a.top+c.clientHeight,a.right=a.left+c.clientWidth,a.width=c.clientWidth,a.height=c.clientHeight,a.x=a.left,a.y=a.top,a}(a):Oa(function(c){var a,l=Kc(c),e=Jc(c),i=null==(a=c.ownerDocument)?void 0:a.body,o=Sa(l.scrollWidth,l.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),n=Sa(l.scrollHeight,l.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-e.scrollLeft+$c(c),t=-e.scrollTop;return"rtl"===ca(i||l).direction&&(s+=Sa(l.clientWidth,i?i.clientWidth:0)-o),{width:o,height:n,x:s,y:t}}(Kc(c)))}function Pa(c){return Object.assign({},{top:0,right:0,bottom:0,left:0},c)}function Ja(c,a){return a.reduce((function(a,l){return a[l]=c,a}),{})}function ja(c,a){void 0===a&&(a={});var l=a,e=l.placement,i=void 0===e?c.placement:e,o=l.boundary,n=void 0===o?"clippingParents":o,s=l.rootBoundary,t=void 0===s?Ca:s,h=l.elementContext,r=void 0===h?da:h,m=l.altBoundary,v=void 0!==m&&m,f=l.padding,z=void 0===f?0:f,p=Pa("number"!=typeof z?z:Ja(z,pa)),g=r===da?"reference":da,M=c.elements.reference,C=c.rects.popper,d=c.elements[v?g:r],x=function(c,a,l){var e="clippingParents"===a?function(c){var a=na(ia(c)),l=["absolute","fixed"].indexOf(ca(c).position)>=0&&Yc(c)?ha(c):c;return jc(l)?a.filter((function(c){return jc(c)&&Wa(c,l)&&"body"!==_c(c)})):[]}(c):[].concat(a),i=[].concat(e,[l]),o=i[0],n=i.reduce((function(a,l){var e=Xa(c,l);return a.top=Sa(e.top,a.top),a.right=Ia(e.right,a.right),a.bottom=Ia(e.bottom,a.bottom),a.left=Sa(e.left,a.left),a}),Xa(c,o));return n.width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}(jc(d)?d:d.contextElement||Kc(c.elements.popper),n,t),w=Xc(M),H=ya({reference:w,element:C,strategy:"absolute",placement:i}),V=Oa(Object.assign({},C,H)),u=r===da?V:w,L={top:x.top-u.top+p.top,bottom:u.bottom-x.bottom+p.bottom,left:x.left-u.left+p.left,right:u.right-x.right+p.right},b=c.modifiersData.offset;if(r===da&&b){var N=b[i];Object.keys(L).forEach((function(c){var a=[va,ma].indexOf(c)>=0?1:-1,l=[ra,ma].indexOf(c)>=0?"y":"x";L[c]+=N[l]*a}))}return L}const Ya={name:"flip",enabled:!0,phase:"main",fn:function(c){var a=c.state,l=c.options,e=c.name;if(!a.modifiersData[e]._skip){for(var i=l.mainAxis,o=void 0===i||i,n=l.altAxis,s=void 0===n||n,t=l.fallbackPlacements,h=l.padding,r=l.boundary,m=l.rootBoundary,v=l.altBoundary,f=l.flipVariations,z=void 0===f||f,p=l.allowedAutoPlacements,g=a.options.placement,M=Aa(g),C=t||(M!==g&&z?function(c){if(Aa(c)===za)return[];var a=Ra(c);return[Ta(c),a,Ta(a)]}(g):[Ra(g)]),d=[g].concat(C).reduce((function(c,l){return c.concat(Aa(l)===za?function(c,a){void 0===a&&(a={});var l=a,e=l.placement,i=l.boundary,o=l.rootBoundary,n=l.padding,s=l.flipVariations,t=l.allowedAutoPlacements,h=void 0===t?wa:t,r=Qa(e),m=r?s?xa:xa.filter((function(c){return Qa(c)===r})):pa,v=m.filter((function(c){return h.indexOf(c)>=0}));0===v.length&&(v=m);var f=v.reduce((function(a,l){return a[l]=ja(c,{placement:l,boundary:i,rootBoundary:o,padding:n})[Aa(l)],a}),{});return Object.keys(f).sort((function(c,a){return f[c]-f[a]}))}(a,{placement:l,boundary:r,rootBoundary:m,padding:h,flipVariations:z,allowedAutoPlacements:p}):l)}),[]),x=a.rects.reference,w=a.rects.popper,H=new Map,V=!0,u=d[0],L=0;L=0,Q=A?"width":"height",U=ja(a,{placement:b,boundary:r,rootBoundary:m,altBoundary:v,padding:h}),y=A?B?va:fa:B?ma:ra;x[Q]>w[Q]&&(y=Ra(y));var F=Ra(y),S=[];if(o&&S.push(U[N]<=0),s&&S.push(U[y]<=0,U[F]<=0),S.every((function(c){return c}))){u=b,V=!1;break}H.set(b,S)}if(V)for(var I=function(c){var a=d.find((function(a){var l=H.get(a);if(l)return l.slice(0,c).every((function(c){return c}))}));if(a)return u=a,"break"},k=z?3:1;k>0&&"break"!==I(k);k--);a.placement!==u&&(a.modifiersData[e]._skip=!0,a.placement=u,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function qa(c,a,l){return Sa(c,Ia(a,l))}function _a(c,a,l){return void 0===l&&(l={x:0,y:0}),{top:c.top-a.height-l.y,right:c.right-a.width+l.x,bottom:c.bottom-a.height+l.y,left:c.left-a.width-l.x}}function Ka(c){return[ra,va,ma,fa].some((function(a){return c[a]>=0}))}var $a=ba({defaultModifiers:[Ba,Fa,{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(c){var a=c.state,l=c.options,e=l.gpuAcceleration,i=void 0===e||e,o=l.adaptive,n=void 0===o||o,s=l.roundOffsets,t=void 0===s||s,h={placement:Aa(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:i};null!=a.modifiersData.popperOffsets&&(a.styles.popper=Object.assign({},a.styles.popper,Za(Object.assign({},h,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:n,roundOffsets:t})))),null!=a.modifiersData.arrow&&(a.styles.arrow=Object.assign({},a.styles.arrow,Za(Object.assign({},h,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:t})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(c){var a=c.state;Object.keys(a.elements).forEach((function(c){var l=a.styles[c]||{},e=a.attributes[c]||{},i=a.elements[c];Yc(i)&&_c(i)&&(Object.assign(i.style,l),Object.keys(e).forEach((function(c){var a=e[c];!1===a?i.removeAttribute(c):i.setAttribute(c,!0===a?"":a)})))}))},effect:function(c){var a=c.state,l={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,l.popper),a.styles=l,a.elements.arrow&&Object.assign(a.elements.arrow.style,l.arrow),function(){Object.keys(a.elements).forEach((function(c){var e=a.elements[c],i=a.attributes[c]||{},o=Object.keys(a.styles.hasOwnProperty(c)?a.styles[c]:l[c]).reduce((function(c,a){return c[a]="",c}),{});Yc(e)&&_c(e)&&(Object.assign(e.style,o),Object.keys(i).forEach((function(c){e.removeAttribute(c)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(c){var a=c.state,l=c.options,e=c.name,i=l.offset,o=void 0===i?[0,0]:i,n=wa.reduce((function(c,l){return c[l]=function(c,a,l){var e=Aa(c),i=[fa,ra].indexOf(e)>=0?-1:1,o="function"==typeof l?l(Object.assign({},a,{placement:c})):l,n=o[0],s=o[1];return n=n||0,s=(s||0)*i,[fa,va].indexOf(e)>=0?{x:s,y:n}:{x:n,y:s}}(l,a.rects,o),c}),{}),s=n[a.placement],t=s.x,h=s.y;null!=a.modifiersData.popperOffsets&&(a.modifiersData.popperOffsets.x+=t,a.modifiersData.popperOffsets.y+=h),a.modifiersData[e]=n}},Ya,{name:"preventOverflow",enabled:!0,phase:"main",fn:function(c){var a=c.state,l=c.options,e=c.name,i=l.mainAxis,o=void 0===i||i,n=l.altAxis,s=void 0!==n&&n,t=l.boundary,h=l.rootBoundary,r=l.altBoundary,m=l.padding,v=l.tether,f=void 0===v||v,z=l.tetherOffset,p=void 0===z?0:z,g=ja(a,{boundary:t,rootBoundary:h,padding:m,altBoundary:r}),M=Aa(a.placement),C=Qa(a.placement),d=!C,x=Ua(M),w="x"===x?"y":"x",H=a.modifiersData.popperOffsets,V=a.rects.reference,u=a.rects.popper,L="function"==typeof p?p(Object.assign({},a.rects,{placement:a.placement})):p,b={x:0,y:0};if(H){if(o||s){var N="y"===x?ra:fa,B="y"===x?ma:va,A="y"===x?"height":"width",Q=H[x],U=H[x]+g[N],y=H[x]-g[B],F=f?-u[A]/2:0,S=C===ga?V[A]:u[A],I=C===ga?-u[A]:-V[A],k=a.elements.arrow,E=f&&k?ea(k):{width:0,height:0},Z=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},D=Z[N],R=Z[B],G=qa(0,V[A],E[A]),T=d?V[A]/2-F-G-D-L:S-G-D-L,W=d?-V[A]/2+F+G+R+L:I+G+R+L,O=a.elements.arrow&&ha(a.elements.arrow),X=O?"y"===x?O.clientTop||0:O.clientLeft||0:0,P=a.modifiersData.offset?a.modifiersData.offset[a.placement][x]:0,J=H[x]+T-P-X,j=H[x]+W-P;if(o){var Y=qa(f?Ia(U,J):U,Q,f?Sa(y,j):y);H[x]=Y,b[x]=Y-Q}if(s){var q="x"===x?ra:fa,_="x"===x?ma:va,K=H[w],$=K+g[q],cc=K-g[_],ac=qa(f?Ia($,J):$,K,f?Sa(cc,j):cc);H[w]=ac,b[w]=ac-K}}a.modifiersData[e]=b}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(c){var a,l=c.state,e=c.name,i=c.options,o=l.elements.arrow,n=l.modifiersData.popperOffsets,s=Aa(l.placement),t=Ua(s),h=[fa,va].indexOf(s)>=0?"height":"width";if(o&&n){var r=function(c,a){return Pa("number"!=typeof(c="function"==typeof c?c(Object.assign({},a.rects,{placement:a.placement})):c)?c:Ja(c,pa))}(i.padding,l),m=ea(o),v="y"===t?ra:fa,f="y"===t?ma:va,z=l.rects.reference[h]+l.rects.reference[t]-n[t]-l.rects.popper[h],p=n[t]-l.rects.reference[t],g=ha(o),M=g?"y"===t?g.clientHeight||0:g.clientWidth||0:0,C=z/2-p/2,d=r[v],x=M-m[h]-r[f],w=M/2-m[h]/2+C,H=qa(d,w,x),V=t;l.modifiersData[e]=((a={})[V]=H,a.centerOffset=H-w,a)}},effect:function(c){var a=c.state,l=c.options.element,e=void 0===l?"[data-popper-arrow]":l;null!=e&&("string"!=typeof e||(e=a.elements.popper.querySelector(e)))&&Wa(a.elements.popper,e)&&(a.elements.arrow=e)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(c){var a=c.state,l=c.name,e=a.rects.reference,i=a.rects.popper,o=a.modifiersData.preventOverflow,n=ja(a,{elementContext:"reference"}),s=ja(a,{altBoundary:!0}),t=_a(n,e),h=_a(s,i,o),r=Ka(t),m=Ka(h);a.modifiersData[l]={referenceClippingOffsets:t,popperEscapeOffsets:h,isReferenceHidden:r,hasPopperEscaped:m},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":r,"data-popper-escaped":m})}}]});class cl{constructor(c,a,l){this.containerEl=a,this.owner=c,a.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),a.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),l.register([],"ArrowUp",(()=>(this.setSelectedItem(this.selectedItem-1,!0),!1))),l.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),l.register([],"Enter",(c=>(this.useSelectedItem(c),!1))),l.register([],"Tab",(c=>(this.useSelectedItem(c),!1)))}chooseSuggestion(c){if(!this.items||!this.items.length)return;const a=this.items[this.selectedItem];a&&this.owner.selectSuggestion(a,c)}onSuggestionClick(c,a){if(c.preventDefault(),!this.suggestions||!this.suggestions.length)return;const l=this.suggestions.indexOf(a);this.setSelectedItem(l,!1),this.useSelectedItem(c)}onSuggestionMouseover(c,a){if(!this.suggestions||!this.suggestions.length)return;const l=this.suggestions.indexOf(a);this.setSelectedItem(l,!1)}empty(){this.containerEl.empty()}setSuggestions(c){this.containerEl.empty();const a=[];c.forEach((c=>{const l=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(c,l),a.push(l)})),this.items=c,this.suggestions=a,this.setSelectedItem(0,!1)}useSelectedItem(c){if(!this.items||!this.items.length)return;const a=this.items[this.selectedItem];a&&this.owner.selectSuggestion(a,c),e.Platform.isMobile&&this.chooseSuggestion(c)}wrap(c,a){return(c%a+a)%a}setSelectedItem(c,a){const l=this.wrap(c,this.suggestions.length),e=this.suggestions[this.selectedItem],i=this.suggestions[l];e&&e.removeClass("is-selected"),i&&i.addClass("is-selected"),this.selectedItem=l,a&&i.scrollIntoView(!1)}}class al extends e.FuzzySuggestModal{constructor(c,a,l){super(c),this.items=[],this.scope=new e.Scope,this.emptyStateText="No match found",this.limit=100,this.inputEl=a,this.items=l,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new cl(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(c=>{c.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){const c=this.modifyInput(this.inputEl.value),a=this.getSuggestions(c);a.length>0?this.suggester.setSuggestions(a.slice(0,this.limit)):this.onNoSuggestion(),this.open()}modifyInput(c){return c}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),document.body.appendChild(this.suggestEl),this.popper=$a(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(c){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));let a=this.promptEl.createDiv("prompt-instruction");for(let l of c)a.appendChild(l)}}class ll extends al{constructor(c,a){super(c,a.inputEl,Sc),this.icons=Sc,this.text=a,this.createPrompts(),this.inputEl.addEventListener("input",this.getItem.bind(this))}createPrompts(){}getItem(){const c=this.inputEl.value,a=this.icons.find((a=>a.name===c.trim()));a!=this.icon&&(this.icon=a,this.icons&&this.onInputChanged())}getItemText(c){return c.name}onChooseItem(c){this.text.setValue(c.name),this.icon=c}selectSuggestion({item:c}){this.text.setValue(c.name),this.icon=c,this.onClose(),this.close()}renderSuggestion(c,a){let{item:l,match:e}=c||{},i=a.createDiv({cls:"suggestion-content admonition-icon"}),o=i.createDiv("suggestion-text admonition-text");if(!l)return i.setText(this.emptyStateText),void i.parentElement.addClass("is-selected");const n=e.matches.map((c=>createSpan("suggestion-highlight")));for(let c=0;ca[0]===c));if(a){let i=n[e.matches.indexOf(a)];o.appendChild(i),i.appendText(l.name.substring(a[0],a[1])),c+=a[1]-a[0]-1}else o.appendText(l.name[c])}const s=createDiv("suggestion-flair admonition-suggester-icon");s.appendChild(Ec(l)),i.appendChild(s),i.createDiv({cls:"suggestion-note",text:kc(l)})}getItems(){return this.icons}}class el extends al{constructor(c,a,l){super(c,a.inputEl,l),this.admonitions=[...l],this.text=a,this.createPrompts(),this.inputEl.addEventListener("input",this.getItem.bind(this))}createPrompts(){}getItem(){const c=this.inputEl.value,a=this.admonitions.find((a=>a.type===c.trim()));a!=this.admonition&&(this.admonition=a,this.admonitions&&this.onInputChanged())}getItemText(c){return c.type}onChooseItem(c){this.text.setValue(c.type),this.admonition=c}selectSuggestion({item:c}){this.text.setValue(c.type),this.onClose(),this.close()}renderSuggestion(c,a){let{item:l,match:e}=c||{},i=a.createDiv({cls:"suggestion-content icon"});if(!l)return i.setText(this.emptyStateText),void i.parentElement.addClass("is-selected");const o=e.matches.map((c=>createSpan("suggestion-highlight")));for(let c=0;ca[0]===c));if(a){let n=o[e.matches.indexOf(a)];i.appendChild(n),n.appendText(l.type.substring(a[0],a[1])),c+=a[1]-a[0]-1}else i.appendText(l.type[c])}const n=createDiv("suggestion-flair admonition-suggester-icon");n.appendChild(Ec(l.icon)).setAttribute("color",`rgb(${l.color})`),i.prepend(n)}getItems(){return this.admonitions}}class il extends e.Modal{constructor(c,a){super(c.app),this.plugin=c,this.editor=a,this.collapse=this.plugin.data.autoCollapse?this.plugin.data.defaultCollapseType:"none",this.containerEl.addClass("insert-admonition-modal"),this.onOpen=()=>this.display(!0)}display(c){return l(this,void 0,void 0,(function*(){const{contentEl:a}=this;let l;a.empty(),new e.Setting(a).setName("Admonition Type").addText((a=>{a.setPlaceholder("Admonition Type").setValue(this.type);const i=new el(this.app,a,this.plugin.admonitionArray),o=()=>{var c;a.inputEl.value&&this.plugin.admonitions[a.inputEl.value]?(this.type=a.inputEl.value,(null===(c=this.title)||void 0===c?void 0:c.length)||(this.title=this.type[0].toUpperCase()+this.type.slice(1).toLowerCase()),l.setValue(this.title)):(new e.Notice("No admonition type by that name exists."),a.inputEl.value=""),this.buildAdmonition()};a.inputEl.onblur=o,i.onClose=o,c&&(i.open(),a.inputEl.focus())})),new e.Setting(a).setName("Admonition Title").setDesc("Leave blank to render without a title.").addText((c=>{l=c,c.setValue(this.title),c.onChange((c=>{var a;if(this.title=c,0==c.length?this.noTitle=!0:this.noTitle=!1,this.element){const c=this.plugin.admonitions[this.type],l=Gc(this.type,this.title,c.icon,(null!==(a=c.injectColor)&&void 0!==a?a:this.plugin.data.injectColor)?c.color:null,this.collapse);l.createDiv({cls:"admonition-content",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),this.element.replaceWith(l),this.element=l}}))})),new e.Setting(a).setName("Make Collapsible").addDropdown((c=>{c.addOption("open","Open"),c.addOption("closed","Closed"),c.addOption("none","None"),c.setValue(this.collapse),c.onChange((c=>{this.collapse=c,this.buildAdmonition()}))})),this.admonitionEl=this.contentEl.createDiv(),this.buildAdmonition(),new e.Setting(a).addButton((c=>c.setButtonText("Insert").setCta().onClick((()=>{try{let c="",a="";this.title.length&&this.title.toLowerCase()!=this.type.toLowerCase()&&(c=`title: ${this.title}\n`),(this.plugin.data.autoCollapse&&this.collapse!=this.plugin.data.defaultCollapseType||!this.plugin.data.autoCollapse&&"none"!=this.collapse)&&(a=`collapse: ${this.collapse}\n`),this.editor.getDoc().replaceSelection(`\`\`\`ad-${this.type}\n${c}${a}\n${this.editor.getDoc().getSelection()}\n\n\`\`\`\n`);const l=this.editor.getCursor();this.editor.setCursor(l.line-3)}catch(c){new e.Notice("There was an issue inserting the admonition.")}this.close()})))).addExtraButton((c=>{c.setIcon("cross").setTooltip("Cancel").onClick((()=>this.close())),c.extraSettingsEl.setAttr("tabindex",0),c.extraSettingsEl.onkeydown=c=>{"Enter"==c.key&&this.close()}}))}))}buildAdmonition(){var c;if(this.admonitionEl.empty(),this.type&&this.plugin.admonitions[this.type]){const a=this.plugin.admonitions[this.type];this.element=Gc(this.type,this.title,a.icon,(null!==(c=a.injectColor)&&void 0!==c?c:this.plugin.data.injectColor)?a.color:null,this.collapse),this.element.createDiv({cls:"admonition-content",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),this.admonitionEl.appendChild(this.element)}}}const ol={"Admonition Settings":"Admonition Settings","Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.":"Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors."," Markdown Syntax Highlighting":" Markdown Syntax Highlighting","Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.":"Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk."," Sync Links to Metadata Cache":" Sync Links to Metadata Cache","Allows admonitions to be created using ":"Allows admonitions to be created using "," or ":" or ",", instead of using a code block.":", instead of using a code block."," Enable Non-codeblock Admonitions":" Enable Non-codeblock Admonitions","Collapsible by Default":"Collapsible by Default","All admonitions will be collapsible by default. Use ":"All admonitions will be collapsible by default. Use "," to prevent.":" to prevent.","Default Collapse Type":"Default Collapse Type","Collapsible admonitions will be either opened or closed.":"Collapsible admonitions will be either opened or closed.","Add Copy Button":"Add Copy Button","Add a 'copy content' button to admonitions.":"Add a 'copy content' button to admonitions.","Add New":"Add New","Add a new Admonition type.":"Add a new Admonition type.","Add Additional":"Add Additional","Register Commands":"Register Commands","Unregister Commands":"Unregister Commands",Edit:"Edit",Delete:"Delete","Admonition Type":"Admonition Type","Admonition Title":"Admonition Title","This will be the default title for this admonition type.":"This will be the default title for this admonition type.","Admonition type cannot be empty.":"Admonition type cannot be empty.","Admonition type cannot include spaces.":"Admonition type cannot include spaces.","Types must be a valid CSS selector.":"Types must be a valid CSS selector.","Invalid icon name.":"Invalid icon name.","Icon cannot be empty.":"Icon cannot be empty.","Upload Image":"Upload Image","There was an error parsing the image.":"There was an error parsing the image.","Admonition Icon":"Admonition Icon",Color:"Color",Save:"Save"},nl={ar:{},cs:{},da:{},de:{},en:ol,"en-gb":{},es:{},fr:{},hi:{},id:{},it:{},ja:{},ko:{},nl:{},nn:{},pl:{},pt:{},"pt-br":{},ro:{},ru:{},tr:{},"zh-cn":{"Admonition Settings":"Admonition 设置","Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.":"在 admonition 代码块中使用 Obsidian 的 markdown 系统级高亮。该设置为实验性,可能会引发错误"," Markdown Syntax Highlighting":" Markdown 系统高亮","Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.":"Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk."," Sync Links to Metadata Cache":" Sync Links to Metadata Cache","Allows admonitions to be created using ":"允许 admonitions 创建使用"," or ":"或",", instead of using a code block.":",而非代码块"," Enable Non-codeblock Admonitions":" 允许非代码块的 Admonitions","Collapsible by Default":"可折叠默认值","All admonitions will be collapsible by default. Use ":"所有的 admonitions 默认可折叠。使用"," to prevent.":" 来阻止。","Default Collapse Type":"默认可折叠类型","Collapsible admonitions will be either opened or closed.":"Collapsible admonitions 要么是 openede 要么是 closed","Add Copy Button":"添加复制按钮","Add a 'copy content' button to admonitions.":"为 admonitions 新增一个“复制内容”按钮。","Add New":"新增","Add a new Admonition type.":"添加一个新的 Admonition 类型。","Add Additional":"额外添加","Register Commands":"注册命令","Unregister Commands":"注销命令",Edit:"编辑",Delete:"删除","Admonition type cannot be empty.":"Admonition 类型不能为空。","Admonition type cannot include spaces.":"Admonition 类型不能包含空格","Admonition Type":"Admonition 类型","Types must be a valid CSS selector.":"类型必须为合法的 css 选择器。","Invalid icon name.":"非法图标名称","Icon cannot be empty.":"图标不能为空","Upload Image":"上传图像","There was an error parsing the image.":"上传图像时出错了。","Admonition Icon":"Admonition 图标",Color:"颜色",Save:"保存"},"zh-tw":{}}[e.moment.locale()];function sl(c){return nl&&nl[c]||ol[c]}const tl=(hl=document.createDocumentFragment(),c=>{try{hl.querySelector(c)}catch(c){return!1}return!0});var hl;class rl extends e.PluginSettingTab{constructor(c,a){super(c,a),this.plugin=a}display(){return l(this,void 0,void 0,(function*(){let{containerEl:c}=this;c.empty(),c.addClass("admonition-settings"),c.createEl("h2",{text:sl("Admonition Settings")});let a=new e.Setting(c).setDesc(sl("Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.")).addToggle((c=>{c.setValue(this.plugin.data.syntaxHighlight),c.onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.syntaxHighlight=c,c?this.plugin.turnOnSyntaxHighlighting():this.plugin.turnOffSyntaxHighlighting(),yield this.plugin.saveSettings()}))))})),i=a.nameEl.createDiv();i.appendChild(Uc.cloneNode(!0)),i.appendChild(createSpan({text:sl(" Markdown Syntax Highlighting")}));let o=new e.Setting(c).setDesc(sl("Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.")).addToggle((c=>{c.setValue(this.plugin.data.syncLinks).onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.syncLinks=c,this.display(),yield this.plugin.saveSettings()}))))})),n=o.nameEl.createDiv();n.appendChild(Uc.cloneNode(!0)),n.appendChild(createSpan({text:sl(" Sync Links to Metadata Cache")}));let s=new e.Setting(c).addToggle((c=>{c.setValue(this.plugin.data.enableMarkdownProcessor).onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.enableMarkdownProcessor=c,c?this.plugin.enableMarkdownProcessor():this.plugin.disableMarkdownProcessor(),this.display(),yield this.plugin.saveSettings()}))))}));s.descEl.createSpan({text:sl("Allows admonitions to be created using ")}),s.descEl.createEl("code",{text:"!!! ad-"}),s.descEl.createSpan({text:sl(" or ")}),s.descEl.createEl("code",{text:"??? ad-"}),s.descEl.createSpan({text:sl(", instead of using a code block.")});let t=s.nameEl.createDiv();t.appendChild(Uc.cloneNode(!0)),t.appendChild(createSpan({text:sl(" Enable Non-codeblock Admonitions")})),new e.Setting(c).setName("Generate JS for Publish").setDesc(createFragment((c=>{c.createSpan({text:"Generate a javascript file to place in your "}),c.createEl("code",{text:"publish.js"}),c.createSpan({text:"file."}),c.createEl("br"),c.createEl("strong",{text:"Please note that this can only be done on self-hosted publish sites."})}))).addButton((c=>{c.setButtonText("Generate"),c.onClick((c=>{const a={};for(let c in this.plugin.admonitions){const l=this.plugin.admonitions[c];a[c]={icon:Ec(l.icon).outerHTML,color:l.color}}const l='(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === \'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === \'function\' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === \'object\' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t"use strict";\n/******/ \t// The require scope\n/******/ \tvar __webpack_require__ = {};\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== \'undefined\' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: \'Module\' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, \'__esModule\', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n__webpack_require__.r(__webpack_exports__);\n\nfunction createEl(tag, t, e) {\n const i = document.createElement(tag);\n "string" == typeof t &&\n (t = {\n cls: t\n });\n const r = t || {}, o = r.cls, s = r.text, a = r.attr, l = r.title, c = r.value, u = r.type, h = e ? e : r.parent, p = r.prepend, d = r.href;\n return (o &&\n (Array.isArray(o)\n ? (i.className = o.join(" "))\n : (i.className = o)),\n s && (i.textContent = s),\n a &&\n Object.keys(a).forEach((t) => {\n const n = a[t];\n null !== n && i.setAttribute(t, String(n));\n }),\n l && (i.title = l),\n c &&\n (i instanceof HTMLInputElement ||\n i instanceof HTMLSelectElement ||\n i instanceof HTMLOptionElement) &&\n (i.value = c),\n /* u && i instanceof HTMLInputElement && (i.type = u), */\n u && i instanceof HTMLStyleElement && i.setAttribute("type", u),\n d &&\n (i instanceof HTMLAnchorElement || i instanceof HTMLLinkElement) &&\n (i.href = d),\n h && (p ? h.insertBefore(i, h.firstChild) : h.appendChild(i)),\n i);\n}\n//@ts-ignore-line\nconst createDiv = function (o, e) {\n return createEl("div", o, e);\n};\nNode.prototype.createDiv = function (o, cb) {\n return createDiv(o, this);\n};\nNode.prototype.createEl = function (tag, o, cb) {\n return createEl(tag, o, this);\n};\nElement.prototype.addClass = function (...args) {\n const e = [];\n for (let t = 0; t < args.length; t++)\n e[t] = args[t];\n this.addClasses(e);\n};\nElement.prototype.addClasses = function (e) {\n for (let t = 0; t < e.length; t++)\n this.classList.add(e[t]);\n};\nfunction getAdmonitionElement(type, title, icon, color, collapse, id) {\n var _a;\n let admonition, titleEl, attrs = {\n style: `--admonition-color: ${color};`\n };\n if (collapse && collapse != "none") {\n if (collapse === "open") {\n attrs.open = "open";\n }\n admonition = createEl("details", {\n cls: `admonition admonition-${type} admonition-plugin`,\n attr: attrs\n });\n titleEl = admonition.createEl("summary", {\n cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}`\n });\n }\n else {\n admonition = createDiv({\n cls: `admonition admonition-${type} admonition-plugin`,\n attr: attrs\n });\n titleEl = admonition.createDiv({\n cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}`\n });\n }\n if (id) {\n admonition.id = id;\n }\n if (title && title.trim().length) {\n /**\n * Title structure\n * .admonition-title\n * .admonition-title-content - Rendered Markdown top-level element (e.g. H1/2/3 etc, p)\n * div.admonition-title-icon\n * svg\n * div.admonition-title-markdown - Container of rendered markdown\n * ...rendered markdown children...\n */\n //get markdown\n const markdownHolder = createDiv();\n //MarkdownRenderer.renderMarkdown(title, markdownHolder, "", null);\n //admonition-title-content is first child of rendered markdown\n const admonitionTitleContent = \n /* markdownHolder?.children[0]?.tagName === "P"\n ? createDiv()\n : markdownHolder.children[0] ?? */ createDiv();\n //get children of markdown element, then remove them\n const markdownElements = Array.from(((_a = markdownHolder.children[0]) === null || _a === void 0 ? void 0 : _a.childNodes) || []);\n admonitionTitleContent.innerHTML = "";\n admonitionTitleContent.addClass("admonition-title-content");\n //build icon element\n const iconEl = admonitionTitleContent.createDiv("admonition-title-icon");\n if (icon) {\n iconEl.innerHTML = icon;\n }\n //add markdown children back\n const admonitionTitleMarkdown = admonitionTitleContent.createDiv("admonition-title-markdown");\n admonitionTitleMarkdown.innerText = title;\n /* for (let i = 0; i < markdownElements.length; i++) {\n admonitionTitleMarkdown.appendChild(markdownElements[i]);\n } */\n titleEl.appendChild(admonitionTitleContent || createDiv());\n }\n //add them to title element\n if (collapse) {\n titleEl.createDiv("collapser").createDiv("handle");\n }\n return admonition;\n}\nfunction startsWithAny(str, needles) {\n for (let i = 0; i < needles.length; i++) {\n if (str.startsWith(needles[i])) {\n return i;\n }\n }\n return false;\n}\nfunction getParametersFromSource(type, src) {\n const keywordTokens = ["title:", "collapse:", "icon:", "color:"];\n const keywords = ["title", "collapse", "icon", "color"];\n let lines = src.split("\\n");\n let skipLines = 0;\n let params = {};\n for (let i = 0; i < lines.length; i++) {\n let keywordIndex = startsWithAny(lines[i], keywordTokens);\n if (keywordIndex === false) {\n break;\n }\n let foundKeyword = keywords[keywordIndex];\n if (params[foundKeyword] !== undefined) {\n break;\n }\n params[foundKeyword] = lines[i]\n .substr(keywordTokens[keywordIndex].length)\n .trim();\n ++skipLines;\n }\n let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, icon, color } = params;\n let content = lines.slice(skipLines).join("\\n");\n /**\n * If the admonition should collapse, but something other than open or closed was provided, set to closed.\n */\n if (collapse !== undefined &&\n collapse !== "none" &&\n collapse !== "open" &&\n collapse !== "closed") {\n collapse = "closed";\n }\n /**\n * If the admonition should collapse, but title was blanked, set the default title.\n */\n if (title.trim() === "" && collapse !== undefined && collapse !== "none") {\n title = type[0].toUpperCase() + type.slice(1).toLowerCase();\n return;\n }\n return { title, collapse, content, icon, color };\n}\nconst blockSet = new Set();\nconst ADMONITION_ICON_MAP = {};\nif (document.readyState === "complete") {\n postprocess();\n registerToProcess();\n}\nelse {\n window.onload = () => {\n postprocess();\n registerToProcess();\n };\n}\nfunction registerToProcess() {\n const sizer = document.querySelector(".markdown-preview-sizer");\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type == "childList" && mutation.addedNodes.length) {\n mutation.addedNodes.forEach((node) => {\n var _a;\n if (node &&\n node instanceof Element &&\n node.children.length &&\n ((_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.tagName) === "PRE") {\n //postprocess(node);\n preObserver.observe(node.firstChild, {\n attributes: true,\n childList: false,\n characterData: false,\n subtree: false\n });\n }\n });\n }\n });\n });\n observer.observe(sizer, {\n attributes: false,\n childList: true,\n subtree: false\n });\n const preObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof HTMLPreElement &&\n !blockSet.has(mutation.target) &&\n mutation.type === "attributes" &&\n mutation.attributeName === "class" &&\n Array.from(mutation.target.classList).some((cls) => /language-ad-(\\w+)/.test(cls))) {\n blockSet.add(mutation.target);\n processAdmonitionBlock(mutation.target);\n }\n });\n });\n}\nfunction processAdmonitionBlock(admonitionBlock) {\n const [, type] = admonitionBlock.classList\n .toString()\n .match(/language-ad-(\\w+)/);\n if (!type)\n return;\n if (!(type in ADMONITION_ICON_MAP))\n return;\n let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText);\n let admonition = getAdmonitionElement(type, title, icon, color, collapse);\n const contentHolder = admonition.createDiv("admonition-content-holder");\n const admonitionContent = contentHolder.createDiv("admonition-content");\n admonitionContent.innerText = content;\n admonitionBlock.replaceWith(admonition);\n}\nfunction postprocess() {\n //do work\n const admonitions = document.querySelectorAll("pre[class*=\'language-ad\']");\n if (!admonitions.length)\n return;\n for (let admonitionBlock of Array.from(admonitions)) {\n blockSet.add(admonitionBlock);\n const [, type] = admonitionBlock.classList\n .toString()\n .match(/language-ad-(\\w+)/);\n if (!type)\n continue;\n if (!(type in ADMONITION_ICON_MAP))\n continue;\n let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText);\n let admonition = getAdmonitionElement(type, title, icon, color, collapse);\n const contentHolder = admonition.createDiv("admonition-content-holder");\n const admonitionContent = contentHolder.createDiv("admonition-content");\n admonitionContent.innerText = content;\n admonitionBlock.replaceWith(admonition);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5hZG1vbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGlzaC5hZG1vbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsU0FBUyxRQUFRLENBQ2IsR0FBTSxFQUNOLENBQTJCLEVBQzNCLENBQWU7SUFFZixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEdBQUc7WUFDRCxHQUFHLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQ1QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFDYixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLE9BQU8sQ0FDSCxDQUFDO1FBQ0csQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7WUFDRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUM7UUFDTixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNsQixDQUFDO1lBQ0csQ0FBQyxDQUFDLFlBQVksZ0JBQWdCO2dCQUMxQixDQUFDLFlBQVksaUJBQWlCO2dCQUM5QixDQUFDLFlBQVksaUJBQWlCLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNqQix5REFBeUQ7UUFDekQsQ0FBQyxJQUFJLENBQUMsWUFBWSxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztZQUNHLENBQUMsQ0FBQyxZQUFZLGlCQUFpQixJQUFJLENBQUMsWUFBWSxlQUFlLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQ0osQ0FBQztBQUNOLENBQUM7QUFDRCxpQkFBaUI7QUFDakIsTUFBTSxTQUFTLEdBQUcsVUFDZCxDQUEyQixFQUMzQixDQUFlO0lBRWYsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUN2QixDQUEyQixFQUMzQixFQUFpQztJQUVqQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFDdEIsR0FBTSxFQUNOLENBQTJCLEVBQzNCLEVBQTJDO0lBRTNDLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBRUYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxHQUFHLElBQUk7SUFDMUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1FBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7UUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFRixTQUFTLG9CQUFvQixDQUN6QixJQUFZLEVBQ1osS0FBYSxFQUNiLElBQVksRUFDWixLQUFhLEVBQ2IsUUFBaUIsRUFDakIsRUFBVzs7SUFFWCxJQUFJLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxHQUFxQztRQUN0QyxLQUFLLEVBQUUsdUJBQXVCLEtBQUssR0FBRztLQUN6QyxDQUFDO0lBQ04sSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRTtRQUNoQyxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7WUFDckIsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFDRCxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUM3QixHQUFHLEVBQUUseUJBQXlCLElBQUksb0JBQW9CO1lBQ3RELElBQUksRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQ3JDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLEdBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1NBQ3JFLENBQUMsQ0FBQztLQUNOO1NBQU07UUFDSCxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQ25CLEdBQUcsRUFBRSx5QkFBeUIsSUFBSSxvQkFBb0I7WUFDdEQsSUFBSSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUMzQixHQUFHLEVBQUUsb0JBQW9CLENBQUMsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtTQUNyRSxDQUFDLENBQUM7S0FDTjtJQUVELElBQUksRUFBRSxFQUFFO1FBQ0osVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDdEI7SUFFRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1FBQzlCOzs7Ozs7OztXQVFHO1FBRUgsY0FBYztRQUNkLE1BQU0sY0FBYyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ25DLG1FQUFtRTtRQUVuRSw4REFBOEQ7UUFFOUQsTUFBTSxzQkFBc0I7UUFDeEI7O3VDQUUrQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWhELG9EQUFvRDtRQUNwRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQy9CLENBQUEsTUFBQSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxVQUFVLEtBQUksRUFBRSxDQUMvQyxDQUFDO1FBQ0Ysc0JBQXNCLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUU1RCxvQkFBb0I7UUFDcEIsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUMzQyx1QkFBdUIsQ0FDMUIsQ0FBQztRQUNGLElBQUksSUFBSSxFQUFFO1lBQ04sTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSx1QkFBdUIsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQzVELDJCQUEyQixDQUM5QixDQUFDO1FBQ0YsdUJBQXVCLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMxQzs7WUFFSTtRQUNKLE9BQU8sQ0FBQyxXQUFXLENBQUMsc0JBQXNCLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQztLQUM5RDtJQUVELDJCQUEyQjtJQUUzQixJQUFJLFFBQVEsRUFBRTtRQUNWLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3REO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFpQjtJQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxDQUFDLENBQUM7U0FDWjtLQUNKO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDdEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVqRSxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXhELElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFNUIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLElBQUksTUFBTSxHQUE0QixFQUFFLENBQUM7SUFFekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxZQUFZLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUxRCxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUU7WUFDeEIsTUFBTTtTQUNUO1FBRUQsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNwQyxNQUFNO1NBQ1Q7UUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMxQixNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQzthQUMxQyxJQUFJLEVBQUUsQ0FBQztRQUNaLEVBQUUsU0FBUyxDQUFDO0tBQ2Y7SUFFRCxJQUFJLEVBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUMzRCxRQUFRLEVBQ1IsSUFBSSxFQUNKLEtBQUssRUFDUixHQUFHLE1BQU0sQ0FBQztJQUVYLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhEOztPQUVHO0lBQ0gsSUFDSSxRQUFRLEtBQUssU0FBUztRQUN0QixRQUFRLEtBQUssTUFBTTtRQUNuQixRQUFRLEtBQUssTUFBTTtRQUNuQixRQUFRLEtBQUssUUFBUSxFQUN2QjtRQUNFLFFBQVEsR0FBRyxRQUFRLENBQUM7S0FDdkI7SUFFRDs7T0FFRztJQUNILElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7UUFDdEUsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVELE9BQU87S0FDVjtJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDckQsQ0FBQztBQU9ELE1BQU0sUUFBUSxHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hELE1BQU0sbUJBQW1CLEdBRXJCLEVBQUUsQ0FBQztBQUNQLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7SUFDcEMsV0FBVyxFQUFFLENBQUM7SUFDZCxpQkFBaUIsRUFBRSxDQUFDO0NBQ3ZCO0tBQU07SUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUNqQixXQUFXLEVBQUUsQ0FBQztRQUNkLGlCQUFpQixFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0NBQ0w7QUFFRCxTQUFTLGlCQUFpQjtJQUN0QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ2hELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksV0FBVyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUM1RCxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFOztvQkFDakMsSUFDSSxJQUFJO3dCQUNKLElBQUksWUFBWSxPQUFPO3dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07d0JBQ3BCLENBQUEsTUFBQSxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLE9BQU8sTUFBSyxLQUFLLEVBQzNDO3dCQUNFLG9CQUFvQjt3QkFDcEIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFOzRCQUNqQyxVQUFVLEVBQUUsSUFBSTs0QkFDaEIsU0FBUyxFQUFFLEtBQUs7NEJBQ2hCLGFBQWEsRUFBRSxLQUFLOzRCQUNwQixPQUFPLEVBQUUsS0FBSzt5QkFDakIsQ0FBQyxDQUFDO3FCQUNOO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDcEIsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLElBQUk7UUFDZixPQUFPLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQUM7SUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDbkQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzNCLElBQ0ksUUFBUSxDQUFDLE1BQU0sWUFBWSxjQUFjO2dCQUN6QyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZO2dCQUM5QixRQUFRLENBQUMsYUFBYSxLQUFLLE9BQU87Z0JBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUMvQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ2hDLEVBQ0g7Z0JBQ0UsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMzQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxlQUErQjtJQUMzRCxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsU0FBUztTQUNyQyxRQUFRLEVBQUU7U0FDVixLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNoQyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU87SUFDbEIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLG1CQUFtQixDQUFDO1FBQUUsT0FBTztJQUUzQyxJQUFJLEVBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUMzRCxRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQ3JDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQzFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3RCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRXhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhFLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFFdEMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxXQUFXO0lBQ2hCLFNBQVM7SUFDVCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQ3pDLDJCQUEyQixDQUM5QixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO1FBQUUsT0FBTztJQUVoQyxLQUFLLElBQUksZUFBZSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDakQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsU0FBUzthQUNyQyxRQUFRLEVBQUU7YUFDVixLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSTtZQUFFLFNBQVM7UUFDcEIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLG1CQUFtQixDQUFDO1lBQUUsU0FBUztRQUU3QyxJQUFJLEVBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUMzRCxRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQ3JDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQzFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FDakMsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLFFBQVEsQ0FDWCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhFLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFFdEMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi9hc3NldHMvbWFpbi5jc3NcIjtcblxuZnVuY3Rpb24gY3JlYXRlRWw8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG4gICAgdGFnOiBLLFxuICAgIHQ/OiBzdHJpbmcgfCBEb21FbGVtZW50SW5mbyxcbiAgICBlPzogSFRNTEVsZW1lbnRcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gICAgY29uc3QgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmXG4gICAgICAgICh0ID0ge1xuICAgICAgICAgICAgY2xzOiB0XG4gICAgICAgIH0pO1xuICAgIGNvbnN0IHIgPSB0IHx8IHt9LFxuICAgICAgICBvID0gci5jbHMsXG4gICAgICAgIHMgPSByLnRleHQsXG4gICAgICAgIGEgPSByLmF0dHIsXG4gICAgICAgIGwgPSByLnRpdGxlLFxuICAgICAgICBjID0gci52YWx1ZSxcbiAgICAgICAgdSA9IHIudHlwZSxcbiAgICAgICAgaCA9IGUgPyBlIDogci5wYXJlbnQsXG4gICAgICAgIHAgPSByLnByZXBlbmQsXG4gICAgICAgIGQgPSByLmhyZWY7XG4gICAgcmV0dXJuIChcbiAgICAgICAgbyAmJlxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkobylcbiAgICAgICAgICAgICAgICA/IChpLmNsYXNzTmFtZSA9IG8uam9pbihcIiBcIikpXG4gICAgICAgICAgICAgICAgOiAoaS5jbGFzc05hbWUgPSBvKSksXG4gICAgICAgIHMgJiYgKGkudGV4dENvbnRlbnQgPSBzKSxcbiAgICAgICAgYSAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoYSkuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBhW3RdO1xuICAgICAgICAgICAgICAgIG51bGwgIT09IG4gJiYgaS5zZXRBdHRyaWJ1dGUodCwgU3RyaW5nKG4pKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBsICYmIChpLnRpdGxlID0gbCksXG4gICAgICAgIGMgJiZcbiAgICAgICAgICAgIChpIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MT3B0aW9uRWxlbWVudCkgJiZcbiAgICAgICAgICAgIChpLnZhbHVlID0gYyksXG4gICAgICAgIC8qIHUgJiYgaSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgKGkudHlwZSA9IHUpLCAqL1xuICAgICAgICB1ICYmIGkgaW5zdGFuY2VvZiBIVE1MU3R5bGVFbGVtZW50ICYmIGkuc2V0QXR0cmlidXRlKFwidHlwZVwiLCB1KSxcbiAgICAgICAgZCAmJlxuICAgICAgICAgICAgKGkgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCB8fCBpIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSAmJlxuICAgICAgICAgICAgKGkuaHJlZiA9IGQpLFxuICAgICAgICBoICYmIChwID8gaC5pbnNlcnRCZWZvcmUoaSwgaC5maXJzdENoaWxkKSA6IGguYXBwZW5kQ2hpbGQoaSkpLFxuICAgICAgICBpXG4gICAgKTtcbn1cbi8vQHRzLWlnbm9yZS1saW5lXG5jb25zdCBjcmVhdGVEaXYgPSBmdW5jdGlvbiAoXG4gICAgbz86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxuICAgIGU/OiBIVE1MRWxlbWVudFxuKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiBjcmVhdGVFbChcImRpdlwiLCBvLCBlKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLmNyZWF0ZURpdiA9IGZ1bmN0aW9uIChcbiAgICBvPzogc3RyaW5nIHwgRG9tRWxlbWVudEluZm8sXG4gICAgY2I/OiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkXG4pOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgcmV0dXJuIGNyZWF0ZURpdihvLCB0aGlzKTtcbn07XG5Ob2RlLnByb3RvdHlwZS5jcmVhdGVFbCA9IGZ1bmN0aW9uIDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgICB0YWc6IEssXG4gICAgbz86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxuICAgIGNiPzogKGVsOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS10pID0+IHZvaWRcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsKHRhZywgbywgdGhpcyk7XG59O1xuXG5FbGVtZW50LnByb3RvdHlwZS5hZGRDbGFzcyA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgY29uc3QgZSA9IFtdO1xuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgYXJncy5sZW5ndGg7IHQrKykgZVt0XSA9IGFyZ3NbdF07XG4gICAgdGhpcy5hZGRDbGFzc2VzKGUpO1xufTtcblxuRWxlbWVudC5wcm90b3R5cGUuYWRkQ2xhc3NlcyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgZm9yIChsZXQgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCsrKSB0aGlzLmNsYXNzTGlzdC5hZGQoZVt0XSk7XG59O1xuXG5mdW5jdGlvbiBnZXRBZG1vbml0aW9uRWxlbWVudChcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBpY29uOiBzdHJpbmcsXG4gICAgY29sb3I6IHN0cmluZyxcbiAgICBjb2xsYXBzZT86IHN0cmluZyxcbiAgICBpZD86IHN0cmluZ1xuKTogSFRNTEVsZW1lbnQge1xuICAgIGxldCBhZG1vbml0aW9uLFxuICAgICAgICB0aXRsZUVsLFxuICAgICAgICBhdHRyczogeyBzdHlsZTogc3RyaW5nOyBvcGVuPzogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICBzdHlsZTogYC0tYWRtb25pdGlvbi1jb2xvcjogJHtjb2xvcn07YFxuICAgICAgICB9O1xuICAgIGlmIChjb2xsYXBzZSAmJiBjb2xsYXBzZSAhPSBcIm5vbmVcIikge1xuICAgICAgICBpZiAoY29sbGFwc2UgPT09IFwib3BlblwiKSB7XG4gICAgICAgICAgICBhdHRycy5vcGVuID0gXCJvcGVuXCI7XG4gICAgICAgIH1cbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uIGFkbW9uaXRpb24tJHt0eXBlfSBhZG1vbml0aW9uLXBsdWdpbmAsXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xuICAgICAgICB9KTtcbiAgICAgICAgdGl0bGVFbCA9IGFkbW9uaXRpb24uY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZURpdih7XG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uIGFkbW9uaXRpb24tJHt0eXBlfSBhZG1vbml0aW9uLXBsdWdpbmAsXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xuICAgICAgICB9KTtcbiAgICAgICAgdGl0bGVFbCA9IGFkbW9uaXRpb24uY3JlYXRlRGl2KHtcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlkKSB7XG4gICAgICAgIGFkbW9uaXRpb24uaWQgPSBpZDtcbiAgICB9XG5cbiAgICBpZiAodGl0bGUgJiYgdGl0bGUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGl0bGUgc3RydWN0dXJlXG4gICAgICAgICAqIDxkaXZ8c3VtbWFyeT4uYWRtb25pdGlvbi10aXRsZVxuICAgICAgICAgKiAgICAgIDxlbGVtZW50Pi5hZG1vbml0aW9uLXRpdGxlLWNvbnRlbnQgLSBSZW5kZXJlZCBNYXJrZG93biB0b3AtbGV2ZWwgZWxlbWVudCAoZS5nLiBIMS8yLzMgZXRjLCBwKVxuICAgICAgICAgKiAgICAgICAgICBkaXYuYWRtb25pdGlvbi10aXRsZS1pY29uXG4gICAgICAgICAqICAgICAgICAgICAgICBzdmdcbiAgICAgICAgICogICAgICAgICAgZGl2LmFkbW9uaXRpb24tdGl0bGUtbWFya2Rvd24gLSBDb250YWluZXIgb2YgcmVuZGVyZWQgbWFya2Rvd25cbiAgICAgICAgICogICAgICAgICAgICAgIC4uLnJlbmRlcmVkIG1hcmtkb3duIGNoaWxkcmVuLi4uXG4gICAgICAgICAqL1xuXG4gICAgICAgIC8vZ2V0IG1hcmtkb3duXG4gICAgICAgIGNvbnN0IG1hcmtkb3duSG9sZGVyID0gY3JlYXRlRGl2KCk7XG4gICAgICAgIC8vTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bih0aXRsZSwgbWFya2Rvd25Ib2xkZXIsIFwiXCIsIG51bGwpO1xuXG4gICAgICAgIC8vYWRtb25pdGlvbi10aXRsZS1jb250ZW50IGlzIGZpcnN0IGNoaWxkIG9mIHJlbmRlcmVkIG1hcmtkb3duXG5cbiAgICAgICAgY29uc3QgYWRtb25pdGlvblRpdGxlQ29udGVudCA9XG4gICAgICAgICAgICAvKiBtYXJrZG93bkhvbGRlcj8uY2hpbGRyZW5bMF0/LnRhZ05hbWUgPT09IFwiUFwiXG4gICAgICAgID8gY3JlYXRlRGl2KClcbiAgICAgICAgOiBtYXJrZG93bkhvbGRlci5jaGlsZHJlblswXSA/PyAgKi8gY3JlYXRlRGl2KCk7XG5cbiAgICAgICAgLy9nZXQgY2hpbGRyZW4gb2YgbWFya2Rvd24gZWxlbWVudCwgdGhlbiByZW1vdmUgdGhlbVxuICAgICAgICBjb25zdCBtYXJrZG93bkVsZW1lbnRzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG1hcmtkb3duSG9sZGVyLmNoaWxkcmVuWzBdPy5jaGlsZE5vZGVzIHx8IFtdXG4gICAgICAgICk7XG4gICAgICAgIGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgYWRtb25pdGlvblRpdGxlQ29udGVudC5hZGRDbGFzcyhcImFkbW9uaXRpb24tdGl0bGUtY29udGVudFwiKTtcblxuICAgICAgICAvL2J1aWxkIGljb24gZWxlbWVudFxuICAgICAgICBjb25zdCBpY29uRWwgPSBhZG1vbml0aW9uVGl0bGVDb250ZW50LmNyZWF0ZURpdihcbiAgICAgICAgICAgIFwiYWRtb25pdGlvbi10aXRsZS1pY29uXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIGljb25FbC5pbm5lckhUTUwgPSBpY29uO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9hZGQgbWFya2Rvd24gY2hpbGRyZW4gYmFja1xuICAgICAgICBjb25zdCBhZG1vbml0aW9uVGl0bGVNYXJrZG93biA9IGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuY3JlYXRlRGl2KFxuICAgICAgICAgICAgXCJhZG1vbml0aW9uLXRpdGxlLW1hcmtkb3duXCJcbiAgICAgICAgKTtcbiAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uaW5uZXJUZXh0ID0gdGl0bGU7XG4gICAgICAgIC8qIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya2Rvd25FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uYXBwZW5kQ2hpbGQobWFya2Rvd25FbGVtZW50c1tpXSk7XG4gICAgICAgIH0gKi9cbiAgICAgICAgdGl0bGVFbC5hcHBlbmRDaGlsZChhZG1vbml0aW9uVGl0bGVDb250ZW50IHx8IGNyZWF0ZURpdigpKTtcbiAgICB9XG5cbiAgICAvL2FkZCB0aGVtIHRvIHRpdGxlIGVsZW1lbnRcblxuICAgIGlmIChjb2xsYXBzZSkge1xuICAgICAgICB0aXRsZUVsLmNyZWF0ZURpdihcImNvbGxhcHNlclwiKS5jcmVhdGVEaXYoXCJoYW5kbGVcIik7XG4gICAgfVxuICAgIHJldHVybiBhZG1vbml0aW9uO1xufVxuZnVuY3Rpb24gc3RhcnRzV2l0aEFueShzdHI6IHN0cmluZywgbmVlZGxlczogc3RyaW5nW10pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHN0ci5zdGFydHNXaXRoKG5lZWRsZXNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZTogc3RyaW5nLCBzcmM6IHN0cmluZykge1xuICAgIGNvbnN0IGtleXdvcmRUb2tlbnMgPSBbXCJ0aXRsZTpcIiwgXCJjb2xsYXBzZTpcIiwgXCJpY29uOlwiLCBcImNvbG9yOlwiXTtcblxuICAgIGNvbnN0IGtleXdvcmRzID0gW1widGl0bGVcIiwgXCJjb2xsYXBzZVwiLCBcImljb25cIiwgXCJjb2xvclwiXTtcblxuICAgIGxldCBsaW5lcyA9IHNyYy5zcGxpdChcIlxcblwiKTtcblxuICAgIGxldCBza2lwTGluZXMgPSAwO1xuXG4gICAgbGV0IHBhcmFtczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGtleXdvcmRJbmRleCA9IHN0YXJ0c1dpdGhBbnkobGluZXNbaV0sIGtleXdvcmRUb2tlbnMpO1xuXG4gICAgICAgIGlmIChrZXl3b3JkSW5kZXggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmb3VuZEtleXdvcmQgPSBrZXl3b3Jkc1trZXl3b3JkSW5kZXhdO1xuXG4gICAgICAgIGlmIChwYXJhbXNbZm91bmRLZXl3b3JkXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcmFtc1tmb3VuZEtleXdvcmRdID0gbGluZXNbaV1cbiAgICAgICAgICAgIC5zdWJzdHIoa2V5d29yZFRva2Vuc1trZXl3b3JkSW5kZXhdLmxlbmd0aClcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgICAgICsrc2tpcExpbmVzO1xuICAgIH1cblxuICAgIGxldCB7XG4gICAgICAgIHRpdGxlID0gdHlwZVswXS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBjb2xsYXBzZSxcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3JcbiAgICB9ID0gcGFyYW1zO1xuXG4gICAgbGV0IGNvbnRlbnQgPSBsaW5lcy5zbGljZShza2lwTGluZXMpLmpvaW4oXCJcXG5cIik7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgYWRtb25pdGlvbiBzaG91bGQgY29sbGFwc2UsIGJ1dCBzb21ldGhpbmcgb3RoZXIgdGhhbiBvcGVuIG9yIGNsb3NlZCB3YXMgcHJvdmlkZWQsIHNldCB0byBjbG9zZWQuXG4gICAgICovXG4gICAgaWYgKFxuICAgICAgICBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGNvbGxhcHNlICE9PSBcIm5vbmVcIiAmJlxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJvcGVuXCIgJiZcbiAgICAgICAgY29sbGFwc2UgIT09IFwiY2xvc2VkXCJcbiAgICApIHtcbiAgICAgICAgY29sbGFwc2UgPSBcImNsb3NlZFwiO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHRoZSBhZG1vbml0aW9uIHNob3VsZCBjb2xsYXBzZSwgYnV0IHRpdGxlIHdhcyBibGFua2VkLCBzZXQgdGhlIGRlZmF1bHQgdGl0bGUuXG4gICAgICovXG4gICAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gXCJcIiAmJiBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmIGNvbGxhcHNlICE9PSBcIm5vbmVcIikge1xuICAgICAgICB0aXRsZSA9IHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB7IHRpdGxlLCBjb2xsYXBzZSwgY29udGVudCwgaWNvbiwgY29sb3IgfTtcbn1cblxuaW50ZXJmYWNlIEFkbW9uaXRpb25QdWJsaXNoRGVmaW5pdGlvbiB7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGNvbG9yOiBzdHJpbmc7XG59XG5cbmNvbnN0IGJsb2NrU2V0OiBTZXQ8SFRNTFByZUVsZW1lbnQ+ID0gbmV3IFNldCgpO1xuY29uc3QgQURNT05JVElPTl9JQ09OX01BUDoge1xuICAgIFthZG1vbml0aW9uVHlwZTogc3RyaW5nXTogQWRtb25pdGlvblB1Ymxpc2hEZWZpbml0aW9uO1xufSA9IHt9O1xuaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgIHBvc3Rwcm9jZXNzKCk7XG4gICAgcmVnaXN0ZXJUb1Byb2Nlc3MoKTtcbn0gZWxzZSB7XG4gICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgcG9zdHByb2Nlc3MoKTtcbiAgICAgICAgcmVnaXN0ZXJUb1Byb2Nlc3MoKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiByZWdpc3RlclRvUHJvY2VzcygpIHtcbiAgICBjb25zdCBzaXplciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubWFya2Rvd24tcHJldmlldy1zaXplclwiKTtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PSBcImNoaWxkTGlzdFwiICYmIG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5maXJzdEVsZW1lbnRDaGlsZD8udGFnTmFtZSA9PT0gXCJQUkVcIlxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9zdHByb2Nlc3Mobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVPYnNlcnZlci5vYnNlcnZlKG5vZGUuZmlyc3RDaGlsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShzaXplciwge1xuICAgICAgICBhdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgY29uc3QgcHJlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG11dGF0aW9uLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxQcmVFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgIWJsb2NrU2V0LmhhcyhtdXRhdGlvbi50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgbXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiZcbiAgICAgICAgICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSBcImNsYXNzXCIgJiZcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKG11dGF0aW9uLnRhcmdldC5jbGFzc0xpc3QpLnNvbWUoKGNscykgPT5cbiAgICAgICAgICAgICAgICAgICAgL2xhbmd1YWdlLWFkLShcXHcrKS8udGVzdChjbHMpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYmxvY2tTZXQuYWRkKG11dGF0aW9uLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhtdXRhdGlvbi50YXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhhZG1vbml0aW9uQmxvY2s6IEhUTUxQcmVFbGVtZW50KSB7XG4gICAgY29uc3QgWywgdHlwZV0gPSBhZG1vbml0aW9uQmxvY2suY2xhc3NMaXN0XG4gICAgICAgIC50b1N0cmluZygpXG4gICAgICAgIC5tYXRjaCgvbGFuZ3VhZ2UtYWQtKFxcdyspLyk7XG4gICAgaWYgKCF0eXBlKSByZXR1cm47XG4gICAgaWYgKCEodHlwZSBpbiBBRE1PTklUSU9OX0lDT05fTUFQKSkgcmV0dXJuO1xuXG4gICAgbGV0IHtcbiAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIGNvbGxhcHNlLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICBpY29uID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5pY29uLFxuICAgICAgICBjb2xvciA9IEFETU9OSVRJT05fSUNPTl9NQVBbdHlwZV0uY29sb3JcbiAgICB9ID0gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZSwgYWRtb25pdGlvbkJsb2NrLmlubmVyVGV4dCk7XG5cbiAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KHR5cGUsIHRpdGxlLCBpY29uLCBjb2xvciwgY29sbGFwc2UpO1xuXG4gICAgY29uc3QgY29udGVudEhvbGRlciA9IGFkbW9uaXRpb24uY3JlYXRlRGl2KFwiYWRtb25pdGlvbi1jb250ZW50LWhvbGRlclwiKTtcblxuICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XG5cbiAgICBhZG1vbml0aW9uQ29udGVudC5pbm5lclRleHQgPSBjb250ZW50O1xuXG4gICAgYWRtb25pdGlvbkJsb2NrLnJlcGxhY2VXaXRoKGFkbW9uaXRpb24pO1xufVxuXG5mdW5jdGlvbiBwb3N0cHJvY2VzcygpIHtcbiAgICAvL2RvIHdvcmtcbiAgICBjb25zdCBhZG1vbml0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTFByZUVsZW1lbnQ+KFxuICAgICAgICBcInByZVtjbGFzcyo9J2xhbmd1YWdlLWFkJ11cIlxuICAgICk7XG5cbiAgICBpZiAoIWFkbW9uaXRpb25zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgYWRtb25pdGlvbkJsb2NrIG9mIEFycmF5LmZyb20oYWRtb25pdGlvbnMpKSB7XG4gICAgICAgIGJsb2NrU2V0LmFkZChhZG1vbml0aW9uQmxvY2spO1xuICAgICAgICBjb25zdCBbLCB0eXBlXSA9IGFkbW9uaXRpb25CbG9jay5jbGFzc0xpc3RcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAubWF0Y2goL2xhbmd1YWdlLWFkLShcXHcrKS8pO1xuICAgICAgICBpZiAoIXR5cGUpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoISh0eXBlIGluIEFETU9OSVRJT05fSUNPTl9NQVApKSBjb250aW51ZTtcblxuICAgICAgICBsZXQge1xuICAgICAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBjb2xsYXBzZSxcbiAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICBpY29uID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5pY29uLFxuICAgICAgICAgICAgY29sb3IgPSBBRE1PTklUSU9OX0lDT05fTUFQW3R5cGVdLmNvbG9yXG4gICAgICAgIH0gPSBnZXRQYXJhbWV0ZXJzRnJvbVNvdXJjZSh0eXBlLCBhZG1vbml0aW9uQmxvY2suaW5uZXJUZXh0KTtcblxuICAgICAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgY29sbGFwc2VcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb250ZW50SG9sZGVyID0gYWRtb25pdGlvbi5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnQtaG9sZGVyXCIpO1xuXG4gICAgICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XG5cbiAgICAgICAgYWRtb25pdGlvbkNvbnRlbnQuaW5uZXJUZXh0ID0gY29udGVudDtcblxuICAgICAgICBhZG1vbml0aW9uQmxvY2sucmVwbGFjZVdpdGgoYWRtb25pdGlvbik7XG4gICAgfVxufVxuIl19\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});'.replace("const ADMONITION_ICON_MAP = {}","const ADMONITION_ICON_MAP = "+JSON.stringify(a));let e=new Blob([l],{type:"text/javascript"}),i=document.createElement("a");i.download="publish.admonition.js",i.href=window.URL.createObjectURL(e),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}))}));const h=new e.Setting(c).setName(sl("Collapsible by Default")).addToggle((c=>{c.setValue(this.plugin.data.autoCollapse).onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.autoCollapse=c,this.display(),yield this.plugin.saveSettings()}))))}));h.descEl.createSpan({text:sl("All admonitions will be collapsible by default. Use ")}),h.descEl.createEl("code",{text:"collapse: none"}),h.descEl.createSpan({text:sl(" to prevent.")}),this.plugin.data.autoCollapse&&new e.Setting(c).setName(sl("Default Collapse Type")).setDesc(sl("Collapsible admonitions will be either opened or closed.")).addDropdown((c=>{c.addOption("open","open"),c.addOption("closed","closed"),c.setValue(this.plugin.data.defaultCollapseType),c.onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.defaultCollapseType=c,yield this.plugin.saveSettings()}))))})),new e.Setting(c).setName(sl("Add Copy Button")).setDesc(sl("Add a 'copy content' button to admonitions.")).addToggle((c=>{c.setValue(this.plugin.data.copyButton),c.onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.copyButton=c,c||document.querySelectorAll(".admonition-content-copy").forEach((c=>{c.detach()})),yield this.plugin.saveSettings()}))))})),new e.Setting(c).setName("Set Admonition Colors").setDesc("Disable this setting to turn off admonition coloring by default. Can be overridden in the admonition definition.").addToggle((c=>c.setValue(this.plugin.data.injectColor).setTooltip((this.plugin.data.injectColor?"Disable":"Enable")+" Admonition Color").onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.injectColor=c,yield this.plugin.saveSettings(),yield this.buildTypes()}))))));const r=c.createDiv("admonition-setting-additional-container");new e.Setting(r).setName(sl("Add New")).setDesc(sl("Add a new Admonition type.")).addButton((c=>c.setTooltip(sl("Add Additional")).setButtonText("+").onClick((()=>l(this,void 0,void 0,(function*(){let c=new ml(this.plugin);c.onClose=()=>l(this,void 0,void 0,(function*(){c.saved&&(this.plugin.addAdmonition({type:c.type,color:c.color,icon:c.icon,command:!1,title:c.title,injectColor:c.injectColor}),this.display())})),c.open()})))))),this.additionalEl=r.createDiv("additional"),yield this.buildTypes(),c.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=☕&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}))}buildTypes(){var c;return l(this,void 0,void 0,(function*(){this.additionalEl.empty();for(let a in this.plugin.data.userAdmonitions){const i=this.plugin.data.userAdmonitions[a];let o=new e.Setting(this.additionalEl),n=yield Gc(i.type,i.type[0].toUpperCase()+i.type.slice(1).toLowerCase(),i.icon,(null!==(c=i.injectColor)&&void 0!==c?c:this.plugin.data.injectColor)?i.color:null);o.infoEl.replaceWith(n),i.command?o.addExtraButton((c=>{c.setIcon(Wc.toString()).setTooltip(sl("Unregister Commands")).onClick((()=>l(this,void 0,void 0,(function*(){this.plugin.unregisterCommandsFor(i),yield this.plugin.saveSettings(),this.display()}))))})):o.addExtraButton((c=>{c.setIcon(Tc.toString()).setTooltip(sl("Register Commands")).onClick((()=>l(this,void 0,void 0,(function*(){this.plugin.registerCommandsFor(i),yield this.plugin.saveSettings(),this.display()}))))})),o.addExtraButton((c=>{c.setIcon("pencil").setTooltip(sl("Edit")).onClick((()=>{let c=new ml(this.plugin,i);c.onClose=()=>l(this,void 0,void 0,(function*(){if(c.saved){const a=i.command;this.plugin.removeAdmonition(i),this.plugin.addAdmonition({type:c.type,color:c.color,icon:c.icon,command:a,title:c.title,injectColor:c.injectColor}),this.display()}})),c.open()}))})).addExtraButton((c=>{c.setIcon("trash").setTooltip(sl("Delete")).onClick((()=>{this.plugin.removeAdmonition(i),this.display()}))}))}}))}}class ml extends e.Modal{constructor(c,a){var l;super(c.app),this.plugin=c,this.color="#7d7d7d",this.icon={},this.saved=!1,this.error=!1,this.injectColor=this.plugin.data.injectColor,a&&(this.color=a.color,this.icon=a.icon,this.type=a.type,this.title=a.title,this.injectColor=null!==(l=a.injectColor)&&void 0!==l?l:this.injectColor)}display(){var c,a,i;return l(this,void 0,void 0,(function*(){let{contentEl:o}=this;o.empty();const n=o.createDiv(),s=null!==(a=null!==(c=this.title)&&void 0!==c?c:this.type)&&void 0!==a?a:"...";let t;this.admonitionPreview=yield Gc(this.type,s[0].toUpperCase()+s.slice(1).toLowerCase(),this.icon,(null!==(i=this.injectColor)&&void 0!==i?i:this.plugin.data.injectColor)?this.color:null),this.admonitionPreview.createDiv("admonition-content").createEl("p",{text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),o.appendChild(this.admonitionPreview);const h=new e.Setting(n).setName(sl("Admonition Type")).addText((c=>{t=c,t.setValue(this.type).onChange((a=>{a.length?a.includes(" ")?ml.setValidationError(c,sl("Admonition type cannot include spaces.")):tl(a)?(ml.removeValidationError(c),this.type=a,this.title||this.updateTitle(this.admonitionPreview,this.type)):ml.setValidationError(c,sl("Types must be a valid CSS selector.")):ml.setValidationError(c,sl("Admonition type cannot be empty."))}))}));h.controlEl.addClass("admonition-type-setting"),h.descEl.createSpan({text:"This is used to create the admonition (e.g., "}),h.descEl.createEl("code",{text:"note"}),h.descEl.createSpan({text:" or "}),h.descEl.createEl("code",{text:"abstract"}),h.descEl.createSpan({text:")"}),new e.Setting(n).setName(sl("Admonition Title")).setDesc(sl("This will be the default title for this admonition type.")).addText((c=>{c.setValue(this.title).onChange((c=>{if(!c.length)return this.title=null,void this.updateTitle(this.admonitionPreview,this.type);this.title=c,this.updateTitle(this.admonitionPreview,this.title)}))}));const r=createEl("input",{attr:{type:"file",name:"image",accept:"image/*"}});let m;new e.Setting(n).setName(sl("Admonition Icon")).setDesc(createFragment((c=>{c.createEl("a",{text:"Font Awesome Icon",href:"https://fontawesome.com/icons?d=gallery&p=2&s=solid&m=free",attr:{tabindex:-1}}),c.createSpan({text:" or "}),c.createEl("a",{text:"RPG Awesome Icon",href:"https://nagoshiashumari.github.io/Rpg-Awesome/",attr:{tabindex:-1}}),c.createSpan({text:" to use next to the title."})}))).addText((c=>{m=c,"image"!==this.icon.type&&c.setValue(this.icon.name);const a=()=>l(this,void 0,void 0,(function*(){var a;const l=c.inputEl.value;let i=Ic(l);i?0!=l.length?(ml.removeValidationError(c),this.icon=null!==(a=e.icon)&&void 0!==a?a:{name:l,type:i},this.admonitionPreview.querySelector(".admonition-title-icon").innerHTML=Ec(this.icon).outerHTML):ml.setValidationError(c,sl("Icon cannot be empty.")):ml.setValidationError(c,sl("Invalid icon name."))})),e=new ll(this.app,c);e.onClose=a,c.inputEl.onblur=a})).addButton((c=>{c.setButtonText(sl("Upload Image")).setTooltip(sl("Upload Image")),c.buttonEl.addClass("admonition-file-upload"),c.buttonEl.appendChild(r),c.onClick((()=>r.click()))})),r.onchange=()=>l(this,void 0,void 0,(function*(){const{files:c}=r;if(!c.length)return;const a=c[0],l=new FileReader;l.onloadend=c=>{var a=new Image;a.onload=()=>{try{const c=document.createElement("canvas"),l=24;let e=a.width,i=a.height;e>i?e>l&&(i*=l/e,e=l):i>l&&(e*=l/i,i=l),c.width=e,c.height=i,c.getContext("2d").drawImage(a,0,0,e,i),this.icon={name:c.toDataURL("image/png"),type:"image"},this.display()}catch(c){new e.Notice("There was an error parsing the image.")}},a.src=c.target.result.toString()},l.readAsDataURL(a),r.value=null}));const v=n.createDiv("admonition-color-settings");this.createColor(v);let f=o.createDiv(),z=new e.Setting(f);z.addButton((c=>(c.setTooltip(sl("Save")).setIcon("checkmark").onClick((()=>l(this,void 0,void 0,(function*(){let c=!1;t.inputEl.value.length||(ml.setValidationError(t,sl("Admonition type cannot be empty.")),c=!0),t.inputEl.value.includes(" ")&&(ml.setValidationError(t,sl("Admonition type cannot include spaces.")),c=!0),tl(t.inputEl.value)||(ml.setValidationError(t,sl("Types must be a valid CSS selector.")),c=!0),Ic(m.inputEl.value)||"image"===this.icon.type||(ml.setValidationError(m,sl("Invalid icon name.")),c=!0),this.icon.name.length||(ml.setValidationError(m,sl("Icon cannot be empty.")),c=!0),c?new e.Notice("Fix errors before saving."):(this.saved=!0,this.close())})))),c))),z.addExtraButton((c=>(c.setIcon("cross").setTooltip("Cancel").onClick((()=>{this.saved=!1,this.close()})),c)))}))}createColor(c){c.empty();const a=this.injectColor?"Set the admonition color. Disable to set manually using CSS.":"Admonition color is disabled and must be manually set using CSS.";new e.Setting(c).setName(sl("Color")).setDesc(a).addText((c=>{c.inputEl.setAttribute("type","color"),this.injectColor||c.inputEl.setAttribute("disabled","true"),c.setValue(function(c){let a=/^(\d+),\s?(\d+),\s?(\d+)/i.exec(c);return a&&a.length?`#${vl(Number(a[1]))}${vl(Number(a[2]))}${vl(Number(a[3]))}`:""}(this.color)).onChange((c=>{let a=function(c){let a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(c);return a?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null}(c);a&&(this.color=`${a.r}, ${a.g}, ${a.b}`,this.admonitionPreview.setAttribute("style",`--admonition-color: ${this.color};`))}))})).addToggle((a=>a.setValue(this.injectColor).setTooltip((this.injectColor?"Disable":"Enable")+" Admonition Color").onChange((a=>{this.injectColor=a,a?this.admonitionPreview.setAttribute("style",`--admonition-color: ${this.color};`):this.admonitionPreview.removeAttribute("style"),this.createColor(c)}))))}updateTitle(c,a){let l=c.querySelector(".admonition-title-content"),e=c.querySelector(".admonition-title-icon");l.textContent=a[0].toUpperCase()+a.slice(1).toLowerCase(),l.prepend(e)}onOpen(){this.display()}static setValidationError(c,a){if(c.inputEl.addClass("is-invalid"),a){c.inputEl.parentElement.addClasses(["has-invalid-message","unset-align-items"]),c.inputEl.parentElement.parentElement.addClass(".unset-align-items");let l=c.inputEl.parentElement.querySelector(".invalid-feedback");l||(l=createDiv({cls:"invalid-feedback"})),l.innerText=a,l.insertAfter(c.inputEl)}}static removeValidationError(c){c.inputEl.removeClass("is-invalid"),c.inputEl.parentElement.removeClasses(["has-invalid-message","unset-align-items"]),c.inputEl.parentElement.parentElement.removeClass(".unset-align-items"),c.inputEl.parentElement.querySelector(".invalid-feedback")&&c.inputEl.parentElement.removeChild(c.inputEl.parentElement.querySelector(".invalid-feedback"))}}function vl(c){var a=c.toString(16);return 1==a.length?"0"+a:a}Object.fromEntries=Object.fromEntries||function(c){const a={};for(const l of c){if(Object(l)!==l)throw new TypeError("iterable for fromEntries should yield objects");const{0:c,1:e}=l;Object.defineProperty(a,c,{configurable:!0,enumerable:!0,writable:!0,value:e})}return a};const fl={userAdmonitions:{},syntaxHighlight:!1,copyButton:!1,version:"",autoCollapse:!1,defaultCollapseType:"open",syncLinks:!0,enableMarkdownProcessor:!1,injectColor:!0};class zl extends e.Plugin{constructor(){super(...arguments),this.admonitions={}}get types(){return Object.keys(this.admonitions)}get admonitionArray(){return Object.keys(this.admonitions).map((c=>Object.assign(Object.assign({},this.admonitions[c]),{type:c})))}saveSettings(){return l(this,void 0,void 0,(function*(){this.data.version=this.manifest.version,yield this.saveData(this.data)}))}loadSettings(){return l(this,void 0,void 0,(function*(){let c=Object.assign({},fl,yield this.loadData());if(this.data=c,this.data.userAdmonitions&&(!this.data.version||Number(this.data.version.split(".")[0])<5))for(let c in this.data.userAdmonitions)Object.prototype.hasOwnProperty.call(this.data.userAdmonitions[c],"type")||(this.data.userAdmonitions[c]=Object.assign(Object.assign({},this.data.userAdmonitions[c]),{icon:{type:"font-awesome",name:this.data.userAdmonitions[c].icon}}));this.admonitions=Object.assign(Object.assign({},Oc),this.data.userAdmonitions),yield this.saveSettings()}))}addAdmonition(c){return l(this,void 0,void 0,(function*(){this.data.userAdmonitions=Object.assign(Object.assign({},this.data.userAdmonitions),{[c.type]:c}),this.admonitions=Object.assign(Object.assign({},Oc),this.data.userAdmonitions),this.registerMarkdownCodeBlockProcessor(`ad-${c.type}`,((a,l,e)=>this.postprocessor(c.type,a,l,e))),this.data.syntaxHighlight&&this.turnOnSyntaxHighlighting([c.type]),yield this.saveSettings()}))}removeAdmonition(c){return l(this,void 0,void 0,(function*(){this.data.userAdmonitions[c.type]&&delete this.data.userAdmonitions[c.type],this.admonitions=Object.assign(Object.assign({},Oc),this.data.userAdmonitions),this.data.syntaxHighlight&&this.turnOffSyntaxHighlighting([c.type]),c.command&&this.unregisterCommandsFor(c),yield this.saveSettings()}))}onload(){return l(this,void 0,void 0,(function*(){console.log("Obsidian Admonition loaded"),yield this.loadSettings(),this.addSettingTab(new rl(this.app,this)),(0,e.addIcon)(Tc.toString(),''),(0,e.addIcon)(Wc.toString(),''),this.data.enableMarkdownProcessor&&this.enableMarkdownProcessor(),Object.keys(this.admonitions).forEach((c=>{this.registerMarkdownCodeBlockProcessor(`ad-${c}`,((a,l,e)=>this.postprocessor(c,a,l,e))),this.admonitions[c].command&&this.registerCommandsFor(this.admonitions[c])})),this.data.syntaxHighlight&&this.turnOnSyntaxHighlighting(),this.addCommand({id:"collapse-admonitions",name:"Collapse Admonitions in Note",checkCallback:c=>{if(c)return!!this.app.workspace.getActiveViewOfType(e.MarkdownView);let a=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(!(a&&a instanceof e.MarkdownView))return;let l=a.contentEl.querySelectorAll("details[open].admonition-plugin");for(let c=0;c{if(c)return!!this.app.workspace.getActiveViewOfType(e.MarkdownView);let a=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(!(a&&a instanceof e.MarkdownView))return;let l=a.contentEl.querySelectorAll("details:not([open]).admonition-plugin");for(let c=0;c{new il(this,c).open()}}),this.registerEvent(this.app.metadataCache.on("resolve",(c=>{if(!this.data.syncLinks)return;if(this.app.workspace.getActiveFile()!=c)return;const a=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(!(a&&a instanceof e.MarkdownView))return;const l=a.contentEl.querySelectorAll(".admonition:not(.admonition-plugin-async) a.internal-link");this.addLinksToCache(l,c.path)})))}))}enableMarkdownProcessor(){if(!this.data.enableMarkdownProcessor)return;const c=new RegExp(`(!{3,}|\\?{3,}\\+?) ad-(${this.types.join("|")})(\\s[\\s\\S]+)?`),a=new RegExp("\\-{3,} admonition");let i,o=!1;const n=new Map,s=new Map,t=new Map;Object.values(this.admonitions).filter((({command:c})=>c)).forEach((c=>{this.registerCommandsFor(c)})),this.registerMarkdownPostProcessor(((h,r)=>l(this,void 0,void 0,(function*(){var m,v;if(this.data.enableMarkdownProcessor)if(a.test(h.textContent)&&o){o=!1;const c=createDiv();if(i&&t.has(i)&&n.has(t.get(i))&&h.children[0].textContent.replace(a,"").length){c.innerHTML=h.children[0].outerHTML.replace(new RegExp(`(
)?\\n?${a.source}`),"");const l=n.get(t.get(i)).contentEl;l&&l.appendChild(c.children[0])}h.children[0].detach()}else if(c.test(h.textContent)||o){if(!o){if(!(Array.from(h.children).find((a=>c.test(a.textContent)))instanceof HTMLParagraphElement))return;o=!0;let a=new e.MarkdownRenderChild(h);return i=Zc(),t.set(i,a),n.set(a,{contentEl:null,elements:[],loaded:!1}),a.onload=()=>l(this,void 0,void 0,(function*(){var i,o,s;const t=h.textContent;let r,[,m,v,f=v[0].toUpperCase()+v.slice(1).toLowerCase()]=null!==(i=t.match(c))&&void 0!==i?i:[];if(!v)return;/\?{3,}/.test(m)&&(r=/\+/.test(m)?"open":"closed"),""!==f.trim()&&'""'!==f||void 0===r||"none"===r||(f=v[0].toUpperCase()+v.slice(1).toLowerCase(),new e.Notice("An admonition must have a title if it is collapsible."));const z=this.admonitions[v],p=yield function(c,a,i,o,n,s){var t;return l(this,void 0,void 0,(function*(){let l,s,h=o?{style:`--admonition-color: ${o};`}:{};if(n?("open"===n&&(h.open="open"),l=createEl("details",{cls:`admonition admonition-${c} admonition-plugin admonition-plugin-async`,attr:h}),s=l.createEl("summary",{cls:"admonition-title "+(a.trim().length?"":"no-title")})):(l=createDiv({cls:`admonition admonition-${c} admonition-plugin`,attr:h}),s=l.createDiv({cls:"admonition-title "+(a.trim().length?"":"no-title")})),a&&a.trim().length){const c=createDiv();yield e.MarkdownRenderer.renderMarkdown(a,c,"",null);const l="P"===c.children[0].tagName?createDiv():c.children[0],o=Array.from((null===(t=c.children[0])||void 0===t?void 0:t.childNodes)||[]);l.innerHTML="",l.addClass("admonition-title-content");const n=l.createDiv("admonition-title-icon");i&&i.name&&i.type&&n.appendChild(Ec(i));const h=l.createDiv("admonition-title-markdown");for(let c=0;c{t.delete(i),n.delete(a)},r.addChild(a),void h.children[0].detach()}if(i&&t.get(i)){const c=t.get(i);if(n.set(c,Object.assign(Object.assign({},n.get(c)),{elements:[...n.get(c).elements,...Array.from(h.children)]})),s.set(h,c),null===(m=n.get(c))||void 0===m?void 0:m.loaded)for(let a of null===(v=n.get(c))||void 0===v?void 0:v.elements)n.get(c).contentEl.appendChild(a)}}}))))}disableMarkdownProcessor(){Object.values(this.admonitions).filter((({command:c})=>c)).forEach((c=>{this.registerCommandsFor(c)}))}unregisterCommandsFor(c){c.command=!1,this.app.commands.findCommand(`obsidian-admonition:insert-${c.type}`)&&(delete this.app.commands.editorCommands[`obsidian-admonition:insert-${c.type}`],delete this.app.commands.editorCommands[`obsidian-admonition:insert-${c.type}-with-title`],delete this.app.commands.commands[`obsidian-admonition:insert-${c.type}`],delete this.app.commands.commands[`obsidian-admonition:insert-${c.type}-with-title`])}registerCommandsFor(c){c.command=!0,this.addCommand({id:`insert-${c.type}`,name:`Insert ${c.type}`,editorCheckCallback:(a,l,i)=>{if(a)return c.command;if(c.command)try{l.getDoc().replaceSelection(`\`\`\`ad-${c.type}\n\n\`\`\`\n`);const a=l.getCursor();l.setCursor(a.line-2)}catch(c){new e.Notice("There was an issue inserting the admonition.")}}}),this.addCommand({id:`insert-${c.type}-with-title`,name:`Insert ${c.type} With Title`,editorCheckCallback:(a,l,i)=>{if(a)return c.command;if(c.command)try{l.getDoc().replaceSelection(`\`\`\`ad-${c.type}\ntitle: \n\n\`\`\`\n`);const a=l.getCursor();l.setCursor(a.line-3)}catch(c){new e.Notice("There was an issue inserting the admonition.")}}}),this.data.enableMarkdownProcessor&&this.addCommand({id:`insert-non-${c.type}`,name:`Insert Non-codeblock ${c.type}`,editorCheckCallback:(a,l,i)=>{if(a)return c.command&&this.data.enableMarkdownProcessor;if(c.command)try{l.getDoc().replaceSelection(`!!! ad-${c.type}\n\n--- admonition\n`);const a=l.getCursor();l.setCursor(a.line-2)}catch(c){new e.Notice("There was an issue inserting the admonition.")}}})}turnOnSyntaxHighlighting(c=Object.keys(this.admonitions)){this.data.syntaxHighlight&&(c.forEach((c=>{if(this.data.syntaxHighlight){const[,a]=`${c}`.match(/^([\w+#-]*)[^\n`]*$/);window.CodeMirror.defineMode(`ad-${a}`,((c,a)=>window.CodeMirror.getMode({},"hypermd")))}})),this.app.workspace.layoutReady?this.layoutReady():this.app.workspace.onLayoutReady(this.layoutReady.bind(this)))}turnOffSyntaxHighlighting(c=Object.keys(this.admonitions)){c.forEach((c=>{window.CodeMirror.modes.hasOwnProperty(`ad-${c}`)&&delete window.CodeMirror.modes[`ad-${c}`]})),this.app.workspace.layoutReady?this.layoutReady():this.app.workspace.onLayoutReady(this.layoutReady.bind(this))}layoutReady(){this.app.workspace.off("layout-ready",this.layoutReady.bind(this)),this.refreshLeaves()}refreshLeaves(){this.app.workspace.iterateCodeMirrors((c=>c.setOption("mode",c.getOption("mode"))))}postprocessor(c,a,i,o){var n,s,t,h,r,m;return l(this,void 0,void 0,(function*(){if(this.admonitions[c])try{const v="string"==typeof o?o:null!==(t=null!==(n=null==o?void 0:o.sourcePath)&&void 0!==n?n:null===(s=this.app.workspace.getActiveFile())||void 0===s?void 0:s.path)&&void 0!==t?t:"";let{title:f,collapse:z,content:p,icon:g,color:M}=function(c,a,l){var i;const o=null!==(i=l.title)&&void 0!==i?i:c[0].toUpperCase()+c.slice(1).toLowerCase(),n=["title:","collapse:","icon:","color:"],s=["title","collapse","icon","color"];let t=a.split("\n"),h=0,r={};for(let c=0;cg===c)))&&void 0!==r?r:w.icon,null!=M?M:(null!==(m=w.injectColor)&&void 0!==m?m:this.data.injectColor)?w.color:null,z,x),V=new e.MarkdownRenderChild(H);if(V.containerEl=H,o&&"string"!=typeof o&&(V.onload=()=>{},V.onunload=()=>{},o.addChild(V)),p&&p.length){const c=H.createDiv("admonition-content-holder"),i=c.createDiv("admonition-content");if(/^`{3,}mermaid/m.test(p)){const c=!H.hasAttribute("open");H instanceof HTMLDetailsElement&&H.setAttribute("open","open"),setImmediate((()=>{e.MarkdownRenderer.renderMarkdown(p,i,v,V),H instanceof HTMLDetailsElement&&c&&H.removeAttribute("open")}))}else e.MarkdownRenderer.renderMarkdown(p,i,v,V);this.data.copyButton&&c.createDiv("admonition-content-copy").appendChild(Qc.cloneNode(!0)).addEventListener("click",(()=>{navigator.clipboard.writeText(p.trim()).then((()=>l(this,void 0,void 0,(function*(){new e.Notice("Admonition content copied to clipboard.")}))))}));const o=i.querySelectorAll(".contains-task-list");if(o.length){const c=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(c&&c instanceof e.MarkdownView){c.file;const e=c.currentMode.get(),i=a.split("\n");let n=0;e.indexOf(a);for(let a=0;anew RegExp(`\\[.*\\]\\s*${o.innerText.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}`).test(c)));n=n+i.slice(n).indexOf(h)+1;const r=n;t.dataset.line=`${r}`,t.onclick=a=>l(this,void 0,void 0,(function*(){c.previewMode.renderer.onCheckboxClick(a,t)}))}}}}const n=i.querySelectorAll("a.internal-link");this.addLinksToCache(n,v)}const u=i.parentElement;return u&&!u.hasClass("admonition-content")&&u.addClass("admonition-parent",`admonition-${c}-parent`),i.replaceWith(H),H}catch(c){console.error(c);const l=createEl("pre");l.createEl("code",{attr:{style:"color: var(--text-error) !important"}}).createSpan({text:"There was an error rendering the admonition:\n\n"+a}),i.replaceWith(l)}}))}onunload(){return l(this,void 0,void 0,(function*(){console.log("Obsidian Admonition unloaded"),this.turnOffSyntaxHighlighting()}))}addLinksToCache(c,a){if(this.data.syncLinks)for(let l=0;l{"use strict";var c={d:(a,l)=>{for(var e in l)c.o(l,e)&&!c.o(a,e)&&Object.defineProperty(a,e,{enumerable:!0,get:l[e]})},o:(c,a)=>Object.prototype.hasOwnProperty.call(c,a),r:c=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})}},a={};function l(c,a,l,e){return new(l||(l=Promise))((function(i,o){function n(c){try{t(e.next(c))}catch(c){o(c)}}function s(c){try{t(e.throw(c))}catch(c){o(c)}}function t(c){var a;c.done?i(c.value):(a=c.value,a instanceof l?a:new l((function(c){c(a)}))).then(n,s)}t((e=e.apply(c,a||[])).next())}))}c.r(a),c.d(a,{default:()=>fl}),Object.create,Object.create;const e=require("obsidian");var i={prefix:"far",iconName:"copy",icon:[448,512,[],"f0c5","M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"]},o={faAddressBook:{prefix:"far",iconName:"address-book",icon:[448,512,[],"f2b9","M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"]},faAddressCard:{prefix:"far",iconName:"address-card",icon:[576,512,[],"f2bb","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z"]},faAngry:{prefix:"far",iconName:"angry",icon:[496,512,[],"f556","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z"]},faArrowAltCircleDown:{prefix:"far",iconName:"arrow-alt-circle-down",icon:[512,512,[],"f358","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z"]},faArrowAltCircleLeft:{prefix:"far",iconName:"arrow-alt-circle-left",icon:[512,512,[],"f359","M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z"]},faArrowAltCircleRight:{prefix:"far",iconName:"arrow-alt-circle-right",icon:[512,512,[],"f35a","M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z"]},faArrowAltCircleUp:{prefix:"far",iconName:"arrow-alt-circle-up",icon:[512,512,[],"f35b","M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z"]},faBell:{prefix:"far",iconName:"bell",icon:[448,512,[],"f0f3","M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"]},faBellSlash:{prefix:"far",iconName:"bell-slash",icon:[640,512,[],"f1f6","M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]},faBookmark:{prefix:"far",iconName:"bookmark",icon:[384,512,[],"f02e","M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z"]},faBuilding:{prefix:"far",iconName:"building",icon:[448,512,[],"f1ad","M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z"]},faCalendar:{prefix:"far",iconName:"calendar",icon:[448,512,[],"f133","M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z"]},faCalendarAlt:{prefix:"far",iconName:"calendar-alt",icon:[448,512,[],"f073","M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCalendarCheck:{prefix:"far",iconName:"calendar-check",icon:[448,512,[],"f274","M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z"]},faCalendarMinus:{prefix:"far",iconName:"calendar-minus",icon:[448,512,[],"f272","M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCalendarPlus:{prefix:"far",iconName:"calendar-plus",icon:[448,512,[],"f271","M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCalendarTimes:{prefix:"far",iconName:"calendar-times",icon:[448,512,[],"f273","M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareDown:{prefix:"far",iconName:"caret-square-down",icon:[448,512,[],"f150","M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareLeft:{prefix:"far",iconName:"caret-square-left",icon:[448,512,[],"f191","M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareRight:{prefix:"far",iconName:"caret-square-right",icon:[448,512,[],"f152","M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faCaretSquareUp:{prefix:"far",iconName:"caret-square-up",icon:[448,512,[],"f151","M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faChartBar:{prefix:"far",iconName:"chart-bar",icon:[512,512,[],"f080","M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z"]},faCheckCircle:{prefix:"far",iconName:"check-circle",icon:[512,512,[],"f058","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"]},faCheckSquare:{prefix:"far",iconName:"check-square",icon:[448,512,[],"f14a","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z"]},faCircle:{prefix:"far",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z"]},faClipboard:{prefix:"far",iconName:"clipboard",icon:[384,512,[],"f328","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm144 418c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h42v36c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-36h42c3.3 0 6 2.7 6 6z"]},faClock:{prefix:"far",iconName:"clock",icon:[512,512,[],"f017","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"]},faClone:{prefix:"far",iconName:"clone",icon:[512,512,[],"f24d","M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z"]},faClosedCaptioning:{prefix:"far",iconName:"closed-captioning",icon:[512,512,[],"f20a","M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z"]},faComment:{prefix:"far",iconName:"comment",icon:[512,512,[],"f075","M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"]},faCommentAlt:{prefix:"far",iconName:"comment-alt",icon:[512,512,[],"f27a","M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z"]},faCommentDots:{prefix:"far",iconName:"comment-dots",icon:[512,512,[],"f4ad","M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"]},faComments:{prefix:"far",iconName:"comments",icon:[576,512,[],"f086","M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"]},faCompass:{prefix:"far",iconName:"compass",icon:[496,512,[],"f14e","M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"]},faCopy:i,faCopyright:{prefix:"far",iconName:"copyright",icon:[512,512,[],"f1f9","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z"]},faCreditCard:{prefix:"far",iconName:"credit-card",icon:[576,512,[],"f09d","M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z"]},faDizzy:{prefix:"far",iconName:"dizzy",icon:[496,512,[],"f567","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z"]},faDotCircle:{prefix:"far",iconName:"dot-circle",icon:[512,512,[],"f192","M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z"]},faEdit:{prefix:"far",iconName:"edit",icon:[576,512,[],"f044","M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z"]},faEnvelope:{prefix:"far",iconName:"envelope",icon:[512,512,[],"f0e0","M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"]},faEnvelopeOpen:{prefix:"far",iconName:"envelope-open",icon:[512,512,[],"f2b6","M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z"]},faEye:{prefix:"far",iconName:"eye",icon:[576,512,[],"f06e","M288 144a110.94 110.94 0 0 0-31.24 5 55.4 55.4 0 0 1 7.24 27 56 56 0 0 1-56 56 55.4 55.4 0 0 1-27-7.24A111.71 111.71 0 1 0 288 144zm284.52 97.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400c-98.65 0-189.09-55-237.93-144C98.91 167 189.34 112 288 112s189.09 55 237.93 144C477.1 345 386.66 400 288 400z"]},faEyeSlash:{prefix:"far",iconName:"eye-slash",icon:[640,512,[],"f070","M634 471L36 3.51A16 16 0 0 0 13.51 6l-10 12.49A16 16 0 0 0 6 41l598 467.49a16 16 0 0 0 22.49-2.49l10-12.49A16 16 0 0 0 634 471zM296.79 146.47l134.79 105.38C429.36 191.91 380.48 144 320 144a112.26 112.26 0 0 0-23.21 2.47zm46.42 219.07L208.42 260.16C210.65 320.09 259.53 368 320 368a113 113 0 0 0 23.21-2.46zM320 112c98.65 0 189.09 55 237.93 144a285.53 285.53 0 0 1-44 60.2l37.74 29.5a333.7 333.7 0 0 0 52.9-75.11 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64c-36.7 0-71.71 7-104.63 18.81l46.41 36.29c18.94-4.3 38.34-7.1 58.22-7.1zm0 288c-98.65 0-189.08-55-237.93-144a285.47 285.47 0 0 1 44.05-60.19l-37.74-29.5a333.6 333.6 0 0 0-52.89 75.1 32.35 32.35 0 0 0 0 29.19C89.72 376.41 197.08 448 320 448c36.7 0 71.71-7.05 104.63-18.81l-46.41-36.28C359.28 397.2 339.89 400 320 400z"]},faFile:{prefix:"far",iconName:"file",icon:[384,512,[],"f15b","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"]},faFileAlt:{prefix:"far",iconName:"file-alt",icon:[384,512,[],"f15c","M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z"]},faFileArchive:{prefix:"far",iconName:"file-archive",icon:[384,512,[],"f1c6","M128.3 160v32h32v-32zm64-96h-32v32h32zm-64 32v32h32V96zm64 32h-32v32h32zm177.6-30.1L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h79.7v16h32V48H208v104c0 13.3 10.7 24 24 24h104zM194.2 265.7c-1.1-5.6-6-9.7-11.8-9.7h-22.1v-32h-32v32l-19.7 97.1C102 385.6 126.8 416 160 416c33.1 0 57.9-30.2 51.5-62.6zm-33.9 124.4c-17.9 0-32.4-12.1-32.4-27s14.5-27 32.4-27 32.4 12.1 32.4 27-14.5 27-32.4 27zm32-198.1h-32v32h32z"]},faFileAudio:{prefix:"far",iconName:"file-audio",icon:[384,512,[],"f1c7","M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z"]},faFileCode:{prefix:"far",iconName:"file-code",icon:[384,512,[],"f1c9","M149.9 349.1l-.2-.2-32.8-28.9 32.8-28.9c3.6-3.2 4-8.8.8-12.4l-.2-.2-17.4-18.6c-3.4-3.6-9-3.7-12.4-.4l-57.7 54.1c-3.7 3.5-3.7 9.4 0 12.8l57.7 54.1c1.6 1.5 3.8 2.4 6 2.4 2.4 0 4.8-1 6.4-2.8l17.4-18.6c3.3-3.5 3.1-9.1-.4-12.4zm220-251.2L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM256 51.9l76.1 76.1H256zM336 464H48V48h160v104c0 13.3 10.7 24 24 24h104zM209.6 214c-4.7-1.4-9.5 1.3-10.9 6L144 408.1c-1.4 4.7 1.3 9.6 6 10.9l24.4 7.1c4.7 1.4 9.6-1.4 10.9-6L240 231.9c1.4-4.7-1.3-9.6-6-10.9zm24.5 76.9l.2.2 32.8 28.9-32.8 28.9c-3.6 3.2-4 8.8-.8 12.4l.2.2 17.4 18.6c3.3 3.5 8.9 3.7 12.4.4l57.7-54.1c3.7-3.5 3.7-9.4 0-12.8l-57.7-54.1c-3.5-3.3-9.1-3.2-12.4.4l-17.4 18.6c-3.3 3.5-3.1 9.1.4 12.4z"]},faFileExcel:{prefix:"far",iconName:"file-excel",icon:[384,512,[],"f1c3","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z"]},faFileImage:{prefix:"far",iconName:"file-image",icon:[384,512,[],"f1c5","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z"]},faFilePdf:{prefix:"far",iconName:"file-pdf",icon:[384,512,[],"f1c1","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z"]},faFilePowerpoint:{prefix:"far",iconName:"file-powerpoint",icon:[384,512,[],"f1c4","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z"]},faFileVideo:{prefix:"far",iconName:"file-video",icon:[384,512,[],"f1c8","M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z"]},faFileWord:{prefix:"far",iconName:"file-word",icon:[384,512,[],"f1c2","M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z"]},faFlag:{prefix:"far",iconName:"flag",icon:[512,512,[],"f024","M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z"]},faFlushed:{prefix:"far",iconName:"flushed",icon:[496,512,[],"f579","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},faFolder:{prefix:"far",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"]},faFolderOpen:{prefix:"far",iconName:"folder-open",icon:[576,512,[],"f07c","M527.9 224H480v-48c0-26.5-21.5-48-48-48H272l-64-64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h400c16.5 0 31.9-8.5 40.7-22.6l79.9-128c20-31.9-3-73.4-40.7-73.4zM48 118c0-3.3 2.7-6 6-6h134.1l64 64H426c3.3 0 6 2.7 6 6v42H152c-16.8 0-32.4 8.8-41.1 23.2L48 351.4zm400 282H72l77.2-128H528z"]},faFontAwesomeLogoFull:{prefix:"far",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]},faFrown:{prefix:"far",iconName:"frown",icon:[496,512,[],"f119","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"]},faFrownOpen:{prefix:"far",iconName:"frown-open",icon:[496,512,[],"f57a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z"]},faFutbol:{prefix:"far",iconName:"futbol",icon:[496,512,[],"f1e3","M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z"]},faGem:{prefix:"far",iconName:"gem",icon:[576,512,[],"f3a5","M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z"]},faGrimace:{prefix:"far",iconName:"grimace",icon:[496,512,[],"f57f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z"]},faGrin:{prefix:"far",iconName:"grin",icon:[496,512,[],"f580","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},faGrinAlt:{prefix:"far",iconName:"grin-alt",icon:[496,512,[],"f581","M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z"]},faGrinBeam:{prefix:"far",iconName:"grin-beam",icon:[496,512,[],"f582","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z"]},faGrinBeamSweat:{prefix:"far",iconName:"grin-beam-sweat",icon:[496,512,[],"f583","M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"]},faGrinHearts:{prefix:"far",iconName:"grin-hearts",icon:[496,512,[],"f584","M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z"]},faGrinSquint:{prefix:"far",iconName:"grin-squint",icon:[496,512,[],"f585","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z"]},faGrinSquintTears:{prefix:"far",iconName:"grin-squint-tears",icon:[512,512,[],"f586","M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z"]},faGrinStars:{prefix:"far",iconName:"grin-stars",icon:[496,512,[],"f587","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z"]},faGrinTears:{prefix:"far",iconName:"grin-tears",icon:[640,512,[],"f588","M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z"]},faGrinTongue:{prefix:"far",iconName:"grin-tongue",icon:[496,512,[],"f589","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faGrinTongueSquint:{prefix:"far",iconName:"grin-tongue-squint",icon:[496,512,[],"f58a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z"]},faGrinTongueWink:{prefix:"far",iconName:"grin-tongue-wink",icon:[496,512,[],"f58b","M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z"]},faGrinWink:{prefix:"far",iconName:"grin-wink",icon:[496,512,[],"f58c","M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z"]},faHandLizard:{prefix:"far",iconName:"hand-lizard",icon:[576,512,[],"f258","M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z"]},faHandPaper:{prefix:"far",iconName:"hand-paper",icon:[448,512,[],"f256","M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z"]},faHandPeace:{prefix:"far",iconName:"hand-peace",icon:[448,512,[],"f25b","M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z"]},faHandPointDown:{prefix:"far",iconName:"hand-point-down",icon:[448,512,[],"f0a7","M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z"]},faHandPointLeft:{prefix:"far",iconName:"hand-point-left",icon:[512,512,[],"f0a5","M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"]},faHandPointRight:{prefix:"far",iconName:"hand-point-right",icon:[512,512,[],"f0a4","M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"]},faHandPointUp:{prefix:"far",iconName:"hand-point-up",icon:[448,512,[],"f0a6","M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z"]},faHandPointer:{prefix:"far",iconName:"hand-pointer",icon:[448,512,[],"f25a","M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z"]},faHandRock:{prefix:"far",iconName:"hand-rock",icon:[512,512,[],"f255","M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z"]},faHandScissors:{prefix:"far",iconName:"hand-scissors",icon:[512,512,[],"f257","M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z"]},faHandSpock:{prefix:"far",iconName:"hand-spock",icon:[512,512,[],"f259","M501.03053,116.17605c-19.39059-31.50779-51.24406-35.72849-66.31044-35.01756-14.11325-50.81051-62.0038-54.08-70.73816-54.08a74.03091,74.03091,0,0,0-72.23816,58.916l-4.64648,22.66014-13.68357-53.207c-9.09569-35.37107-46.412-64.05074-89.66-53.07223a73.89749,73.89749,0,0,0-55.121,78.94722,73.68273,73.68273,0,0,0-64.8495,94.42181l24.35933,82.19721c-38.24017-7.54492-62.79677,16.18358-68.11512,21.84764a73.6791,73.6791,0,0,0,3.19921,104.19329l91.36509,85.9765A154.164,154.164,0,0,0,220.62279,512h107.4549A127.30079,127.30079,0,0,0,452.3392,413.86139l57.623-241.96272A73.20274,73.20274,0,0,0,501.03053,116.17605Zm-37.7597,44.60544L405.64788,402.74812a79.46616,79.46616,0,0,1-77.57019,61.25972H220.62279a106.34052,106.34052,0,0,1-73.1366-28.998l-91.369-85.98041C31.34381,325.72669,66.61133,288.131,91.39644,311.5392l51.123,48.10739c5.42577,5.10937,13.48239.71679,13.48239-5.82617a246.79914,246.79914,0,0,0-10.17771-70.1523l-36.01362-121.539c-9.7324-32.88279,39.69916-47.27145,49.38664-14.625l31.3437,105.77923c5.59374,18.90428,33.78119,10.71288,28.9648-8.00781L177.06427,80.23662c-8.50389-33.1035,41.43157-45.64646,49.86515-12.83593l47.32609,184.035c4.42773,17.24218,29.16207,16.5039,32.71089-.80468l31.791-154.9706c6.81054-33.1074,57.51748-24.10741,50.11906,11.96288L360.32764,246.78924c-3.72265,18.10936,23.66793,24.63084,28.05659,6.21679L413.185,148.85962C421.1498,115.512,471.14,127.79713,463.27083,160.78149Z"]},faHandshake:{prefix:"far",iconName:"handshake",icon:[640,512,[],"f2b5","M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z"]},faHdd:{prefix:"far",iconName:"hdd",icon:[576,512,[],"f0a0","M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z"]},faHeart:{prefix:"far",iconName:"heart",icon:[512,512,[],"f004","M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z"]},faHospital:{prefix:"far",iconName:"hospital",icon:[448,512,[],"f0f8","M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z"]},faHourglass:{prefix:"far",iconName:"hourglass",icon:[384,512,[],"f254","M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z"]},faIdBadge:{prefix:"far",iconName:"id-badge",icon:[384,512,[],"f2c1","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z"]},faIdCard:{prefix:"far",iconName:"id-card",icon:[576,512,[],"f2c2","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]},faImage:{prefix:"far",iconName:"image",icon:[512,512,[],"f03e","M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z"]},faImages:{prefix:"far",iconName:"images",icon:[576,512,[],"f302","M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z"]},faKeyboard:{prefix:"far",iconName:"keyboard",icon:[576,512,[],"f11c","M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z"]},faKiss:{prefix:"far",iconName:"kiss",icon:[496,512,[],"f596","M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faKissBeam:{prefix:"far",iconName:"kiss-beam",icon:[496,512,[],"f597","M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z"]},faKissWinkHeart:{prefix:"far",iconName:"kiss-wink-heart",icon:[504,512,[],"f598","M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z"]},faLaugh:{prefix:"far",iconName:"laugh",icon:[496,512,[],"f599","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLaughBeam:{prefix:"far",iconName:"laugh-beam",icon:[496,512,[],"f59a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLaughSquint:{prefix:"far",iconName:"laugh-squint",icon:[496,512,[],"f59b","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLaughWink:{prefix:"far",iconName:"laugh-wink",icon:[496,512,[],"f59c","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z"]},faLemon:{prefix:"far",iconName:"lemon",icon:[512,512,[],"f094","M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z"]},faLifeRing:{prefix:"far",iconName:"life-ring",icon:[512,512,[],"f1cd","M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z"]},faLightbulb:{prefix:"far",iconName:"lightbulb",icon:[352,512,[],"f0eb","M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"]},faListAlt:{prefix:"far",iconName:"list-alt",icon:[512,512,[],"f022","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z"]},faMap:{prefix:"far",iconName:"map",icon:[576,512,[],"f279","M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z"]},faMeh:{prefix:"far",iconName:"meh",icon:[496,512,[],"f11a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},faMehBlank:{prefix:"far",iconName:"meh-blank",icon:[496,512,[],"f5a4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faMehRollingEyes:{prefix:"far",iconName:"meh-rolling-eyes",icon:[496,512,[],"f5a5","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z"]},faMinusSquare:{prefix:"far",iconName:"minus-square",icon:[448,512,[],"f146","M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faMoneyBillAlt:{prefix:"far",iconName:"money-bill-alt",icon:[640,512,[],"f3d1","M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z"]},faMoon:{prefix:"far",iconName:"moon",icon:[512,512,[],"f186","M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z"]},faNewspaper:{prefix:"far",iconName:"newspaper",icon:[576,512,[],"f1ea","M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z"]},faObjectGroup:{prefix:"far",iconName:"object-group",icon:[512,512,[],"f247","M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z"]},faObjectUngroup:{prefix:"far",iconName:"object-ungroup",icon:[576,512,[],"f248","M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z"]},faPaperPlane:{prefix:"far",iconName:"paper-plane",icon:[512,512,[],"f1d8","M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z"]},faPauseCircle:{prefix:"far",iconName:"pause-circle",icon:[512,512,[],"f28b","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z"]},faPlayCircle:{prefix:"far",iconName:"play-circle",icon:[512,512,[],"f144","M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z"]},faPlusSquare:{prefix:"far",iconName:"plus-square",icon:[448,512,[],"f0fe","M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"]},faQuestionCircle:{prefix:"far",iconName:"question-circle",icon:[512,512,[],"f059","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z"]},faRegistered:{prefix:"far",iconName:"registered",icon:[512,512,[],"f25d","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z"]},faSadCry:{prefix:"far",iconName:"sad-cry",icon:[496,512,[],"f5b3","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z"]},faSadTear:{prefix:"far",iconName:"sad-tear",icon:[496,512,[],"f5b4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z"]},faSave:{prefix:"far",iconName:"save",icon:[448,512,[],"f0c7","M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z"]},faShareSquare:{prefix:"far",iconName:"share-square",icon:[576,512,[],"f14d","M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z"]},faSmile:{prefix:"far",iconName:"smile",icon:[496,512,[],"f118","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"]},faSmileBeam:{prefix:"far",iconName:"smile-beam",icon:[496,512,[],"f5b8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z"]},faSmileWink:{prefix:"far",iconName:"smile-wink",icon:[496,512,[],"f4da","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z"]},faSnowflake:{prefix:"far",iconName:"snowflake",icon:[448,512,[],"f2dc","M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z"]},faSquare:{prefix:"far",iconName:"square",icon:[448,512,[],"f0c8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z"]},faStar:{prefix:"far",iconName:"star",icon:[576,512,[],"f005","M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z"]},faStarHalf:{prefix:"far",iconName:"star-half",icon:[576,512,[],"f089","M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z"]},faStickyNote:{prefix:"far",iconName:"sticky-note",icon:[448,512,[],"f249","M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z"]},faStopCircle:{prefix:"far",iconName:"stop-circle",icon:[512,512,[],"f28d","M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z"]},faSun:{prefix:"far",iconName:"sun",icon:[512,512,[],"f185","M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z"]},faSurprise:{prefix:"far",iconName:"surprise",icon:[496,512,[],"f5c2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faThumbsDown:{prefix:"far",iconName:"thumbs-down",icon:[512,512,[],"f165","M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z"]},faThumbsUp:{prefix:"far",iconName:"thumbs-up",icon:[512,512,[],"f164","M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z"]},faTimesCircle:{prefix:"far",iconName:"times-circle",icon:[512,512,[],"f057","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"]},faTired:{prefix:"far",iconName:"tired",icon:[496,512,[],"f5c8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z"]},faTrashAlt:{prefix:"far",iconName:"trash-alt",icon:[448,512,[],"f2ed","M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z"]},faUser:{prefix:"far",iconName:"user",icon:[448,512,[],"f007","M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"]},faUserCircle:{prefix:"far",iconName:"user-circle",icon:[496,512,[],"f2bd","M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"]},faWindowClose:{prefix:"far",iconName:"window-close",icon:[512,512,[],"f410","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z"]},faWindowMaximize:{prefix:"far",iconName:"window-maximize",icon:[512,512,[],"f2d0","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z"]},faWindowMinimize:{prefix:"far",iconName:"window-minimize",icon:[512,512,[],"f2d1","M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z"]},faWindowRestore:{prefix:"far",iconName:"window-restore",icon:[512,512,[],"f2d2","M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z"]}},n={faAd:{prefix:"fas",iconName:"ad",icon:[512,512,[],"f641","M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z"]},faAddressBook:{prefix:"fas",iconName:"address-book",icon:[448,512,[],"f2b9","M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},faAddressCard:{prefix:"fas",iconName:"address-card",icon:[576,512,[],"f2bb","M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]},faAdjust:{prefix:"fas",iconName:"adjust",icon:[512,512,[],"f042","M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z"]},faAirFreshener:{prefix:"fas",iconName:"air-freshener",icon:[512,512,[],"f5d0","M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z"]},faAlignCenter:{prefix:"fas",iconName:"align-center",icon:[448,512,[],"f037","M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z"]},faAlignJustify:{prefix:"fas",iconName:"align-justify",icon:[448,512,[],"f039","M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faAlignLeft:{prefix:"fas",iconName:"align-left",icon:[448,512,[],"f036","M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faAlignRight:{prefix:"fas",iconName:"align-right",icon:[448,512,[],"f038","M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z"]},faAllergies:{prefix:"fas",iconName:"allergies",icon:[448,512,[],"f461","M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faAmbulance:{prefix:"fas",iconName:"ambulance",icon:[640,512,[],"f0f9","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},faAmericanSignLanguageInterpreting:{prefix:"fas",iconName:"american-sign-language-interpreting",icon:[640,512,[],"f2a3","M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z"]},faAnchor:{prefix:"fas",iconName:"anchor",icon:[576,512,[],"f13d","M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z"]},faAngleDoubleDown:{prefix:"fas",iconName:"angle-double-down",icon:[320,512,[],"f103","M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"]},faAngleDoubleLeft:{prefix:"fas",iconName:"angle-double-left",icon:[448,512,[],"f100","M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"]},faAngleDoubleRight:{prefix:"fas",iconName:"angle-double-right",icon:[448,512,[],"f101","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"]},faAngleDoubleUp:{prefix:"fas",iconName:"angle-double-up",icon:[320,512,[],"f102","M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"]},faAngleDown:{prefix:"fas",iconName:"angle-down",icon:[320,512,[],"f107","M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"]},faAngleLeft:{prefix:"fas",iconName:"angle-left",icon:[256,512,[],"f104","M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"]},faAngleRight:{prefix:"fas",iconName:"angle-right",icon:[256,512,[],"f105","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"]},faAngleUp:{prefix:"fas",iconName:"angle-up",icon:[320,512,[],"f106","M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"]},faAngry:{prefix:"fas",iconName:"angry",icon:[496,512,[],"f556","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z"]},faAnkh:{prefix:"fas",iconName:"ankh",icon:[320,512,[],"f644","M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z"]},faAppleAlt:{prefix:"fas",iconName:"apple-alt",icon:[448,512,[],"f5d1","M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z"]},faArchive:{prefix:"fas",iconName:"archive",icon:[512,512,[],"f187","M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z"]},faArchway:{prefix:"fas",iconName:"archway",icon:[576,512,[],"f557","M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]},faArrowAltCircleDown:{prefix:"fas",iconName:"arrow-alt-circle-down",icon:[512,512,[],"f358","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"]},faArrowAltCircleLeft:{prefix:"fas",iconName:"arrow-alt-circle-left",icon:[512,512,[],"f359","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"]},faArrowAltCircleRight:{prefix:"fas",iconName:"arrow-alt-circle-right",icon:[512,512,[],"f35a","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"]},faArrowAltCircleUp:{prefix:"fas",iconName:"arrow-alt-circle-up",icon:[512,512,[],"f35b","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"]},faArrowCircleDown:{prefix:"fas",iconName:"arrow-circle-down",icon:[512,512,[],"f0ab","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"]},faArrowCircleLeft:{prefix:"fas",iconName:"arrow-circle-left",icon:[512,512,[],"f0a8","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"]},faArrowCircleRight:{prefix:"fas",iconName:"arrow-circle-right",icon:[512,512,[],"f0a9","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"]},faArrowCircleUp:{prefix:"fas",iconName:"arrow-circle-up",icon:[512,512,[],"f0aa","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"]},faArrowDown:{prefix:"fas",iconName:"arrow-down",icon:[448,512,[],"f063","M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"]},faArrowLeft:{prefix:"fas",iconName:"arrow-left",icon:[448,512,[],"f060","M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"]},faArrowRight:{prefix:"fas",iconName:"arrow-right",icon:[448,512,[],"f061","M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"]},faArrowUp:{prefix:"fas",iconName:"arrow-up",icon:[448,512,[],"f062","M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"]},faArrowsAlt:{prefix:"fas",iconName:"arrows-alt",icon:[512,512,[],"f0b2","M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"]},faArrowsAltH:{prefix:"fas",iconName:"arrows-alt-h",icon:[512,512,[],"f337","M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"]},faArrowsAltV:{prefix:"fas",iconName:"arrows-alt-v",icon:[256,512,[],"f338","M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"]},faAssistiveListeningSystems:{prefix:"fas",iconName:"assistive-listening-systems",icon:[512,512,[],"f2a2","M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z"]},faAsterisk:{prefix:"fas",iconName:"asterisk",icon:[512,512,[],"f069","M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"]},faAt:{prefix:"fas",iconName:"at",icon:[512,512,[],"f1fa","M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z"]},faAtlas:{prefix:"fas",iconName:"atlas",icon:[448,512,[],"f558","M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z"]},faAtom:{prefix:"fas",iconName:"atom",icon:[448,512,[],"f5d2","M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z"]},faAudioDescription:{prefix:"fas",iconName:"audio-description",icon:[512,512,[],"f29e","M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z"]},faAward:{prefix:"fas",iconName:"award",icon:[384,512,[],"f559","M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z"]},faBaby:{prefix:"fas",iconName:"baby",icon:[384,512,[],"f77c","M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z"]},faBabyCarriage:{prefix:"fas",iconName:"baby-carriage",icon:[512,512,[],"f77d","M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z"]},faBackspace:{prefix:"fas",iconName:"backspace",icon:[640,512,[],"f55a","M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z"]},faBackward:{prefix:"fas",iconName:"backward",icon:[512,512,[],"f04a","M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"]},faBacon:{prefix:"fas",iconName:"bacon",icon:[576,512,[],"f7e5","M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z"]},faBacteria:{prefix:"fas",iconName:"bacteria",icon:[640,512,[],"e059","M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z"]},faBacterium:{prefix:"fas",iconName:"bacterium",icon:[512,512,[],"e05a","M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z"]},faBahai:{prefix:"fas",iconName:"bahai",icon:[512,512,[],"f666","M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z"]},faBalanceScale:{prefix:"fas",iconName:"balance-scale",icon:[640,512,[],"f24e","M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faBalanceScaleLeft:{prefix:"fas",iconName:"balance-scale-left",icon:[640,512,[],"f515","M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z"]},faBalanceScaleRight:{prefix:"fas",iconName:"balance-scale-right",icon:[640,512,[],"f516","M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z"]},faBan:{prefix:"fas",iconName:"ban",icon:[512,512,[],"f05e","M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z"]},faBandAid:{prefix:"fas",iconName:"band-aid",icon:[640,512,[],"f462","M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z"]},faBarcode:{prefix:"fas",iconName:"barcode",icon:[512,512,[],"f02a","M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z"]},faBars:{prefix:"fas",iconName:"bars",icon:[448,512,[],"f0c9","M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"]},faBaseballBall:{prefix:"fas",iconName:"baseball-ball",icon:[496,512,[],"f433","M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z"]},faBasketballBall:{prefix:"fas",iconName:"basketball-ball",icon:[496,512,[],"f434","M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z"]},faBath:{prefix:"fas",iconName:"bath",icon:[512,512,[],"f2cd","M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z"]},faBatteryEmpty:{prefix:"fas",iconName:"battery-empty",icon:[640,512,[],"f244","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z"]},faBatteryFull:{prefix:"fas",iconName:"battery-full",icon:[640,512,[],"f240","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z"]},faBatteryHalf:{prefix:"fas",iconName:"battery-half",icon:[640,512,[],"f242","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z"]},faBatteryQuarter:{prefix:"fas",iconName:"battery-quarter",icon:[640,512,[],"f243","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z"]},faBatteryThreeQuarters:{prefix:"fas",iconName:"battery-three-quarters",icon:[640,512,[],"f241","M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z"]},faBed:{prefix:"fas",iconName:"bed",icon:[640,512,[],"f236","M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z"]},faBeer:{prefix:"fas",iconName:"beer",icon:[448,512,[],"f0fc","M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z"]},faBell:{prefix:"fas",iconName:"bell",icon:[448,512,[],"f0f3","M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z"]},faBellSlash:{prefix:"fas",iconName:"bell-slash",icon:[640,512,[],"f1f6","M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z"]},faBezierCurve:{prefix:"fas",iconName:"bezier-curve",icon:[640,512,[],"f55b","M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},faBible:{prefix:"fas",iconName:"bible",icon:[448,512,[],"f647","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]},faBicycle:{prefix:"fas",iconName:"bicycle",icon:[640,512,[],"f206","M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z"]},faBiking:{prefix:"fas",iconName:"biking",icon:[640,512,[],"f84a","M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z"]},faBinoculars:{prefix:"fas",iconName:"binoculars",icon:[512,512,[],"f1e5","M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z"]},faBiohazard:{prefix:"fas",iconName:"biohazard",icon:[576,512,[],"f780","M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},faBirthdayCake:{prefix:"fas",iconName:"birthday-cake",icon:[448,512,[],"f1fd","M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z"]},faBlender:{prefix:"fas",iconName:"blender",icon:[512,512,[],"f517","M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z"]},faBlenderPhone:{prefix:"fas",iconName:"blender-phone",icon:[576,512,[],"f6b6","M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faBlind:{prefix:"fas",iconName:"blind",icon:[384,512,[],"f29d","M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z"]},faBlog:{prefix:"fas",iconName:"blog",icon:[512,512,[],"f781","M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z"]},faBold:{prefix:"fas",iconName:"bold",icon:[384,512,[],"f032","M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z"]},faBolt:{prefix:"fas",iconName:"bolt",icon:[320,512,[],"f0e7","M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z"]},faBomb:{prefix:"fas",iconName:"bomb",icon:[512,512,[],"f1e2","M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z"]},faBone:{prefix:"fas",iconName:"bone",icon:[640,512,[],"f5d7","M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z"]},faBong:{prefix:"fas",iconName:"bong",icon:[448,512,[],"f55c","M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z"]},faBook:{prefix:"fas",iconName:"book",icon:[448,512,[],"f02d","M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"]},faBookDead:{prefix:"fas",iconName:"book-dead",icon:[448,512,[],"f6b7","M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z"]},faBookMedical:{prefix:"fas",iconName:"book-medical",icon:[448,512,[],"f7e6","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z"]},faBookOpen:{prefix:"fas",iconName:"book-open",icon:[576,512,[],"f518","M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"]},faBookReader:{prefix:"fas",iconName:"book-reader",icon:[512,512,[],"f5da","M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z"]},faBookmark:{prefix:"fas",iconName:"bookmark",icon:[384,512,[],"f02e","M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"]},faBorderAll:{prefix:"fas",iconName:"border-all",icon:[448,512,[],"f84c","M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z"]},faBorderNone:{prefix:"fas",iconName:"border-none",icon:[448,512,[],"f850","M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faBorderStyle:{prefix:"fas",iconName:"border-style",icon:[448,512,[],"f853","M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faBowlingBall:{prefix:"fas",iconName:"bowling-ball",icon:[496,512,[],"f436","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faBox:{prefix:"fas",iconName:"box",icon:[512,512,[],"f466","M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z"]},faBoxOpen:{prefix:"fas",iconName:"box-open",icon:[640,512,[],"f49e","M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"]},faBoxTissue:{prefix:"fas",iconName:"box-tissue",icon:[512,512,[],"e05b","M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z"]},faBoxes:{prefix:"fas",iconName:"boxes",icon:[576,512,[],"f468","M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"]},faBraille:{prefix:"fas",iconName:"braille",icon:[640,512,[],"f2a1","M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},faBrain:{prefix:"fas",iconName:"brain",icon:[576,512,[],"f5dc","M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z"]},faBreadSlice:{prefix:"fas",iconName:"bread-slice",icon:[576,512,[],"f7ec","M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z"]},faBriefcase:{prefix:"fas",iconName:"briefcase",icon:[512,512,[],"f0b1","M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"]},faBriefcaseMedical:{prefix:"fas",iconName:"briefcase-medical",icon:[512,512,[],"f469","M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z"]},faBroadcastTower:{prefix:"fas",iconName:"broadcast-tower",icon:[640,512,[],"f519","M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z"]},faBroom:{prefix:"fas",iconName:"broom",icon:[640,512,[],"f51a","M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z"]},faBrush:{prefix:"fas",iconName:"brush",icon:[384,512,[],"f55d","M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z"]},faBug:{prefix:"fas",iconName:"bug",icon:[512,512,[],"f188","M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"]},faBuilding:{prefix:"fas",iconName:"building",icon:[448,512,[],"f1ad","M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z"]},faBullhorn:{prefix:"fas",iconName:"bullhorn",icon:[576,512,[],"f0a1","M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z"]},faBullseye:{prefix:"fas",iconName:"bullseye",icon:[496,512,[],"f140","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z"]},faBurn:{prefix:"fas",iconName:"burn",icon:[384,512,[],"f46a","M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z"]},faBus:{prefix:"fas",iconName:"bus",icon:[512,512,[],"f207","M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faBusAlt:{prefix:"fas",iconName:"bus-alt",icon:[512,512,[],"f55e","M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faBusinessTime:{prefix:"fas",iconName:"business-time",icon:[640,512,[],"f64a","M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z"]},faCalculator:{prefix:"fas",iconName:"calculator",icon:[448,512,[],"f1ec","M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z"]},faCalendar:{prefix:"fas",iconName:"calendar",icon:[448,512,[],"f133","M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z"]},faCalendarAlt:{prefix:"fas",iconName:"calendar-alt",icon:[448,512,[],"f073","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},faCalendarCheck:{prefix:"fas",iconName:"calendar-check",icon:[448,512,[],"f274","M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z"]},faCalendarDay:{prefix:"fas",iconName:"calendar-day",icon:[448,512,[],"f783","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},faCalendarMinus:{prefix:"fas",iconName:"calendar-minus",icon:[448,512,[],"f272","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z"]},faCalendarPlus:{prefix:"fas",iconName:"calendar-plus",icon:[448,512,[],"f271","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z"]},faCalendarTimes:{prefix:"fas",iconName:"calendar-times",icon:[448,512,[],"f273","M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z"]},faCalendarWeek:{prefix:"fas",iconName:"calendar-week",icon:[448,512,[],"f784","M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z"]},faCamera:{prefix:"fas",iconName:"camera",icon:[512,512,[],"f030","M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z"]},faCameraRetro:{prefix:"fas",iconName:"camera-retro",icon:[512,512,[],"f083","M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z"]},faCampground:{prefix:"fas",iconName:"campground",icon:[640,512,[],"f6bb","M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z"]},faCandyCane:{prefix:"fas",iconName:"candy-cane",icon:[512,512,[],"f786","M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z"]},faCannabis:{prefix:"fas",iconName:"cannabis",icon:[512,512,[],"f55f","M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z"]},faCapsules:{prefix:"fas",iconName:"capsules",icon:[576,512,[],"f46b","M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z"]},faCar:{prefix:"fas",iconName:"car",icon:[512,512,[],"f1b9","M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]},faCarAlt:{prefix:"fas",iconName:"car-alt",icon:[480,512,[],"f5de","M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z"]},faCarBattery:{prefix:"fas",iconName:"car-battery",icon:[512,512,[],"f5df","M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z"]},faCarCrash:{prefix:"fas",iconName:"car-crash",icon:[640,512,[],"f5e1","M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z"]},faCarSide:{prefix:"fas",iconName:"car-side",icon:[640,512,[],"f5e4","M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]},faCaravan:{prefix:"fas",iconName:"caravan",icon:[640,512,[],"f8ff","M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z"]},faCaretDown:{prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"]},faCaretLeft:{prefix:"fas",iconName:"caret-left",icon:[192,512,[],"f0d9","M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z"]},faCaretRight:{prefix:"fas",iconName:"caret-right",icon:[192,512,[],"f0da","M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"]},faCaretSquareDown:{prefix:"fas",iconName:"caret-square-down",icon:[448,512,[],"f150","M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z"]},faCaretSquareLeft:{prefix:"fas",iconName:"caret-square-left",icon:[448,512,[],"f191","M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z"]},faCaretSquareRight:{prefix:"fas",iconName:"caret-square-right",icon:[448,512,[],"f152","M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z"]},faCaretSquareUp:{prefix:"fas",iconName:"caret-square-up",icon:[448,512,[],"f151","M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z"]},faCaretUp:{prefix:"fas",iconName:"caret-up",icon:[320,512,[],"f0d8","M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"]},faCarrot:{prefix:"fas",iconName:"carrot",icon:[512,512,[],"f787","M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z"]},faCartArrowDown:{prefix:"fas",iconName:"cart-arrow-down",icon:[576,512,[],"f218","M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z"]},faCartPlus:{prefix:"fas",iconName:"cart-plus",icon:[576,512,[],"f217","M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z"]},faCashRegister:{prefix:"fas",iconName:"cash-register",icon:[512,512,[],"f788","M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z"]},faCat:{prefix:"fas",iconName:"cat",icon:[512,512,[],"f6be","M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},faCertificate:{prefix:"fas",iconName:"certificate",icon:[512,512,[],"f0a3","M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z"]},faChair:{prefix:"fas",iconName:"chair",icon:[448,512,[],"f6c0","M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z"]},faChalkboard:{prefix:"fas",iconName:"chalkboard",icon:[640,512,[],"f51b","M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faChalkboardTeacher:{prefix:"fas",iconName:"chalkboard-teacher",icon:[640,512,[],"f51c","M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z"]},faChargingStation:{prefix:"fas",iconName:"charging-station",icon:[576,512,[],"f5e7","M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z"]},faChartArea:{prefix:"fas",iconName:"chart-area",icon:[512,512,[],"f1fe","M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z"]},faChartBar:{prefix:"fas",iconName:"chart-bar",icon:[512,512,[],"f080","M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faChartLine:{prefix:"fas",iconName:"chart-line",icon:[512,512,[],"f201","M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z"]},faChartPie:{prefix:"fas",iconName:"chart-pie",icon:[544,512,[],"f200","M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z"]},faCheck:{prefix:"fas",iconName:"check",icon:[512,512,[],"f00c","M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"]},faCheckCircle:{prefix:"fas",iconName:"check-circle",icon:[512,512,[],"f058","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"]},faCheckDouble:{prefix:"fas",iconName:"check-double",icon:[512,512,[],"f560","M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z"]},faCheckSquare:{prefix:"fas",iconName:"check-square",icon:[448,512,[],"f14a","M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z"]},faCheese:{prefix:"fas",iconName:"cheese",icon:[512,512,[],"f7ef","M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z"]},faChess:{prefix:"fas",iconName:"chess",icon:[512,512,[],"f439","M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z"]},faChessBishop:{prefix:"fas",iconName:"chess-bishop",icon:[320,512,[],"f43a","M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChessBoard:{prefix:"fas",iconName:"chess-board",icon:[512,512,[],"f43c","M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z"]},faChessKing:{prefix:"fas",iconName:"chess-king",icon:[448,512,[],"f43f","M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z"]},faChessKnight:{prefix:"fas",iconName:"chess-knight",icon:[384,512,[],"f441","M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChessPawn:{prefix:"fas",iconName:"chess-pawn",icon:[320,512,[],"f443","M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChessQueen:{prefix:"fas",iconName:"chess-queen",icon:[512,512,[],"f445","M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z"]},faChessRook:{prefix:"fas",iconName:"chess-rook",icon:[384,512,[],"f447","M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faChevronCircleDown:{prefix:"fas",iconName:"chevron-circle-down",icon:[512,512,[],"f13a","M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z"]},faChevronCircleLeft:{prefix:"fas",iconName:"chevron-circle-left",icon:[512,512,[],"f137","M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z"]},faChevronCircleRight:{prefix:"fas",iconName:"chevron-circle-right",icon:[512,512,[],"f138","M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z"]},faChevronCircleUp:{prefix:"fas",iconName:"chevron-circle-up",icon:[512,512,[],"f139","M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z"]},faChevronDown:{prefix:"fas",iconName:"chevron-down",icon:[448,512,[],"f078","M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"]},faChevronLeft:{prefix:"fas",iconName:"chevron-left",icon:[320,512,[],"f053","M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"]},faChevronRight:{prefix:"fas",iconName:"chevron-right",icon:[320,512,[],"f054","M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"]},faChevronUp:{prefix:"fas",iconName:"chevron-up",icon:[448,512,[],"f077","M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"]},faChild:{prefix:"fas",iconName:"child",icon:[384,512,[],"f1ae","M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z"]},faChurch:{prefix:"fas",iconName:"church",icon:[640,512,[],"f51d","M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z"]},faCircle:{prefix:"fas",iconName:"circle",icon:[512,512,[],"f111","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"]},faCircleNotch:{prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z"]},faCity:{prefix:"fas",iconName:"city",icon:[640,512,[],"f64f","M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z"]},faClinicMedical:{prefix:"fas",iconName:"clinic-medical",icon:[576,512,[],"f7f2","M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z"]},faClipboard:{prefix:"fas",iconName:"clipboard",icon:[384,512,[],"f328","M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z"]},faClipboardCheck:{prefix:"fas",iconName:"clipboard-check",icon:[384,512,[],"f46c","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z"]},faClipboardList:{prefix:"fas",iconName:"clipboard-list",icon:[384,512,[],"f46d","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"]},faClock:{prefix:"fas",iconName:"clock",icon:[512,512,[],"f017","M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z"]},faClone:{prefix:"fas",iconName:"clone",icon:[512,512,[],"f24d","M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z"]},faClosedCaptioning:{prefix:"fas",iconName:"closed-captioning",icon:[512,512,[],"f20a","M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z"]},faCloud:{prefix:"fas",iconName:"cloud",icon:[640,512,[],"f0c2","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"]},faCloudDownloadAlt:{prefix:"fas",iconName:"cloud-download-alt",icon:[640,512,[],"f381","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"]},faCloudMeatball:{prefix:"fas",iconName:"cloud-meatball",icon:[512,512,[],"f73b","M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z"]},faCloudMoon:{prefix:"fas",iconName:"cloud-moon",icon:[576,512,[],"f6c3","M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z"]},faCloudMoonRain:{prefix:"fas",iconName:"cloud-moon-rain",icon:[576,512,[],"f73c","M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]},faCloudRain:{prefix:"fas",iconName:"cloud-rain",icon:[512,512,[],"f73d","M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z"]},faCloudShowersHeavy:{prefix:"fas",iconName:"cloud-showers-heavy",icon:[512,512,[],"f740","M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z"]},faCloudSun:{prefix:"fas",iconName:"cloud-sun",icon:[640,512,[],"f6c4","M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z"]},faCloudSunRain:{prefix:"fas",iconName:"cloud-sun-rain",icon:[576,512,[],"f743","M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z"]},faCloudUploadAlt:{prefix:"fas",iconName:"cloud-upload-alt",icon:[640,512,[],"f382","M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"]},faCocktail:{prefix:"fas",iconName:"cocktail",icon:[576,512,[],"f561","M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z"]},faCode:{prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"]},faCodeBranch:{prefix:"fas",iconName:"code-branch",icon:[384,512,[],"f126","M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z"]},faCoffee:{prefix:"fas",iconName:"coffee",icon:[640,512,[],"f0f4","M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z"]},faCog:{prefix:"fas",iconName:"cog",icon:[512,512,[],"f013","M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faCogs:{prefix:"fas",iconName:"cogs",icon:[640,512,[],"f085","M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"]},faCoins:{prefix:"fas",iconName:"coins",icon:[512,512,[],"f51e","M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z"]},faColumns:{prefix:"fas",iconName:"columns",icon:[512,512,[],"f0db","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z"]},faComment:{prefix:"fas",iconName:"comment",icon:[512,512,[],"f075","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z"]},faCommentAlt:{prefix:"fas",iconName:"comment-alt",icon:[512,512,[],"f27a","M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z"]},faCommentDollar:{prefix:"fas",iconName:"comment-dollar",icon:[512,512,[],"f651","M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z"]},faCommentDots:{prefix:"fas",iconName:"comment-dots",icon:[512,512,[],"f4ad","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faCommentMedical:{prefix:"fas",iconName:"comment-medical",icon:[512,512,[],"f7f5","M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z"]},faCommentSlash:{prefix:"fas",iconName:"comment-slash",icon:[640,512,[],"f4b3","M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]},faComments:{prefix:"fas",iconName:"comments",icon:[576,512,[],"f086","M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z"]},faCommentsDollar:{prefix:"fas",iconName:"comments-dollar",icon:[576,512,[],"f653","M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z"]},faCompactDisc:{prefix:"fas",iconName:"compact-disc",icon:[496,512,[],"f51f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z"]},faCompass:{prefix:"fas",iconName:"compass",icon:[496,512,[],"f14e","M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z"]},faCompress:{prefix:"fas",iconName:"compress",icon:[448,512,[],"f066","M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]},faCompressAlt:{prefix:"fas",iconName:"compress-alt",icon:[448,512,[],"f422","M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z"]},faCompressArrowsAlt:{prefix:"fas",iconName:"compress-arrows-alt",icon:[512,512,[],"f78c","M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"]},faConciergeBell:{prefix:"fas",iconName:"concierge-bell",icon:[512,512,[],"f562","M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faCookie:{prefix:"fas",iconName:"cookie",icon:[512,512,[],"f563","M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faCookieBite:{prefix:"fas",iconName:"cookie-bite",icon:[512,512,[],"f564","M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faCopy:{prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"]},faCopyright:{prefix:"fas",iconName:"copyright",icon:[512,512,[],"f1f9","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z"]},faCouch:{prefix:"fas",iconName:"couch",icon:[640,512,[],"f4b8","M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z"]},faCreditCard:{prefix:"fas",iconName:"credit-card",icon:[576,512,[],"f09d","M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"]},faCrop:{prefix:"fas",iconName:"crop",icon:[512,512,[],"f125","M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},faCropAlt:{prefix:"fas",iconName:"crop-alt",icon:[512,512,[],"f565","M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z"]},faCross:{prefix:"fas",iconName:"cross",icon:[384,512,[],"f654","M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},faCrosshairs:{prefix:"fas",iconName:"crosshairs",icon:[512,512,[],"f05b","M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"]},faCrow:{prefix:"fas",iconName:"crow",icon:[640,512,[],"f520","M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faCrown:{prefix:"fas",iconName:"crown",icon:[640,512,[],"f521","M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z"]},faCrutch:{prefix:"fas",iconName:"crutch",icon:[512,512,[],"f7f7","M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z"]},faCube:{prefix:"fas",iconName:"cube",icon:[512,512,[],"f1b2","M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"]},faCubes:{prefix:"fas",iconName:"cubes",icon:[512,512,[],"f1b3","M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"]},faCut:{prefix:"fas",iconName:"cut",icon:[448,512,[],"f0c4","M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]},faDatabase:{prefix:"fas",iconName:"database",icon:[448,512,[],"f1c0","M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"]},faDeaf:{prefix:"fas",iconName:"deaf",icon:[512,512,[],"f2a4","M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z"]},faDemocrat:{prefix:"fas",iconName:"democrat",icon:[640,512,[],"f747","M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z"]},faDesktop:{prefix:"fas",iconName:"desktop",icon:[576,512,[],"f108","M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"]},faDharmachakra:{prefix:"fas",iconName:"dharmachakra",icon:[512,512,[],"f655","M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z"]},faDiagnoses:{prefix:"fas",iconName:"diagnoses",icon:[640,512,[],"f470","M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faDice:{prefix:"fas",iconName:"dice",icon:[640,512,[],"f522","M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faDiceD20:{prefix:"fas",iconName:"dice-d20",icon:[480,512,[],"f6cf","M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z"]},faDiceD6:{prefix:"fas",iconName:"dice-d6",icon:[448,512,[],"f6d1","M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z"]},faDiceFive:{prefix:"fas",iconName:"dice-five",icon:[448,512,[],"f523","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceFour:{prefix:"fas",iconName:"dice-four",icon:[448,512,[],"f524","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceOne:{prefix:"fas",iconName:"dice-one",icon:[448,512,[],"f525","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceSix:{prefix:"fas",iconName:"dice-six",icon:[448,512,[],"f526","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceThree:{prefix:"fas",iconName:"dice-three",icon:[448,512,[],"f527","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDiceTwo:{prefix:"fas",iconName:"dice-two",icon:[448,512,[],"f528","M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faDigitalTachograph:{prefix:"fas",iconName:"digital-tachograph",icon:[640,512,[],"f566","M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z"]},faDirections:{prefix:"fas",iconName:"directions",icon:[512,512,[],"f5eb","M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z"]},faDisease:{prefix:"fas",iconName:"disease",icon:[512,512,[],"f7fa","M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z"]},faDivide:{prefix:"fas",iconName:"divide",icon:[448,512,[],"f529","M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faDizzy:{prefix:"fas",iconName:"dizzy",icon:[496,512,[],"f567","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z"]},faDna:{prefix:"fas",iconName:"dna",icon:[448,512,[],"f471","M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z"]},faDog:{prefix:"fas",iconName:"dog",icon:[576,512,[],"f6d3","M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z"]},faDollarSign:{prefix:"fas",iconName:"dollar-sign",icon:[288,512,[],"f155","M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z"]},faDolly:{prefix:"fas",iconName:"dolly",icon:[576,512,[],"f472","M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},faDollyFlatbed:{prefix:"fas",iconName:"dolly-flatbed",icon:[640,512,[],"f474","M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faDonate:{prefix:"fas",iconName:"donate",icon:[512,512,[],"f4b9","M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z"]},faDoorClosed:{prefix:"fas",iconName:"door-closed",icon:[640,512,[],"f52a","M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z"]},faDoorOpen:{prefix:"fas",iconName:"door-open",icon:[640,512,[],"f52b","M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"]},faDotCircle:{prefix:"fas",iconName:"dot-circle",icon:[512,512,[],"f192","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z"]},faDove:{prefix:"fas",iconName:"dove",icon:[512,512,[],"f4ba","M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faDownload:{prefix:"fas",iconName:"download",icon:[512,512,[],"f019","M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},faDraftingCompass:{prefix:"fas",iconName:"drafting-compass",icon:[512,512,[],"f568","M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"]},faDragon:{prefix:"fas",iconName:"dragon",icon:[640,512,[],"f6d5","M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z"]},faDrawPolygon:{prefix:"fas",iconName:"draw-polygon",icon:[448,512,[],"f5ee","M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z"]},faDrum:{prefix:"fas",iconName:"drum",icon:[512,512,[],"f569","M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z"]},faDrumSteelpan:{prefix:"fas",iconName:"drum-steelpan",icon:[576,512,[],"f56a","M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z"]},faDrumstickBite:{prefix:"fas",iconName:"drumstick-bite",icon:[512,512,[],"f6d7","M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z"]},faDumbbell:{prefix:"fas",iconName:"dumbbell",icon:[640,512,[],"f44b","M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z"]},faDumpster:{prefix:"fas",iconName:"dumpster",icon:[576,512,[],"f793","M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faDumpsterFire:{prefix:"fas",iconName:"dumpster-fire",icon:[640,512,[],"f794","M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z"]},faDungeon:{prefix:"fas",iconName:"dungeon",icon:[512,512,[],"f6d9","M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z"]},faEdit:{prefix:"fas",iconName:"edit",icon:[576,512,[],"f044","M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"]},faEgg:{prefix:"fas",iconName:"egg",icon:[384,512,[],"f7fb","M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z"]},faEject:{prefix:"fas",iconName:"eject",icon:[448,512,[],"f052","M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z"]},faEllipsisH:{prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},faEllipsisV:{prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},faEnvelope:{prefix:"fas",iconName:"envelope",icon:[512,512,[],"f0e0","M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]},faEnvelopeOpen:{prefix:"fas",iconName:"envelope-open",icon:[512,512,[],"f2b6","M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z"]},faEnvelopeOpenText:{prefix:"fas",iconName:"envelope-open-text",icon:[512,512,[],"f658","M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z"]},faEnvelopeSquare:{prefix:"fas",iconName:"envelope-square",icon:[448,512,[],"f199","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z"]},faEquals:{prefix:"fas",iconName:"equals",icon:[448,512,[],"f52c","M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faEraser:{prefix:"fas",iconName:"eraser",icon:[512,512,[],"f12d","M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"]},faEthernet:{prefix:"fas",iconName:"ethernet",icon:[512,512,[],"f796","M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z"]},faEuroSign:{prefix:"fas",iconName:"euro-sign",icon:[320,512,[],"f153","M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z"]},faExchangeAlt:{prefix:"fas",iconName:"exchange-alt",icon:[512,512,[],"f362","M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z"]},faExclamation:{prefix:"fas",iconName:"exclamation",icon:[192,512,[],"f12a","M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z"]},faExclamationCircle:{prefix:"fas",iconName:"exclamation-circle",icon:[512,512,[],"f06a","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},faExclamationTriangle:{prefix:"fas",iconName:"exclamation-triangle",icon:[576,512,[],"f071","M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"]},faExpand:{prefix:"fas",iconName:"expand",icon:[448,512,[],"f065","M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"]},faExpandAlt:{prefix:"fas",iconName:"expand-alt",icon:[448,512,[],"f424","M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z"]},faExpandArrowsAlt:{prefix:"fas",iconName:"expand-arrows-alt",icon:[448,512,[],"f31e","M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"]},faExternalLinkAlt:{prefix:"fas",iconName:"external-link-alt",icon:[512,512,[],"f35d","M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z"]},faExternalLinkSquareAlt:{prefix:"fas",iconName:"external-link-square-alt",icon:[448,512,[],"f360","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z"]},faEye:{prefix:"fas",iconName:"eye",icon:[576,512,[],"f06e","M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]},faEyeDropper:{prefix:"fas",iconName:"eye-dropper",icon:[512,512,[],"f1fb","M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"]},faEyeSlash:{prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]},faFan:{prefix:"fas",iconName:"fan",icon:[512,512,[],"f863","M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]},faFastBackward:{prefix:"fas",iconName:"fast-backward",icon:[512,512,[],"f049","M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z"]},faFastForward:{prefix:"fas",iconName:"fast-forward",icon:[512,512,[],"f050","M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z"]},faFaucet:{prefix:"fas",iconName:"faucet",icon:[512,512,[],"e005","M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z"]},faFax:{prefix:"fas",iconName:"fax",icon:[512,512,[],"f1ac","M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z"]},faFeather:{prefix:"fas",iconName:"feather",icon:[512,512,[],"f52d","M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z"]},faFeatherAlt:{prefix:"fas",iconName:"feather-alt",icon:[512,512,[],"f56b","M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z"]},faFemale:{prefix:"fas",iconName:"female",icon:[256,512,[],"f182","M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z"]},faFighterJet:{prefix:"fas",iconName:"fighter-jet",icon:[640,512,[],"f0fb","M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z"]},faFile:{prefix:"fas",iconName:"file",icon:[384,512,[],"f15b","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileAlt:{prefix:"fas",iconName:"file-alt",icon:[384,512,[],"f15c","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileArchive:{prefix:"fas",iconName:"file-archive",icon:[384,512,[],"f1c6","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z"]},faFileAudio:{prefix:"fas",iconName:"file-audio",icon:[384,512,[],"f1c7","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileCode:{prefix:"fas",iconName:"file-code",icon:[384,512,[],"f1c9","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z"]},faFileContract:{prefix:"fas",iconName:"file-contract",icon:[384,512,[],"f56c","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileCsv:{prefix:"fas",iconName:"file-csv",icon:[384,512,[],"f6dd","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileDownload:{prefix:"fas",iconName:"file-download",icon:[384,512,[],"f56d","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileExcel:{prefix:"fas",iconName:"file-excel",icon:[384,512,[],"f1c3","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileExport:{prefix:"fas",iconName:"file-export",icon:[576,512,[],"f56e","M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z"]},faFileImage:{prefix:"fas",iconName:"file-image",icon:[384,512,[],"f1c5","M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"]},faFileImport:{prefix:"fas",iconName:"file-import",icon:[512,512,[],"f56f","M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z"]},faFileInvoice:{prefix:"fas",iconName:"file-invoice",icon:[384,512,[],"f570","M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z"]},faFileInvoiceDollar:{prefix:"fas",iconName:"file-invoice-dollar",icon:[384,512,[],"f571","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z"]},faFileMedical:{prefix:"fas",iconName:"file-medical",icon:[384,512,[],"f477","M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z"]},faFileMedicalAlt:{prefix:"fas",iconName:"file-medical-alt",icon:[448,512,[],"f478","M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFilePdf:{prefix:"fas",iconName:"file-pdf",icon:[384,512,[],"f1c1","M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z"]},faFilePowerpoint:{prefix:"fas",iconName:"file-powerpoint",icon:[384,512,[],"f1c4","M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z"]},faFilePrescription:{prefix:"fas",iconName:"file-prescription",icon:[384,512,[],"f572","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFileSignature:{prefix:"fas",iconName:"file-signature",icon:[576,512,[],"f573","M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z"]},faFileUpload:{prefix:"fas",iconName:"file-upload",icon:[384,512,[],"f574","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},faFileVideo:{prefix:"fas",iconName:"file-video",icon:[384,512,[],"f1c8","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"]},faFileWord:{prefix:"fas",iconName:"file-word",icon:[384,512,[],"f1c2","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},faFill:{prefix:"fas",iconName:"fill",icon:[512,512,[],"f575","M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z"]},faFillDrip:{prefix:"fas",iconName:"fill-drip",icon:[576,512,[],"f576","M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"]},faFilm:{prefix:"fas",iconName:"film",icon:[512,512,[],"f008","M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]},faFilter:{prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"]},faFingerprint:{prefix:"fas",iconName:"fingerprint",icon:[512,512,[],"f577","M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z"]},faFire:{prefix:"fas",iconName:"fire",icon:[384,512,[],"f06d","M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z"]},faFireAlt:{prefix:"fas",iconName:"fire-alt",icon:[448,512,[],"f7e4","M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z"]},faFireExtinguisher:{prefix:"fas",iconName:"fire-extinguisher",icon:[448,512,[],"f134","M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z"]},faFirstAid:{prefix:"fas",iconName:"first-aid",icon:[576,512,[],"f479","M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},faFish:{prefix:"fas",iconName:"fish",icon:[576,512,[],"f578","M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]},faFistRaised:{prefix:"fas",iconName:"fist-raised",icon:[384,512,[],"f6de","M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z"]},faFlag:{prefix:"fas",iconName:"flag",icon:[512,512,[],"f024","M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"]},faFlagCheckered:{prefix:"fas",iconName:"flag-checkered",icon:[512,512,[],"f11e","M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"]},faFlagUsa:{prefix:"fas",iconName:"flag-usa",icon:[512,512,[],"f74d","M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z"]},faFlask:{prefix:"fas",iconName:"flask",icon:[448,512,[],"f0c3","M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z"]},faFlushed:{prefix:"fas",iconName:"flushed",icon:[496,512,[],"f579","M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z"]},faFolder:{prefix:"fas",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]},faFolderMinus:{prefix:"fas",iconName:"folder-minus",icon:[512,512,[],"f65d","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z"]},faFolderOpen:{prefix:"fas",iconName:"folder-open",icon:[576,512,[],"f07c","M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"]},faFolderPlus:{prefix:"fas",iconName:"folder-plus",icon:[512,512,[],"f65e","M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"]},faFont:{prefix:"fas",iconName:"font",icon:[448,512,[],"f031","M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z"]},faFontAwesomeLogoFull:{prefix:"fas",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z"]},faFootballBall:{prefix:"fas",iconName:"football-ball",icon:[496,512,[],"f44e","M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z"]},faForward:{prefix:"fas",iconName:"forward",icon:[512,512,[],"f04e","M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"]},faFrog:{prefix:"fas",iconName:"frog",icon:[576,512,[],"f52e","M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z"]},faFrown:{prefix:"fas",iconName:"frown",icon:[496,512,[],"f119","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z"]},faFrownOpen:{prefix:"fas",iconName:"frown-open",icon:[496,512,[],"f57a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faFunnelDollar:{prefix:"fas",iconName:"funnel-dollar",icon:[640,512,[],"f662","M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z"]},faFutbol:{prefix:"fas",iconName:"futbol",icon:[512,512,[],"f1e3","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z"]},faGamepad:{prefix:"fas",iconName:"gamepad",icon:[640,512,[],"f11b","M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z"]},faGasPump:{prefix:"fas",iconName:"gas-pump",icon:[512,512,[],"f52f","M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z"]},faGavel:{prefix:"fas",iconName:"gavel",icon:[512,512,[],"f0e3","M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"]},faGem:{prefix:"fas",iconName:"gem",icon:[576,512,[],"f3a5","M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z"]},faGenderless:{prefix:"fas",iconName:"genderless",icon:[288,512,[],"f22d","M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z"]},faGhost:{prefix:"fas",iconName:"ghost",icon:[384,512,[],"f6e2","M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faGift:{prefix:"fas",iconName:"gift",icon:[512,512,[],"f06b","M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z"]},faGifts:{prefix:"fas",iconName:"gifts",icon:[640,512,[],"f79c","M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z"]},faGlassCheers:{prefix:"fas",iconName:"glass-cheers",icon:[640,512,[],"f79f","M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z"]},faGlassMartini:{prefix:"fas",iconName:"glass-martini",icon:[512,512,[],"f000","M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z"]},faGlassMartiniAlt:{prefix:"fas",iconName:"glass-martini-alt",icon:[512,512,[],"f57b","M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z"]},faGlassWhiskey:{prefix:"fas",iconName:"glass-whiskey",icon:[512,512,[],"f7a0","M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z"]},faGlasses:{prefix:"fas",iconName:"glasses",icon:[576,512,[],"f530","M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z"]},faGlobe:{prefix:"fas",iconName:"globe",icon:[496,512,[],"f0ac","M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"]},faGlobeAfrica:{prefix:"fas",iconName:"globe-africa",icon:[496,512,[],"f57c","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z"]},faGlobeAmericas:{prefix:"fas",iconName:"globe-americas",icon:[496,512,[],"f57d","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z"]},faGlobeAsia:{prefix:"fas",iconName:"globe-asia",icon:[496,512,[],"f57e","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z"]},faGlobeEurope:{prefix:"fas",iconName:"globe-europe",icon:[496,512,[],"f7a2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z"]},faGolfBall:{prefix:"fas",iconName:"golf-ball",icon:[416,512,[],"f450","M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z"]},faGopuram:{prefix:"fas",iconName:"gopuram",icon:[512,512,[],"f664","M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z"]},faGraduationCap:{prefix:"fas",iconName:"graduation-cap",icon:[640,512,[],"f19d","M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z"]},faGreaterThan:{prefix:"fas",iconName:"greater-than",icon:[384,512,[],"f531","M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z"]},faGreaterThanEqual:{prefix:"fas",iconName:"greater-than-equal",icon:[448,512,[],"f532","M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},faGrimace:{prefix:"fas",iconName:"grimace",icon:[496,512,[],"f57f","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z"]},faGrin:{prefix:"fas",iconName:"grin",icon:[496,512,[],"f580","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinAlt:{prefix:"fas",iconName:"grin-alt",icon:[496,512,[],"f581","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinBeam:{prefix:"fas",iconName:"grin-beam",icon:[496,512,[],"f582","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinBeamSweat:{prefix:"fas",iconName:"grin-beam-sweat",icon:[504,512,[],"f583","M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinHearts:{prefix:"fas",iconName:"grin-hearts",icon:[496,512,[],"f584","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z"]},faGrinSquint:{prefix:"fas",iconName:"grin-squint",icon:[496,512,[],"f585","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinSquintTears:{prefix:"fas",iconName:"grin-squint-tears",icon:[512,512,[],"f586","M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z"]},faGrinStars:{prefix:"fas",iconName:"grin-stars",icon:[496,512,[],"f587","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"]},faGrinTears:{prefix:"fas",iconName:"grin-tears",icon:[640,512,[],"f588","M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z"]},faGrinTongue:{prefix:"fas",iconName:"grin-tongue",icon:[496,512,[],"f589","M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]},faGrinTongueSquint:{prefix:"fas",iconName:"grin-tongue-squint",icon:[496,512,[],"f58a","M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z"]},faGrinTongueWink:{prefix:"fas",iconName:"grin-tongue-wink",icon:[496,512,[],"f58b","M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z"]},faGrinWink:{prefix:"fas",iconName:"grin-wink",icon:[496,512,[],"f58c","M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z"]},faGripHorizontal:{prefix:"fas",iconName:"grip-horizontal",icon:[448,512,[],"f58d","M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},faGripLines:{prefix:"fas",iconName:"grip-lines",icon:[512,512,[],"f7a4","M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"]},faGripLinesVertical:{prefix:"fas",iconName:"grip-lines-vertical",icon:[256,512,[],"f7a5","M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z"]},faGripVertical:{prefix:"fas",iconName:"grip-vertical",icon:[320,512,[],"f58e","M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z"]},faGuitar:{prefix:"fas",iconName:"guitar",icon:[512,512,[],"f7a6","M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z"]},faHSquare:{prefix:"fas",iconName:"h-square",icon:[448,512,[],"f0fd","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z"]},faHamburger:{prefix:"fas",iconName:"hamburger",icon:[512,512,[],"f805","M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z"]},faHammer:{prefix:"fas",iconName:"hammer",icon:[576,512,[],"f6e3","M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z"]},faHamsa:{prefix:"fas",iconName:"hamsa",icon:[512,512,[],"f665","M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]},faHandHolding:{prefix:"fas",iconName:"hand-holding",icon:[576,512,[],"f4bd","M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},faHandHoldingHeart:{prefix:"fas",iconName:"hand-holding-heart",icon:[576,512,[],"f4be","M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},faHandHoldingMedical:{prefix:"fas",iconName:"hand-holding-medical",icon:[576,512,[],"e05c","M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z"]},faHandHoldingUsd:{prefix:"fas",iconName:"hand-holding-usd",icon:[576,512,[],"f4c0","M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z"]},faHandHoldingWater:{prefix:"fas",iconName:"hand-holding-water",icon:[576,512,[],"f4c1","M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z"]},faHandLizard:{prefix:"fas",iconName:"hand-lizard",icon:[576,512,[],"f258","M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z"]},faHandMiddleFinger:{prefix:"fas",iconName:"hand-middle-finger",icon:[512,512,[],"f806","M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z"]},faHandPaper:{prefix:"fas",iconName:"hand-paper",icon:[448,512,[],"f256","M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z"]},faHandPeace:{prefix:"fas",iconName:"hand-peace",icon:[448,512,[],"f25b","M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z"]},faHandPointDown:{prefix:"fas",iconName:"hand-point-down",icon:[384,512,[],"f0a7","M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]},faHandPointLeft:{prefix:"fas",iconName:"hand-point-left",icon:[512,512,[],"f0a5","M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z"]},faHandPointRight:{prefix:"fas",iconName:"hand-point-right",icon:[512,512,[],"f0a4","M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z"]},faHandPointUp:{prefix:"fas",iconName:"hand-point-up",icon:[384,512,[],"f0a6","M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z"]},faHandPointer:{prefix:"fas",iconName:"hand-pointer",icon:[448,512,[],"f25a","M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z"]},faHandRock:{prefix:"fas",iconName:"hand-rock",icon:[512,512,[],"f255","M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z"]},faHandScissors:{prefix:"fas",iconName:"hand-scissors",icon:[512,512,[],"f257","M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z"]},faHandSparkles:{prefix:"fas",iconName:"hand-sparkles",icon:[640,512,[],"e05d","M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z"]},faHandSpock:{prefix:"fas",iconName:"hand-spock",icon:[512,512,[],"f259","M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z"]},faHands:{prefix:"fas",iconName:"hands",icon:[640,512,[],"f4c2","M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z"]},faHandsHelping:{prefix:"fas",iconName:"hands-helping",icon:[640,512,[],"f4c4","M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z"]},faHandsWash:{prefix:"fas",iconName:"hands-wash",icon:[576,512,[],"e05e","M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z"]},faHandshake:{prefix:"fas",iconName:"handshake",icon:[640,512,[],"f2b5","M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z"]},faHandshakeAltSlash:{prefix:"fas",iconName:"handshake-alt-slash",icon:[640,512,[],"e05f","M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z"]},faHandshakeSlash:{prefix:"fas",iconName:"handshake-slash",icon:[640,512,[],"e060","M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z"]},faHanukiah:{prefix:"fas",iconName:"hanukiah",icon:[640,512,[],"f6e6","M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z"]},faHardHat:{prefix:"fas",iconName:"hard-hat",icon:[512,512,[],"f807","M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faHashtag:{prefix:"fas",iconName:"hashtag",icon:[448,512,[],"f292","M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z"]},faHatCowboy:{prefix:"fas",iconName:"hat-cowboy",icon:[640,512,[],"f8c0","M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z"]},faHatCowboySide:{prefix:"fas",iconName:"hat-cowboy-side",icon:[640,512,[],"f8c1","M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z"]},faHatWizard:{prefix:"fas",iconName:"hat-wizard",icon:[512,512,[],"f6e8","M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z"]},faHdd:{prefix:"fas",iconName:"hdd",icon:[576,512,[],"f0a0","M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},faHeadSideCough:{prefix:"fas",iconName:"head-side-cough",icon:[640,512,[],"e061","M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z"]},faHeadSideCoughSlash:{prefix:"fas",iconName:"head-side-cough-slash",icon:[640,512,[],"e062","M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z"]},faHeadSideMask:{prefix:"fas",iconName:"head-side-mask",icon:[512,512,[],"e063","M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z"]},faHeadSideVirus:{prefix:"fas",iconName:"head-side-virus",icon:[512,512,[],"e064","M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z"]},faHeading:{prefix:"fas",iconName:"heading",icon:[512,512,[],"f1dc","M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z"]},faHeadphones:{prefix:"fas",iconName:"headphones",icon:[512,512,[],"f025","M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z"]},faHeadphonesAlt:{prefix:"fas",iconName:"headphones-alt",icon:[512,512,[],"f58f","M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z"]},faHeadset:{prefix:"fas",iconName:"headset",icon:[512,512,[],"f590","M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z"]},faHeart:{prefix:"fas",iconName:"heart",icon:[512,512,[],"f004","M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z"]},faHeartBroken:{prefix:"fas",iconName:"heart-broken",icon:[512,512,[],"f7a9","M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z"]},faHeartbeat:{prefix:"fas",iconName:"heartbeat",icon:[512,512,[],"f21e","M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z"]},faHelicopter:{prefix:"fas",iconName:"helicopter",icon:[640,512,[],"f533","M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z"]},faHighlighter:{prefix:"fas",iconName:"highlighter",icon:[544,512,[],"f591","M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"]},faHiking:{prefix:"fas",iconName:"hiking",icon:[384,512,[],"f6ec","M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z"]},faHippo:{prefix:"fas",iconName:"hippo",icon:[640,512,[],"f6ed","M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},faHistory:{prefix:"fas",iconName:"history",icon:[512,512,[],"f1da","M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z"]},faHockeyPuck:{prefix:"fas",iconName:"hockey-puck",icon:[512,512,[],"f453","M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z"]},faHollyBerry:{prefix:"fas",iconName:"holly-berry",icon:[448,512,[],"f7aa","M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z"]},faHome:{prefix:"fas",iconName:"home",icon:[576,512,[],"f015","M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]},faHorse:{prefix:"fas",iconName:"horse",icon:[576,512,[],"f6f0","M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z"]},faHorseHead:{prefix:"fas",iconName:"horse-head",icon:[512,512,[],"f7ab","M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"]},faHospital:{prefix:"fas",iconName:"hospital",icon:[448,512,[],"f0f8","M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z"]},faHospitalAlt:{prefix:"fas",iconName:"hospital-alt",icon:[576,512,[],"f47d","M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z"]},faHospitalSymbol:{prefix:"fas",iconName:"hospital-symbol",icon:[512,512,[],"f47e","M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z"]},faHospitalUser:{prefix:"fas",iconName:"hospital-user",icon:[640,512,[],"f80d","M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z"]},faHotTub:{prefix:"fas",iconName:"hot-tub",icon:[512,512,[],"f593","M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z"]},faHotdog:{prefix:"fas",iconName:"hotdog",icon:[512,512,[],"f80f","M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z"]},faHotel:{prefix:"fas",iconName:"hotel",icon:[576,512,[],"f594","M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]},faHourglass:{prefix:"fas",iconName:"hourglass",icon:[384,512,[],"f254","M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z"]},faHourglassEnd:{prefix:"fas",iconName:"hourglass-end",icon:[384,512,[],"f253","M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z"]},faHourglassHalf:{prefix:"fas",iconName:"hourglass-half",icon:[384,512,[],"f252","M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"]},faHourglassStart:{prefix:"fas",iconName:"hourglass-start",icon:[384,512,[],"f251","M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z"]},faHouseDamage:{prefix:"fas",iconName:"house-damage",icon:[576,512,[],"f6f1","M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z"]},faHouseUser:{prefix:"fas",iconName:"house-user",icon:[576,512,[],"e065","M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z"]},faHryvnia:{prefix:"fas",iconName:"hryvnia",icon:[384,512,[],"f6f2","M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z"]},faICursor:{prefix:"fas",iconName:"i-cursor",icon:[256,512,[],"f246","M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z"]},faIceCream:{prefix:"fas",iconName:"ice-cream",icon:[448,512,[],"f810","M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z"]},faIcicles:{prefix:"fas",iconName:"icicles",icon:[512,512,[],"f7ad","M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z"]},faIcons:{prefix:"fas",iconName:"icons",icon:[512,512,[],"f86d","M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z"]},faIdBadge:{prefix:"fas",iconName:"id-badge",icon:[384,512,[],"f2c1","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},faIdCard:{prefix:"fas",iconName:"id-card",icon:[576,512,[],"f2c2","M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"]},faIdCardAlt:{prefix:"fas",iconName:"id-card-alt",icon:[576,512,[],"f47f","M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"]},faIgloo:{prefix:"fas",iconName:"igloo",icon:[576,512,[],"f7ae","M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z"]},faImage:{prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"]},faImages:{prefix:"fas",iconName:"images",icon:[576,512,[],"f302","M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z"]},faInbox:{prefix:"fas",iconName:"inbox",icon:[576,512,[],"f01c","M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z"]},faIndent:{prefix:"fas",iconName:"indent",icon:[448,512,[],"f03c","M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faIndustry:{prefix:"fas",iconName:"industry",icon:[512,512,[],"f275","M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z"]},faInfinity:{prefix:"fas",iconName:"infinity",icon:[640,512,[],"f534","M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"]},faInfo:{prefix:"fas",iconName:"info",icon:[192,512,[],"f129","M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"]},faInfoCircle:{prefix:"fas",iconName:"info-circle",icon:[512,512,[],"f05a","M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"]},faItalic:{prefix:"fas",iconName:"italic",icon:[320,512,[],"f033","M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z"]},faJedi:{prefix:"fas",iconName:"jedi",icon:[576,512,[],"f669","M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z"]},faJoint:{prefix:"fas",iconName:"joint",icon:[640,512,[],"f595","M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z"]},faJournalWhills:{prefix:"fas",iconName:"journal-whills",icon:[448,512,[],"f66a","M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z"]},faKaaba:{prefix:"fas",iconName:"kaaba",icon:[576,512,[],"f66b","M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z"]},faKey:{prefix:"fas",iconName:"key",icon:[512,512,[],"f084","M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"]},faKeyboard:{prefix:"fas",iconName:"keyboard",icon:[576,512,[],"f11c","M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]},faKhanda:{prefix:"fas",iconName:"khanda",icon:[512,512,[],"f66d","M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z"]},faKiss:{prefix:"fas",iconName:"kiss",icon:[496,512,[],"f596","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faKissBeam:{prefix:"fas",iconName:"kiss-beam",icon:[496,512,[],"f597","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z"]},faKissWinkHeart:{prefix:"fas",iconName:"kiss-wink-heart",icon:[504,512,[],"f598","M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z"]},faKiwiBird:{prefix:"fas",iconName:"kiwi-bird",icon:[576,512,[],"f535","M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z"]},faLandmark:{prefix:"fas",iconName:"landmark",icon:[512,512,[],"f66f","M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faLanguage:{prefix:"fas",iconName:"language",icon:[640,512,[],"f1ab","M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z"]},faLaptop:{prefix:"fas",iconName:"laptop",icon:[640,512,[],"f109","M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]},faLaptopCode:{prefix:"fas",iconName:"laptop-code",icon:[640,512,[],"f5fc","M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"]},faLaptopHouse:{prefix:"fas",iconName:"laptop-house",icon:[640,512,[],"e066","M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z"]},faLaptopMedical:{prefix:"fas",iconName:"laptop-medical",icon:[640,512,[],"f812","M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z"]},faLaugh:{prefix:"fas",iconName:"laugh",icon:[496,512,[],"f599","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z"]},faLaughBeam:{prefix:"fas",iconName:"laugh-beam",icon:[496,512,[],"f59a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},faLaughSquint:{prefix:"fas",iconName:"laugh-squint",icon:[496,512,[],"f59b","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},faLaughWink:{prefix:"fas",iconName:"laugh-wink",icon:[496,512,[],"f59c","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z"]},faLayerGroup:{prefix:"fas",iconName:"layer-group",icon:[512,512,[],"f5fd","M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"]},faLeaf:{prefix:"fas",iconName:"leaf",icon:[576,512,[],"f06c","M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z"]},faLemon:{prefix:"fas",iconName:"lemon",icon:[512,512,[],"f094","M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z"]},faLessThan:{prefix:"fas",iconName:"less-than",icon:[384,512,[],"f536","M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z"]},faLessThanEqual:{prefix:"fas",iconName:"less-than-equal",icon:[448,512,[],"f537","M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z"]},faLevelDownAlt:{prefix:"fas",iconName:"level-down-alt",icon:[320,512,[],"f3be","M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z"]},faLevelUpAlt:{prefix:"fas",iconName:"level-up-alt",icon:[320,512,[],"f3bf","M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z"]},faLifeRing:{prefix:"fas",iconName:"life-ring",icon:[512,512,[],"f1cd","M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z"]},faLightbulb:{prefix:"fas",iconName:"lightbulb",icon:[352,512,[],"f0eb","M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]},faLink:{prefix:"fas",iconName:"link",icon:[512,512,[],"f0c1","M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"]},faLiraSign:{prefix:"fas",iconName:"lira-sign",icon:[384,512,[],"f195","M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z"]},faList:{prefix:"fas",iconName:"list",icon:[512,512,[],"f03a","M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faListAlt:{prefix:"fas",iconName:"list-alt",icon:[512,512,[],"f022","M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z"]},faListOl:{prefix:"fas",iconName:"list-ol",icon:[512,512,[],"f0cb","M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"]},faListUl:{prefix:"fas",iconName:"list-ul",icon:[512,512,[],"f0ca","M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faLocationArrow:{prefix:"fas",iconName:"location-arrow",icon:[512,512,[],"f124","M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z"]},faLock:{prefix:"fas",iconName:"lock",icon:[448,512,[],"f023","M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"]},faLockOpen:{prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"]},faLongArrowAltDown:{prefix:"fas",iconName:"long-arrow-alt-down",icon:[256,512,[],"f309","M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z"]},faLongArrowAltLeft:{prefix:"fas",iconName:"long-arrow-alt-left",icon:[448,512,[],"f30a","M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z"]},faLongArrowAltRight:{prefix:"fas",iconName:"long-arrow-alt-right",icon:[448,512,[],"f30b","M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"]},faLongArrowAltUp:{prefix:"fas",iconName:"long-arrow-alt-up",icon:[256,512,[],"f30c","M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z"]},faLowVision:{prefix:"fas",iconName:"low-vision",icon:[576,512,[],"f2a8","M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z"]},faLuggageCart:{prefix:"fas",iconName:"luggage-cart",icon:[640,512,[],"f59d","M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z"]},faLungs:{prefix:"fas",iconName:"lungs",icon:[640,512,[],"f604","M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z"]},faLungsVirus:{prefix:"fas",iconName:"lungs-virus",icon:[640,512,[],"e067","M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z"]},faMagic:{prefix:"fas",iconName:"magic",icon:[512,512,[],"f0d0","M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"]},faMagnet:{prefix:"fas",iconName:"magnet",icon:[512,512,[],"f076","M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z"]},faMailBulk:{prefix:"fas",iconName:"mail-bulk",icon:[576,512,[],"f674","M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z"]},faMale:{prefix:"fas",iconName:"male",icon:[192,512,[],"f183","M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z"]},faMap:{prefix:"fas",iconName:"map",icon:[576,512,[],"f279","M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z"]},faMapMarked:{prefix:"fas",iconName:"map-marked",icon:[576,512,[],"f59f","M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]},faMapMarkedAlt:{prefix:"fas",iconName:"map-marked-alt",icon:[576,512,[],"f5a0","M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z"]},faMapMarker:{prefix:"fas",iconName:"map-marker",icon:[384,512,[],"f041","M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z"]},faMapMarkerAlt:{prefix:"fas",iconName:"map-marker-alt",icon:[384,512,[],"f3c5","M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z"]},faMapPin:{prefix:"fas",iconName:"map-pin",icon:[288,512,[],"f276","M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z"]},faMapSigns:{prefix:"fas",iconName:"map-signs",icon:[512,512,[],"f277","M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z"]},faMarker:{prefix:"fas",iconName:"marker",icon:[512,512,[],"f5a1","M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z"]},faMars:{prefix:"fas",iconName:"mars",icon:[384,512,[],"f222","M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faMarsDouble:{prefix:"fas",iconName:"mars-double",icon:[512,512,[],"f227","M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z"]},faMarsStroke:{prefix:"fas",iconName:"mars-stroke",icon:[384,512,[],"f229","M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faMarsStrokeH:{prefix:"fas",iconName:"mars-stroke-h",icon:[480,512,[],"f22b","M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]},faMarsStrokeV:{prefix:"fas",iconName:"mars-stroke-v",icon:[288,512,[],"f22a","M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z"]},faMask:{prefix:"fas",iconName:"mask",icon:[640,512,[],"f6fa","M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"]},faMedal:{prefix:"fas",iconName:"medal",icon:[512,512,[],"f5a2","M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z"]},faMedkit:{prefix:"fas",iconName:"medkit",icon:[512,512,[],"f0fa","M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z"]},faMeh:{prefix:"fas",iconName:"meh",icon:[496,512,[],"f11a","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faMehBlank:{prefix:"fas",iconName:"meh-blank",icon:[496,512,[],"f5a4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faMehRollingEyes:{prefix:"fas",iconName:"meh-rolling-eyes",icon:[496,512,[],"f5a5","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z"]},faMemory:{prefix:"fas",iconName:"memory",icon:[640,512,[],"f538","M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z"]},faMenorah:{prefix:"fas",iconName:"menorah",icon:[640,512,[],"f676","M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z"]},faMercury:{prefix:"fas",iconName:"mercury",icon:[288,512,[],"f223","M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]},faMeteor:{prefix:"fas",iconName:"meteor",icon:[512,512,[],"f753","M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z"]},faMicrochip:{prefix:"fas",iconName:"microchip",icon:[512,512,[],"f2db","M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z"]},faMicrophone:{prefix:"fas",iconName:"microphone",icon:[352,512,[],"f130","M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z"]},faMicrophoneAlt:{prefix:"fas",iconName:"microphone-alt",icon:[352,512,[],"f3c9","M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z"]},faMicrophoneAltSlash:{prefix:"fas",iconName:"microphone-alt-slash",icon:[640,512,[],"f539","M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]},faMicrophoneSlash:{prefix:"fas",iconName:"microphone-slash",icon:[640,512,[],"f131","M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z"]},faMicroscope:{prefix:"fas",iconName:"microscope",icon:[512,512,[],"f610","M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z"]},faMinus:{prefix:"fas",iconName:"minus",icon:[448,512,[],"f068","M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faMinusCircle:{prefix:"fas",iconName:"minus-circle",icon:[512,512,[],"f056","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"]},faMinusSquare:{prefix:"fas",iconName:"minus-square",icon:[448,512,[],"f146","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"]},faMitten:{prefix:"fas",iconName:"mitten",icon:[448,512,[],"f7b5","M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z"]},faMobile:{prefix:"fas",iconName:"mobile",icon:[320,512,[],"f10b","M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faMobileAlt:{prefix:"fas",iconName:"mobile-alt",icon:[320,512,[],"f3cd","M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z"]},faMoneyBill:{prefix:"fas",iconName:"money-bill",icon:[640,512,[],"f0d6","M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]},faMoneyBillAlt:{prefix:"fas",iconName:"money-bill-alt",icon:[640,512,[],"f3d1","M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z"]},faMoneyBillWave:{prefix:"fas",iconName:"money-bill-wave",icon:[640,512,[],"f53a","M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z"]},faMoneyBillWaveAlt:{prefix:"fas",iconName:"money-bill-wave-alt",icon:[640,512,[],"f53b","M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z"]},faMoneyCheck:{prefix:"fas",iconName:"money-check",icon:[640,512,[],"f53c","M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z"]},faMoneyCheckAlt:{prefix:"fas",iconName:"money-check-alt",icon:[640,512,[],"f53d","M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z"]},faMonument:{prefix:"fas",iconName:"monument",icon:[384,512,[],"f5a6","M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z"]},faMoon:{prefix:"fas",iconName:"moon",icon:[512,512,[],"f186","M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"]},faMortarPestle:{prefix:"fas",iconName:"mortar-pestle",icon:[512,512,[],"f5a7","M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"]},faMosque:{prefix:"fas",iconName:"mosque",icon:[640,512,[],"f678","M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z"]},faMotorcycle:{prefix:"fas",iconName:"motorcycle",icon:[640,512,[],"f21c","M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z"]},faMountain:{prefix:"fas",iconName:"mountain",icon:[640,512,[],"f6fc","M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z"]},faMouse:{prefix:"fas",iconName:"mouse",icon:[384,512,[],"f8cc","M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z"]},faMousePointer:{prefix:"fas",iconName:"mouse-pointer",icon:[320,512,[],"f245","M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z"]},faMugHot:{prefix:"fas",iconName:"mug-hot",icon:[512,512,[],"f7b6","M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]},faMusic:{prefix:"fas",iconName:"music",icon:[512,512,[],"f001","M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z"]},faNetworkWired:{prefix:"fas",iconName:"network-wired",icon:[640,512,[],"f6ff","M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z"]},faNeuter:{prefix:"fas",iconName:"neuter",icon:[288,512,[],"f22c","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faNewspaper:{prefix:"fas",iconName:"newspaper",icon:[576,512,[],"f1ea","M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z"]},faNotEqual:{prefix:"fas",iconName:"not-equal",icon:[448,512,[],"f53e","M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z"]},faNotesMedical:{prefix:"fas",iconName:"notes-medical",icon:[384,512,[],"f481","M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z"]},faObjectGroup:{prefix:"fas",iconName:"object-group",icon:[512,512,[],"f247","M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z"]},faObjectUngroup:{prefix:"fas",iconName:"object-ungroup",icon:[576,512,[],"f248","M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z"]},faOilCan:{prefix:"fas",iconName:"oil-can",icon:[640,512,[],"f613","M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z"]},faOm:{prefix:"fas",iconName:"om",icon:[512,512,[],"f679","M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z"]},faOtter:{prefix:"fas",iconName:"otter",icon:[640,512,[],"f700","M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z"]},faOutdent:{prefix:"fas",iconName:"outdent",icon:[448,512,[],"f03b","M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faPager:{prefix:"fas",iconName:"pager",icon:[512,512,[],"f815","M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z"]},faPaintBrush:{prefix:"fas",iconName:"paint-brush",icon:[512,512,[],"f1fc","M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"]},faPaintRoller:{prefix:"fas",iconName:"paint-roller",icon:[512,512,[],"f5aa","M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z"]},faPalette:{prefix:"fas",iconName:"palette",icon:[512,512,[],"f53f","M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faPallet:{prefix:"fas",iconName:"pallet",icon:[640,512,[],"f482","M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z"]},faPaperPlane:{prefix:"fas",iconName:"paper-plane",icon:[512,512,[],"f1d8","M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"]},faPaperclip:{prefix:"fas",iconName:"paperclip",icon:[448,512,[],"f0c6","M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"]},faParachuteBox:{prefix:"fas",iconName:"parachute-box",icon:[512,512,[],"f4cd","M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z"]},faParagraph:{prefix:"fas",iconName:"paragraph",icon:[448,512,[],"f1dd","M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z"]},faParking:{prefix:"fas",iconName:"parking",icon:[448,512,[],"f540","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z"]},faPassport:{prefix:"fas",iconName:"passport",icon:[448,512,[],"f5ab","M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z"]},faPastafarianism:{prefix:"fas",iconName:"pastafarianism",icon:[640,512,[],"f67b","M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z"]},faPaste:{prefix:"fas",iconName:"paste",icon:[448,512,[],"f0ea","M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"]},faPause:{prefix:"fas",iconName:"pause",icon:[448,512,[],"f04c","M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"]},faPauseCircle:{prefix:"fas",iconName:"pause-circle",icon:[512,512,[],"f28b","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z"]},faPaw:{prefix:"fas",iconName:"paw",icon:[512,512,[],"f1b0","M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z"]},faPeace:{prefix:"fas",iconName:"peace",icon:[496,512,[],"f67c","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z"]},faPen:{prefix:"fas",iconName:"pen",icon:[512,512,[],"f304","M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]},faPenAlt:{prefix:"fas",iconName:"pen-alt",icon:[512,512,[],"f305","M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z"]},faPenFancy:{prefix:"fas",iconName:"pen-fancy",icon:[512,512,[],"f5ac","M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z"]},faPenNib:{prefix:"fas",iconName:"pen-nib",icon:[512,512,[],"f5ad","M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z"]},faPenSquare:{prefix:"fas",iconName:"pen-square",icon:[448,512,[],"f14b","M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z"]},faPencilAlt:{prefix:"fas",iconName:"pencil-alt",icon:[512,512,[],"f303","M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]},faPencilRuler:{prefix:"fas",iconName:"pencil-ruler",icon:[512,512,[],"f5ae","M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z"]},faPeopleArrows:{prefix:"fas",iconName:"people-arrows",icon:[576,512,[],"e068","M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z"]},faPeopleCarry:{prefix:"fas",iconName:"people-carry",icon:[640,512,[],"f4ce","M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z"]},faPepperHot:{prefix:"fas",iconName:"pepper-hot",icon:[512,512,[],"f816","M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z"]},faPercent:{prefix:"fas",iconName:"percent",icon:[448,512,[],"f295","M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z"]},faPercentage:{prefix:"fas",iconName:"percentage",icon:[384,512,[],"f541","M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z"]},faPersonBooth:{prefix:"fas",iconName:"person-booth",icon:[576,512,[],"f756","M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z"]},faPhone:{prefix:"fas",iconName:"phone",icon:[512,512,[],"f095","M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"]},faPhoneAlt:{prefix:"fas",iconName:"phone-alt",icon:[512,512,[],"f879","M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z"]},faPhoneSlash:{prefix:"fas",iconName:"phone-slash",icon:[640,512,[],"f3dd","M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z"]},faPhoneSquare:{prefix:"fas",iconName:"phone-square",icon:[448,512,[],"f098","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z"]},faPhoneSquareAlt:{prefix:"fas",iconName:"phone-square-alt",icon:[448,512,[],"f87b","M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z"]},faPhoneVolume:{prefix:"fas",iconName:"phone-volume",icon:[384,512,[],"f2a0","M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z"]},faPhotoVideo:{prefix:"fas",iconName:"photo-video",icon:[640,512,[],"f87c","M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z"]},faPiggyBank:{prefix:"fas",iconName:"piggy-bank",icon:[576,512,[],"f4d3","M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z"]},faPills:{prefix:"fas",iconName:"pills",icon:[576,512,[],"f484","M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z"]},faPizzaSlice:{prefix:"fas",iconName:"pizza-slice",icon:[512,512,[],"f818","M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z"]},faPlaceOfWorship:{prefix:"fas",iconName:"place-of-worship",icon:[640,512,[],"f67f","M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z"]},faPlane:{prefix:"fas",iconName:"plane",icon:[576,512,[],"f072","M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z"]},faPlaneArrival:{prefix:"fas",iconName:"plane-arrival",icon:[640,512,[],"f5af","M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z"]},faPlaneDeparture:{prefix:"fas",iconName:"plane-departure",icon:[640,512,[],"f5b0","M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z"]},faPlaneSlash:{prefix:"fas",iconName:"plane-slash",icon:[640,512,[],"e069","M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z"]},faPlay:{prefix:"fas",iconName:"play",icon:[448,512,[],"f04b","M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"]},faPlayCircle:{prefix:"fas",iconName:"play-circle",icon:[512,512,[],"f144","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z"]},faPlug:{prefix:"fas",iconName:"plug",icon:[384,512,[],"f1e6","M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"]},faPlus:{prefix:"fas",iconName:"plus",icon:[448,512,[],"f067","M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},faPlusCircle:{prefix:"fas",iconName:"plus-circle",icon:[512,512,[],"f055","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},faPlusSquare:{prefix:"fas",iconName:"plus-square",icon:[448,512,[],"f0fe","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"]},faPodcast:{prefix:"fas",iconName:"podcast",icon:[448,512,[],"f2ce","M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z"]},faPoll:{prefix:"fas",iconName:"poll",icon:[448,512,[],"f681","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z"]},faPollH:{prefix:"fas",iconName:"poll-h",icon:[448,512,[],"f682","M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z"]},faPoo:{prefix:"fas",iconName:"poo",icon:[512,512,[],"f2fe","M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faPooStorm:{prefix:"fas",iconName:"poo-storm",icon:[448,512,[],"f75a","M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z"]},faPoop:{prefix:"fas",iconName:"poop",icon:[512,512,[],"f619","M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z"]},faPortrait:{prefix:"fas",iconName:"portrait",icon:[384,512,[],"f3e0","M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"]},faPoundSign:{prefix:"fas",iconName:"pound-sign",icon:[320,512,[],"f154","M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z"]},faPowerOff:{prefix:"fas",iconName:"power-off",icon:[512,512,[],"f011","M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"]},faPray:{prefix:"fas",iconName:"pray",icon:[384,512,[],"f683","M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z"]},faPrayingHands:{prefix:"fas",iconName:"praying-hands",icon:[640,512,[],"f684","M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z"]},faPrescription:{prefix:"fas",iconName:"prescription",icon:[384,512,[],"f5b1","M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z"]},faPrescriptionBottle:{prefix:"fas",iconName:"prescription-bottle",icon:[384,512,[],"f485","M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z"]},faPrescriptionBottleAlt:{prefix:"fas",iconName:"prescription-bottle-alt",icon:[384,512,[],"f486","M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z"]},faPrint:{prefix:"fas",iconName:"print",icon:[512,512,[],"f02f","M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faProcedures:{prefix:"fas",iconName:"procedures",icon:[640,512,[],"f487","M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z"]},faProjectDiagram:{prefix:"fas",iconName:"project-diagram",icon:[640,512,[],"f542","M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"]},faPumpMedical:{prefix:"fas",iconName:"pump-medical",icon:[384,512,[],"e06a","M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z"]},faPumpSoap:{prefix:"fas",iconName:"pump-soap",icon:[384,512,[],"e06b","M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z"]},faPuzzlePiece:{prefix:"fas",iconName:"puzzle-piece",icon:[576,512,[],"f12e","M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"]},faQrcode:{prefix:"fas",iconName:"qrcode",icon:[448,512,[],"f029","M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z"]},faQuestion:{prefix:"fas",iconName:"question",icon:[384,512,[],"f128","M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z"]},faQuestionCircle:{prefix:"fas",iconName:"question-circle",icon:[512,512,[],"f059","M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"]},faQuidditch:{prefix:"fas",iconName:"quidditch",icon:[640,512,[],"f458","M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z"]},faQuoteLeft:{prefix:"fas",iconName:"quote-left",icon:[512,512,[],"f10d","M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]},faQuoteRight:{prefix:"fas",iconName:"quote-right",icon:[512,512,[],"f10e","M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"]},faQuran:{prefix:"fas",iconName:"quran",icon:[448,512,[],"f687","M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z"]},faRadiation:{prefix:"fas",iconName:"radiation",icon:[496,512,[],"f7b9","M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z"]},faRadiationAlt:{prefix:"fas",iconName:"radiation-alt",icon:[496,512,[],"f7ba","M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},faRainbow:{prefix:"fas",iconName:"rainbow",icon:[576,512,[],"f75b","M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z"]},faRandom:{prefix:"fas",iconName:"random",icon:[512,512,[],"f074","M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"]},faReceipt:{prefix:"fas",iconName:"receipt",icon:[384,512,[],"f543","M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z"]},faRecordVinyl:{prefix:"fas",iconName:"record-vinyl",icon:[512,512,[],"f8d9","M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z"]},faRecycle:{prefix:"fas",iconName:"recycle",icon:[512,512,[],"f1b8","M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"]},faRedo:{prefix:"fas",iconName:"redo",icon:[512,512,[],"f01e","M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"]},faRedoAlt:{prefix:"fas",iconName:"redo-alt",icon:[512,512,[],"f2f9","M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z"]},faRegistered:{prefix:"fas",iconName:"registered",icon:[512,512,[],"f25d","M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z"]},faRemoveFormat:{prefix:"fas",iconName:"remove-format",icon:[640,512,[],"f87d","M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z"]},faReply:{prefix:"fas",iconName:"reply",icon:[512,512,[],"f3e5","M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"]},faReplyAll:{prefix:"fas",iconName:"reply-all",icon:[576,512,[],"f122","M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"]},faRepublican:{prefix:"fas",iconName:"republican",icon:[640,512,[],"f75e","M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z"]},faRestroom:{prefix:"fas",iconName:"restroom",icon:[640,512,[],"f7bd","M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z"]},faRetweet:{prefix:"fas",iconName:"retweet",icon:[640,512,[],"f079","M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z"]},faRibbon:{prefix:"fas",iconName:"ribbon",icon:[448,512,[],"f4d6","M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z"]},faRing:{prefix:"fas",iconName:"ring",icon:[512,512,[],"f70b","M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z"]},faRoad:{prefix:"fas",iconName:"road",icon:[576,512,[],"f018","M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z"]},faRobot:{prefix:"fas",iconName:"robot",icon:[640,512,[],"f544","M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"]},faRocket:{prefix:"fas",iconName:"rocket",icon:[512,512,[],"f135","M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"]},faRoute:{prefix:"fas",iconName:"route",icon:[512,512,[],"f4d7","M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faRss:{prefix:"fas",iconName:"rss",icon:[448,512,[],"f09e","M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z"]},faRssSquare:{prefix:"fas",iconName:"rss-square",icon:[448,512,[],"f143","M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z"]},faRubleSign:{prefix:"fas",iconName:"ruble-sign",icon:[384,512,[],"f158","M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z"]},faRuler:{prefix:"fas",iconName:"ruler",icon:[640,512,[],"f545","M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z"]},faRulerCombined:{prefix:"fas",iconName:"ruler-combined",icon:[512,512,[],"f546","M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},faRulerHorizontal:{prefix:"fas",iconName:"ruler-horizontal",icon:[576,512,[],"f547","M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z"]},faRulerVertical:{prefix:"fas",iconName:"ruler-vertical",icon:[256,512,[],"f548","M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z"]},faRunning:{prefix:"fas",iconName:"running",icon:[416,512,[],"f70c","M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z"]},faRupeeSign:{prefix:"fas",iconName:"rupee-sign",icon:[320,512,[],"f156","M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z"]},faSadCry:{prefix:"fas",iconName:"sad-cry",icon:[496,512,[],"f5b3","M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z"]},faSadTear:{prefix:"fas",iconName:"sad-tear",icon:[496,512,[],"f5b4","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z"]},faSatellite:{prefix:"fas",iconName:"satellite",icon:[512,512,[],"f7bf","M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z"]},faSatelliteDish:{prefix:"fas",iconName:"satellite-dish",icon:[512,512,[],"f7c0","M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z"]},faSave:{prefix:"fas",iconName:"save",icon:[448,512,[],"f0c7","M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"]},faSchool:{prefix:"fas",iconName:"school",icon:[640,512,[],"f549","M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z"]},faScrewdriver:{prefix:"fas",iconName:"screwdriver",icon:[512,512,[],"f54a","M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"]},faScroll:{prefix:"fas",iconName:"scroll",icon:[640,512,[],"f70e","M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z"]},faSdCard:{prefix:"fas",iconName:"sd-card",icon:[384,512,[],"f7c2","M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"]},faSearch:{prefix:"fas",iconName:"search",icon:[512,512,[],"f002","M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]},faSearchDollar:{prefix:"fas",iconName:"search-dollar",icon:[512,512,[],"f688","M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z"]},faSearchLocation:{prefix:"fas",iconName:"search-location",icon:[512,512,[],"f689","M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faSearchMinus:{prefix:"fas",iconName:"search-minus",icon:[512,512,[],"f010","M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]},faSearchPlus:{prefix:"fas",iconName:"search-plus",icon:[512,512,[],"f00e","M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z"]},faSeedling:{prefix:"fas",iconName:"seedling",icon:[512,512,[],"f4d8","M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"]},faServer:{prefix:"fas",iconName:"server",icon:[512,512,[],"f233","M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"]},faShapes:{prefix:"fas",iconName:"shapes",icon:[512,512,[],"f61f","M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z"]},faShare:{prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},faShareAlt:{prefix:"fas",iconName:"share-alt",icon:[448,512,[],"f1e0","M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"]},faShareAltSquare:{prefix:"fas",iconName:"share-alt-square",icon:[448,512,[],"f1e1","M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z"]},faShareSquare:{prefix:"fas",iconName:"share-square",icon:[576,512,[],"f14d","M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z"]},faShekelSign:{prefix:"fas",iconName:"shekel-sign",icon:[448,512,[],"f20b","M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z"]},faShieldAlt:{prefix:"fas",iconName:"shield-alt",icon:[512,512,[],"f3ed","M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z"]},faShieldVirus:{prefix:"fas",iconName:"shield-virus",icon:[512,512,[],"e06c","M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z"]},faShip:{prefix:"fas",iconName:"ship",icon:[640,512,[],"f21a","M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z"]},faShippingFast:{prefix:"fas",iconName:"shipping-fast",icon:[640,512,[],"f48b","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},faShoePrints:{prefix:"fas",iconName:"shoe-prints",icon:[640,512,[],"f54b","M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z"]},faShoppingBag:{prefix:"fas",iconName:"shopping-bag",icon:[448,512,[],"f290","M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z"]},faShoppingBasket:{prefix:"fas",iconName:"shopping-basket",icon:[576,512,[],"f291","M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z"]},faShoppingCart:{prefix:"fas",iconName:"shopping-cart",icon:[576,512,[],"f07a","M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"]},faShower:{prefix:"fas",iconName:"shower",icon:[512,512,[],"f2cc","M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z"]},faShuttleVan:{prefix:"fas",iconName:"shuttle-van",icon:[640,512,[],"f5b6","M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z"]},faSign:{prefix:"fas",iconName:"sign",icon:[512,512,[],"f4d9","M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z"]},faSignInAlt:{prefix:"fas",iconName:"sign-in-alt",icon:[512,512,[],"f2f6","M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z"]},faSignLanguage:{prefix:"fas",iconName:"sign-language",icon:[448,512,[],"f2a7","M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z"]},faSignOutAlt:{prefix:"fas",iconName:"sign-out-alt",icon:[512,512,[],"f2f5","M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"]},faSignal:{prefix:"fas",iconName:"signal",icon:[640,512,[],"f012","M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z"]},faSignature:{prefix:"fas",iconName:"signature",icon:[640,512,[],"f5b7","M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z"]},faSimCard:{prefix:"fas",iconName:"sim-card",icon:[384,512,[],"f7c4","M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z"]},faSink:{prefix:"fas",iconName:"sink",icon:[512,512,[],"e06d","M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z"]},faSitemap:{prefix:"fas",iconName:"sitemap",icon:[640,512,[],"f0e8","M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"]},faSkating:{prefix:"fas",iconName:"skating",icon:[448,512,[],"f7c5","M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z"]},faSkiing:{prefix:"fas",iconName:"skiing",icon:[512,512,[],"f7c9","M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z"]},faSkiingNordic:{prefix:"fas",iconName:"skiing-nordic",icon:[576,512,[],"f7ca","M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z"]},faSkull:{prefix:"fas",iconName:"skull",icon:[512,512,[],"f54c","M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z"]},faSkullCrossbones:{prefix:"fas",iconName:"skull-crossbones",icon:[448,512,[],"f714","M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z"]},faSlash:{prefix:"fas",iconName:"slash",icon:[640,512,[],"f715","M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z"]},faSleigh:{prefix:"fas",iconName:"sleigh",icon:[640,512,[],"f7cc","M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z"]},faSlidersH:{prefix:"fas",iconName:"sliders-h",icon:[512,512,[],"f1de","M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"]},faSmile:{prefix:"fas",iconName:"smile",icon:[496,512,[],"f118","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"]},faSmileBeam:{prefix:"fas",iconName:"smile-beam",icon:[496,512,[],"f5b8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z"]},faSmileWink:{prefix:"fas",iconName:"smile-wink",icon:[496,512,[],"f4da","M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z"]},faSmog:{prefix:"fas",iconName:"smog",icon:[640,512,[],"f75f","M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z"]},faSmoking:{prefix:"fas",iconName:"smoking",icon:[640,512,[],"f48d","M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z"]},faSmokingBan:{prefix:"fas",iconName:"smoking-ban",icon:[512,512,[],"f54d","M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z"]},faSms:{prefix:"fas",iconName:"sms",icon:[512,512,[],"f7cd","M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z"]},faSnowboarding:{prefix:"fas",iconName:"snowboarding",icon:[512,512,[],"f7ce","M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z"]},faSnowflake:{prefix:"fas",iconName:"snowflake",icon:[448,512,[],"f2dc","M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"]},faSnowman:{prefix:"fas",iconName:"snowman",icon:[512,512,[],"f7d0","M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faSnowplow:{prefix:"fas",iconName:"snowplow",icon:[640,512,[],"f7d2","M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z"]},faSoap:{prefix:"fas",iconName:"soap",icon:[512,512,[],"e06e","M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z"]},faSocks:{prefix:"fas",iconName:"socks",icon:[512,512,[],"f696","M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z"]},faSolarPanel:{prefix:"fas",iconName:"solar-panel",icon:[640,512,[],"f5ba","M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z"]},faSort:{prefix:"fas",iconName:"sort",icon:[320,512,[],"f0dc","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]},faSortAlphaDown:{prefix:"fas",iconName:"sort-alpha-down",icon:[448,512,[],"f15d","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]},faSortAlphaDownAlt:{prefix:"fas",iconName:"sort-alpha-down-alt",icon:[448,512,[],"f881","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]},faSortAlphaUp:{prefix:"fas",iconName:"sort-alpha-up",icon:[448,512,[],"f15e","M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z"]},faSortAlphaUpAlt:{prefix:"fas",iconName:"sort-alpha-up-alt",icon:[448,512,[],"f882","M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z"]},faSortAmountDown:{prefix:"fas",iconName:"sort-amount-down",icon:[512,512,[],"f160","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faSortAmountDownAlt:{prefix:"fas",iconName:"sort-amount-down-alt",icon:[512,512,[],"f884","M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]},faSortAmountUp:{prefix:"fas",iconName:"sort-amount-up",icon:[512,512,[],"f161","M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faSortAmountUpAlt:{prefix:"fas",iconName:"sort-amount-up-alt",icon:[512,512,[],"f885","M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z"]},faSortDown:{prefix:"fas",iconName:"sort-down",icon:[320,512,[],"f0dd","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z"]},faSortNumericDown:{prefix:"fas",iconName:"sort-numeric-down",icon:[448,512,[],"f162","M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z"]},faSortNumericDownAlt:{prefix:"fas",iconName:"sort-numeric-down-alt",icon:[448,512,[],"f886","M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]},faSortNumericUp:{prefix:"fas",iconName:"sort-numeric-up",icon:[448,512,[],"f163","M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z"]},faSortNumericUpAlt:{prefix:"fas",iconName:"sort-numeric-up-alt",icon:[448,512,[],"f887","M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z"]},faSortUp:{prefix:"fas",iconName:"sort-up",icon:[320,512,[],"f0de","M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"]},faSpa:{prefix:"fas",iconName:"spa",icon:[576,512,[],"f5bb","M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z"]},faSpaceShuttle:{prefix:"fas",iconName:"space-shuttle",icon:[640,512,[],"f197","M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z"]},faSpellCheck:{prefix:"fas",iconName:"spell-check",icon:[576,512,[],"f891","M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z"]},faSpider:{prefix:"fas",iconName:"spider",icon:[576,512,[],"f717","M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z"]},faSpinner:{prefix:"fas",iconName:"spinner",icon:[512,512,[],"f110","M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"]},faSplotch:{prefix:"fas",iconName:"splotch",icon:[512,512,[],"f5bc","M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z"]},faSprayCan:{prefix:"fas",iconName:"spray-can",icon:[512,512,[],"f5bd","M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]},faSquare:{prefix:"fas",iconName:"square",icon:[448,512,[],"f0c8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},faSquareFull:{prefix:"fas",iconName:"square-full",icon:[512,512,[],"f45c","M512 512H0V0h512v512z"]},faSquareRootAlt:{prefix:"fas",iconName:"square-root-alt",icon:[576,512,[],"f698","M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z"]},faStamp:{prefix:"fas",iconName:"stamp",icon:[512,512,[],"f5bf","M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z"]},faStar:{prefix:"fas",iconName:"star",icon:[576,512,[],"f005","M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"]},faStarAndCrescent:{prefix:"fas",iconName:"star-and-crescent",icon:[512,512,[],"f699","M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z"]},faStarHalf:{prefix:"fas",iconName:"star-half",icon:[576,512,[],"f089","M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z"]},faStarHalfAlt:{prefix:"fas",iconName:"star-half-alt",icon:[536,512,[],"f5c0","M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z"]},faStarOfDavid:{prefix:"fas",iconName:"star-of-david",icon:[464,512,[],"f69a","M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z"]},faStarOfLife:{prefix:"fas",iconName:"star-of-life",icon:[480,512,[],"f621","M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z"]},faStepBackward:{prefix:"fas",iconName:"step-backward",icon:[448,512,[],"f048","M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z"]},faStepForward:{prefix:"fas",iconName:"step-forward",icon:[448,512,[],"f051","M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z"]},faStethoscope:{prefix:"fas",iconName:"stethoscope",icon:[512,512,[],"f0f1","M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z"]},faStickyNote:{prefix:"fas",iconName:"sticky-note",icon:[448,512,[],"f249","M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z"]},faStop:{prefix:"fas",iconName:"stop",icon:[448,512,[],"f04d","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},faStopCircle:{prefix:"fas",iconName:"stop-circle",icon:[512,512,[],"f28d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z"]},faStopwatch:{prefix:"fas",iconName:"stopwatch",icon:[448,512,[],"f2f2","M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z"]},faStopwatch20:{prefix:"fas",iconName:"stopwatch-20",icon:[448,512,[],"e06f","M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z"]},faStore:{prefix:"fas",iconName:"store",icon:[616,512,[],"f54e","M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z"]},faStoreAlt:{prefix:"fas",iconName:"store-alt",icon:[640,512,[],"f54f","M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z"]},faStoreAltSlash:{prefix:"fas",iconName:"store-alt-slash",icon:[640,512,[],"e070","M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z"]},faStoreSlash:{prefix:"fas",iconName:"store-slash",icon:[640,512,[],"e071","M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z"]},faStream:{prefix:"fas",iconName:"stream",icon:[512,512,[],"f550","M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"]},faStreetView:{prefix:"fas",iconName:"street-view",icon:[512,512,[],"f21d","M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z"]},faStrikethrough:{prefix:"fas",iconName:"strikethrough",icon:[512,512,[],"f0cc","M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z"]},faStroopwafel:{prefix:"fas",iconName:"stroopwafel",icon:[512,512,[],"f551","M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z"]},faSubscript:{prefix:"fas",iconName:"subscript",icon:[512,512,[],"f12c","M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]},faSubway:{prefix:"fas",iconName:"subway",icon:[448,512,[],"f239","M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]},faSuitcase:{prefix:"fas",iconName:"suitcase",icon:[512,512,[],"f0f2","M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z"]},faSuitcaseRolling:{prefix:"fas",iconName:"suitcase-rolling",icon:[384,512,[],"f5c1","M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z"]},faSun:{prefix:"fas",iconName:"sun",icon:[512,512,[],"f185","M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"]},faSuperscript:{prefix:"fas",iconName:"superscript",icon:[512,512,[],"f12b","M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z"]},faSurprise:{prefix:"fas",iconName:"surprise",icon:[496,512,[],"f5c2","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faSwatchbook:{prefix:"fas",iconName:"swatchbook",icon:[512,512,[],"f5c3","M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z"]},faSwimmer:{prefix:"fas",iconName:"swimmer",icon:[640,512,[],"f5c4","M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z"]},faSwimmingPool:{prefix:"fas",iconName:"swimming-pool",icon:[640,512,[],"f5c5","M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z"]},faSynagogue:{prefix:"fas",iconName:"synagogue",icon:[640,512,[],"f69b","M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z"]},faSync:{prefix:"fas",iconName:"sync",icon:[512,512,[],"f021","M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"]},faSyncAlt:{prefix:"fas",iconName:"sync-alt",icon:[512,512,[],"f2f1","M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"]},faSyringe:{prefix:"fas",iconName:"syringe",icon:[512,512,[],"f48e","M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z"]},faTable:{prefix:"fas",iconName:"table",icon:[512,512,[],"f0ce","M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z"]},faTableTennis:{prefix:"fas",iconName:"table-tennis",icon:[512,512,[],"f45d","M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z"]},faTablet:{prefix:"fas",iconName:"tablet",icon:[448,512,[],"f10a","M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"]},faTabletAlt:{prefix:"fas",iconName:"tablet-alt",icon:[448,512,[],"f3fa","M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z"]},faTablets:{prefix:"fas",iconName:"tablets",icon:[640,512,[],"f490","M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z"]},faTachometerAlt:{prefix:"fas",iconName:"tachometer-alt",icon:[576,512,[],"f3fd","M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faTag:{prefix:"fas",iconName:"tag",icon:[512,512,[],"f02b","M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z"]},faTags:{prefix:"fas",iconName:"tags",icon:[640,512,[],"f02c","M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z"]},faTape:{prefix:"fas",iconName:"tape",icon:[640,512,[],"f4db","M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z"]},faTasks:{prefix:"fas",iconName:"tasks",icon:[512,512,[],"f0ae","M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faTaxi:{prefix:"fas",iconName:"taxi",icon:[512,512,[],"f1ba","M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faTeeth:{prefix:"fas",iconName:"teeth",icon:[640,512,[],"f62e","M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z"]},faTeethOpen:{prefix:"fas",iconName:"teeth-open",icon:[640,512,[],"f62f","M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z"]},faTemperatureHigh:{prefix:"fas",iconName:"temperature-high",icon:[512,512,[],"f769","M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]},faTemperatureLow:{prefix:"fas",iconName:"temperature-low",icon:[512,512,[],"f76b","M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z"]},faTenge:{prefix:"fas",iconName:"tenge",icon:[384,512,[],"f7d7","M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z"]},faTerminal:{prefix:"fas",iconName:"terminal",icon:[640,512,[],"f120","M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"]},faTextHeight:{prefix:"fas",iconName:"text-height",icon:[576,512,[],"f034","M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"]},faTextWidth:{prefix:"fas",iconName:"text-width",icon:[448,512,[],"f035","M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z"]},faTh:{prefix:"fas",iconName:"th",icon:[512,512,[],"f00a","M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"]},faThLarge:{prefix:"fas",iconName:"th-large",icon:[512,512,[],"f009","M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z"]},faThList:{prefix:"fas",iconName:"th-list",icon:[512,512,[],"f00b","M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"]},faTheaterMasks:{prefix:"fas",iconName:"theater-masks",icon:[640,512,[],"f630","M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z"]},faThermometer:{prefix:"fas",iconName:"thermometer",icon:[512,512,[],"f491","M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z"]},faThermometerEmpty:{prefix:"fas",iconName:"thermometer-empty",icon:[256,512,[],"f2cb","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThermometerFull:{prefix:"fas",iconName:"thermometer-full",icon:[256,512,[],"f2c7","M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z"]},faThermometerHalf:{prefix:"fas",iconName:"thermometer-half",icon:[256,512,[],"f2c9","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThermometerQuarter:{prefix:"fas",iconName:"thermometer-quarter",icon:[256,512,[],"f2ca","M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThermometerThreeQuarters:{prefix:"fas",iconName:"thermometer-three-quarters",icon:[256,512,[],"f2c8","M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z"]},faThumbsDown:{prefix:"fas",iconName:"thumbs-down",icon:[512,512,[],"f165","M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z"]},faThumbsUp:{prefix:"fas",iconName:"thumbs-up",icon:[512,512,[],"f164","M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z"]},faThumbtack:{prefix:"fas",iconName:"thumbtack",icon:[384,512,[],"f08d","M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z"]},faTicketAlt:{prefix:"fas",iconName:"ticket-alt",icon:[576,512,[],"f3ff","M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z"]},faTimes:{prefix:"fas",iconName:"times",icon:[352,512,[],"f00d","M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]},faTimesCircle:{prefix:"fas",iconName:"times-circle",icon:[512,512,[],"f057","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"]},faTint:{prefix:"fas",iconName:"tint",icon:[352,512,[],"f043","M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z"]},faTintSlash:{prefix:"fas",iconName:"tint-slash",icon:[640,512,[],"f5c7","M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z"]},faTired:{prefix:"fas",iconName:"tired",icon:[496,512,[],"f5c8","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z"]},faToggleOff:{prefix:"fas",iconName:"toggle-off",icon:[576,512,[],"f204","M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z"]},faToggleOn:{prefix:"fas",iconName:"toggle-on",icon:[576,512,[],"f205","M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z"]},faToilet:{prefix:"fas",iconName:"toilet",icon:[384,512,[],"f7d8","M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z"]},faToiletPaper:{prefix:"fas",iconName:"toilet-paper",icon:[576,512,[],"f71e","M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z"]},faToiletPaperSlash:{prefix:"fas",iconName:"toilet-paper-slash",icon:[640,512,[],"e072","M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z"]},faToolbox:{prefix:"fas",iconName:"toolbox",icon:[512,512,[],"f552","M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z"]},faTools:{prefix:"fas",iconName:"tools",icon:[512,512,[],"f7d9","M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"]},faTooth:{prefix:"fas",iconName:"tooth",icon:[448,512,[],"f5c9","M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z"]},faTorah:{prefix:"fas",iconName:"torah",icon:[640,512,[],"f6a0","M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z"]},faToriiGate:{prefix:"fas",iconName:"torii-gate",icon:[512,512,[],"f6a1","M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z"]},faTractor:{prefix:"fas",iconName:"tractor",icon:[640,512,[],"f722","M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z"]},faTrademark:{prefix:"fas",iconName:"trademark",icon:[640,512,[],"f25c","M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z"]},faTrafficLight:{prefix:"fas",iconName:"traffic-light",icon:[384,512,[],"f637","M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]},faTrailer:{prefix:"fas",iconName:"trailer",icon:[640,512,[],"e041","M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z"]},faTrain:{prefix:"fas",iconName:"train",icon:[448,512,[],"f238","M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z"]},faTram:{prefix:"fas",iconName:"tram",icon:[512,512,[],"f7da","M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z"]},faTransgender:{prefix:"fas",iconName:"transgender",icon:[384,512,[],"f224","M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faTransgenderAlt:{prefix:"fas",iconName:"transgender-alt",icon:[480,512,[],"f225","M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faTrash:{prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]},faTrashAlt:{prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faTrashRestore:{prefix:"fas",iconName:"trash-restore",icon:[448,512,[],"f829","M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faTrashRestoreAlt:{prefix:"fas",iconName:"trash-restore-alt",icon:[448,512,[],"f82a","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},faTree:{prefix:"fas",iconName:"tree",icon:[384,512,[],"f1bb","M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z"]},faTrophy:{prefix:"fas",iconName:"trophy",icon:[576,512,[],"f091","M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z"]},faTruck:{prefix:"fas",iconName:"truck",icon:[640,512,[],"f0d1","M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z"]},faTruckLoading:{prefix:"fas",iconName:"truck-loading",icon:[640,512,[],"f4de","M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"]},faTruckMonster:{prefix:"fas",iconName:"truck-monster",icon:[640,512,[],"f63b","M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z"]},faTruckMoving:{prefix:"fas",iconName:"truck-moving",icon:[640,512,[],"f4df","M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z"]},faTruckPickup:{prefix:"fas",iconName:"truck-pickup",icon:[640,512,[],"f63c","M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z"]},faTshirt:{prefix:"fas",iconName:"tshirt",icon:[640,512,[],"f553","M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z"]},faTty:{prefix:"fas",iconName:"tty",icon:[512,512,[],"f1e4","M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"]},faTv:{prefix:"fas",iconName:"tv",icon:[640,512,[],"f26c","M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z"]},faUmbrella:{prefix:"fas",iconName:"umbrella",icon:[576,512,[],"f0e9","M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z"]},faUmbrellaBeach:{prefix:"fas",iconName:"umbrella-beach",icon:[640,512,[],"f5ca","M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z"]},faUnderline:{prefix:"fas",iconName:"underline",icon:[448,512,[],"f0cd","M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},faUndo:{prefix:"fas",iconName:"undo",icon:[512,512,[],"f0e2","M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"]},faUndoAlt:{prefix:"fas",iconName:"undo-alt",icon:[512,512,[],"f2ea","M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z"]},faUniversalAccess:{prefix:"fas",iconName:"universal-access",icon:[512,512,[],"f29a","M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z"]},faUniversity:{prefix:"fas",iconName:"university",icon:[512,512,[],"f19c","M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z"]},faUnlink:{prefix:"fas",iconName:"unlink",icon:[512,512,[],"f127","M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z"]},faUnlock:{prefix:"fas",iconName:"unlock",icon:[448,512,[],"f09c","M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]},faUnlockAlt:{prefix:"fas",iconName:"unlock-alt",icon:[448,512,[],"f13e","M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z"]},faUpload:{prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},faUser:{prefix:"fas",iconName:"user",icon:[448,512,[],"f007","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUserAlt:{prefix:"fas",iconName:"user-alt",icon:[512,512,[],"f406","M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z"]},faUserAltSlash:{prefix:"fas",iconName:"user-alt-slash",icon:[640,512,[],"f4fa","M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z"]},faUserAstronaut:{prefix:"fas",iconName:"user-astronaut",icon:[448,512,[],"f4fb","M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z"]},faUserCheck:{prefix:"fas",iconName:"user-check",icon:[640,512,[],"f4fc","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"]},faUserCircle:{prefix:"fas",iconName:"user-circle",icon:[496,512,[],"f2bd","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z"]},faUserClock:{prefix:"fas",iconName:"user-clock",icon:[640,512,[],"f4fd","M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z"]},faUserCog:{prefix:"fas",iconName:"user-cog",icon:[640,512,[],"f4fe","M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"]},faUserEdit:{prefix:"fas",iconName:"user-edit",icon:[640,512,[],"f4ff","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z"]},faUserFriends:{prefix:"fas",iconName:"user-friends",icon:[640,512,[],"f500","M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"]},faUserGraduate:{prefix:"fas",iconName:"user-graduate",icon:[448,512,[],"f501","M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z"]},faUserInjured:{prefix:"fas",iconName:"user-injured",icon:[448,512,[],"f728","M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z"]},faUserLock:{prefix:"fas",iconName:"user-lock",icon:[640,512,[],"f502","M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z"]},faUserMd:{prefix:"fas",iconName:"user-md",icon:[448,512,[],"f0f0","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z"]},faUserMinus:{prefix:"fas",iconName:"user-minus",icon:[640,512,[],"f503","M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUserNinja:{prefix:"fas",iconName:"user-ninja",icon:[448,512,[],"f504","M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z"]},faUserNurse:{prefix:"fas",iconName:"user-nurse",icon:[448,512,[],"f82f","M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z"]},faUserPlus:{prefix:"fas",iconName:"user-plus",icon:[640,512,[],"f234","M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUserSecret:{prefix:"fas",iconName:"user-secret",icon:[448,512,[],"f21b","M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"]},faUserShield:{prefix:"fas",iconName:"user-shield",icon:[640,512,[],"f505","M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z"]},faUserSlash:{prefix:"fas",iconName:"user-slash",icon:[640,512,[],"f506","M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z"]},faUserTag:{prefix:"fas",iconName:"user-tag",icon:[640,512,[],"f507","M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z"]},faUserTie:{prefix:"fas",iconName:"user-tie",icon:[448,512,[],"f508","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z"]},faUserTimes:{prefix:"fas",iconName:"user-times",icon:[640,512,[],"f235","M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},faUsers:{prefix:"fas",iconName:"users",icon:[640,512,[],"f0c0","M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]},faUsersCog:{prefix:"fas",iconName:"users-cog",icon:[640,512,[],"f509","M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"]},faUsersSlash:{prefix:"fas",iconName:"users-slash",icon:[640,512,[],"e073","M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z"]},faUtensilSpoon:{prefix:"fas",iconName:"utensil-spoon",icon:[512,512,[],"f2e5","M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z"]},faUtensils:{prefix:"fas",iconName:"utensils",icon:[416,512,[],"f2e7","M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z"]},faVectorSquare:{prefix:"fas",iconName:"vector-square",icon:[512,512,[],"f5cb","M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z"]},faVenus:{prefix:"fas",iconName:"venus",icon:[288,512,[],"f221","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z"]},faVenusDouble:{prefix:"fas",iconName:"venus-double",icon:[512,512,[],"f226","M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z"]},faVenusMars:{prefix:"fas",iconName:"venus-mars",icon:[576,512,[],"f228","M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},faVest:{prefix:"fas",iconName:"vest",icon:[448,512,[],"e085","M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z"]},faVestPatches:{prefix:"fas",iconName:"vest-patches",icon:[448,512,[],"e086","M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z"]},faVial:{prefix:"fas",iconName:"vial",icon:[480,512,[],"f492","M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"]},faVials:{prefix:"fas",iconName:"vials",icon:[640,512,[],"f493","M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z"]},faVideo:{prefix:"fas",iconName:"video",icon:[576,512,[],"f03d","M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z"]},faVideoSlash:{prefix:"fas",iconName:"video-slash",icon:[640,512,[],"f4e2","M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z"]},faVihara:{prefix:"fas",iconName:"vihara",icon:[640,512,[],"f6a7","M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z"]},faVirus:{prefix:"fas",iconName:"virus",icon:[512,512,[],"e074","M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z"]},faVirusSlash:{prefix:"fas",iconName:"virus-slash",icon:[640,512,[],"e075","M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z"]},faViruses:{prefix:"fas",iconName:"viruses",icon:[640,512,[],"e076","M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z"]},faVoicemail:{prefix:"fas",iconName:"voicemail",icon:[640,512,[],"f897","M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z"]},faVolleyballBall:{prefix:"fas",iconName:"volleyball-ball",icon:[512,512,[],"f45f","M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z"]},faVolumeDown:{prefix:"fas",iconName:"volume-down",icon:[384,512,[],"f027","M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z"]},faVolumeMute:{prefix:"fas",iconName:"volume-mute",icon:[512,512,[],"f6a9","M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z"]},faVolumeOff:{prefix:"fas",iconName:"volume-off",icon:[256,512,[],"f026","M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z"]},faVolumeUp:{prefix:"fas",iconName:"volume-up",icon:[576,512,[],"f028","M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z"]},faVoteYea:{prefix:"fas",iconName:"vote-yea",icon:[640,512,[],"f772","M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z"]},faVrCardboard:{prefix:"fas",iconName:"vr-cardboard",icon:[640,512,[],"f729","M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z"]},faWalking:{prefix:"fas",iconName:"walking",icon:[320,512,[],"f554","M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z"]},faWallet:{prefix:"fas",iconName:"wallet",icon:[512,512,[],"f555","M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"]},faWarehouse:{prefix:"fas",iconName:"warehouse",icon:[640,512,[],"f494","M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z"]},faWater:{prefix:"fas",iconName:"water",icon:[576,512,[],"f773","M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z"]},faWaveSquare:{prefix:"fas",iconName:"wave-square",icon:[640,512,[],"f83e","M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z"]},faWeight:{prefix:"fas",iconName:"weight",icon:[512,512,[],"f496","M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z"]},faWeightHanging:{prefix:"fas",iconName:"weight-hanging",icon:[512,512,[],"f5cd","M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"]},faWheelchair:{prefix:"fas",iconName:"wheelchair",icon:[512,512,[],"f193","M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z"]},faWifi:{prefix:"fas",iconName:"wifi",icon:[640,512,[],"f1eb","M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z"]},faWind:{prefix:"fas",iconName:"wind",icon:[512,512,[],"f72e","M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z"]},faWindowClose:{prefix:"fas",iconName:"window-close",icon:[512,512,[],"f410","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z"]},faWindowMaximize:{prefix:"fas",iconName:"window-maximize",icon:[512,512,[],"f2d0","M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z"]},faWindowMinimize:{prefix:"fas",iconName:"window-minimize",icon:[512,512,[],"f2d1","M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z"]},faWindowRestore:{prefix:"fas",iconName:"window-restore",icon:[512,512,[],"f2d2","M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z"]},faWineBottle:{prefix:"fas",iconName:"wine-bottle",icon:[512,512,[],"f72f","M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z"]},faWineGlass:{prefix:"fas",iconName:"wine-glass",icon:[288,512,[],"f4e3","M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z"]},faWineGlassAlt:{prefix:"fas",iconName:"wine-glass-alt",icon:[288,512,[],"f5ce","M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z"]},faWonSign:{prefix:"fas",iconName:"won-sign",icon:[576,512,[],"f159","M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z"]},faWrench:{prefix:"fas",iconName:"wrench",icon:[512,512,[],"f0ad","M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},faXRay:{prefix:"fas",iconName:"x-ray",icon:[640,512,[],"f497","M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z"]},faYenSign:{prefix:"fas",iconName:"yen-sign",icon:[384,512,[],"f157","M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z"]},faYinYang:{prefix:"fas",iconName:"yin-yang",icon:[496,512,[],"f6ad","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z"]}},s={fa500px:{prefix:"fab",iconName:"500px",icon:[448,512,[],"f26e","M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"]},faAccessibleIcon:{prefix:"fab",iconName:"accessible-icon",icon:[448,512,[],"f368","M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"]},faAccusoft:{prefix:"fab",iconName:"accusoft",icon:[640,512,[],"f369","M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z"]},faAcquisitionsIncorporated:{prefix:"fab",iconName:"acquisitions-incorporated",icon:[384,512,[],"f6af","M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z"]},faAdn:{prefix:"fab",iconName:"adn",icon:[496,512,[],"f170","M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z"]},faAdversal:{prefix:"fab",iconName:"adversal",icon:[512,512,[],"f36a","M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z"]},faAffiliatetheme:{prefix:"fab",iconName:"affiliatetheme",icon:[512,512,[],"f36b","M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z"]},faAirbnb:{prefix:"fab",iconName:"airbnb",icon:[448,512,[],"f834","M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z"]},faAlgolia:{prefix:"fab",iconName:"algolia",icon:[448,512,[],"f36c","M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z"]},faAlipay:{prefix:"fab",iconName:"alipay",icon:[448,512,[],"f642","M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z"]},faAmazon:{prefix:"fab",iconName:"amazon",icon:[448,512,[],"f270","M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z"]},faAmazonPay:{prefix:"fab",iconName:"amazon-pay",icon:[640,512,[],"f42c","M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z"]},faAmilia:{prefix:"fab",iconName:"amilia",icon:[448,512,[],"f36d","M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z"]},faAndroid:{prefix:"fab",iconName:"android",icon:[576,512,[],"f17b","M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55"]},faAngellist:{prefix:"fab",iconName:"angellist",icon:[448,512,[],"f209","M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z"]},faAngrycreative:{prefix:"fab",iconName:"angrycreative",icon:[640,512,[],"f36e","M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z"]},faAngular:{prefix:"fab",iconName:"angular",icon:[448,512,[],"f420","M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z"]},faAppStore:{prefix:"fab",iconName:"app-store",icon:[512,512,[],"f36f","M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z"]},faAppStoreIos:{prefix:"fab",iconName:"app-store-ios",icon:[448,512,[],"f370","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z"]},faApper:{prefix:"fab",iconName:"apper",icon:[640,512,[],"f371","M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z"]},faApple:{prefix:"fab",iconName:"apple",icon:[384,512,[],"f179","M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"]},faApplePay:{prefix:"fab",iconName:"apple-pay",icon:[640,512,[],"f415","M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z"]},faArtstation:{prefix:"fab",iconName:"artstation",icon:[512,512,[],"f77a","M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z"]},faAsymmetrik:{prefix:"fab",iconName:"asymmetrik",icon:[576,512,[],"f372","M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z"]},faAtlassian:{prefix:"fab",iconName:"atlassian",icon:[512,512,[],"f77b","M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z"]},faAudible:{prefix:"fab",iconName:"audible",icon:[640,512,[],"f373","M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z"]},faAutoprefixer:{prefix:"fab",iconName:"autoprefixer",icon:[640,512,[],"f41c","M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z"]},faAvianex:{prefix:"fab",iconName:"avianex",icon:[512,512,[],"f374","M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z"]},faAviato:{prefix:"fab",iconName:"aviato",icon:[640,512,[],"f421","M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z"]},faAws:{prefix:"fab",iconName:"aws",icon:[640,512,[],"f375","M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z"]},faBandcamp:{prefix:"fab",iconName:"bandcamp",icon:[512,512,[],"f2d5","M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z"]},faBattleNet:{prefix:"fab",iconName:"battle-net",icon:[512,512,[],"f835","M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8"]},faBehance:{prefix:"fab",iconName:"behance",icon:[576,512,[],"f1b4","M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z"]},faBehanceSquare:{prefix:"fab",iconName:"behance-square",icon:[448,512,[],"f1b5","M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z"]},faBimobject:{prefix:"fab",iconName:"bimobject",icon:[448,512,[],"f378","M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z"]},faBitbucket:{prefix:"fab",iconName:"bitbucket",icon:[512,512,[],"f171","M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z"]},faBitcoin:{prefix:"fab",iconName:"bitcoin",icon:[512,512,[],"f379","M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z"]},faBity:{prefix:"fab",iconName:"bity",icon:[496,512,[],"f37a","M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z"]},faBlackTie:{prefix:"fab",iconName:"black-tie",icon:[448,512,[],"f27e","M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z"]},faBlackberry:{prefix:"fab",iconName:"blackberry",icon:[512,512,[],"f37b","M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z"]},faBlogger:{prefix:"fab",iconName:"blogger",icon:[448,512,[],"f37c","M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z"]},faBloggerB:{prefix:"fab",iconName:"blogger-b",icon:[448,512,[],"f37d","M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z"]},faBluetooth:{prefix:"fab",iconName:"bluetooth",icon:[448,512,[],"f293","M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z"]},faBluetoothB:{prefix:"fab",iconName:"bluetooth-b",icon:[320,512,[],"f294","M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"]},faBootstrap:{prefix:"fab",iconName:"bootstrap",icon:[576,512,[],"f836","M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z"]},faBtc:{prefix:"fab",iconName:"btc",icon:[384,512,[],"f15a","M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z"]},faBuffer:{prefix:"fab",iconName:"buffer",icon:[448,512,[],"f837","M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z"]},faBuromobelexperte:{prefix:"fab",iconName:"buromobelexperte",icon:[448,512,[],"f37f","M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z"]},faBuyNLarge:{prefix:"fab",iconName:"buy-n-large",icon:[576,512,[],"f8a6","M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z"]},faBuysellads:{prefix:"fab",iconName:"buysellads",icon:[448,512,[],"f20d","M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z"]},faCanadianMapleLeaf:{prefix:"fab",iconName:"canadian-maple-leaf",icon:[512,512,[],"f785","M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z"]},faCcAmazonPay:{prefix:"fab",iconName:"cc-amazon-pay",icon:[576,512,[],"f42d","M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z"]},faCcAmex:{prefix:"fab",iconName:"cc-amex",icon:[576,512,[],"f1f3","M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z"]},faCcApplePay:{prefix:"fab",iconName:"cc-apple-pay",icon:[576,512,[],"f416","M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z"]},faCcDinersClub:{prefix:"fab",iconName:"cc-diners-club",icon:[576,512,[],"f24c","M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z"]},faCcDiscover:{prefix:"fab",iconName:"cc-discover",icon:[576,512,[],"f1f2","M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z"]},faCcJcb:{prefix:"fab",iconName:"cc-jcb",icon:[576,512,[],"f24b","M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z"]},faCcMastercard:{prefix:"fab",iconName:"cc-mastercard",icon:[576,512,[],"f1f1","M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z"]},faCcPaypal:{prefix:"fab",iconName:"cc-paypal",icon:[576,512,[],"f1f4","M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z"]},faCcStripe:{prefix:"fab",iconName:"cc-stripe",icon:[576,512,[],"f1f5","M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z"]},faCcVisa:{prefix:"fab",iconName:"cc-visa",icon:[576,512,[],"f1f0","M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z"]},faCentercode:{prefix:"fab",iconName:"centercode",icon:[512,512,[],"f380","M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z"]},faCentos:{prefix:"fab",iconName:"centos",icon:[448,512,[],"f789","M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z"]},faChrome:{prefix:"fab",iconName:"chrome",icon:[496,512,[],"f268","M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z"]},faChromecast:{prefix:"fab",iconName:"chromecast",icon:[512,512,[],"f838","M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z"]},faCloudflare:{prefix:"fab",iconName:"cloudflare",icon:[640,512,[],"e07d","M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z"]},faCloudscale:{prefix:"fab",iconName:"cloudscale",icon:[448,512,[],"f383","M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z"]},faCloudsmith:{prefix:"fab",iconName:"cloudsmith",icon:[332,512,[],"f384","M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z"]},faCloudversify:{prefix:"fab",iconName:"cloudversify",icon:[616,512,[],"f385","M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z"]},faCodepen:{prefix:"fab",iconName:"codepen",icon:[512,512,[],"f1cb","M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z"]},faCodiepie:{prefix:"fab",iconName:"codiepie",icon:[472,512,[],"f284","M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z"]},faConfluence:{prefix:"fab",iconName:"confluence",icon:[512,512,[],"f78d","M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z"]},faConnectdevelop:{prefix:"fab",iconName:"connectdevelop",icon:[576,512,[],"f20e","M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z"]},faContao:{prefix:"fab",iconName:"contao",icon:[512,512,[],"f26d","M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z"]},faCottonBureau:{prefix:"fab",iconName:"cotton-bureau",icon:[512,512,[],"f89e","M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z"]},faCpanel:{prefix:"fab",iconName:"cpanel",icon:[640,512,[],"f388","M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z"]},faCreativeCommons:{prefix:"fab",iconName:"creative-commons",icon:[496,512,[],"f25e","M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z"]},faCreativeCommonsBy:{prefix:"fab",iconName:"creative-commons-by",icon:[496,512,[],"f4e7","M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z"]},faCreativeCommonsNc:{prefix:"fab",iconName:"creative-commons-nc",icon:[496,512,[],"f4e8","M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z"]},faCreativeCommonsNcEu:{prefix:"fab",iconName:"creative-commons-nc-eu",icon:[496,512,[],"f4e9","M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z"]},faCreativeCommonsNcJp:{prefix:"fab",iconName:"creative-commons-nc-jp",icon:[496,512,[],"f4ea","M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z"]},faCreativeCommonsNd:{prefix:"fab",iconName:"creative-commons-nd",icon:[496,512,[],"f4eb","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z"]},faCreativeCommonsPd:{prefix:"fab",iconName:"creative-commons-pd",icon:[496,512,[],"f4ec","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z"]},faCreativeCommonsPdAlt:{prefix:"fab",iconName:"creative-commons-pd-alt",icon:[496,512,[],"f4ed","M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z"]},faCreativeCommonsRemix:{prefix:"fab",iconName:"creative-commons-remix",icon:[496,512,[],"f4ee","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z"]},faCreativeCommonsSa:{prefix:"fab",iconName:"creative-commons-sa",icon:[496,512,[],"f4ef","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z"]},faCreativeCommonsSampling:{prefix:"fab",iconName:"creative-commons-sampling",icon:[496,512,[],"f4f0","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z"]},faCreativeCommonsSamplingPlus:{prefix:"fab",iconName:"creative-commons-sampling-plus",icon:[496,512,[],"f4f1","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z"]},faCreativeCommonsShare:{prefix:"fab",iconName:"creative-commons-share",icon:[496,512,[],"f4f2","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z"]},faCreativeCommonsZero:{prefix:"fab",iconName:"creative-commons-zero",icon:[496,512,[],"f4f3","M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z"]},faCriticalRole:{prefix:"fab",iconName:"critical-role",icon:[448,512,[],"f6c9","M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z"]},faCss3:{prefix:"fab",iconName:"css3",icon:[512,512,[],"f13c","M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z"]},faCss3Alt:{prefix:"fab",iconName:"css3-alt",icon:[384,512,[],"f38b","M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"]},faCuttlefish:{prefix:"fab",iconName:"cuttlefish",icon:[440,512,[],"f38c","M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z"]},faDAndD:{prefix:"fab",iconName:"d-and-d",icon:[576,512,[],"f38d","M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z"]},faDAndDBeyond:{prefix:"fab",iconName:"d-and-d-beyond",icon:[640,512,[],"f6ca","M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z"]},faDailymotion:{prefix:"fab",iconName:"dailymotion",icon:[448,512,[],"e052","M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z"]},faDashcube:{prefix:"fab",iconName:"dashcube",icon:[448,512,[],"f210","M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z"]},faDeezer:{prefix:"fab",iconName:"deezer",icon:[576,512,[],"e077","M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z"]},faDelicious:{prefix:"fab",iconName:"delicious",icon:[448,512,[],"f1a5","M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z"]},faDeploydog:{prefix:"fab",iconName:"deploydog",icon:[512,512,[],"f38e","M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z"]},faDeskpro:{prefix:"fab",iconName:"deskpro",icon:[480,512,[],"f38f","M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z"]},faDev:{prefix:"fab",iconName:"dev",icon:[448,512,[],"f6cc","M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"]},faDeviantart:{prefix:"fab",iconName:"deviantart",icon:[320,512,[],"f1bd","M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z"]},faDhl:{prefix:"fab",iconName:"dhl",icon:[640,512,[],"f790","M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z"]},faDiaspora:{prefix:"fab",iconName:"diaspora",icon:[512,512,[],"f791","M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z"]},faDigg:{prefix:"fab",iconName:"digg",icon:[512,512,[],"f1a6","M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z"]},faDigitalOcean:{prefix:"fab",iconName:"digital-ocean",icon:[512,512,[],"f391","M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z"]},faDiscord:{prefix:"fab",iconName:"discord",icon:[640,512,[],"f392","M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"]},faDiscourse:{prefix:"fab",iconName:"discourse",icon:[448,512,[],"f393","M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"]},faDochub:{prefix:"fab",iconName:"dochub",icon:[416,512,[],"f394","M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z"]},faDocker:{prefix:"fab",iconName:"docker",icon:[640,512,[],"f395","M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"]},faDraft2digital:{prefix:"fab",iconName:"draft2digital",icon:[480,512,[],"f396","M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z"]},faDribbble:{prefix:"fab",iconName:"dribbble",icon:[512,512,[],"f17d","M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z"]},faDribbbleSquare:{prefix:"fab",iconName:"dribbble-square",icon:[448,512,[],"f397","M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z"]},faDropbox:{prefix:"fab",iconName:"dropbox",icon:[528,512,[],"f16b","M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z"]},faDrupal:{prefix:"fab",iconName:"drupal",icon:[448,512,[],"f1a9","M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z"]},faDyalog:{prefix:"fab",iconName:"dyalog",icon:[416,512,[],"f399","M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z"]},faEarlybirds:{prefix:"fab",iconName:"earlybirds",icon:[480,512,[],"f39a","M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z"]},faEbay:{prefix:"fab",iconName:"ebay",icon:[640,512,[],"f4f4","M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z"]},faEdge:{prefix:"fab",iconName:"edge",icon:[512,512,[],"f282","M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z"]},faEdgeLegacy:{prefix:"fab",iconName:"edge-legacy",icon:[512,512,[],"e078","M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z"]},faElementor:{prefix:"fab",iconName:"elementor",icon:[448,512,[],"f430","M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z"]},faEllo:{prefix:"fab",iconName:"ello",icon:[496,512,[],"f5f1","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z"]},faEmber:{prefix:"fab",iconName:"ember",icon:[640,512,[],"f423","M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z"]},faEmpire:{prefix:"fab",iconName:"empire",icon:[496,512,[],"f1d1","M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z"]},faEnvira:{prefix:"fab",iconName:"envira",icon:[448,512,[],"f299","M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z"]},faErlang:{prefix:"fab",iconName:"erlang",icon:[640,512,[],"f39d","M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z"]},faEthereum:{prefix:"fab",iconName:"ethereum",icon:[320,512,[],"f42e","M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z"]},faEtsy:{prefix:"fab",iconName:"etsy",icon:[384,512,[],"f2d7","M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z"]},faEvernote:{prefix:"fab",iconName:"evernote",icon:[384,512,[],"f839","M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z"]},faExpeditedssl:{prefix:"fab",iconName:"expeditedssl",icon:[496,512,[],"f23e","M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z"]},faFacebook:{prefix:"fab",iconName:"facebook",icon:[512,512,[],"f09a","M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"]},faFacebookF:{prefix:"fab",iconName:"facebook-f",icon:[320,512,[],"f39e","M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"]},faFacebookMessenger:{prefix:"fab",iconName:"facebook-messenger",icon:[512,512,[],"f39f","M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z"]},faFacebookSquare:{prefix:"fab",iconName:"facebook-square",icon:[448,512,[],"f082","M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z"]},faFantasyFlightGames:{prefix:"fab",iconName:"fantasy-flight-games",icon:[512,512,[],"f6dc","M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z"]},faFedex:{prefix:"fab",iconName:"fedex",icon:[640,512,[],"f797","M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z"]},faFedora:{prefix:"fab",iconName:"fedora",icon:[448,512,[],"f798","M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z"]},faFigma:{prefix:"fab",iconName:"figma",icon:[384,512,[],"f799","M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z"]},faFirefox:{prefix:"fab",iconName:"firefox",icon:[512,512,[],"f269","M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z"]},faFirefoxBrowser:{prefix:"fab",iconName:"firefox-browser",icon:[512,512,[],"e007","M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z"]},faFirstOrder:{prefix:"fab",iconName:"first-order",icon:[448,512,[],"f2b0","M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z"]},faFirstOrderAlt:{prefix:"fab",iconName:"first-order-alt",icon:[496,512,[],"f50a","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z"]},faFirstdraft:{prefix:"fab",iconName:"firstdraft",icon:[384,512,[],"f3a1","M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z"]},faFlickr:{prefix:"fab",iconName:"flickr",icon:[448,512,[],"f16e","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"]},faFlipboard:{prefix:"fab",iconName:"flipboard",icon:[448,512,[],"f44d","M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z"]},faFly:{prefix:"fab",iconName:"fly",icon:[384,512,[],"f417","M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z"]},faFontAwesome:{prefix:"fab",iconName:"font-awesome",icon:[448,512,[],"f2b4","M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32ZM336 312c-31.6 11.2-41.2 16-59.8 16-31.4 0-43.2-16-74.6-16a80 80 0 0 0-25.6 4V284a85.9 85.9 0 0 1 25.6-4c31.2 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.2-16-74.6-16-25.4 0-37.4 10.4-57.6 14.4V352a16 16 0 0 1-32 0V160a16 16 0 0 1 32 0v6.4c20.2-4 32.2-14.4 57.6-14.4 31.2 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16Z"]},faFontAwesomeAlt:{prefix:"fab",iconName:"font-awesome-alt",icon:[448,512,[],"f35c","M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32Zm16 400a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16V80A16 16 0 0 1 48 64H400a16 16 0 0 1 16 16ZM201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160a16 16 0 0 0-32 0V352a16 16 0 0 0 32 0V198.4c20.2-4 32.2-14.4 57.6-14.4 31.4 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.4-16-74.6-16a85.9 85.9 0 0 0-25.6 4v32a80 80 0 0 1 25.6-4c31.4 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152Z"]},faFontAwesomeFlag:{prefix:"fab",iconName:"font-awesome-flag",icon:[448,512,[],"f425","M448 48V384c-63 23-82 32-119 32-63 0-87-32-150-32-20 0-36 4-51 8V328c15-4 31-8 51-8 63 0 87 32 150 32 20 0 35-3 55-9V135c-20 6-35 9-55 9-63 0-87-32-150-32-51 0-75 21-115 29V448a31.6 31.6 0 0 1-32 32A31.6 31.6 0 0 1 0 448V64A31.6 31.6 0 0 1 32 32 31.6 31.6 0 0 1 64 64V77c40-8 64-29 115-29 63 0 87 32 150 32C366 80 385 71 448 48Z"]},faFontAwesomeLogoFull:{prefix:"fab",iconName:"font-awesome-logo-full",icon:[3992,512,["Font Awesome"],"f4e6","M1209.7 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C1311.7 200.4 1267.5 156.5 1209.7 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C1261.1 281.8 1244.8 309.2 1209.7 309.2Zm962.1-136.1c-4.4-10.9-12.3-16.5-23.5-16.5s-19.1 5.6-23.5 16.5l-59.4 145.8c-7.2 17.7 2.8 27.4 4.4 29a24.6 24.6 0 0 0 17.5 6.8c10.8 0 18.7-6 23.1-18.1l4-10.1h67.7l4 10.1c4.8 12.1 12.3 18.1 23.1 18.1a24.6 24.6 0 0 0 17.5-6.8c10-10.1 6.8-22.6 4.4-29Zm-43 113.6 19.1-56 19.1 56Zm-574.5-130.1c-14.3 0-24.7 10.9-24.7 25.4v76.5l-68.5-85.8c-4.4-5.6-11.6-16.1-25.5-16.1-19.1 0-24.3 17.7-24.3 25.4V329.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V252.8l68.9 86.2c4.8 5.6 11.6 16.1 25.5 16.1 19.1 0 23.9-17.3 23.9-25.4V181.9C1579 167.4 1568.6 156.5 1554.3 156.5Zm-554.1 1.6H916.5c-19.9 0-25.1 17.3-25.1 25.4V328.1c0 19.7 16.7 25.4 24.7 25.4 8 0 24.7-5.2 24.7-25.4V285h44.6c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.1-22.7-22.1H940.8V203.6h59.4c12.8 0 22.7-9.3 22.7-22.6C1022.9 163 1007.3 158.1 1000.2 158.1Zm815.1 0H1691.7c-7.2 0-22.7 4.4-22.7 22.2 0 13.3 10 22.6 22.7 22.6h37V327.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V202.8h37c12.7 0 22.7-9.3 22.7-22.6C1837.9 163 1822.4 158.1 1815.2 158.1Zm1789.5-1.6c-9.6 0-17.5 6-25.1 18.1l-46.6 76.1L3486.4 174.6q-10.8-18.1-25.1-18.1c-19.5 0-24.7 18.1-24.7 25.8V329.7c0 14.1 10.4 25.4 24.7 25.4s24.7-10.9 24.7-25.4V262.8L3510.7 302.7c6.4 10.1 13.9 15.3 22.3 15.3 8.8 0 15.9-5.2 22.3-15.3l24.7-39.9v66.9c0 14.1 10.3 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V182.3C3629.4 174.2 3624.6 156.5 3604.7 156.5Zm248.6 149.8h-65.7V272.9h39.4c11.9 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.6-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.8 0 22.7-9.3 22.7-22.6C3876 311.2 3860.5 306.3 3853.3 306.3ZM3235 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C3337 200.4 3292.8 156.5 3235 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C3286.8 281.8 3270.1 309.2 3235 309.2ZM2550.2 156.5c-11.2 0-19.1 5.6-23.1 16.5l-34.3 94.7-31.5-92.2c-4.4-12.5-12.3-18.9-24.3-18.9-11.9 0-19.9 6.4-24.3 18.9l-31.5 92.2-34.3-95.5q-5.4-15.7-22.7-15.7c-6.8 0-12.3 2.4-17.5 7.3-5.2 5.2-10.8 14.5-4.8 28.6l55.8 145.8c4 11.3 11.6 16.9 23.1 16.9q16.7 0 22.7-16.9l33.5-91.8 33.5 91.8q6 16.9 22.7 16.9c11.2 0 19.1-5.6 23.1-16.9l55.8-145.8c3.6-9.3 4.4-19.3-4.8-28.6A23 23 0 0 0 2550.2 156.5Zm444.2 81-21.9-9.3c-11.9-4.8-16.3-8.5-16.3-15.7q0-12.1 16.7-12.1c12.7 0 19.5 7.7 24.3 10.9 7.2 5.2 18.3 6.8 27.9-2 10.8-10.5 6.8-23.8 1.2-30.6-12.3-14.9-30.3-22.2-53.8-22.2-19.1 0-35.1 5.2-47.4 15.7-12.3 10.5-18.7 24.2-18.7 41.1 0 24.2 15.9 43.5 47.8 57.6l19.5 8.9c15.9 6.8 19.1 9.7 19.1 17.7 0 9.3-6.4 14.1-19.5 14.1-19.1 0-34.7-14.9-36.3-16.1-10.8-7.3-21.5-2-26.3 2.8-6.8 6.4-12.7 20.9 3.2 36.2 6.8 6.4 15.5 11.7 26.7 15.3a94.6 94.6 0 0 0 32.7 5.6c19.9 0 36.7-5.2 49.8-16.1 13.1-10.9 19.5-25.4 19.5-43.5q0-20.5-12-33.8C3022.7 253.2 3010.7 244.3 2994.4 237.5Zm-206.4 68.9h-65.7V272.9h39.4c12 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.7 0 22.7-9.3 22.7-22.6C2810.8 311.2 2795.2 306.3 2788 306.3ZM178.3 49.1c-50.5 0-74.4 20.7-114.6 28.7V65A31.8 31.8 0 1 0 0 65V447a31.8 31.8 0 0 0 63.7 0V141.4c40.2-8 64.1-28.7 114.6-28.7 62.5 0 86 31.8 148.4 31.8 20.3 0 35.4-2.8 55.3-9.2v191c-19.9 6.4-35 9.2-55.3 9.2-62.5 0-86.4-31.8-148.4-31.8-20.3 0-36.2 3.6-50.9 8V375.4a159.1 159.1 0 0 1 50.9-8c62.5 0 86 31.8 148.4 31.8 37 0 56.1-9.6 119-31.8V49.1C382.8 71.4 363.7 80.9 326.7 80.9 264.2 80.9 240.4 49.1 178.3 49.1Z"]},faFonticons:{prefix:"fab",iconName:"fonticons",icon:[448,512,[],"f280","M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z"]},faFonticonsFi:{prefix:"fab",iconName:"fonticons-fi",icon:[384,512,[],"f3a2","M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z"]},faFortAwesome:{prefix:"fab",iconName:"fort-awesome",icon:[512,512,[],"f286","M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z"]},faFortAwesomeAlt:{prefix:"fab",iconName:"fort-awesome-alt",icon:[512,512,[],"f3a3","M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z"]},faForumbee:{prefix:"fab",iconName:"forumbee",icon:[448,512,[],"f211","M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z"]},faFoursquare:{prefix:"fab",iconName:"foursquare",icon:[368,512,[],"f180","M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"]},faFreeCodeCamp:{prefix:"fab",iconName:"free-code-camp",icon:[576,512,[],"f2c5","M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z"]},faFreebsd:{prefix:"fab",iconName:"freebsd",icon:[448,512,[],"f3a4","M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z"]},faFulcrum:{prefix:"fab",iconName:"fulcrum",icon:[320,512,[],"f50b","M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z"]},faGalacticRepublic:{prefix:"fab",iconName:"galactic-republic",icon:[496,512,[],"f50c","M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z"]},faGalacticSenate:{prefix:"fab",iconName:"galactic-senate",icon:[512,512,[],"f50d","M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z"]},faGetPocket:{prefix:"fab",iconName:"get-pocket",icon:[448,512,[],"f265","M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z"]},faGg:{prefix:"fab",iconName:"gg",icon:[512,512,[],"f260","M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z"]},faGgCircle:{prefix:"fab",iconName:"gg-circle",icon:[512,512,[],"f261","M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z"]},faGit:{prefix:"fab",iconName:"git",icon:[512,512,[],"f1d3","M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"]},faGitAlt:{prefix:"fab",iconName:"git-alt",icon:[448,512,[],"f841","M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"]},faGitSquare:{prefix:"fab",iconName:"git-square",icon:[448,512,[],"f1d2","M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z"]},faGithub:{prefix:"fab",iconName:"github",icon:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]},faGithubAlt:{prefix:"fab",iconName:"github-alt",icon:[480,512,[],"f113","M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"]},faGithubSquare:{prefix:"fab",iconName:"github-square",icon:[448,512,[],"f092","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z"]},faGitkraken:{prefix:"fab",iconName:"gitkraken",icon:[592,512,[],"f3a6","M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z"]},faGitlab:{prefix:"fab",iconName:"gitlab",icon:[512,512,[],"f296","M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z"]},faGitter:{prefix:"fab",iconName:"gitter",icon:[384,512,[],"f426","M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z"]},faGlide:{prefix:"fab",iconName:"glide",icon:[448,512,[],"f2a5","M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z"]},faGlideG:{prefix:"fab",iconName:"glide-g",icon:[448,512,[],"f2a6","M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z"]},faGofore:{prefix:"fab",iconName:"gofore",icon:[400,512,[],"f3a7","M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z"]},faGoodreads:{prefix:"fab",iconName:"goodreads",icon:[448,512,[],"f3a8","M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z"]},faGoodreadsG:{prefix:"fab",iconName:"goodreads-g",icon:[384,512,[],"f3a9","M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z"]},faGoogle:{prefix:"fab",iconName:"google",icon:[488,512,[],"f1a0","M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"]},faGoogleDrive:{prefix:"fab",iconName:"google-drive",icon:[512,512,[],"f3aa","M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z"]},faGooglePay:{prefix:"fab",iconName:"google-pay",icon:[640,512,[],"e079","M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z"]},faGooglePlay:{prefix:"fab",iconName:"google-play",icon:[512,512,[],"f3ab","M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z"]},faGooglePlus:{prefix:"fab",iconName:"google-plus",icon:[512,512,[],"f2b3","M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z"]},faGooglePlusG:{prefix:"fab",iconName:"google-plus-g",icon:[640,512,[],"f0d5","M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z"]},faGooglePlusSquare:{prefix:"fab",iconName:"google-plus-square",icon:[448,512,[],"f0d4","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z"]},faGoogleWallet:{prefix:"fab",iconName:"google-wallet",icon:[448,512,[],"f1ee","M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z"]},faGratipay:{prefix:"fab",iconName:"gratipay",icon:[496,512,[],"f184","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z"]},faGrav:{prefix:"fab",iconName:"grav",icon:[512,512,[],"f2d6","M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z"]},faGripfire:{prefix:"fab",iconName:"gripfire",icon:[384,512,[],"f3ac","M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z"]},faGrunt:{prefix:"fab",iconName:"grunt",icon:[384,512,[],"f3ad","M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z"]},faGuilded:{prefix:"fab",iconName:"guilded",icon:[448,512,[],"e07e","M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z"]},faGulp:{prefix:"fab",iconName:"gulp",icon:[256,512,[],"f3ae","M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z"]},faHackerNews:{prefix:"fab",iconName:"hacker-news",icon:[448,512,[],"f1d4","M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"]},faHackerNewsSquare:{prefix:"fab",iconName:"hacker-news-square",icon:[448,512,[],"f3af","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"]},faHackerrank:{prefix:"fab",iconName:"hackerrank",icon:[512,512,[],"f5f7","M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z"]},faHips:{prefix:"fab",iconName:"hips",icon:[640,512,[],"f452","M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z"]},faHireAHelper:{prefix:"fab",iconName:"hire-a-helper",icon:[512,512,[],"f3b0","M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z"]},faHive:{prefix:"fab",iconName:"hive",icon:[512,512,[],"e07f","M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z"]},faHooli:{prefix:"fab",iconName:"hooli",icon:[640,512,[],"f427","M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z"]},faHornbill:{prefix:"fab",iconName:"hornbill",icon:[512,512,[],"f592","M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z"]},faHotjar:{prefix:"fab",iconName:"hotjar",icon:[448,512,[],"f3b1","M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z"]},faHouzz:{prefix:"fab",iconName:"houzz",icon:[448,512,[],"f27c","M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z"]},faHtml5:{prefix:"fab",iconName:"html5",icon:[384,512,[],"f13b","M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"]},faHubspot:{prefix:"fab",iconName:"hubspot",icon:[512,512,[],"f3b2","M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z"]},faIdeal:{prefix:"fab",iconName:"ideal",icon:[576,512,[],"e013","M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z"]},faImdb:{prefix:"fab",iconName:"imdb",icon:[448,512,[],"f2d8","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z"]},faInnosoft:{prefix:"fab",iconName:"innosoft",icon:[448,512,[],"e080","M422.559,159.71a27.379,27.379,0,0,0-13.866-23.337,26.42,26.42,0,0,0-26.211.133L73.943,314.647V176.261a11.955,11.955,0,0,1,6.047-10.34L218.066,86.208a12.153,12.153,0,0,1,11.922.025l32.656,18.853L112.581,191.723v56L359.642,105.086,241.129,36.679c-10.992-6.129-22.3-6.255-33.8-.27l-164.6,95.026c-10.634,6.12-16.771,16.39-17.29,29.124l0,191.5c.17,10.135,5.08,18.672,13.474,23.428a27.037,27.037,0,0,0,26.736-.045L374.057,197.376V335.657a11.976,11.976,0,0,1-5.92,10.368L230.025,425.77a12.175,12.175,0,0,1-11.937.062l-32.723-18.9,150.051-86.627v-56L88.367,406.932l118.794,68.583a33.88,33.88,0,0,0,34.25-.327l164.527-94.995c10.746-6.631,16.649-17.118,16.624-29.528Z"]},faInstagram:{prefix:"fab",iconName:"instagram",icon:[448,512,[],"f16d","M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]},faInstagramSquare:{prefix:"fab",iconName:"instagram-square",icon:[448,512,[],"e055","M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z"]},faInstalod:{prefix:"fab",iconName:"instalod",icon:[512,512,[],"e081","M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z"]},faIntercom:{prefix:"fab",iconName:"intercom",icon:[448,512,[],"f7af","M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z"]},faInternetExplorer:{prefix:"fab",iconName:"internet-explorer",icon:[512,512,[],"f26b","M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z"]},faInvision:{prefix:"fab",iconName:"invision",icon:[448,512,[],"f7b0","M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z"]},faIoxhost:{prefix:"fab",iconName:"ioxhost",icon:[640,512,[],"f208","M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z"]},faItchIo:{prefix:"fab",iconName:"itch-io",icon:[512,512,[],"f83a","M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z"]},faItunes:{prefix:"fab",iconName:"itunes",icon:[448,512,[],"f3b4","M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z"]},faItunesNote:{prefix:"fab",iconName:"itunes-note",icon:[384,512,[],"f3b5","M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z"]},faJava:{prefix:"fab",iconName:"java",icon:[384,512,[],"f4e4","M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z"]},faJediOrder:{prefix:"fab",iconName:"jedi-order",icon:[448,512,[],"f50e","M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z"]},faJenkins:{prefix:"fab",iconName:"jenkins",icon:[512,512,[],"f3b6","M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z"]},faJira:{prefix:"fab",iconName:"jira",icon:[496,512,[],"f7b1","M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z"]},faJoget:{prefix:"fab",iconName:"joget",icon:[496,512,[],"f3b7","M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z"]},faJoomla:{prefix:"fab",iconName:"joomla",icon:[448,512,[],"f1aa","M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z"]},faJs:{prefix:"fab",iconName:"js",icon:[448,512,[],"f3b8","M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"]},faJsSquare:{prefix:"fab",iconName:"js-square",icon:[448,512,[],"f3b9","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"]},faJsfiddle:{prefix:"fab",iconName:"jsfiddle",icon:[576,512,[],"f1cc","M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z"]},faKaggle:{prefix:"fab",iconName:"kaggle",icon:[320,512,[],"f5fa","M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z"]},faKeybase:{prefix:"fab",iconName:"keybase",icon:[448,512,[],"f4f5","M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z"]},faKeycdn:{prefix:"fab",iconName:"keycdn",icon:[512,512,[],"f3ba","M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160"]},faKickstarter:{prefix:"fab",iconName:"kickstarter",icon:[448,512,[],"f3bb","M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z"]},faKickstarterK:{prefix:"fab",iconName:"kickstarter-k",icon:[384,512,[],"f3bc","M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z"]},faKorvue:{prefix:"fab",iconName:"korvue",icon:[446,512,[],"f42f","M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z"]},faLaravel:{prefix:"fab",iconName:"laravel",icon:[512,512,[],"f3bd","M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z"]},faLastfm:{prefix:"fab",iconName:"lastfm",icon:[512,512,[],"f202","M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z"]},faLastfmSquare:{prefix:"fab",iconName:"lastfm-square",icon:[448,512,[],"f203","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z"]},faLeanpub:{prefix:"fab",iconName:"leanpub",icon:[576,512,[],"f212","M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z"]},faLess:{prefix:"fab",iconName:"less",icon:[640,512,[],"f41d","M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z"]},faLine:{prefix:"fab",iconName:"line",icon:[448,512,[],"f3c0","M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z"]},faLinkedin:{prefix:"fab",iconName:"linkedin",icon:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]},faLinkedinIn:{prefix:"fab",iconName:"linkedin-in",icon:[448,512,[],"f0e1","M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"]},faLinode:{prefix:"fab",iconName:"linode",icon:[448,512,[],"f2b8","M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z"]},faLinux:{prefix:"fab",iconName:"linux",icon:[448,512,[],"f17c","M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"]},faLyft:{prefix:"fab",iconName:"lyft",icon:[512,512,[],"f3c3","M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z"]},faMagento:{prefix:"fab",iconName:"magento",icon:[448,512,[],"f3c4","M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z"]},faMailchimp:{prefix:"fab",iconName:"mailchimp",icon:[448,512,[],"f59e","M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z"]},faMandalorian:{prefix:"fab",iconName:"mandalorian",icon:[448,512,[],"f50f","M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z"]},faMarkdown:{prefix:"fab",iconName:"markdown",icon:[640,512,[],"f60f","M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z"]},faMastodon:{prefix:"fab",iconName:"mastodon",icon:[448,512,[],"f4f6","M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"]},faMaxcdn:{prefix:"fab",iconName:"maxcdn",icon:[512,512,[],"f136","M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z"]},faMdb:{prefix:"fab",iconName:"mdb",icon:[576,512,[],"f8ca","M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z"]},faMedapps:{prefix:"fab",iconName:"medapps",icon:[320,512,[],"f3c6","M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z"]},faMedium:{prefix:"fab",iconName:"medium",icon:[448,512,[],"f23a","M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z"]},faMediumM:{prefix:"fab",iconName:"medium-m",icon:[512,512,[],"f3c7","M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z"]},faMedrt:{prefix:"fab",iconName:"medrt",icon:[544,512,[],"f3c8","M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z"]},faMeetup:{prefix:"fab",iconName:"meetup",icon:[512,512,[],"f2e0","M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z"]},faMegaport:{prefix:"fab",iconName:"megaport",icon:[496,512,[],"f5a3","M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z"]},faMendeley:{prefix:"fab",iconName:"mendeley",icon:[640,512,[],"f7b3","M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z"]},faMicroblog:{prefix:"fab",iconName:"microblog",icon:[448,512,[],"e01a","M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z"]},faMicrosoft:{prefix:"fab",iconName:"microsoft",icon:[448,512,[],"f3ca","M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"]},faMix:{prefix:"fab",iconName:"mix",icon:[448,512,[],"f3cb","M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z"]},faMixcloud:{prefix:"fab",iconName:"mixcloud",icon:[640,512,[],"f289","M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z"]},faMixer:{prefix:"fab",iconName:"mixer",icon:[512,512,[],"e056","M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z"]},faMizuni:{prefix:"fab",iconName:"mizuni",icon:[496,512,[],"f3cc","M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z"]},faModx:{prefix:"fab",iconName:"modx",icon:[448,512,[],"f285","M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z"]},faMonero:{prefix:"fab",iconName:"monero",icon:[496,512,[],"f3d0","M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z"]},faNapster:{prefix:"fab",iconName:"napster",icon:[496,512,[],"f3d2","M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z"]},faNeos:{prefix:"fab",iconName:"neos",icon:[512,512,[],"f612","M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z"]},faNimblr:{prefix:"fab",iconName:"nimblr",icon:[384,512,[],"f5a8","M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z"]},faNode:{prefix:"fab",iconName:"node",icon:[640,512,[],"f419","M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z"]},faNodeJs:{prefix:"fab",iconName:"node-js",icon:[448,512,[],"f3d3","M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z"]},faNpm:{prefix:"fab",iconName:"npm",icon:[576,512,[],"f3d4","M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"]},faNs8:{prefix:"fab",iconName:"ns8",icon:[640,512,[],"f3d5","M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z"]},faNutritionix:{prefix:"fab",iconName:"nutritionix",icon:[400,512,[],"f3d6","M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z"]},faOctopusDeploy:{prefix:"fab",iconName:"octopus-deploy",icon:[512,512,[],"e082","M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z"]},faOdnoklassniki:{prefix:"fab",iconName:"odnoklassniki",icon:[320,512,[],"f263","M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z"]},faOdnoklassnikiSquare:{prefix:"fab",iconName:"odnoklassniki-square",icon:[448,512,[],"f264","M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z"]},faOldRepublic:{prefix:"fab",iconName:"old-republic",icon:[496,512,[],"f510","M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z"]},faOpencart:{prefix:"fab",iconName:"opencart",icon:[640,512,[],"f23d","M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z"]},faOpenid:{prefix:"fab",iconName:"openid",icon:[448,512,[],"f19b","M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z"]},faOpera:{prefix:"fab",iconName:"opera",icon:[496,512,[],"f26a","M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z"]},faOptinMonster:{prefix:"fab",iconName:"optin-monster",icon:[576,512,[],"f23c","M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z"]},faOrcid:{prefix:"fab",iconName:"orcid",icon:[512,512,[],"f8d2","M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z"]},faOsi:{prefix:"fab",iconName:"osi",icon:[512,512,[],"f41a","M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z"]},faPage4:{prefix:"fab",iconName:"page4",icon:[496,512,[],"f3d7","M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z"]},faPagelines:{prefix:"fab",iconName:"pagelines",icon:[384,512,[],"f18c","M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z"]},faPalfed:{prefix:"fab",iconName:"palfed",icon:[576,512,[],"f3d8","M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z"]},faPatreon:{prefix:"fab",iconName:"patreon",icon:[512,512,[],"f3d9","M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"]},faPaypal:{prefix:"fab",iconName:"paypal",icon:[384,512,[],"f1ed","M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"]},faPennyArcade:{prefix:"fab",iconName:"penny-arcade",icon:[640,512,[],"f704","M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z"]},faPerbyte:{prefix:"fab",iconName:"perbyte",icon:[448,512,[],"e083","M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z"]},faPeriscope:{prefix:"fab",iconName:"periscope",icon:[448,512,[],"f3da","M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z"]},faPhabricator:{prefix:"fab",iconName:"phabricator",icon:[496,512,[],"f3db","M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z"]},faPhoenixFramework:{prefix:"fab",iconName:"phoenix-framework",icon:[640,512,[],"f3dc","M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z"]},faPhoenixSquadron:{prefix:"fab",iconName:"phoenix-squadron",icon:[512,512,[],"f511","M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z"]},faPhp:{prefix:"fab",iconName:"php",icon:[640,512,[],"f457","M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z"]},faPiedPiper:{prefix:"fab",iconName:"pied-piper",icon:[480,512,[],"f2ae","M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z"]},faPiedPiperAlt:{prefix:"fab",iconName:"pied-piper-alt",icon:[576,512,[],"f1a8","M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z"]},faPiedPiperHat:{prefix:"fab",iconName:"pied-piper-hat",icon:[640,512,[],"f4e5","M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z"]},faPiedPiperPp:{prefix:"fab",iconName:"pied-piper-pp",icon:[448,512,[],"f1a7","M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z"]},faPiedPiperSquare:{prefix:"fab",iconName:"pied-piper-square",icon:[448,512,[],"e01e","M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z"]},faPinterest:{prefix:"fab",iconName:"pinterest",icon:[496,512,[],"f0d2","M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"]},faPinterestP:{prefix:"fab",iconName:"pinterest-p",icon:[384,512,[],"f231","M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z"]},faPinterestSquare:{prefix:"fab",iconName:"pinterest-square",icon:[448,512,[],"f0d3","M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z"]},faPlaystation:{prefix:"fab",iconName:"playstation",icon:[576,512,[],"f3df","M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z"]},faProductHunt:{prefix:"fab",iconName:"product-hunt",icon:[512,512,[],"f288","M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z"]},faPushed:{prefix:"fab",iconName:"pushed",icon:[432,512,[],"f3e1","M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z"]},faPython:{prefix:"fab",iconName:"python",icon:[448,512,[],"f3e2","M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"]},faQq:{prefix:"fab",iconName:"qq",icon:[448,512,[],"f1d6","M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z"]},faQuinscape:{prefix:"fab",iconName:"quinscape",icon:[512,512,[],"f459","M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z"]},faQuora:{prefix:"fab",iconName:"quora",icon:[448,512,[],"f2c4","M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z"]},faRProject:{prefix:"fab",iconName:"r-project",icon:[581,512,[],"f4f7","M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z"]},faRaspberryPi:{prefix:"fab",iconName:"raspberry-pi",icon:[407,512,[],"f7bb","M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z"]},faRavelry:{prefix:"fab",iconName:"ravelry",icon:[512,512,[],"f2d9","M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z"]},faReact:{prefix:"fab",iconName:"react",icon:[512,512,[],"f41b","M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z"]},faReacteurope:{prefix:"fab",iconName:"reacteurope",icon:[576,512,[],"f75d","M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z"]},faReadme:{prefix:"fab",iconName:"readme",icon:[576,512,[],"f4d5","M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z"]},faRebel:{prefix:"fab",iconName:"rebel",icon:[512,512,[],"f1d0","M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z"]},faRedRiver:{prefix:"fab",iconName:"red-river",icon:[448,512,[],"f3e3","M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z"]},faReddit:{prefix:"fab",iconName:"reddit",icon:[512,512,[],"f1a1","M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z"]},faRedditAlien:{prefix:"fab",iconName:"reddit-alien",icon:[512,512,[],"f281","M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z"]},faRedditSquare:{prefix:"fab",iconName:"reddit-square",icon:[448,512,[],"f1a2","M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"]},faRedhat:{prefix:"fab",iconName:"redhat",icon:[512,512,[],"f7bc","M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24"]},faRenren:{prefix:"fab",iconName:"renren",icon:[512,512,[],"f18b","M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z"]},faReplyd:{prefix:"fab",iconName:"replyd",icon:[448,512,[],"f3e6","M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z"]},faResearchgate:{prefix:"fab",iconName:"researchgate",icon:[448,512,[],"f4f8","M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z"]},faResolving:{prefix:"fab",iconName:"resolving",icon:[496,512,[],"f3e7","M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z"]},faRev:{prefix:"fab",iconName:"rev",icon:[448,512,[],"f5b2","M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z"]},faRocketchat:{prefix:"fab",iconName:"rocketchat",icon:[576,512,[],"f3e8","M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z"]},faRockrms:{prefix:"fab",iconName:"rockrms",icon:[496,512,[],"f3e9","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z"]},faRust:{prefix:"fab",iconName:"rust",icon:[512,512,[],"e07a","M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z"]},faSafari:{prefix:"fab",iconName:"safari",icon:[512,512,[],"f267","M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"]},faSalesforce:{prefix:"fab",iconName:"salesforce",icon:[640,512,[],"f83b","M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z"]},faSass:{prefix:"fab",iconName:"sass",icon:[640,512,[],"f41e","M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z"]},faSchlix:{prefix:"fab",iconName:"schlix",icon:[448,512,[],"f3ea","M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z"]},faScribd:{prefix:"fab",iconName:"scribd",icon:[384,512,[],"f28a","M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z"]},faSearchengin:{prefix:"fab",iconName:"searchengin",icon:[460,512,[],"f3eb","M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z"]},faSellcast:{prefix:"fab",iconName:"sellcast",icon:[448,512,[],"f2da","M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z"]},faSellsy:{prefix:"fab",iconName:"sellsy",icon:[640,512,[],"f213","M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z"]},faServicestack:{prefix:"fab",iconName:"servicestack",icon:[496,512,[],"f3ec","M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z"]},faShirtsinbulk:{prefix:"fab",iconName:"shirtsinbulk",icon:[448,512,[],"f214","M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z"]},faShopify:{prefix:"fab",iconName:"shopify",icon:[448,512,[],"e057","M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z"]},faShopware:{prefix:"fab",iconName:"shopware",icon:[512,512,[],"f5b5","M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z"]},faSimplybuilt:{prefix:"fab",iconName:"simplybuilt",icon:[512,512,[],"f215","M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z"]},faSistrix:{prefix:"fab",iconName:"sistrix",icon:[448,512,[],"f3ee","M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z"]},faSith:{prefix:"fab",iconName:"sith",icon:[448,512,[],"f512","M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z"]},faSketch:{prefix:"fab",iconName:"sketch",icon:[512,512,[],"f7c6","M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z"]},faSkyatlas:{prefix:"fab",iconName:"skyatlas",icon:[640,512,[],"f216","M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z"]},faSkype:{prefix:"fab",iconName:"skype",icon:[448,512,[],"f17e","M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z"]},faSlack:{prefix:"fab",iconName:"slack",icon:[448,512,[],"f198","M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"]},faSlackHash:{prefix:"fab",iconName:"slack-hash",icon:[448,512,[],"f3ef","M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z"]},faSlideshare:{prefix:"fab",iconName:"slideshare",icon:[512,512,[],"f1e7","M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z"]},faSnapchat:{prefix:"fab",iconName:"snapchat",icon:[496,512,[],"f2ab","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"]},faSnapchatGhost:{prefix:"fab",iconName:"snapchat-ghost",icon:[512,512,[],"f2ac","M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z"]},faSnapchatSquare:{prefix:"fab",iconName:"snapchat-square",icon:[448,512,[],"f2ad","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z"]},faSoundcloud:{prefix:"fab",iconName:"soundcloud",icon:[640,512,[],"f1be","M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z"]},faSourcetree:{prefix:"fab",iconName:"sourcetree",icon:[448,512,[],"f7d3","M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z"]},faSpeakap:{prefix:"fab",iconName:"speakap",icon:[448,512,[],"f3f3","M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z"]},faSpeakerDeck:{prefix:"fab",iconName:"speaker-deck",icon:[512,512,[],"f83c","M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z"]},faSpotify:{prefix:"fab",iconName:"spotify",icon:[496,512,[],"f1bc","M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z"]},faSquarespace:{prefix:"fab",iconName:"squarespace",icon:[512,512,[],"f5be","M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z"]},faStackExchange:{prefix:"fab",iconName:"stack-exchange",icon:[448,512,[],"f18d","M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z"]},faStackOverflow:{prefix:"fab",iconName:"stack-overflow",icon:[384,512,[],"f16c","M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"]},faStackpath:{prefix:"fab",iconName:"stackpath",icon:[448,512,[],"f842","M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z"]},faStaylinked:{prefix:"fab",iconName:"staylinked",icon:[440,512,[],"f3f5","M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z"]},faSteam:{prefix:"fab",iconName:"steam",icon:[496,512,[],"f1b6","M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z"]},faSteamSquare:{prefix:"fab",iconName:"steam-square",icon:[448,512,[],"f1b7","M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z"]},faSteamSymbol:{prefix:"fab",iconName:"steam-symbol",icon:[448,512,[],"f3f6","M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z"]},faStickerMule:{prefix:"fab",iconName:"sticker-mule",icon:[576,512,[],"f3f7","M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z"]},faStrava:{prefix:"fab",iconName:"strava",icon:[384,512,[],"f428","M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z"]},faStripe:{prefix:"fab",iconName:"stripe",icon:[640,512,[],"f429","M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z"]},faStripeS:{prefix:"fab",iconName:"stripe-s",icon:[384,512,[],"f42a","M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z"]},faStudiovinari:{prefix:"fab",iconName:"studiovinari",icon:[512,512,[],"f3f8","M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z"]},faStumbleupon:{prefix:"fab",iconName:"stumbleupon",icon:[512,512,[],"f1a4","M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z"]},faStumbleuponCircle:{prefix:"fab",iconName:"stumbleupon-circle",icon:[496,512,[],"f1a3","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z"]},faSuperpowers:{prefix:"fab",iconName:"superpowers",icon:[448,512,[],"f2dd","M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z"]},faSupple:{prefix:"fab",iconName:"supple",icon:[640,512,[],"f3f9","M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z"]},faSuse:{prefix:"fab",iconName:"suse",icon:[640,512,[],"f7d6","M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z"]},faSwift:{prefix:"fab",iconName:"swift",icon:[448,512,[],"f8e1","M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z"]},faSymfony:{prefix:"fab",iconName:"symfony",icon:[512,512,[],"f83d","M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z"]},faTeamspeak:{prefix:"fab",iconName:"teamspeak",icon:[512,512,[],"f4f9","M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z"]},faTelegram:{prefix:"fab",iconName:"telegram",icon:[496,512,[],"f2c6","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z"]},faTelegramPlane:{prefix:"fab",iconName:"telegram-plane",icon:[448,512,[],"f3fe","M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z"]},faTencentWeibo:{prefix:"fab",iconName:"tencent-weibo",icon:[384,512,[],"f1d5","M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z"]},faTheRedYeti:{prefix:"fab",iconName:"the-red-yeti",icon:[512,512,[],"f69d","M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z"]},faThemeco:{prefix:"fab",iconName:"themeco",icon:[448,512,[],"f5c6","M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z"]},faThemeisle:{prefix:"fab",iconName:"themeisle",icon:[512,512,[],"f2b2","M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z"]},faThinkPeaks:{prefix:"fab",iconName:"think-peaks",icon:[576,512,[],"f731","M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z"]},faTiktok:{prefix:"fab",iconName:"tiktok",icon:[448,512,[],"e07b","M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z"]},faTradeFederation:{prefix:"fab",iconName:"trade-federation",icon:[496,512,[],"f513","M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z"]},faTrello:{prefix:"fab",iconName:"trello",icon:[448,512,[],"f181","M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z"]},faTumblr:{prefix:"fab",iconName:"tumblr",icon:[320,512,[],"f173","M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z"]},faTumblrSquare:{prefix:"fab",iconName:"tumblr-square",icon:[448,512,[],"f174","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z"]},faTwitch:{prefix:"fab",iconName:"twitch",icon:[512,512,[],"f1e8","M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"]},faTwitter:{prefix:"fab",iconName:"twitter",icon:[512,512,[],"f099","M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]},faTwitterSquare:{prefix:"fab",iconName:"twitter-square",icon:[448,512,[],"f081","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"]},faTypo3:{prefix:"fab",iconName:"typo3",icon:[448,512,[],"f42b","M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z"]},faUber:{prefix:"fab",iconName:"uber",icon:[448,512,[],"f402","M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z"]},faUbuntu:{prefix:"fab",iconName:"ubuntu",icon:[496,512,[],"f7df","M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z"]},faUikit:{prefix:"fab",iconName:"uikit",icon:[448,512,[],"f403","M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z"]},faUmbraco:{prefix:"fab",iconName:"umbraco",icon:[510,512,[],"f8e8","M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z"]},faUncharted:{prefix:"fab",iconName:"uncharted",icon:[448,512,[],"e084","M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z"]},faUniregistry:{prefix:"fab",iconName:"uniregistry",icon:[384,512,[],"f404","M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z"]},faUnity:{prefix:"fab",iconName:"unity",icon:[576,512,[],"e049","M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z"]},faUnsplash:{prefix:"fab",iconName:"unsplash",icon:[448,512,[],"e07c","M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z"]},faUntappd:{prefix:"fab",iconName:"untappd",icon:[640,512,[],"f405","M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z"]},faUps:{prefix:"fab",iconName:"ups",icon:[384,512,[],"f7e0","M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z"]},faUsb:{prefix:"fab",iconName:"usb",icon:[640,512,[],"f287","M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z"]},faUsps:{prefix:"fab",iconName:"usps",icon:[576,512,[],"f7e1","M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z"]},faUssunnah:{prefix:"fab",iconName:"ussunnah",icon:[512,512,[],"f407","M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z"]},faVaadin:{prefix:"fab",iconName:"vaadin",icon:[448,512,[],"f408","M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z"]},faViacoin:{prefix:"fab",iconName:"viacoin",icon:[384,512,[],"f237","M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z"]},faViadeo:{prefix:"fab",iconName:"viadeo",icon:[448,512,[],"f2a9","M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z"]},faViadeoSquare:{prefix:"fab",iconName:"viadeo-square",icon:[448,512,[],"f2aa","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z"]},faViber:{prefix:"fab",iconName:"viber",icon:[512,512,[],"f409","M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z"]},faVimeo:{prefix:"fab",iconName:"vimeo",icon:[448,512,[],"f40a","M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z"]},faVimeoSquare:{prefix:"fab",iconName:"vimeo-square",icon:[448,512,[],"f194","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z"]},faVimeoV:{prefix:"fab",iconName:"vimeo-v",icon:[448,512,[],"f27d","M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z"]},faVine:{prefix:"fab",iconName:"vine",icon:[384,512,[],"f1ca","M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z"]},faVk:{prefix:"fab",iconName:"vk",icon:[576,512,[],"f189","M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z"]},faVnv:{prefix:"fab",iconName:"vnv",icon:[640,512,[],"f40b","M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z"]},faVuejs:{prefix:"fab",iconName:"vuejs",icon:[448,512,[],"f41f","M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z"]},faWatchmanMonitoring:{prefix:"fab",iconName:"watchman-monitoring",icon:[512,512,[],"e087","M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z"]},faWaze:{prefix:"fab",iconName:"waze",icon:[512,512,[],"f83f","M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z"]},faWeebly:{prefix:"fab",iconName:"weebly",icon:[512,512,[],"f5cc","M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z"]},faWeibo:{prefix:"fab",iconName:"weibo",icon:[512,512,[],"f18a","M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z"]},faWeixin:{prefix:"fab",iconName:"weixin",icon:[576,512,[],"f1d7","M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z"]},faWhatsapp:{prefix:"fab",iconName:"whatsapp",icon:[448,512,[],"f232","M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"]},faWhatsappSquare:{prefix:"fab",iconName:"whatsapp-square",icon:[448,512,[],"f40c","M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z"]},faWhmcs:{prefix:"fab",iconName:"whmcs",icon:[448,512,[],"f40d","M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z"]},faWikipediaW:{prefix:"fab",iconName:"wikipedia-w",icon:[640,512,[],"f266","M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z"]},faWindows:{prefix:"fab",iconName:"windows",icon:[448,512,[],"f17a","M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"]},faWix:{prefix:"fab",iconName:"wix",icon:[640,512,[],"f5cf","M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z"]},faWizardsOfTheCoast:{prefix:"fab",iconName:"wizards-of-the-coast",icon:[640,512,[],"f730","M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z"]},faWodu:{prefix:"fab",iconName:"wodu",icon:[640,512,[],"e088","M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z"]},faWolfPackBattalion:{prefix:"fab",iconName:"wolf-pack-battalion",icon:[512,512,[],"f514","M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z"]},faWordpress:{prefix:"fab",iconName:"wordpress",icon:[512,512,[],"f19a","M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z"]},faWordpressSimple:{prefix:"fab",iconName:"wordpress-simple",icon:[512,512,[],"f411","M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z"]},faWpbeginner:{prefix:"fab",iconName:"wpbeginner",icon:[512,512,[],"f297","M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z"]},faWpexplorer:{prefix:"fab",iconName:"wpexplorer",icon:[512,512,[],"f2de","M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z"]},faWpforms:{prefix:"fab",iconName:"wpforms",icon:[448,512,[],"f298","M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z"]},faWpressr:{prefix:"fab",iconName:"wpressr",icon:[496,512,[],"f3e4","M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z"]},faXbox:{prefix:"fab",iconName:"xbox",icon:[512,512,[],"f412","M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z"]},faXing:{prefix:"fab",iconName:"xing",icon:[384,512,[],"f168","M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z"]},faXingSquare:{prefix:"fab",iconName:"xing-square",icon:[448,512,[],"f169","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z"]},faYCombinator:{prefix:"fab",iconName:"y-combinator",icon:[448,512,[],"f23b","M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z"]},faYahoo:{prefix:"fab",iconName:"yahoo",icon:[512,512,[],"f19e","M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z"]},faYammer:{prefix:"fab",iconName:"yammer",icon:[512,512,[],"f840","M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z"]},faYandex:{prefix:"fab",iconName:"yandex",icon:[256,512,[],"f413","M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z"]},faYandexInternational:{prefix:"fab",iconName:"yandex-international",icon:[320,512,[],"f414","M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z"]},faYarn:{prefix:"fab",iconName:"yarn",icon:[496,512,[],"f7e3","M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z"]},faYelp:{prefix:"fab",iconName:"yelp",icon:[384,512,[],"f1e9","M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z"]},faYoast:{prefix:"fab",iconName:"yoast",icon:[448,512,[],"f2b1","M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z"]},faYoutube:{prefix:"fab",iconName:"youtube",icon:[576,512,[],"f167","M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"]},faYoutubeSquare:{prefix:"fab",iconName:"youtube-square",icon:[448,512,[],"f431","M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z"]},faZhihu:{prefix:"fab",iconName:"zhihu",icon:[640,512,[],"f63f","M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z"]}};function t(c){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&"function"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},t(c)}function h(c,a){for(var l=0;l0;)a+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return a}function lc(c){return"".concat(c).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function ec(c){return Object.keys(c||{}).reduce((function(a,l){return a+"".concat(l,": ").concat(c[l],";")}),"")}function ic(c){return c.size!==cc.size||c.x!==cc.x||c.y!==cc.y||c.rotate!==cc.rotate||c.flipX||c.flipY}function oc(c){var a=c.transform,l=c.containerWidth,e=c.iconWidth,i={transform:"translate(".concat(l/2," 256)")},o="translate(".concat(32*a.x,", ").concat(32*a.y,") "),n="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),s="rotate(".concat(a.rotate," 0 0)");return{outer:i,inner:{transform:"".concat(o," ").concat(n," ").concat(s)},path:{transform:"translate(".concat(e/2*-1," -256)")}}}var nc={x:0,y:0,width:"100%",height:"100%"};function sc(c){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return c.attributes&&(c.attributes.fill||a)&&(c.attributes.fill="black"),c}function tc(c){var a=c.icons,l=a.main,e=a.mask,i=c.prefix,o=c.iconName,n=c.transform,s=c.symbol,t=c.title,h=c.maskId,r=c.titleId,v=c.extra,f=c.watchable,z=void 0!==f&&f,p=e.found?e:l,g=p.width,M=p.height,C="fak"===i,d=C?"":"fa-w-".concat(Math.ceil(g/M*16)),x=[A.replacementClass,o?"".concat(A.familyPrefix,"-").concat(o):"",d].filter((function(c){return-1===v.classes.indexOf(c)})).filter((function(c){return""!==c||!!c})).concat(v.classes).join(" "),w={children:[],attributes:m({},v.attributes,{"data-prefix":i,"data-icon":o,class:x,role:v.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(M)})},H=C&&!~v.classes.indexOf("fa-fw")?{width:"".concat(g/M*16*.0625,"em")}:{};z&&(w.attributes["data-fa-i2svg"]=""),t&&w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(r||ac())},children:[t]});var V=m({},w,{prefix:i,iconName:o,main:l,mask:e,maskId:h,transform:n,symbol:s,styles:m({},H,v.styles)}),u=e.found&&l.found?function(c){var a,l=c.children,e=c.attributes,i=c.main,o=c.mask,n=c.maskId,s=c.transform,t=i.width,h=i.icon,r=o.width,v=o.icon,f=oc({transform:s,containerWidth:r,iconWidth:t}),z={tag:"rect",attributes:m({},nc,{fill:"white"})},p=h.children?{children:h.children.map(sc)}:{},g={tag:"g",attributes:m({},f.inner),children:[sc(m({tag:h.tag,attributes:m({},h.attributes,f.path)},p))]},M={tag:"g",attributes:m({},f.outer),children:[g]},C="mask-".concat(n||ac()),d="clip-".concat(n||ac()),x={tag:"mask",attributes:m({},nc,{id:C,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[z,M]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:d},children:(a=v,"g"===a.tag?a.children:[a])},x]};return l.push(w,{tag:"rect",attributes:m({fill:"currentColor","clip-path":"url(#".concat(d,")"),mask:"url(#".concat(C,")")},nc)}),{children:l,attributes:e}}(V):function(c){var a=c.children,l=c.attributes,e=c.main,i=c.transform,o=ec(c.styles);if(o.length>0&&(l.style=o),ic(i)){var n=oc({transform:i,containerWidth:e.width,iconWidth:e.width});a.push({tag:"g",attributes:m({},n.outer),children:[{tag:"g",attributes:m({},n.inner),children:[{tag:e.icon.tag,children:e.icon.children,attributes:m({},e.icon.attributes,n.path)}]}]})}else a.push(e.icon);return{children:a,attributes:l}}(V),L=u.children,b=u.attributes;return V.children=L,V.attributes=b,s?function(c){var a=c.prefix,l=c.iconName,e=c.children,i=c.attributes,o=c.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:m({},i,{id:!0===o?"".concat(a,"-").concat(A.familyPrefix,"-").concat(l):o}),children:e}]}]}(V):function(c){var a=c.children,l=c.main,e=c.mask,i=c.attributes,o=c.styles,n=c.transform;if(ic(n)&&l.found&&!e.found){var s={x:l.width/l.height/2,y:.5};i.style=ec(m({},o,{"transform-origin":"".concat(s.x+n.x/16,"em ").concat(s.y+n.y/16,"em")}))}return[{tag:"svg",attributes:i,children:a}]}(V)}var hc=(A.measurePerformance&&w&&w.mark&&w.measure,function(c,a,l,e){var i,o,n,s=Object.keys(c),t=s.length,h=void 0!==e?function(c,a){return function(l,e,i,o){return c.call(a,l,e,i,o)}}(a,e):a;for(void 0===l?(i=1,n=c[s[0]]):(i=0,n=l);i2&&void 0!==arguments[2]?arguments[2]:{},e=l.skipHooks,i=void 0!==e&&e,o=Object.keys(a).reduce((function(c,l){var e=a[l];return e.icon?c[e.iconName]=e.icon:c[l]=e,c}),{});"function"!=typeof U.hooks.addPack||i?U.styles[c]=m({},U.styles[c]||{},o):U.hooks.addPack(c,o),"fas"===c&&rc("fa",a)}var mc=U.styles,vc=U.shims,fc=function(){var c=function(c){return hc(mc,(function(a,l,e){return a[e]=hc(l,c,{}),a}),{})};c((function(c,a,l){return a[3]&&(c[a[3]]=l),c})),c((function(c,a,l){var e=a[2];return c[l]=l,e.forEach((function(a){c[a]=l})),c}));var a="far"in mc;hc(vc,(function(c,l){var e=l[0],i=l[1],o=l[2];return"far"!==i||a||(i="fas"),c[e]={prefix:i,iconName:o},c}),{})};function zc(c,a,l){if(c&&c[a]&&c[a][l])return{prefix:a,iconName:l,icon:c[a][l]}}function pc(c){var a=c.tag,l=c.attributes,e=void 0===l?{}:l,i=c.children,o=void 0===i?[]:i;return"string"==typeof c?lc(c):"<".concat(a," ").concat(function(c){return Object.keys(c||{}).reduce((function(a,l){return a+"".concat(l,'="').concat(lc(c[l]),'" ')}),"").trim()}(e),">").concat(o.map(pc).join(""),"")}function gc(c){this.name="MissingIcon",this.message=c||"Icon unavailable",this.stack=(new Error).stack}fc(),U.styles,gc.prototype=Object.create(Error.prototype),gc.prototype.constructor=gc;var Mc={fill:"currentColor"},Cc={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},dc=(m({},Mc,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}),m({},Cc,{attributeName:"opacity"}));function xc(c){var a=c[0],l=c[1],e=v(c.slice(4),1)[0];return{found:!0,width:a,height:l,icon:Array.isArray(e)?{tag:"g",attributes:{class:"".concat(A.familyPrefix,"-").concat(b.GROUP)},children:[{tag:"path",attributes:{class:"".concat(A.familyPrefix,"-").concat(b.SECONDARY),fill:"currentColor",d:e[0]}},{tag:"path",attributes:{class:"".concat(A.familyPrefix,"-").concat(b.PRIMARY),fill:"currentColor",d:e[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:e}}}}m({},Mc,{cx:"256",cy:"364",r:"28"}),m({},Cc,{attributeName:"r",values:"28;14;28;28;14;28;"}),m({},dc,{values:"1;0;1;1;0;1;"}),m({},Mc,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),m({},dc,{values:"1;0;0;0;0;1;"}),m({},Mc,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),m({},dc,{values:"0;0;1;1;0;0;"}),U.styles,U.styles;var wc=function(){function c(){!function(c,a){if(!(c instanceof a))throw new TypeError("Cannot call a class as a function")}(this,c),this.definitions={}}var a,l;return a=c,l=[{key:"add",value:function(){for(var c=this,a=arguments.length,l=new Array(a),e=0;e-1;i--){var o=l[i],n=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(n)>-1&&(e=o)}x.head.insertBefore(a,e)}}(function(){var c="fa",a=V,l=A.familyPrefix,e=A.replacementClass,i='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if(l!==c||e!==a){var o=new RegExp("\\.".concat(c,"\\-"),"g"),n=new RegExp("\\--".concat(c,"\\-"),"g"),s=new RegExp("\\.".concat(a),"g");i=i.replace(o,".".concat(l,"-")).replace(n,"--".concat(l,"-")).replace(s,".".concat(e))}return i}()),Nc=!0)}function Vc(c,a){return Object.defineProperty(c,"abstract",{get:a}),Object.defineProperty(c,"html",{get:function(){return c.abstract.map((function(c){return pc(c)}))}}),Object.defineProperty(c,"node",{get:function(){if(H){var a=x.createElement("div");return a.innerHTML=c.html,a.children}}}),c}function uc(c){var a=c.prefix,l=void 0===a?"fa":a,e=c.iconName;if(e)return zc(bc.definitions,l,e)||zc(U.styles,l,e)}var Lc,bc=new wc,Nc=!1,Bc=(Lc=function(c){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=a.transform,e=void 0===l?cc:l,i=a.symbol,o=void 0!==i&&i,n=a.mask,s=void 0===n?null:n,t=a.maskId,h=void 0===t?null:t,r=a.title,v=void 0===r?null:r,f=a.titleId,z=void 0===f?null:f,p=a.classes,g=void 0===p?[]:p,M=a.attributes,C=void 0===M?{}:M,d=a.styles,x=void 0===d?{}:d;if(c){var w=c.prefix,H=c.iconName,V=c.icon;return Vc(m({type:"icon"},c),(function(){return Hc(),A.autoA11y&&(v?C["aria-labelledby"]="".concat(A.replacementClass,"-title-").concat(z||ac()):(C["aria-hidden"]="true",C.focusable="false")),tc({icons:{main:xc(V),mask:s?xc(s.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:H,transform:m({},cc,e),symbol:o,title:v,maskId:h,titleId:z,extra:{attributes:C,styles:x,classes:g}})}))}},function(c){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=(c||{}).icon?c:uc(c||{}),e=a.mask;return e&&(e=(e||{}).icon?e:uc(e||{})),Lc(l,m({},a,{mask:e}))});const Ac={acid:'',acorn:'',"alien-fire":'',"all-for-one":'',"alligator-clip":'',"ammo-bag":'',anchor:'',"angel-wings":'',ankh:'',anvil:'',apple:'',aquarius:'',"arcane-mask":'',archer:'',"archery-target":'',arena:'',aries:'',"arrow-cluster":'',"arrow-flights":'',arson:'',aura:'',aware:'',"axe-swing":'',axe:'',ball:'',"barbed-arrow":'',barrier:'',"bat-sword":'',"battered-axe":'',batteries:'',"battery-0":'',"battery-100":'',"battery-25":'',"battery-50":'',"battery-75":'',"battery-black":'',"battery-negative":'',"battery-positive":'',"battery-white":'',batwings:'',"beam-wake":'',"bear-trap":'',beer:'',beetle:'',bell:'',biohazard:'',"bird-claw":'',"bird-mask":'',"blade-bite":'',blast:'',blaster:'',"bleeding-eye":'',"bleeding-hearts":'',"bolt-shield":'',"bomb-explosion":'',bombs:'',"bone-bite":'',"bone-knife":'',book:'',boomerang:'',"boot-stomp":'',"bottle-vapors":'',"bottled-bolt":'',"bottom-right":'',"bowie-knife":'',"bowling-pin":'',"brain-freeze":'',"brandy-bottle":'',bridge:'',"broadhead-arrow":'',broadsword:'',"broken-bone":'',"broken-bottle":'',"broken-heart":'',"broken-shield":'',"broken-skull":'',"bubbling-potion":'',bullets:'',"burning-book":'',"burning-embers":'',"burning-eye":'',"burning-meteor":'',"burst-blob":'',butterfly:'',campfire:'',cancel:'',cancer:'',"candle-fire":'',candle:'',"cannon-shot":'',capitol:'',capricorn:'',carrot:'',"castle-emblem":'',"castle-flag":'',cat:'',chain:'',cheese:'',"chemical-arrow":'',chessboard:'',"chicken-leg":'',"circle-of-circles":'',"circular-saw":'',"circular-shield":'',"cloak-and-dagger":'',clockwork:'',clover:'',"clovers-card":'',clovers:'',"cluster-bomb":'',"coffee-mug":'',"cog-wheel":'',cog:'',"cold-heart":'',compass:'',"corked-tube":'',"crab-claw":'',"cracked-helm":'',"cracked-shield":'',"croc-sword":'',crossbow:'',"crossed-axes":'',"crossed-bones":'',"crossed-pistols":'',"crossed-sabres":'',"crossed-swords":'',"crown-of-thorns":'',crown:'',"crowned-heart":'',crush:'',"crystal-ball":'',"crystal-cluster":'',"crystal-wand":'',crystals:'',cubes:'',"cut-palm":'',cycle:'',daggers:'',daisy:'',"dead-tree":'',"death-skull":'',decapitation:'',defibrillate:'',demolish:'',"dervish-swords":'',"desert-skull":'',diamond:'',"diamonds-card":'',diamonds:'',"dice-five":'',"dice-four":'',"dice-one":'',"dice-six":'',"dice-three":'',"dice-two":'',dinosaur:'',divert:'',"diving-dagger":'',"double-team":'',doubled:'',"dragon-breath":'',"dragon-wing":'',dragon:'',dragonfly:'',drill:'',"dripping-blade":'',"dripping-knife":'',"dripping-sword":'',"droplet-splash":'',droplet:'',droplets:'',duel:'',"egg-pod":'',egg:'',eggplant:'',emerald:'',energise:'',explosion:'',"explosive-materials":'',"eye-monster":'',"eye-shield":'',eyeball:'',"fairy-wand":'',fairy:'',"fall-down":'',falling:'',"fast-ship":'',"feather-wing":'',"feathered-wing":'',fedora:'',"fire-bomb":'',"fire-breath":'',"fire-ring":'',"fire-shield":'',"fire-symbol":'',fire:'',"fireball-sword":'',fish:'',"fizzing-flask":'',"flame-symbol":'',"flaming-arrow":'',"flaming-claw":'',"flaming-trident":'',flask:'',"flat-hammer":'',flower:'',flowers:'',"fluffy-swirl":'',"focused-lightning":'',"food-chain":'',footprint:'',forging:'',forward:'',fox:'',"frost-emblem":'',frostfire:'',"frozen-arrow":'',"gamepad-cross":'',gavel:'',"gear-hammer":'',"gear-heart":'',gears:'',gecko:'',"gem-pendant":'',gem:'',gemini:'',"glass-heart":'',gloop:'',"gold-bar":'',"grappling-hook":'',"grass-patch":'',grass:'',grenade:'',groundbreaker:'',"guarded-tower":'',guillotine:'',halberd:'',"hammer-drop":'',hammer:'',"hand-emblem":'',"hand-saw":'',hand:'',"harpoon-trident":'',"health-decrease":'',"health-increase":'',health:'',"heart-bottle":'',"heart-tower":'',heartburn:'',"hearts-card":'',hearts:'',"heat-haze":'',"heavy-fall":'',"heavy-shield":'',helmet:'',help:'',"hive-emblem":'',"hole-ladder":'',honeycomb:'',hood:'',"horn-call":'',horns:'',horseshoe:'',"hospital-cross":'',"hot-surface":'',hourglass:'',"hydra-shot":'',hydra:'',"ice-cube":'',implosion:'',incense:'',"insect-jaws":'',interdiction:'',jetpack:'',"jigsaw-piece":'',kaleidoscope:'',kettlebell:'',"key-basic":'',key:'',"kitchen-knives":'',"knife-fork":'',knife:'',"knight-helmet":'',kunai:'',"lantern-flame":'',"large-hammer":'',"laser-blast":'',"laser-site":'',lava:'',leaf:'',leo:'',"level-four-advanced":'',"level-four":'',"level-three-advanced":'',"level-three":'',"level-two-advanced":'',"level-two":'',lever:'',libra:'',"light-bulb":'',lighthouse:'',"lightning-bolt":'',"lightning-storm":'',"lightning-sword":'',"lightning-trio":'',lightning:'',lion:'',"lit-candelabra":'',load:'',"locked-fortress":'',"love-howl":'',maggot:'',magnet:'',"mass-driver":'',match:'',"meat-hook":'',meat:'',"medical-pack":'',"metal-gate":'',microphone:'',"mine-wagon":'',"mining-diamonds":'',mirror:'',"monster-skull":'',montains:'',"moon-sun":'',mp5:'',"muscle-fat":'',"muscle-up":'',musket:'',nails:'',nodular:'',noose:'',nuclear:'',ocarina:'',"ocean-emblem":'',octopus:'',omega:'',"on-target":'',ophiuchus:'',overhead:'',overmind:'',"palm-tree":'',pawn:'',pawprint:'',"perspective-dice-five":'',"perspective-dice-four":'',"perspective-dice-one":'',"perspective-dice-random":'',"perspective-dice-six-two":'',"perspective-dice-six":'',"perspective-dice-three":'',pill:'',pills:'',"pine-tree":'',"ping-pong":'',pisces:'',"plain-dagger":'',"player-despair":'',"player-dodge":'',"player-king":'',"player-lift":'',"player-pain":'',"player-pyromaniac":'',"player-shot":'',"player-teleport":'',"player-thunder-struck":'',player:'',podium:'',"poison-cloud":'',potion:'',pyramids:'',"queen-crown":'',"quill-ink":'',rabbit:'',"radar-dish":'',"radial-balance":'',radioactive:'',raven:'',reactor:'',recycle:'',regeneration:'',"relic-blade":'',repair:'',reverse:'',revolver:'',rifle:'',"ringing-bell":'',"roast-chicken":'',"robot-arm":'',"round-bottom-flask":'',"round-shield":'',rss:'',"rune-stone":'',sagittarius:'',sapphire:'',satellite:'',save:'',scorpio:'',"scroll-unfurled":'',scythe:'',"sea-serpent":'',seagull:'',shark:'',sheep:'',sheriff:'',shield:'',"ship-emblem":'',"shoe-prints":'',"shot-through-the-heart":'',"shotgun-shell":'',shovel:'',shuriken:'',sickle:'',sideswipe:'',site:'',"skull-trophy":'',skull:'',"slash-ring":'',"small-fire":'',snail:'',snake:'',snorkel:'',snowflake:'',"soccer-ball":'',"spades-card":'',spades:'',"spawn-node":'',"spear-head":'',"speech-bubble":'',"speech-bubbles":'',"spider-face":'',spikeball:'',"spiked-mace":'',"spiked-tentacle":'',"spinning-sword":'',"spiral-shell":'',splash:'',"spray-can":'',"sprout-emblem":'',sprout:'',stopwatch:'',"suckered-tentacle":'',suits:'',"sun-symbol":'',sun:'',sunbeams:'',"super-mushroom":'',"supersonic-arrow":'',"surveillance-camera":'',syringe:'',"target-arrows":'',"target-laser":'',targeted:'',taurus:'',telescope:'',tentacle:'',tesla:'',"thorn-arrow":'',"thorny-vine":'',"three-keys":'',"tic-tac-toe":'',toast:'',tombstone:'',tooth:'',torch:'',tower:'',trail:'',"trefoil-lily":'',trident:'',triforce:'',trophy:'',turd:'',"two-dragons":'',"two-hearts":'',uncertainty:'',underhand:'',unplugged:'',vase:'',"venomous-snake":'',vest:'',vial:'',"vine-whip":'',virgo:'',"water-drop":'',wifi:'',"wireless-signal":'',"wolf-head":'',"wolf-howl":'',"wooden-sign":'',wrench:'',wyvern:'',"x-mark":'',"zebra-shield":'',"zigzag-leaf":''};bc.add(n,o,s,i);const Qc=Bc(uc({iconName:"copy",prefix:"far"})).node[0],Uc=Bc(uc({iconName:"exclamation-triangle",prefix:"fas"})).node[0],yc=new Map(Object.keys(Ac).map((c=>[c,{name:c,type:"rpg"}]))),Fc=new Map([Object.values(n),Object.values(o),Object.values(s)].flat().map((c=>[c.iconName,{name:c.iconName,type:"font-awesome"}]))),Sc=[...Fc.values(),...yc.values()];function Ic(c){return uc({iconName:c,prefix:"fas"})||uc({iconName:c,prefix:"far"})||uc({iconName:c,prefix:"fab"})?"font-awesome":Ac[c]?"rpg":void 0}function kc(c){return"rpg"===c.type?"RPG Awesome":"font-awesome"===c.type?"Font Awesome":void 0}function Ec(c){if("image"===c.type){const a=new Image;return a.src=c.name,a}if("rpg"===c.type){if(!Ac[c.name])return null;const a=createDiv();return a.innerHTML=Ac[c.name],a.children[0]}return uc({iconName:c.name,prefix:"fas"})?Bc(uc({iconName:c.name,prefix:"fas"})).node[0]:uc({iconName:c.name,prefix:"far"})?Bc(uc({iconName:c.name,prefix:"far"})).node[0]:uc({iconName:c.name,prefix:"fab"})?Bc(uc({iconName:c.name,prefix:"fab"})).node[0]:void 0}function Zc(){return"ID_xyxyxyxyxyxy".replace(/[xy]/g,(function(c){var a=16*Math.random()|0;return("x"==c?a:3&a|8).toString(16)}))}function Dc(c,a,l){const e=c.split("\n").slice(a),i=e.indexOf(e.find((c=>c==l)));let o=i+1;for(;o=0?c.ownerDocument.body:jc(c)&&ca(c)?c:ia(ea(c))}function oa(c,a){var l;void 0===a&&(a=[]);var e=ia(c),i=e===(null==(l=c.ownerDocument)?void 0:l.body),o=Xc(e),n=i?[o].concat(o.visualViewport||[],ca(e)?e:[]):e,s=a.concat(n);return i?s:s.concat(oa(ea(n)))}function na(c){return["table","td","th"].indexOf(qc(c))>=0}function sa(c){return jc(c)&&"fixed"!==$c(c).position?c.offsetParent:null}function ta(c){for(var a=Xc(c),l=sa(c);l&&na(l)&&"static"===$c(l).position;)l=sa(l);return l&&("html"===qc(l)||"body"===qc(l)&&"static"===$c(l).position)?a:l||function(c){var a=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&jc(c)&&"fixed"===$c(c).position)return null;for(var l=ea(c);jc(l)&&["html","body"].indexOf(qc(l))<0;){var e=$c(l);if("none"!==e.transform||"none"!==e.perspective||"paint"===e.contain||-1!==["transform","perspective"].indexOf(e.willChange)||a&&"filter"===e.willChange||a&&e.filter&&"none"!==e.filter)return l;l=l.parentNode}return null}(c)||a}var ha="top",ra="bottom",ma="right",va="left",fa="auto",za=[ha,ra,ma,va],pa="start",ga="end",Ma="viewport",Ca="popper",da=za.reduce((function(c,a){return c.concat([a+"-"+pa,a+"-"+ga])}),[]),xa=[].concat(za,[fa]).reduce((function(c,a){return c.concat([a,a+"-"+pa,a+"-"+ga])}),[]),wa=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Ha(c){var a=new Map,l=new Set,e=[];function i(c){l.add(c.name),[].concat(c.requires||[],c.requiresIfExists||[]).forEach((function(c){if(!l.has(c)){var e=a.get(c);e&&i(e)}})),e.push(c)}return c.forEach((function(c){a.set(c.name,c)})),c.forEach((function(c){l.has(c.name)||i(c)})),e}var Va={placement:"bottom",modifiers:[],strategy:"absolute"};function ua(){for(var c=arguments.length,a=new Array(c),l=0;l=0?"x":"y"}function Ua(c){var a,l=c.reference,e=c.element,i=c.placement,o=i?Ba(i):null,n=i?Aa(i):null,s=l.x+l.width/2-e.width/2,t=l.y+l.height/2-e.height/2;switch(o){case ha:a={x:s,y:l.y-e.height};break;case ra:a={x:s,y:l.y+l.height};break;case ma:a={x:l.x+l.width,y:t};break;case va:a={x:l.x-e.width,y:t};break;default:a={x:l.x,y:l.y}}var h=o?Qa(o):null;if(null!=h){var r="y"===h?"height":"width";switch(n){case pa:a[h]=a[h]-(l[r]/2-e[r]/2);break;case ga:a[h]=a[h]+(l[r]/2-e[r]/2)}}return a}const ya={name:"popperOffsets",enabled:!0,phase:"read",fn:function(c){var a=c.state,l=c.name;a.modifiersData[l]=Ua({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})},data:{}};var Fa=Math.max,Sa=Math.min,Ia=Math.round,ka={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ea(c){var a,l=c.popper,e=c.popperRect,i=c.placement,o=c.offsets,n=c.position,s=c.gpuAcceleration,t=c.adaptive,h=c.roundOffsets,r=!0===h?function(c){var a=c.x,l=c.y,e=window.devicePixelRatio||1;return{x:Ia(Ia(a*e)/e)||0,y:Ia(Ia(l*e)/e)||0}}(o):"function"==typeof h?h(o):o,m=r.x,v=void 0===m?0:m,f=r.y,z=void 0===f?0:f,p=o.hasOwnProperty("x"),g=o.hasOwnProperty("y"),M=va,C=ha,d=window;if(t){var x=ta(l),w="clientHeight",H="clientWidth";x===Xc(l)&&"static"!==$c(x=_c(l)).position&&(w="scrollHeight",H="scrollWidth"),x=x,i===ha&&(C=ra,z-=x[w]-e.height,z*=s?1:-1),i===va&&(M=ma,v-=x[H]-e.width,v*=s?1:-1)}var V,u=Object.assign({position:n},t&&ka);return s?Object.assign({},u,((V={})[C]=g?"0":"",V[M]=p?"0":"",V.transform=(d.devicePixelRatio||1)<2?"translate("+v+"px, "+z+"px)":"translate3d("+v+"px, "+z+"px, 0)",V)):Object.assign({},u,((a={})[C]=g?z+"px":"",a[M]=p?v+"px":"",a.transform="",a))}var Za={left:"right",right:"left",bottom:"top",top:"bottom"};function Da(c){return c.replace(/left|right|bottom|top/g,(function(c){return Za[c]}))}var Ra={start:"end",end:"start"};function Ga(c){return c.replace(/start|end/g,(function(c){return Ra[c]}))}function Ta(c,a){var l=a.getRootNode&&a.getRootNode();if(c.contains(a))return!0;if(l&&Yc(l)){var e=a;do{if(e&&c.isSameNode(e))return!0;e=e.parentNode||e.host}while(e)}return!1}function Wa(c){return Object.assign({},c,{left:c.x,top:c.y,right:c.x+c.width,bottom:c.y+c.height})}function Oa(c,a){return a===Ma?Wa(function(c){var a=Xc(c),l=_c(c),e=a.visualViewport,i=l.clientWidth,o=l.clientHeight,n=0,s=0;return e&&(i=e.width,o=e.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(n=e.offsetLeft,s=e.offsetTop)),{width:i,height:o,x:n+Kc(c),y:s}}(c)):jc(a)?function(c){var a=Oc(c);return a.top=a.top+c.clientTop,a.left=a.left+c.clientLeft,a.bottom=a.top+c.clientHeight,a.right=a.left+c.clientWidth,a.width=c.clientWidth,a.height=c.clientHeight,a.x=a.left,a.y=a.top,a}(a):Wa(function(c){var a,l=_c(c),e=Pc(c),i=null==(a=c.ownerDocument)?void 0:a.body,o=Fa(l.scrollWidth,l.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),n=Fa(l.scrollHeight,l.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-e.scrollLeft+Kc(c),t=-e.scrollTop;return"rtl"===$c(i||l).direction&&(s+=Fa(l.clientWidth,i?i.clientWidth:0)-o),{width:o,height:n,x:s,y:t}}(_c(c)))}function Xa(c){return Object.assign({},{top:0,right:0,bottom:0,left:0},c)}function Pa(c,a){return a.reduce((function(a,l){return a[l]=c,a}),{})}function Ja(c,a){void 0===a&&(a={});var l=a,e=l.placement,i=void 0===e?c.placement:e,o=l.boundary,n=void 0===o?"clippingParents":o,s=l.rootBoundary,t=void 0===s?Ma:s,h=l.elementContext,r=void 0===h?Ca:h,m=l.altBoundary,v=void 0!==m&&m,f=l.padding,z=void 0===f?0:f,p=Xa("number"!=typeof z?z:Pa(z,za)),g=r===Ca?"reference":Ca,M=c.elements.reference,C=c.rects.popper,d=c.elements[v?g:r],x=function(c,a,l){var e="clippingParents"===a?function(c){var a=oa(ea(c)),l=["absolute","fixed"].indexOf($c(c).position)>=0&&jc(c)?ta(c):c;return Jc(l)?a.filter((function(c){return Jc(c)&&Ta(c,l)&&"body"!==qc(c)})):[]}(c):[].concat(a),i=[].concat(e,[l]),o=i[0],n=i.reduce((function(a,l){var e=Oa(c,l);return a.top=Fa(e.top,a.top),a.right=Sa(e.right,a.right),a.bottom=Sa(e.bottom,a.bottom),a.left=Fa(e.left,a.left),a}),Oa(c,o));return n.width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}(Jc(d)?d:d.contextElement||_c(c.elements.popper),n,t),w=Oc(M),H=Ua({reference:w,element:C,strategy:"absolute",placement:i}),V=Wa(Object.assign({},C,H)),u=r===Ca?V:w,L={top:x.top-u.top+p.top,bottom:u.bottom-x.bottom+p.bottom,left:x.left-u.left+p.left,right:u.right-x.right+p.right},b=c.modifiersData.offset;if(r===Ca&&b){var N=b[i];Object.keys(L).forEach((function(c){var a=[ma,ra].indexOf(c)>=0?1:-1,l=[ha,ra].indexOf(c)>=0?"y":"x";L[c]+=N[l]*a}))}return L}const ja={name:"flip",enabled:!0,phase:"main",fn:function(c){var a=c.state,l=c.options,e=c.name;if(!a.modifiersData[e]._skip){for(var i=l.mainAxis,o=void 0===i||i,n=l.altAxis,s=void 0===n||n,t=l.fallbackPlacements,h=l.padding,r=l.boundary,m=l.rootBoundary,v=l.altBoundary,f=l.flipVariations,z=void 0===f||f,p=l.allowedAutoPlacements,g=a.options.placement,M=Ba(g),C=t||(M!==g&&z?function(c){if(Ba(c)===fa)return[];var a=Da(c);return[Ga(c),a,Ga(a)]}(g):[Da(g)]),d=[g].concat(C).reduce((function(c,l){return c.concat(Ba(l)===fa?function(c,a){void 0===a&&(a={});var l=a,e=l.placement,i=l.boundary,o=l.rootBoundary,n=l.padding,s=l.flipVariations,t=l.allowedAutoPlacements,h=void 0===t?xa:t,r=Aa(e),m=r?s?da:da.filter((function(c){return Aa(c)===r})):za,v=m.filter((function(c){return h.indexOf(c)>=0}));0===v.length&&(v=m);var f=v.reduce((function(a,l){return a[l]=Ja(c,{placement:l,boundary:i,rootBoundary:o,padding:n})[Ba(l)],a}),{});return Object.keys(f).sort((function(c,a){return f[c]-f[a]}))}(a,{placement:l,boundary:r,rootBoundary:m,padding:h,flipVariations:z,allowedAutoPlacements:p}):l)}),[]),x=a.rects.reference,w=a.rects.popper,H=new Map,V=!0,u=d[0],L=0;L=0,Q=A?"width":"height",U=Ja(a,{placement:b,boundary:r,rootBoundary:m,altBoundary:v,padding:h}),y=A?B?ma:va:B?ra:ha;x[Q]>w[Q]&&(y=Da(y));var F=Da(y),S=[];if(o&&S.push(U[N]<=0),s&&S.push(U[y]<=0,U[F]<=0),S.every((function(c){return c}))){u=b,V=!1;break}H.set(b,S)}if(V)for(var I=function(c){var a=d.find((function(a){var l=H.get(a);if(l)return l.slice(0,c).every((function(c){return c}))}));if(a)return u=a,"break"},k=z?3:1;k>0&&"break"!==I(k);k--);a.placement!==u&&(a.modifiersData[e]._skip=!0,a.placement=u,a.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ya(c,a,l){return Fa(c,Sa(a,l))}function qa(c,a,l){return void 0===l&&(l={x:0,y:0}),{top:c.top-a.height-l.y,right:c.right-a.width+l.x,bottom:c.bottom-a.height+l.y,left:c.left-a.width-l.x}}function _a(c){return[ha,ma,ra,va].some((function(a){return c[a]>=0}))}var Ka=La({defaultModifiers:[Na,ya,{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(c){var a=c.state,l=c.options,e=l.gpuAcceleration,i=void 0===e||e,o=l.adaptive,n=void 0===o||o,s=l.roundOffsets,t=void 0===s||s,h={placement:Ba(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:i};null!=a.modifiersData.popperOffsets&&(a.styles.popper=Object.assign({},a.styles.popper,Ea(Object.assign({},h,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:n,roundOffsets:t})))),null!=a.modifiersData.arrow&&(a.styles.arrow=Object.assign({},a.styles.arrow,Ea(Object.assign({},h,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:t})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(c){var a=c.state;Object.keys(a.elements).forEach((function(c){var l=a.styles[c]||{},e=a.attributes[c]||{},i=a.elements[c];jc(i)&&qc(i)&&(Object.assign(i.style,l),Object.keys(e).forEach((function(c){var a=e[c];!1===a?i.removeAttribute(c):i.setAttribute(c,!0===a?"":a)})))}))},effect:function(c){var a=c.state,l={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,l.popper),a.styles=l,a.elements.arrow&&Object.assign(a.elements.arrow.style,l.arrow),function(){Object.keys(a.elements).forEach((function(c){var e=a.elements[c],i=a.attributes[c]||{},o=Object.keys(a.styles.hasOwnProperty(c)?a.styles[c]:l[c]).reduce((function(c,a){return c[a]="",c}),{});jc(e)&&qc(e)&&(Object.assign(e.style,o),Object.keys(i).forEach((function(c){e.removeAttribute(c)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(c){var a=c.state,l=c.options,e=c.name,i=l.offset,o=void 0===i?[0,0]:i,n=xa.reduce((function(c,l){return c[l]=function(c,a,l){var e=Ba(c),i=[va,ha].indexOf(e)>=0?-1:1,o="function"==typeof l?l(Object.assign({},a,{placement:c})):l,n=o[0],s=o[1];return n=n||0,s=(s||0)*i,[va,ma].indexOf(e)>=0?{x:s,y:n}:{x:n,y:s}}(l,a.rects,o),c}),{}),s=n[a.placement],t=s.x,h=s.y;null!=a.modifiersData.popperOffsets&&(a.modifiersData.popperOffsets.x+=t,a.modifiersData.popperOffsets.y+=h),a.modifiersData[e]=n}},ja,{name:"preventOverflow",enabled:!0,phase:"main",fn:function(c){var a=c.state,l=c.options,e=c.name,i=l.mainAxis,o=void 0===i||i,n=l.altAxis,s=void 0!==n&&n,t=l.boundary,h=l.rootBoundary,r=l.altBoundary,m=l.padding,v=l.tether,f=void 0===v||v,z=l.tetherOffset,p=void 0===z?0:z,g=Ja(a,{boundary:t,rootBoundary:h,padding:m,altBoundary:r}),M=Ba(a.placement),C=Aa(a.placement),d=!C,x=Qa(M),w="x"===x?"y":"x",H=a.modifiersData.popperOffsets,V=a.rects.reference,u=a.rects.popper,L="function"==typeof p?p(Object.assign({},a.rects,{placement:a.placement})):p,b={x:0,y:0};if(H){if(o||s){var N="y"===x?ha:va,B="y"===x?ra:ma,A="y"===x?"height":"width",Q=H[x],U=H[x]+g[N],y=H[x]-g[B],F=f?-u[A]/2:0,S=C===pa?V[A]:u[A],I=C===pa?-u[A]:-V[A],k=a.elements.arrow,E=f&&k?la(k):{width:0,height:0},Z=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},D=Z[N],R=Z[B],G=Ya(0,V[A],E[A]),T=d?V[A]/2-F-G-D-L:S-G-D-L,W=d?-V[A]/2+F+G+R+L:I+G+R+L,O=a.elements.arrow&&ta(a.elements.arrow),X=O?"y"===x?O.clientTop||0:O.clientLeft||0:0,P=a.modifiersData.offset?a.modifiersData.offset[a.placement][x]:0,J=H[x]+T-P-X,j=H[x]+W-P;if(o){var Y=Ya(f?Sa(U,J):U,Q,f?Fa(y,j):y);H[x]=Y,b[x]=Y-Q}if(s){var q="x"===x?ha:va,_="x"===x?ra:ma,K=H[w],$=K+g[q],cc=K-g[_],ac=Ya(f?Sa($,J):$,K,f?Fa(cc,j):cc);H[w]=ac,b[w]=ac-K}}a.modifiersData[e]=b}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(c){var a,l=c.state,e=c.name,i=c.options,o=l.elements.arrow,n=l.modifiersData.popperOffsets,s=Ba(l.placement),t=Qa(s),h=[va,ma].indexOf(s)>=0?"height":"width";if(o&&n){var r=function(c,a){return Xa("number"!=typeof(c="function"==typeof c?c(Object.assign({},a.rects,{placement:a.placement})):c)?c:Pa(c,za))}(i.padding,l),m=la(o),v="y"===t?ha:va,f="y"===t?ra:ma,z=l.rects.reference[h]+l.rects.reference[t]-n[t]-l.rects.popper[h],p=n[t]-l.rects.reference[t],g=ta(o),M=g?"y"===t?g.clientHeight||0:g.clientWidth||0:0,C=z/2-p/2,d=r[v],x=M-m[h]-r[f],w=M/2-m[h]/2+C,H=Ya(d,w,x),V=t;l.modifiersData[e]=((a={})[V]=H,a.centerOffset=H-w,a)}},effect:function(c){var a=c.state,l=c.options.element,e=void 0===l?"[data-popper-arrow]":l;null!=e&&("string"!=typeof e||(e=a.elements.popper.querySelector(e)))&&Ta(a.elements.popper,e)&&(a.elements.arrow=e)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(c){var a=c.state,l=c.name,e=a.rects.reference,i=a.rects.popper,o=a.modifiersData.preventOverflow,n=Ja(a,{elementContext:"reference"}),s=Ja(a,{altBoundary:!0}),t=qa(n,e),h=qa(s,i,o),r=_a(t),m=_a(h);a.modifiersData[l]={referenceClippingOffsets:t,popperEscapeOffsets:h,isReferenceHidden:r,hasPopperEscaped:m},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":r,"data-popper-escaped":m})}}]});class $a{constructor(c,a,l){this.containerEl=a,this.owner=c,a.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),a.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),l.register([],"ArrowUp",(()=>(this.setSelectedItem(this.selectedItem-1,!0),!1))),l.register([],"ArrowDown",(()=>(this.setSelectedItem(this.selectedItem+1,!0),!1))),l.register([],"Enter",(c=>(this.useSelectedItem(c),!1))),l.register([],"Tab",(c=>(this.useSelectedItem(c),!1)))}chooseSuggestion(c){if(!this.items||!this.items.length)return;const a=this.items[this.selectedItem];a&&this.owner.selectSuggestion(a,c)}onSuggestionClick(c,a){if(c.preventDefault(),!this.suggestions||!this.suggestions.length)return;const l=this.suggestions.indexOf(a);this.setSelectedItem(l,!1),this.useSelectedItem(c)}onSuggestionMouseover(c,a){if(!this.suggestions||!this.suggestions.length)return;const l=this.suggestions.indexOf(a);this.setSelectedItem(l,!1)}empty(){this.containerEl.empty()}setSuggestions(c){this.containerEl.empty();const a=[];c.forEach((c=>{const l=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(c,l),a.push(l)})),this.items=c,this.suggestions=a,this.setSelectedItem(0,!1)}useSelectedItem(c){if(!this.items||!this.items.length)return;const a=this.items[this.selectedItem];a&&this.owner.selectSuggestion(a,c),e.Platform.isMobile&&this.chooseSuggestion(c)}wrap(c,a){return(c%a+a)%a}setSelectedItem(c,a){const l=this.wrap(c,this.suggestions.length),e=this.suggestions[this.selectedItem],i=this.suggestions[l];e&&e.removeClass("is-selected"),i&&i.addClass("is-selected"),this.selectedItem=l,a&&i.scrollIntoView(!1)}}class cl extends e.FuzzySuggestModal{constructor(c,a,l){super(c),this.items=[],this.scope=new e.Scope,this.emptyStateText="No match found",this.limit=100,this.inputEl=a,this.items=l,this.suggestEl=createDiv("suggestion-container"),this.contentEl=this.suggestEl.createDiv("suggestion"),this.suggester=new $a(this,this.contentEl,this.scope),this.scope.register([],"Escape",this.close.bind(this)),this.inputEl.addEventListener("input",this.onInputChanged.bind(this)),this.inputEl.addEventListener("focus",this.onInputChanged.bind(this)),this.inputEl.addEventListener("blur",this.close.bind(this)),this.suggestEl.on("mousedown",".suggestion-container",(c=>{c.preventDefault()}))}empty(){this.suggester.empty()}onInputChanged(){const c=this.modifyInput(this.inputEl.value),a=this.getSuggestions(c);a.length>0?this.suggester.setSuggestions(a.slice(0,this.limit)):this.onNoSuggestion(),this.open()}modifyInput(c){return c}onNoSuggestion(){this.empty(),this.renderSuggestion(null,this.contentEl.createDiv("suggestion-item"))}open(){this.app.keymap.pushScope(this.scope),document.body.appendChild(this.suggestEl),this.popper=Ka(this.inputEl,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,10]}},{name:"flip",options:{fallbackPlacements:["top"]}}]})}close(){this.app.keymap.popScope(this.scope),this.suggester.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}createPrompt(c){this.promptEl||(this.promptEl=this.suggestEl.createDiv("prompt-instructions"));let a=this.promptEl.createDiv("prompt-instruction");for(let l of c)a.appendChild(l)}}class al extends cl{constructor(c,a){super(c,a.inputEl,Sc),this.icons=Sc,this.text=a,this.createPrompts(),this.inputEl.addEventListener("input",this.getItem.bind(this))}createPrompts(){}getItem(){const c=this.inputEl.value,a=this.icons.find((a=>a.name===c.trim()));a!=this.icon&&(this.icon=a,this.icons&&this.onInputChanged())}getItemText(c){return c.name}onChooseItem(c){this.text.setValue(c.name),this.icon=c}selectSuggestion({item:c}){this.text.setValue(c.name),this.icon=c,this.onClose(),this.close()}renderSuggestion(c,a){let{item:l,match:e}=c||{},i=a.createDiv({cls:"suggestion-content admonition-icon"}),o=i.createDiv("suggestion-text admonition-text");if(!l)return i.setText(this.emptyStateText),void i.parentElement.addClass("is-selected");const n=e.matches.map((c=>createSpan("suggestion-highlight")));for(let c=0;ca[0]===c));if(a){let i=n[e.matches.indexOf(a)];o.appendChild(i),i.appendText(l.name.substring(a[0],a[1])),c+=a[1]-a[0]-1}else o.appendText(l.name[c])}const s=createDiv("suggestion-flair admonition-suggester-icon");s.appendChild(Ec(l)),i.appendChild(s),i.createDiv({cls:"suggestion-note",text:kc(l)})}getItems(){return this.icons}}class ll extends cl{constructor(c,a,l){super(c,a.inputEl,l),this.admonitions=[...l],this.text=a,this.createPrompts(),this.inputEl.addEventListener("input",this.getItem.bind(this))}createPrompts(){}getItem(){const c=this.inputEl.value,a=this.admonitions.find((a=>a.type===c.trim()));a!=this.admonition&&(this.admonition=a,this.admonitions&&this.onInputChanged())}getItemText(c){return c.type}onChooseItem(c){this.text.setValue(c.type),this.admonition=c}selectSuggestion({item:c}){this.text.setValue(c.type),this.onClose(),this.close()}renderSuggestion(c,a){let{item:l,match:e}=c||{},i=a.createDiv({cls:"suggestion-content icon"});if(!l)return i.setText(this.emptyStateText),void i.parentElement.addClass("is-selected");const o=e.matches.map((c=>createSpan("suggestion-highlight")));for(let c=0;ca[0]===c));if(a){let n=o[e.matches.indexOf(a)];i.appendChild(n),n.appendText(l.type.substring(a[0],a[1])),c+=a[1]-a[0]-1}else i.appendText(l.type[c])}const n=createDiv("suggestion-flair admonition-suggester-icon");n.appendChild(Ec(l.icon)).setAttribute("color",`rgb(${l.color})`),i.prepend(n)}getItems(){return this.admonitions}}class el extends e.Modal{constructor(c,a){super(c.app),this.plugin=c,this.editor=a,this.collapse=this.plugin.data.autoCollapse?this.plugin.data.defaultCollapseType:"none",this.containerEl.addClass("insert-admonition-modal"),this.onOpen=()=>this.display(!0)}display(c){return l(this,void 0,void 0,(function*(){const{contentEl:a}=this;let l;a.empty(),new e.Setting(a).setName("Admonition Type").addText((a=>{a.setPlaceholder("Admonition Type").setValue(this.type);const i=new ll(this.app,a,this.plugin.admonitionArray),o=()=>{var c;a.inputEl.value&&this.plugin.admonitions[a.inputEl.value]?(this.type=a.inputEl.value,(null===(c=this.title)||void 0===c?void 0:c.length)||(this.title=this.type[0].toUpperCase()+this.type.slice(1).toLowerCase()),l.setValue(this.title)):(new e.Notice("No admonition type by that name exists."),a.inputEl.value=""),this.buildAdmonition()};a.inputEl.onblur=o,i.onClose=o,c&&(i.open(),a.inputEl.focus())})),new e.Setting(a).setName("Admonition Title").setDesc("Leave blank to render without a title.").addText((c=>{l=c,c.setValue(this.title),c.onChange((c=>{var a;if(this.title=c,0==c.length?this.noTitle=!0:this.noTitle=!1,this.element){const c=this.plugin.admonitions[this.type],l=this.plugin.getAdmonitionElement(this.type,this.title,c.icon,(null!==(a=c.injectColor)&&void 0!==a?a:this.plugin.data.injectColor)?c.color:null,this.collapse);l.createDiv({cls:"admonition-content",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),this.element.replaceWith(l),this.element=l}}))})),new e.Setting(a).setName("Make Collapsible").addDropdown((c=>{c.addOption("open","Open"),c.addOption("closed","Closed"),c.addOption("none","None"),c.setValue(this.collapse),c.onChange((c=>{this.collapse=c,this.buildAdmonition()}))})),this.admonitionEl=this.contentEl.createDiv(),this.buildAdmonition(),new e.Setting(a).addButton((c=>c.setButtonText("Insert").setCta().onClick((()=>{try{let c="",a="";this.title.length&&this.title.toLowerCase()!=this.type.toLowerCase()&&(c=`title: ${this.title}\n`),(this.plugin.data.autoCollapse&&this.collapse!=this.plugin.data.defaultCollapseType||!this.plugin.data.autoCollapse&&"none"!=this.collapse)&&(a=`collapse: ${this.collapse}\n`),this.editor.getDoc().replaceSelection(`\`\`\`ad-${this.type}\n${c}${a}\n${this.editor.getDoc().getSelection()}\n\n\`\`\`\n`);const l=this.editor.getCursor();this.editor.setCursor(l.line-3)}catch(c){new e.Notice("There was an issue inserting the admonition.")}this.close()})))).addExtraButton((c=>{c.setIcon("cross").setTooltip("Cancel").onClick((()=>this.close())),c.extraSettingsEl.setAttr("tabindex",0),c.extraSettingsEl.onkeydown=c=>{"Enter"==c.key&&this.close()}}))}))}buildAdmonition(){var c;if(this.admonitionEl.empty(),this.type&&this.plugin.admonitions[this.type]){const a=this.plugin.admonitions[this.type];this.element=this.plugin.getAdmonitionElement(this.type,this.title,a.icon,(null!==(c=a.injectColor)&&void 0!==c?c:this.plugin.data.injectColor)?a.color:null,this.collapse),this.element.createDiv({cls:"admonition-content",text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),this.admonitionEl.appendChild(this.element)}}}const il={"Admonition Settings":"Admonition Settings","Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.":"Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors."," Markdown Syntax Highlighting":" Markdown Syntax Highlighting","Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.":"Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk."," Sync Links to Metadata Cache":" Sync Links to Metadata Cache","Allows admonitions to be created using ":"Allows admonitions to be created using "," or ":" or ",", instead of using a code block.":", instead of using a code block."," Enable Non-codeblock Admonitions":" Enable Non-codeblock Admonitions","Collapsible by Default":"Collapsible by Default","All admonitions will be collapsible by default. Use ":"All admonitions will be collapsible by default. Use "," to prevent.":" to prevent.","Default Collapse Type":"Default Collapse Type","Collapsible admonitions will be either opened or closed.":"Collapsible admonitions will be either opened or closed.","Add Copy Button":"Add Copy Button","Add a 'copy content' button to admonitions.":"Add a 'copy content' button to admonitions.","Add New":"Add New","Add a new Admonition type.":"Add a new Admonition type.","Add Additional":"Add Additional","Register Commands":"Register Commands","Unregister Commands":"Unregister Commands",Edit:"Edit",Delete:"Delete","Admonition Type":"Admonition Type","Admonition Title":"Admonition Title","This will be the default title for this admonition type.":"This will be the default title for this admonition type.","Admonition type cannot be empty.":"Admonition type cannot be empty.","Admonition type cannot include spaces.":"Admonition type cannot include spaces.","Types must be a valid CSS selector.":"Types must be a valid CSS selector.","Invalid icon name.":"Invalid icon name.","Icon cannot be empty.":"Icon cannot be empty.","Upload Image":"Upload Image","There was an error parsing the image.":"There was an error parsing the image.","Admonition Icon":"Admonition Icon",Color:"Color",Save:"Save","No Admonition Title by Default":"No Admonition Title by Default","The admonition will have no title unless ":"The admonition will have no title unless "," is explicitly provided.":" is explicitly provided.","Show Copy Button":"Show Copy Button","A copy button will be added to the admonition.":"A copy button will be added to the admonition.","Parse Titles as Markdown":"Parse Titles as Markdown","Admonition Titles will be rendered as markdown.":"Admonition Titles will be rendered as markdown."},ol={ar:{},cs:{},da:{},de:{},en:il,"en-gb":{},es:{},fr:{},hi:{},id:{},it:{},ja:{},ko:{},nl:{},nn:{},pl:{},pt:{},"pt-br":{},ro:{},ru:{},tr:{},"zh-cn":{"Admonition Settings":"Admonition 设置","Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.":"在 admonition 代码块中使用 Obsidian 的 markdown 系统级高亮。该设置为实验性,可能会引发错误"," Markdown Syntax Highlighting":" Markdown 系统高亮","Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.":"Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk."," Sync Links to Metadata Cache":" Sync Links to Metadata Cache","Allows admonitions to be created using ":"允许 admonitions 创建使用"," or ":"或",", instead of using a code block.":",而非代码块"," Enable Non-codeblock Admonitions":" 允许非代码块的 Admonitions","Collapsible by Default":"可折叠默认值","All admonitions will be collapsible by default. Use ":"所有的 admonitions 默认可折叠。使用"," to prevent.":" 来阻止。","Default Collapse Type":"默认可折叠类型","Collapsible admonitions will be either opened or closed.":"Collapsible admonitions 要么是 openede 要么是 closed","Add Copy Button":"添加复制按钮","Add a 'copy content' button to admonitions.":"为 admonitions 新增一个“复制内容”按钮。","Add New":"新增","Add a new Admonition type.":"添加一个新的 Admonition 类型。","Add Additional":"额外添加","Register Commands":"注册命令","Unregister Commands":"注销命令",Edit:"编辑",Delete:"删除","Admonition type cannot be empty.":"Admonition 类型不能为空。","Admonition type cannot include spaces.":"Admonition 类型不能包含空格","Admonition Type":"Admonition 类型","Types must be a valid CSS selector.":"类型必须为合法的 css 选择器。","Invalid icon name.":"非法图标名称","Icon cannot be empty.":"图标不能为空","Upload Image":"上传图像","There was an error parsing the image.":"上传图像时出错了。","Admonition Icon":"Admonition 图标",Color:"颜色",Save:"保存"},"zh-tw":{}}[e.moment.locale()];function nl(c){return ol&&ol[c]||il[c]}const sl=(tl=document.createDocumentFragment(),c=>{try{tl.querySelector(c)}catch(c){return!1}return!0});var tl;class hl extends e.PluginSettingTab{constructor(c,a){super(c,a),this.plugin=a}display(){return l(this,void 0,void 0,(function*(){let{containerEl:c}=this;c.empty(),c.addClass("admonition-settings"),c.createEl("h2",{text:nl("Admonition Settings")});let a=new e.Setting(c).setDesc(nl("Use Obsidian's markdown syntax highlighter in admonition code blocks. This setting is experimental and could cause errors.")).addToggle((c=>{c.setValue(this.plugin.data.syntaxHighlight),c.onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.syntaxHighlight=c,c?this.plugin.turnOnSyntaxHighlighting():this.plugin.turnOffSyntaxHighlighting(),yield this.plugin.saveSettings()}))))})),i=a.nameEl.createDiv();i.appendChild(Uc.cloneNode(!0)),i.appendChild(createSpan({text:nl(" Markdown Syntax Highlighting")}));let o=new e.Setting(c).setDesc(nl("Try to sync internal links to the metadata cache to display in graph view. This setting could have unintended consequences. Use at your own risk.")).addToggle((c=>{c.setValue(this.plugin.data.syncLinks).onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.syncLinks=c,this.display(),yield this.plugin.saveSettings()}))))})),n=o.nameEl.createDiv();n.appendChild(Uc.cloneNode(!0)),n.appendChild(createSpan({text:nl(" Sync Links to Metadata Cache")}));let s=new e.Setting(c).addToggle((c=>{c.setValue(this.plugin.data.enableMarkdownProcessor).onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.enableMarkdownProcessor=c,c?this.plugin.enableMarkdownProcessor():this.plugin.disableMarkdownProcessor(),this.display(),yield this.plugin.saveSettings()}))))}));s.descEl.createSpan({text:nl("Allows admonitions to be created using ")}),s.descEl.createEl("code",{text:"!!! ad-"}),s.descEl.createSpan({text:nl(" or ")}),s.descEl.createEl("code",{text:"??? ad-"}),s.descEl.createSpan({text:nl(", instead of using a code block.")});let t=s.nameEl.createDiv();t.appendChild(Uc.cloneNode(!0)),t.appendChild(createSpan({text:nl(" Enable Non-codeblock Admonitions")})),new e.Setting(c).setName("Generate JS for Publish").setDesc(createFragment((c=>{c.createSpan({text:"Generate a javascript file to place in your "}),c.createEl("code",{text:"publish.js"}),c.createSpan({text:"file."}),c.createEl("br"),c.createEl("strong",{text:"Please note that this can only be done on self-hosted publish sites."})}))).addButton((c=>{c.setButtonText("Generate"),c.onClick((c=>{const a={};for(let c in this.plugin.admonitions){const l=this.plugin.admonitions[c];a[c]={icon:Ec(l.icon).outerHTML,color:l.color}}const l='(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === \'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === \'function\' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === \'object\' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t"use strict";\n/******/ \t// The require scope\n/******/ \tvar __webpack_require__ = {};\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== \'undefined\' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: \'Module\' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, \'__esModule\', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n__webpack_require__.r(__webpack_exports__);\n\nfunction createEl(tag, t, e) {\n const i = document.createElement(tag);\n "string" == typeof t &&\n (t = {\n cls: t\n });\n const r = t || {}, o = r.cls, s = r.text, a = r.attr, l = r.title, c = r.value, u = r.type, h = e ? e : r.parent, p = r.prepend, d = r.href;\n return (o &&\n (Array.isArray(o)\n ? (i.className = o.join(" "))\n : (i.className = o)),\n s && (i.textContent = s),\n a &&\n Object.keys(a).forEach((t) => {\n const n = a[t];\n null !== n && i.setAttribute(t, String(n));\n }),\n l && (i.title = l),\n c &&\n (i instanceof HTMLInputElement ||\n i instanceof HTMLSelectElement ||\n i instanceof HTMLOptionElement) &&\n (i.value = c),\n /* u && i instanceof HTMLInputElement && (i.type = u), */\n u && i instanceof HTMLStyleElement && i.setAttribute("type", u),\n d &&\n (i instanceof HTMLAnchorElement || i instanceof HTMLLinkElement) &&\n (i.href = d),\n h && (p ? h.insertBefore(i, h.firstChild) : h.appendChild(i)),\n i);\n}\n//@ts-ignore-line\nconst createDiv = function (o, e) {\n return createEl("div", o, e);\n};\nNode.prototype.createDiv = function (o, cb) {\n return createDiv(o, this);\n};\nNode.prototype.createEl = function (tag, o, cb) {\n return createEl(tag, o, this);\n};\nElement.prototype.addClass = function (...args) {\n const e = [];\n for (let t = 0; t < args.length; t++)\n e[t] = args[t];\n this.addClasses(e);\n};\nElement.prototype.addClasses = function (e) {\n for (let t = 0; t < e.length; t++)\n this.classList.add(e[t]);\n};\nfunction getAdmonitionElement(type, title, icon, color, collapse, id) {\n var _a;\n let admonition, titleEl, attrs = {\n style: `--admonition-color: ${color};`\n };\n if (collapse && collapse != "none") {\n if (collapse === "open") {\n attrs.open = "open";\n }\n admonition = createEl("details", {\n cls: `admonition admonition-${type} admonition-plugin`,\n attr: attrs\n });\n titleEl = admonition.createEl("summary", {\n cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}`\n });\n }\n else {\n admonition = createDiv({\n cls: `admonition admonition-${type} admonition-plugin`,\n attr: attrs\n });\n titleEl = admonition.createDiv({\n cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}`\n });\n }\n if (id) {\n admonition.id = id;\n }\n if (title && title.trim().length) {\n /**\n * Title structure\n * .admonition-title\n * .admonition-title-content - Rendered Markdown top-level element (e.g. H1/2/3 etc, p)\n * div.admonition-title-icon\n * svg\n * div.admonition-title-markdown - Container of rendered markdown\n * ...rendered markdown children...\n */\n //get markdown\n const markdownHolder = createDiv();\n //MarkdownRenderer.renderMarkdown(title, markdownHolder, "", null);\n //admonition-title-content is first child of rendered markdown\n const admonitionTitleContent = \n /* markdownHolder?.children[0]?.tagName === "P"\n ? createDiv()\n : markdownHolder.children[0] ?? */ createDiv();\n //get children of markdown element, then remove them\n const markdownElements = Array.from(((_a = markdownHolder.children[0]) === null || _a === void 0 ? void 0 : _a.childNodes) || []);\n admonitionTitleContent.innerHTML = "";\n admonitionTitleContent.addClass("admonition-title-content");\n //build icon element\n const iconEl = admonitionTitleContent.createDiv("admonition-title-icon");\n if (icon) {\n iconEl.innerHTML = icon;\n }\n //add markdown children back\n const admonitionTitleMarkdown = admonitionTitleContent.createDiv("admonition-title-markdown");\n admonitionTitleMarkdown.innerText = title;\n /* for (let i = 0; i < markdownElements.length; i++) {\n admonitionTitleMarkdown.appendChild(markdownElements[i]);\n } */\n titleEl.appendChild(admonitionTitleContent || createDiv());\n }\n //add them to title element\n if (collapse) {\n titleEl.createDiv("collapser").createDiv("handle");\n }\n return admonition;\n}\nfunction startsWithAny(str, needles) {\n for (let i = 0; i < needles.length; i++) {\n if (str.startsWith(needles[i])) {\n return i;\n }\n }\n return false;\n}\nfunction getParametersFromSource(type, src) {\n const keywordTokens = ["title:", "collapse:", "icon:", "color:"];\n const keywords = ["title", "collapse", "icon", "color"];\n let lines = src.split("\\n");\n let skipLines = 0;\n let params = {};\n for (let i = 0; i < lines.length; i++) {\n let keywordIndex = startsWithAny(lines[i], keywordTokens);\n if (keywordIndex === false) {\n break;\n }\n let foundKeyword = keywords[keywordIndex];\n if (params[foundKeyword] !== undefined) {\n break;\n }\n params[foundKeyword] = lines[i]\n .substr(keywordTokens[keywordIndex].length)\n .trim();\n ++skipLines;\n }\n let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, icon, color } = params;\n let content = lines.slice(skipLines).join("\\n");\n /**\n * If the admonition should collapse, but something other than open or closed was provided, set to closed.\n */\n if (collapse !== undefined &&\n collapse !== "none" &&\n collapse !== "open" &&\n collapse !== "closed") {\n collapse = "closed";\n }\n /**\n * If the admonition should collapse, but title was blanked, set the default title.\n */\n if (title.trim() === "" && collapse !== undefined && collapse !== "none") {\n title = type[0].toUpperCase() + type.slice(1).toLowerCase();\n return;\n }\n return { title, collapse, content, icon, color };\n}\nconst blockSet = new Set();\nconst ADMONITION_ICON_MAP = {};\nif (document.readyState === "complete") {\n postprocess();\n registerToProcess();\n}\nelse {\n window.onload = () => {\n postprocess();\n registerToProcess();\n };\n}\nfunction registerToProcess() {\n const sizer = document.querySelector(".markdown-preview-sizer");\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type == "childList" && mutation.addedNodes.length) {\n mutation.addedNodes.forEach((node) => {\n var _a;\n if (node &&\n node instanceof Element &&\n node.children.length &&\n ((_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.tagName) === "PRE") {\n //postprocess(node);\n preObserver.observe(node.firstChild, {\n attributes: true,\n childList: false,\n characterData: false,\n subtree: false\n });\n }\n });\n }\n });\n });\n observer.observe(sizer, {\n attributes: false,\n childList: true,\n subtree: false\n });\n const preObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.target instanceof HTMLPreElement &&\n !blockSet.has(mutation.target) &&\n mutation.type === "attributes" &&\n mutation.attributeName === "class" &&\n Array.from(mutation.target.classList).some((cls) => /language-ad-(\\w+)/.test(cls))) {\n blockSet.add(mutation.target);\n processAdmonitionBlock(mutation.target);\n }\n });\n });\n}\nfunction processAdmonitionBlock(admonitionBlock) {\n const [, type] = admonitionBlock.classList\n .toString()\n .match(/language-ad-(\\w+)/);\n if (!type)\n return;\n if (!(type in ADMONITION_ICON_MAP))\n return;\n let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText);\n let admonition = getAdmonitionElement(type, title, icon, color, collapse);\n const contentHolder = admonition.createDiv("admonition-content-holder");\n const admonitionContent = contentHolder.createDiv("admonition-content");\n admonitionContent.innerText = content;\n admonitionBlock.replaceWith(admonition);\n}\nfunction postprocess() {\n //do work\n const admonitions = document.querySelectorAll("pre[class*=\'language-ad\']");\n if (!admonitions.length)\n return;\n for (let admonitionBlock of Array.from(admonitions)) {\n blockSet.add(admonitionBlock);\n const [, type] = admonitionBlock.classList\n .toString()\n .match(/language-ad-(\\w+)/);\n if (!type)\n continue;\n if (!(type in ADMONITION_ICON_MAP))\n continue;\n let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText);\n let admonition = getAdmonitionElement(type, title, icon, color, collapse);\n const contentHolder = admonition.createDiv("admonition-content-holder");\n const admonitionContent = contentHolder.createDiv("admonition-content");\n admonitionContent.innerText = content;\n admonitionBlock.replaceWith(admonition);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5hZG1vbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGlzaC5hZG1vbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsU0FBUyxRQUFRLENBQ2IsR0FBTSxFQUNOLENBQTJCLEVBQzNCLENBQWU7SUFFZixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEdBQUc7WUFDRCxHQUFHLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQ1QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFDYixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLE9BQU8sQ0FDSCxDQUFDO1FBQ0csQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxX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QUFJLEVBQ3JDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQzFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FDakMsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLFFBQVEsQ0FDWCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhFLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFFdEMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi9hc3NldHMvbWFpbi5jc3NcIjtcblxuZnVuY3Rpb24gY3JlYXRlRWw8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG4gICAgdGFnOiBLLFxuICAgIHQ/OiBzdHJpbmcgfCBEb21FbGVtZW50SW5mbyxcbiAgICBlPzogSFRNTEVsZW1lbnRcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gICAgY29uc3QgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmXG4gICAgICAgICh0ID0ge1xuICAgICAgICAgICAgY2xzOiB0XG4gICAgICAgIH0pO1xuICAgIGNvbnN0IHIgPSB0IHx8IHt9LFxuICAgICAgICBvID0gci5jbHMsXG4gICAgICAgIHMgPSByLnRleHQsXG4gICAgICAgIGEgPSByLmF0dHIsXG4gICAgICAgIGwgPSByLnRpdGxlLFxuICAgICAgICBjID0gci52YWx1ZSxcbiAgICAgICAgdSA9IHIudHlwZSxcbiAgICAgICAgaCA9IGUgPyBlIDogci5wYXJlbnQsXG4gICAgICAgIHAgPSByLnByZXBlbmQsXG4gICAgICAgIGQgPSByLmhyZWY7XG4gICAgcmV0dXJuIChcbiAgICAgICAgbyAmJlxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkobylcbiAgICAgICAgICAgICAgICA/IChpLmNsYXNzTmFtZSA9IG8uam9pbihcIiBcIikpXG4gICAgICAgICAgICAgICAgOiAoaS5jbGFzc05hbWUgPSBvKSksXG4gICAgICAgIHMgJiYgKGkudGV4dENvbnRlbnQgPSBzKSxcbiAgICAgICAgYSAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoYSkuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBhW3RdO1xuICAgICAgICAgICAgICAgIG51bGwgIT09IG4gJiYgaS5zZXRBdHRyaWJ1dGUodCwgU3RyaW5nKG4pKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBsICYmIChpLnRpdGxlID0gbCksXG4gICAgICAgIGMgJiZcbiAgICAgICAgICAgIChpIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MT3B0aW9uRWxlbWVudCkgJiZcbiAgICAgICAgICAgIChpLnZhbHVlID0gYyksXG4gICAgICAgIC8qIHUgJiYgaSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgKGkudHlwZSA9IHUpLCAqL1xuICAgICAgICB1ICYmIGkgaW5zdGFuY2VvZiBIVE1MU3R5bGVFbGVtZW50ICYmIGkuc2V0QXR0cmlidXRlKFwidHlwZVwiLCB1KSxcbiAgICAgICAgZCAmJlxuICAgICAgICAgICAgKGkgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCB8fCBpIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSAmJlxuICAgICAgICAgICAgKGkuaHJlZiA9IGQpLFxuICAgICAgICBoICYmIChwID8gaC5pbnNlcnRCZWZvcmUoaSwgaC5maXJzdENoaWxkKSA6IGguYXBwZW5kQ2hpbGQoaSkpLFxuICAgICAgICBpXG4gICAgKTtcbn1cbi8vQHRzLWlnbm9yZS1saW5lXG5jb25zdCBjcmVhdGVEaXYgPSBmdW5jdGlvbiAoXG4gICAgbz86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxuICAgIGU/OiBIVE1MRWxlbWVudFxuKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiBjcmVhdGVFbChcImRpdlwiLCBvLCBlKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLmNyZWF0ZURpdiA9IGZ1bmN0aW9uIChcbiAgICBvPzogc3RyaW5nIHwgRG9tRWxlbWVudEluZm8sXG4gICAgY2I/OiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkXG4pOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgcmV0dXJuIGNyZWF0ZURpdihvLCB0aGlzKTtcbn07XG5Ob2RlLnByb3RvdHlwZS5jcmVhdGVFbCA9IGZ1bmN0aW9uIDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgICB0YWc6IEssXG4gICAgbz86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxuICAgIGNiPzogKGVsOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS10pID0+IHZvaWRcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsKHRhZywgbywgdGhpcyk7XG59O1xuXG5FbGVtZW50LnByb3RvdHlwZS5hZGRDbGFzcyA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgY29uc3QgZSA9IFtdO1xuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgYXJncy5sZW5ndGg7IHQrKykgZVt0XSA9IGFyZ3NbdF07XG4gICAgdGhpcy5hZGRDbGFzc2VzKGUpO1xufTtcblxuRWxlbWVudC5wcm90b3R5cGUuYWRkQ2xhc3NlcyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgZm9yIChsZXQgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCsrKSB0aGlzLmNsYXNzTGlzdC5hZGQoZVt0XSk7XG59O1xuXG5mdW5jdGlvbiBnZXRBZG1vbml0aW9uRWxlbWVudChcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBpY29uOiBzdHJpbmcsXG4gICAgY29sb3I6IHN0cmluZyxcbiAgICBjb2xsYXBzZT86IHN0cmluZyxcbiAgICBpZD86IHN0cmluZ1xuKTogSFRNTEVsZW1lbnQge1xuICAgIGxldCBhZG1vbml0aW9uLFxuICAgICAgICB0aXRsZUVsLFxuICAgICAgICBhdHRyczogeyBzdHlsZTogc3RyaW5nOyBvcGVuPzogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICBzdHlsZTogYC0tYWRtb25pdGlvbi1jb2xvcjogJHtjb2xvcn07YFxuICAgICAgICB9O1xuICAgIGlmIChjb2xsYXBzZSAmJiBjb2xsYXBzZSAhPSBcIm5vbmVcIikge1xuICAgICAgICBpZiAoY29sbGFwc2UgPT09IFwib3BlblwiKSB7XG4gICAgICAgICAgICBhdHRycy5vcGVuID0gXCJvcGVuXCI7XG4gICAgICAgIH1cbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uIGFkbW9uaXRpb24tJHt0eXBlfSBhZG1vbml0aW9uLXBsdWdpbmAsXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xuICAgICAgICB9KTtcbiAgICAgICAgdGl0bGVFbCA9IGFkbW9uaXRpb24uY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZURpdih7XG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uIGFkbW9uaXRpb24tJHt0eXBlfSBhZG1vbml0aW9uLXBsdWdpbmAsXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xuICAgICAgICB9KTtcbiAgICAgICAgdGl0bGVFbCA9IGFkbW9uaXRpb24uY3JlYXRlRGl2KHtcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlkKSB7XG4gICAgICAgIGFkbW9uaXRpb24uaWQgPSBpZDtcbiAgICB9XG5cbiAgICBpZiAodGl0bGUgJiYgdGl0bGUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGl0bGUgc3RydWN0dXJlXG4gICAgICAgICAqIDxkaXZ8c3VtbWFyeT4uYWRtb25pdGlvbi10aXRsZVxuICAgICAgICAgKiAgICAgIDxlbGVtZW50Pi5hZG1vbml0aW9uLXRpdGxlLWNvbnRlbnQgLSBSZW5kZXJlZCBNYXJrZG93biB0b3AtbGV2ZWwgZWxlbWVudCAoZS5nLiBIMS8yLzMgZXRjLCBwKVxuICAgICAgICAgKiAgICAgICAgICBkaXYuYWRtb25pdGlvbi10aXRsZS1pY29uXG4gICAgICAgICAqICAgICAgICAgICAgICBzdmdcbiAgICAgICAgICogICAgICAgICAgZGl2LmFkbW9uaXRpb24tdGl0bGUtbWFya2Rvd24gLSBDb250YWluZXIgb2YgcmVuZGVyZWQgbWFya2Rvd25cbiAgICAgICAgICogICAgICAgICAgICAgIC4uLnJlbmRlcmVkIG1hcmtkb3duIGNoaWxkcmVuLi4uXG4gICAgICAgICAqL1xuXG4gICAgICAgIC8vZ2V0IG1hcmtkb3duXG4gICAgICAgIGNvbnN0IG1hcmtkb3duSG9sZGVyID0gY3JlYXRlRGl2KCk7XG4gICAgICAgIC8vTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bih0aXRsZSwgbWFya2Rvd25Ib2xkZXIsIFwiXCIsIG51bGwpO1xuXG4gICAgICAgIC8vYWRtb25pdGlvbi10aXRsZS1jb250ZW50IGlzIGZpcnN0IGNoaWxkIG9mIHJlbmRlcmVkIG1hcmtkb3duXG5cbiAgICAgICAgY29uc3QgYWRtb25pdGlvblRpdGxlQ29udGVudCA9XG4gICAgICAgICAgICAvKiBtYXJrZG93bkhvbGRlcj8uY2hpbGRyZW5bMF0/LnRhZ05hbWUgPT09IFwiUFwiXG4gICAgICAgID8gY3JlYXRlRGl2KClcbiAgICAgICAgOiBtYXJrZG93bkhvbGRlci5jaGlsZHJlblswXSA/PyAgKi8gY3JlYXRlRGl2KCk7XG5cbiAgICAgICAgLy9nZXQgY2hpbGRyZW4gb2YgbWFya2Rvd24gZWxlbWVudCwgdGhlbiByZW1vdmUgdGhlbVxuICAgICAgICBjb25zdCBtYXJrZG93bkVsZW1lbnRzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG1hcmtkb3duSG9sZGVyLmNoaWxkcmVuWzBdPy5jaGlsZE5vZGVzIHx8IFtdXG4gICAgICAgICk7XG4gICAgICAgIGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgYWRtb25pdGlvblRpdGxlQ29udGVudC5hZGRDbGFzcyhcImFkbW9uaXRpb24tdGl0bGUtY29udGVudFwiKTtcblxuICAgICAgICAvL2J1aWxkIGljb24gZWxlbWVudFxuICAgICAgICBjb25zdCBpY29uRWwgPSBhZG1vbml0aW9uVGl0bGVDb250ZW50LmNyZWF0ZURpdihcbiAgICAgICAgICAgIFwiYWRtb25pdGlvbi10aXRsZS1pY29uXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIGljb25FbC5pbm5lckhUTUwgPSBpY29uO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9hZGQgbWFya2Rvd24gY2hpbGRyZW4gYmFja1xuICAgICAgICBjb25zdCBhZG1vbml0aW9uVGl0bGVNYXJrZG93biA9IGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuY3JlYXRlRGl2KFxuICAgICAgICAgICAgXCJhZG1vbml0aW9uLXRpdGxlLW1hcmtkb3duXCJcbiAgICAgICAgKTtcbiAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uaW5uZXJUZXh0ID0gdGl0bGU7XG4gICAgICAgIC8qIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya2Rvd25FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uYXBwZW5kQ2hpbGQobWFya2Rvd25FbGVtZW50c1tpXSk7XG4gICAgICAgIH0gKi9cbiAgICAgICAgdGl0bGVFbC5hcHBlbmRDaGlsZChhZG1vbml0aW9uVGl0bGVDb250ZW50IHx8IGNyZWF0ZURpdigpKTtcbiAgICB9XG5cbiAgICAvL2FkZCB0aGVtIHRvIHRpdGxlIGVsZW1lbnRcblxuICAgIGlmIChjb2xsYXBzZSkge1xuICAgICAgICB0aXRsZUVsLmNyZWF0ZURpdihcImNvbGxhcHNlclwiKS5jcmVhdGVEaXYoXCJoYW5kbGVcIik7XG4gICAgfVxuICAgIHJldHVybiBhZG1vbml0aW9uO1xufVxuZnVuY3Rpb24gc3RhcnRzV2l0aEFueShzdHI6IHN0cmluZywgbmVlZGxlczogc3RyaW5nW10pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHN0ci5zdGFydHNXaXRoKG5lZWRsZXNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZTogc3RyaW5nLCBzcmM6IHN0cmluZykge1xuICAgIGNvbnN0IGtleXdvcmRUb2tlbnMgPSBbXCJ0aXRsZTpcIiwgXCJjb2xsYXBzZTpcIiwgXCJpY29uOlwiLCBcImNvbG9yOlwiXTtcblxuICAgIGNvbnN0IGtleXdvcmRzID0gW1widGl0bGVcIiwgXCJjb2xsYXBzZVwiLCBcImljb25cIiwgXCJjb2xvclwiXTtcblxuICAgIGxldCBsaW5lcyA9IHNyYy5zcGxpdChcIlxcblwiKTtcblxuICAgIGxldCBza2lwTGluZXMgPSAwO1xuXG4gICAgbGV0IHBhcmFtczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGtleXdvcmRJbmRleCA9IHN0YXJ0c1dpdGhBbnkobGluZXNbaV0sIGtleXdvcmRUb2tlbnMpO1xuXG4gICAgICAgIGlmIChrZXl3b3JkSW5kZXggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmb3VuZEtleXdvcmQgPSBrZXl3b3Jkc1trZXl3b3JkSW5kZXhdO1xuXG4gICAgICAgIGlmIChwYXJhbXNbZm91bmRLZXl3b3JkXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcmFtc1tmb3VuZEtleXdvcmRdID0gbGluZXNbaV1cbiAgICAgICAgICAgIC5zdWJzdHIoa2V5d29yZFRva2Vuc1trZXl3b3JkSW5kZXhdLmxlbmd0aClcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgICAgICsrc2tpcExpbmVzO1xuICAgIH1cblxuICAgIGxldCB7XG4gICAgICAgIHRpdGxlID0gdHlwZVswXS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBjb2xsYXBzZSxcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3JcbiAgICB9ID0gcGFyYW1zO1xuXG4gICAgbGV0IGNvbnRlbnQgPSBsaW5lcy5zbGljZShza2lwTGluZXMpLmpvaW4oXCJcXG5cIik7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgYWRtb25pdGlvbiBzaG91bGQgY29sbGFwc2UsIGJ1dCBzb21ldGhpbmcgb3RoZXIgdGhhbiBvcGVuIG9yIGNsb3NlZCB3YXMgcHJvdmlkZWQsIHNldCB0byBjbG9zZWQuXG4gICAgICovXG4gICAgaWYgKFxuICAgICAgICBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGNvbGxhcHNlICE9PSBcIm5vbmVcIiAmJlxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJvcGVuXCIgJiZcbiAgICAgICAgY29sbGFwc2UgIT09IFwiY2xvc2VkXCJcbiAgICApIHtcbiAgICAgICAgY29sbGFwc2UgPSBcImNsb3NlZFwiO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHRoZSBhZG1vbml0aW9uIHNob3VsZCBjb2xsYXBzZSwgYnV0IHRpdGxlIHdhcyBibGFua2VkLCBzZXQgdGhlIGRlZmF1bHQgdGl0bGUuXG4gICAgICovXG4gICAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gXCJcIiAmJiBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmIGNvbGxhcHNlICE9PSBcIm5vbmVcIikge1xuICAgICAgICB0aXRsZSA9IHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB7IHRpdGxlLCBjb2xsYXBzZSwgY29udGVudCwgaWNvbiwgY29sb3IgfTtcbn1cblxuaW50ZXJmYWNlIEFkbW9uaXRpb25QdWJsaXNoRGVmaW5pdGlvbiB7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGNvbG9yOiBzdHJpbmc7XG59XG5cbmNvbnN0IGJsb2NrU2V0OiBTZXQ8SFRNTFByZUVsZW1lbnQ+ID0gbmV3IFNldCgpO1xuY29uc3QgQURNT05JVElPTl9JQ09OX01BUDoge1xuICAgIFthZG1vbml0aW9uVHlwZTogc3RyaW5nXTogQWRtb25pdGlvblB1Ymxpc2hEZWZpbml0aW9uO1xufSA9IHt9O1xuaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgIHBvc3Rwcm9jZXNzKCk7XG4gICAgcmVnaXN0ZXJUb1Byb2Nlc3MoKTtcbn0gZWxzZSB7XG4gICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgcG9zdHByb2Nlc3MoKTtcbiAgICAgICAgcmVnaXN0ZXJUb1Byb2Nlc3MoKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiByZWdpc3RlclRvUHJvY2VzcygpIHtcbiAgICBjb25zdCBzaXplciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubWFya2Rvd24tcHJldmlldy1zaXplclwiKTtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PSBcImNoaWxkTGlzdFwiICYmIG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5maXJzdEVsZW1lbnRDaGlsZD8udGFnTmFtZSA9PT0gXCJQUkVcIlxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9zdHByb2Nlc3Mobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVPYnNlcnZlci5vYnNlcnZlKG5vZGUuZmlyc3RDaGlsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShzaXplciwge1xuICAgICAgICBhdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgY29uc3QgcHJlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG11dGF0aW9uLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxQcmVFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgIWJsb2NrU2V0LmhhcyhtdXRhdGlvbi50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgbXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiZcbiAgICAgICAgICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSBcImNsYXNzXCIgJiZcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKG11dGF0aW9uLnRhcmdldC5jbGFzc0xpc3QpLnNvbWUoKGNscykgPT5cbiAgICAgICAgICAgICAgICAgICAgL2xhbmd1YWdlLWFkLShcXHcrKS8udGVzdChjbHMpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYmxvY2tTZXQuYWRkKG11dGF0aW9uLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhtdXRhdGlvbi50YXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhhZG1vbml0aW9uQmxvY2s6IEhUTUxQcmVFbGVtZW50KSB7XG4gICAgY29uc3QgWywgdHlwZV0gPSBhZG1vbml0aW9uQmxvY2suY2xhc3NMaXN0XG4gICAgICAgIC50b1N0cmluZygpXG4gICAgICAgIC5tYXRjaCgvbGFuZ3VhZ2UtYWQtKFxcdyspLyk7XG4gICAgaWYgKCF0eXBlKSByZXR1cm47XG4gICAgaWYgKCEodHlwZSBpbiBBRE1PTklUSU9OX0lDT05fTUFQKSkgcmV0dXJuO1xuXG4gICAgbGV0IHtcbiAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIGNvbGxhcHNlLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICBpY29uID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5pY29uLFxuICAgICAgICBjb2xvciA9IEFETU9OSVRJT05fSUNPTl9NQVBbdHlwZV0uY29sb3JcbiAgICB9ID0gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZSwgYWRtb25pdGlvbkJsb2NrLmlubmVyVGV4dCk7XG5cbiAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KHR5cGUsIHRpdGxlLCBpY29uLCBjb2xvciwgY29sbGFwc2UpO1xuXG4gICAgY29uc3QgY29udGVudEhvbGRlciA9IGFkbW9uaXRpb24uY3JlYXRlRGl2KFwiYWRtb25pdGlvbi1jb250ZW50LWhvbGRlclwiKTtcblxuICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XG5cbiAgICBhZG1vbml0aW9uQ29udGVudC5pbm5lclRleHQgPSBjb250ZW50O1xuXG4gICAgYWRtb25pdGlvbkJsb2NrLnJlcGxhY2VXaXRoKGFkbW9uaXRpb24pO1xufVxuXG5mdW5jdGlvbiBwb3N0cHJvY2VzcygpIHtcbiAgICAvL2RvIHdvcmtcbiAgICBjb25zdCBhZG1vbml0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTFByZUVsZW1lbnQ+KFxuICAgICAgICBcInByZVtjbGFzcyo9J2xhbmd1YWdlLWFkJ11cIlxuICAgICk7XG5cbiAgICBpZiAoIWFkbW9uaXRpb25zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgYWRtb25pdGlvbkJsb2NrIG9mIEFycmF5LmZyb20oYWRtb25pdGlvbnMpKSB7XG4gICAgICAgIGJsb2NrU2V0LmFkZChhZG1vbml0aW9uQmxvY2spO1xuICAgICAgICBjb25zdCBbLCB0eXBlXSA9IGFkbW9uaXRpb25CbG9jay5jbGFzc0xpc3RcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAubWF0Y2goL2xhbmd1YWdlLWFkLShcXHcrKS8pO1xuICAgICAgICBpZiAoIXR5cGUpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoISh0eXBlIGluIEFETU9OSVRJT05fSUNPTl9NQVApKSBjb250aW51ZTtcblxuICAgICAgICBsZXQge1xuICAgICAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBjb2xsYXBzZSxcbiAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICBpY29uID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5pY29uLFxuICAgICAgICAgICAgY29sb3IgPSBBRE1PTklUSU9OX0lDT05fTUFQW3R5cGVdLmNvbG9yXG4gICAgICAgIH0gPSBnZXRQYXJhbWV0ZXJzRnJvbVNvdXJjZSh0eXBlLCBhZG1vbml0aW9uQmxvY2suaW5uZXJUZXh0KTtcblxuICAgICAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgY29sbGFwc2VcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb250ZW50SG9sZGVyID0gYWRtb25pdGlvbi5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnQtaG9sZGVyXCIpO1xuXG4gICAgICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XG5cbiAgICAgICAgYWRtb25pdGlvbkNvbnRlbnQuaW5uZXJUZXh0ID0gY29udGVudDtcblxuICAgICAgICBhZG1vbml0aW9uQmxvY2sucmVwbGFjZVdpdGgoYWRtb25pdGlvbik7XG4gICAgfVxufVxuIl19\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});'.replace("const ADMONITION_ICON_MAP = {}","const ADMONITION_ICON_MAP = "+JSON.stringify(a));let e=new Blob([l],{type:"text/javascript"}),i=document.createElement("a");i.download="publish.admonition.js",i.href=window.URL.createObjectURL(e),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}))}));const h=new e.Setting(c).setName(nl("Collapsible by Default")).addToggle((c=>{c.setValue(this.plugin.data.autoCollapse).onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.autoCollapse=c,this.display(),yield this.plugin.saveSettings()}))))}));h.descEl.createSpan({text:nl("All admonitions will be collapsible by default. Use ")}),h.descEl.createEl("code",{text:"collapse: none"}),h.descEl.createSpan({text:nl(" to prevent.")}),this.plugin.data.autoCollapse&&new e.Setting(c).setName(nl("Default Collapse Type")).setDesc(nl("Collapsible admonitions will be either opened or closed.")).addDropdown((c=>{c.addOption("open","open"),c.addOption("closed","closed"),c.setValue(this.plugin.data.defaultCollapseType),c.onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.defaultCollapseType=c,yield this.plugin.saveSettings()}))))})),new e.Setting(c).setName(nl("Add Copy Button")).setDesc(nl("Add a 'copy content' button to admonitions.")).addToggle((c=>{c.setValue(this.plugin.data.copyButton),c.onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.copyButton=c,c||document.querySelectorAll(".admonition-content-copy").forEach((c=>{c.detach()})),yield this.plugin.saveSettings()}))))})),new e.Setting(c).setName(nl("Parse Titles as Markdown")).setDesc(nl("Admonition Titles will be rendered as markdown.")).addToggle((c=>{c.setValue(this.plugin.data.parseTitles),c.onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.parseTitles=c,yield this.plugin.saveSettings()}))))})),new e.Setting(c).setName("Set Admonition Colors").setDesc("Disable this setting to turn off admonition coloring by default. Can be overridden in the admonition definition.").addToggle((c=>c.setValue(this.plugin.data.injectColor).setTooltip((this.plugin.data.injectColor?"Disable":"Enable")+" Admonition Color").onChange((c=>l(this,void 0,void 0,(function*(){this.plugin.data.injectColor=c,yield this.plugin.saveSettings(),yield this.buildTypes()}))))));const r=c.createDiv("admonition-setting-additional-container");new e.Setting(r).setName(nl("Add New")).setDesc(nl("Add a new Admonition type.")).addButton((c=>c.setTooltip(nl("Add Additional")).setButtonText("+").onClick((()=>l(this,void 0,void 0,(function*(){let c=new rl(this.plugin);c.onClose=()=>l(this,void 0,void 0,(function*(){c.saved&&(this.plugin.addAdmonition({type:c.type,color:c.color,icon:c.icon,command:!1,title:c.title,injectColor:c.injectColor,noTitle:c.noTitle,copy:c.copy}),this.display())})),c.open()})))))),this.additionalEl=r.createDiv("additional"),yield this.buildTypes(),c.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=☕&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}))}buildTypes(){var c;return l(this,void 0,void 0,(function*(){this.additionalEl.empty();for(let a in this.plugin.data.userAdmonitions){const i=this.plugin.data.userAdmonitions[a];let o=new e.Setting(this.additionalEl),n=this.plugin.getAdmonitionElement(i.type,i.type[0].toUpperCase()+i.type.slice(1).toLowerCase(),i.icon,(null!==(c=i.injectColor)&&void 0!==c?c:this.plugin.data.injectColor)?i.color:null);o.infoEl.replaceWith(n),i.command?o.addExtraButton((c=>{c.setIcon(Tc.toString()).setTooltip(nl("Unregister Commands")).onClick((()=>l(this,void 0,void 0,(function*(){this.plugin.unregisterCommandsFor(i),yield this.plugin.saveSettings(),this.display()}))))})):o.addExtraButton((c=>{c.setIcon(Gc.toString()).setTooltip(nl("Register Commands")).onClick((()=>l(this,void 0,void 0,(function*(){this.plugin.registerCommandsFor(i),yield this.plugin.saveSettings(),this.display()}))))})),o.addExtraButton((c=>{c.setIcon("pencil").setTooltip(nl("Edit")).onClick((()=>{let c=new rl(this.plugin,i);c.onClose=()=>l(this,void 0,void 0,(function*(){if(c.saved){const a=i.command;this.plugin.removeAdmonition(i),this.plugin.addAdmonition({type:c.type,color:c.color,icon:c.icon,command:a,title:c.title,injectColor:c.injectColor,noTitle:c.noTitle,copy:c.copy}),this.display()}})),c.open()}))})).addExtraButton((c=>{c.setIcon("trash").setTooltip(nl("Delete")).onClick((()=>{this.plugin.removeAdmonition(i),this.display()}))}))}}))}}class rl extends e.Modal{constructor(c,a){var l,e,i;super(c.app),this.plugin=c,this.color="#7d7d7d",this.icon={},this.saved=!1,this.error=!1,this.injectColor=this.plugin.data.injectColor,this.noTitle=!1,a&&(this.color=a.color,this.icon=a.icon,this.type=a.type,this.title=a.title,this.injectColor=null!==(l=a.injectColor)&&void 0!==l?l:this.injectColor,this.noTitle=null!==(e=a.noTitle)&&void 0!==e&&e,this.copy=null!==(i=a.copy)&&void 0!==i?i:this.plugin.data.copyButton)}display(){var c,a,i;return l(this,void 0,void 0,(function*(){let{contentEl:o}=this;o.empty();const n=o.createDiv(),s=null!==(a=null!==(c=this.title)&&void 0!==c?c:this.type)&&void 0!==a?a:"...";let t;this.admonitionPreview=this.plugin.getAdmonitionElement(this.type,s[0].toUpperCase()+s.slice(1).toLowerCase(),this.icon,(null!==(i=this.injectColor)&&void 0!==i?i:this.plugin.data.injectColor)?this.color:null),this.admonitionPreview.createDiv("admonition-content").createEl("p",{text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla et euismod nulla."}),o.appendChild(this.admonitionPreview);const h=new e.Setting(n).setName(nl("Admonition Type")).addText((c=>{t=c,t.setValue(this.type).onChange((a=>{a.length?a.includes(" ")?rl.setValidationError(c,nl("Admonition type cannot include spaces.")):sl(a)?(rl.removeValidationError(c),this.type=a,this.title||this.updateTitle(this.admonitionPreview,this.type)):rl.setValidationError(c,nl("Types must be a valid CSS selector.")):rl.setValidationError(c,nl("Admonition type cannot be empty."))}))}));h.controlEl.addClass("admonition-type-setting"),h.descEl.createSpan({text:"This is used to create the admonition (e.g., "}),h.descEl.createEl("code",{text:"note"}),h.descEl.createSpan({text:" or "}),h.descEl.createEl("code",{text:"abstract"}),h.descEl.createSpan({text:")"}),new e.Setting(n).setName(nl("Admonition Title")).setDesc(nl("This will be the default title for this admonition type.")).addText((c=>{c.setValue(this.title).onChange((c=>{if(!c.length)return this.title=null,void this.updateTitle(this.admonitionPreview,this.type);this.title=c,this.updateTitle(this.admonitionPreview,this.title)}))})),new e.Setting(n).setName(nl("No Admonition Title by Default")).setDesc(createFragment((c=>{c.createSpan({text:nl("The admonition will have no title unless ")}),c.createEl("code",{text:"title"}),c.createSpan({text:nl(" is explicitly provided.")})}))).addToggle((c=>{c.setValue(this.noTitle).onChange((c=>this.noTitle=c))})),new e.Setting(n).setName(nl("Show Copy Button")).setDesc(createFragment((c=>{c.createSpan({text:nl("A copy button will be added to the admonition.")})}))).addToggle((c=>{c.setValue(this.copy).onChange((c=>this.copy=c))}));const r=createEl("input",{attr:{type:"file",name:"image",accept:"image/*"}});let m;new e.Setting(n).setName(nl("Admonition Icon")).setDesc(createFragment((c=>{c.createEl("a",{text:"Font Awesome Icon",href:"https://fontawesome.com/icons?d=gallery&p=2&s=solid&m=free",attr:{tabindex:-1}}),c.createSpan({text:" or "}),c.createEl("a",{text:"RPG Awesome Icon",href:"https://nagoshiashumari.github.io/Rpg-Awesome/",attr:{tabindex:-1}}),c.createSpan({text:" to use next to the title."})}))).addText((c=>{m=c,"image"!==this.icon.type&&c.setValue(this.icon.name);const a=()=>l(this,void 0,void 0,(function*(){var a;const l=c.inputEl.value;let i=Ic(l);i?0!=l.length?(rl.removeValidationError(c),this.icon=null!==(a=e.icon)&&void 0!==a?a:{name:l,type:i},this.admonitionPreview.querySelector(".admonition-title-icon").innerHTML=Ec(this.icon).outerHTML):rl.setValidationError(c,nl("Icon cannot be empty.")):rl.setValidationError(c,nl("Invalid icon name."))})),e=new al(this.app,c);e.onClose=a,c.inputEl.onblur=a})).addButton((c=>{c.setButtonText(nl("Upload Image")).setTooltip(nl("Upload Image")),c.buttonEl.addClass("admonition-file-upload"),c.buttonEl.appendChild(r),c.onClick((()=>r.click()))})),r.onchange=()=>l(this,void 0,void 0,(function*(){const{files:c}=r;if(!c.length)return;const a=c[0],l=new FileReader;l.onloadend=c=>{var a=new Image;a.onload=()=>{try{const c=document.createElement("canvas"),l=24;let e=a.width,i=a.height;e>i?e>l&&(i*=l/e,e=l):i>l&&(e*=l/i,i=l),c.width=e,c.height=i,c.getContext("2d").drawImage(a,0,0,e,i),this.icon={name:c.toDataURL("image/png"),type:"image"},this.display()}catch(c){new e.Notice("There was an error parsing the image.")}},a.src=c.target.result.toString()},l.readAsDataURL(a),r.value=null}));const v=n.createDiv("admonition-color-settings");this.createColor(v);let f=o.createDiv(),z=new e.Setting(f);z.addButton((c=>(c.setTooltip(nl("Save")).setIcon("checkmark").onClick((()=>l(this,void 0,void 0,(function*(){let c=!1;t.inputEl.value.length||(rl.setValidationError(t,nl("Admonition type cannot be empty.")),c=!0),t.inputEl.value.includes(" ")&&(rl.setValidationError(t,nl("Admonition type cannot include spaces.")),c=!0),sl(t.inputEl.value)||(rl.setValidationError(t,nl("Types must be a valid CSS selector.")),c=!0),Ic(m.inputEl.value)||"image"===this.icon.type||(rl.setValidationError(m,nl("Invalid icon name.")),c=!0),this.icon.name.length||(rl.setValidationError(m,nl("Icon cannot be empty.")),c=!0),c?new e.Notice("Fix errors before saving."):(this.saved=!0,this.close())})))),c))),z.addExtraButton((c=>(c.setIcon("cross").setTooltip("Cancel").onClick((()=>{this.saved=!1,this.close()})),c)))}))}createColor(c){c.empty();const a=this.injectColor?"Set the admonition color. Disable to set manually using CSS.":"Admonition color is disabled and must be manually set using CSS.";new e.Setting(c).setName(nl("Color")).setDesc(a).addText((c=>{c.inputEl.setAttribute("type","color"),this.injectColor||c.inputEl.setAttribute("disabled","true"),c.setValue(function(c){let a=/^(\d+),\s?(\d+),\s?(\d+)/i.exec(c);return a&&a.length?`#${ml(Number(a[1]))}${ml(Number(a[2]))}${ml(Number(a[3]))}`:""}(this.color)).onChange((c=>{let a=function(c){let a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(c);return a?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null}(c);a&&(this.color=`${a.r}, ${a.g}, ${a.b}`,this.admonitionPreview.setAttribute("style",`--admonition-color: ${this.color};`))}))})).addToggle((a=>a.setValue(this.injectColor).setTooltip((this.injectColor?"Disable":"Enable")+" Admonition Color").onChange((a=>{this.injectColor=a,a?this.admonitionPreview.setAttribute("style",`--admonition-color: ${this.color};`):this.admonitionPreview.removeAttribute("style"),this.createColor(c)}))))}updateTitle(c,a){let l=c.querySelector(".admonition-title-content"),e=c.querySelector(".admonition-title-icon");l.textContent=a[0].toUpperCase()+a.slice(1).toLowerCase(),l.prepend(e)}onOpen(){this.display()}static setValidationError(c,a){if(c.inputEl.addClass("is-invalid"),a){c.inputEl.parentElement.addClasses(["has-invalid-message","unset-align-items"]),c.inputEl.parentElement.parentElement.addClass(".unset-align-items");let l=c.inputEl.parentElement.querySelector(".invalid-feedback");l||(l=createDiv({cls:"invalid-feedback"})),l.innerText=a,l.insertAfter(c.inputEl)}}static removeValidationError(c){c.inputEl.removeClass("is-invalid"),c.inputEl.parentElement.removeClasses(["has-invalid-message","unset-align-items"]),c.inputEl.parentElement.parentElement.removeClass(".unset-align-items"),c.inputEl.parentElement.querySelector(".invalid-feedback")&&c.inputEl.parentElement.removeChild(c.inputEl.parentElement.querySelector(".invalid-feedback"))}}function ml(c){var a=c.toString(16);return 1==a.length?"0"+a:a}Object.fromEntries=Object.fromEntries||function(c){const a={};for(const l of c){if(Object(l)!==l)throw new TypeError("iterable for fromEntries should yield objects");const{0:c,1:e}=l;Object.defineProperty(a,c,{configurable:!0,enumerable:!0,writable:!0,value:e})}return a};const vl={userAdmonitions:{},syntaxHighlight:!1,copyButton:!1,version:"",autoCollapse:!1,defaultCollapseType:"open",syncLinks:!0,enableMarkdownProcessor:!1,injectColor:!0,parseTitles:!0};class fl extends e.Plugin{constructor(){super(...arguments),this.admonitions={},this.postprocessors=new Map}get types(){return Object.keys(this.admonitions)}get admonitionArray(){return Object.keys(this.admonitions).map((c=>Object.assign(Object.assign({},this.admonitions[c]),{type:c})))}saveSettings(){return l(this,void 0,void 0,(function*(){this.data.version=this.manifest.version,yield this.saveData(this.data)}))}loadSettings(){return l(this,void 0,void 0,(function*(){let c=Object.assign({},vl,yield this.loadData());if(this.data=c,this.data.userAdmonitions&&(!this.data.version||Number(this.data.version.split(".")[0])<5))for(let c in this.data.userAdmonitions)Object.prototype.hasOwnProperty.call(this.data.userAdmonitions[c],"type")||(this.data.userAdmonitions[c]=Object.assign(Object.assign({},this.data.userAdmonitions[c]),{icon:{type:"font-awesome",name:this.data.userAdmonitions[c].icon}}));this.admonitions=Object.assign(Object.assign({},Wc),this.data.userAdmonitions),yield this.saveSettings()}))}addAdmonition(c){return l(this,void 0,void 0,(function*(){this.data.userAdmonitions=Object.assign(Object.assign({},this.data.userAdmonitions),{[c.type]:c}),this.admonitions=Object.assign(Object.assign({},Wc),this.data.userAdmonitions),this.data.syntaxHighlight&&this.turnOnSyntaxHighlighting([c.type]),yield this.saveSettings();const a=this.registerMarkdownCodeBlockProcessor(`ad-${c.type}`,((a,l,e)=>this.postprocessor(c.type,a,l,e)));this.postprocessors.set(c.type,a)}))}removeAdmonition(c){return l(this,void 0,void 0,(function*(){this.data.userAdmonitions[c.type]&&delete this.data.userAdmonitions[c.type],this.admonitions=Object.assign(Object.assign({},Wc),this.data.userAdmonitions),this.data.syntaxHighlight&&this.turnOffSyntaxHighlighting([c.type]),c.command&&this.unregisterCommandsFor(c),this.postprocessors.has(c.type)&&(e.MarkdownPreviewRenderer.unregisterPostProcessor(this.postprocessors.get(c.type)),e.MarkdownPreviewRenderer.unregisterCodeBlockPostProcessor(`ad-${c.type}`),this.postprocessors.delete(c.type)),yield this.saveSettings()}))}onload(){return l(this,void 0,void 0,(function*(){console.log("Obsidian Admonition loaded"),yield this.loadSettings(),this.addSettingTab(new hl(this.app,this)),(0,e.addIcon)(Gc.toString(),''),(0,e.addIcon)(Tc.toString(),''),this.data.enableMarkdownProcessor&&this.enableMarkdownProcessor(),Object.keys(this.admonitions).forEach((c=>{const a=this.registerMarkdownCodeBlockProcessor(`ad-${c}`,((a,l,e)=>this.postprocessor(c,a,l,e)));this.postprocessors.set(c,a),this.admonitions[c].command&&this.registerCommandsFor(this.admonitions[c])})),this.data.syntaxHighlight&&this.turnOnSyntaxHighlighting(),this.addCommand({id:"collapse-admonitions",name:"Collapse Admonitions in Note",checkCallback:c=>{if(c)return!!this.app.workspace.getActiveViewOfType(e.MarkdownView);let a=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(!(a&&a instanceof e.MarkdownView))return;let l=a.contentEl.querySelectorAll("details[open].admonition-plugin");for(let c=0;c{if(c)return!!this.app.workspace.getActiveViewOfType(e.MarkdownView);let a=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(!(a&&a instanceof e.MarkdownView))return;let l=a.contentEl.querySelectorAll("details:not([open]).admonition-plugin");for(let c=0;c{new el(this,c).open()}}),this.registerEvent(this.app.metadataCache.on("resolve",(c=>{if(!this.data.syncLinks)return;if(this.app.workspace.getActiveFile()!=c)return;const a=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(!(a&&a instanceof e.MarkdownView))return;const l=a.contentEl.querySelectorAll(".admonition:not(.admonition-plugin-async) a.internal-link");this.addLinksToCache(l,c.path)})))}))}enableMarkdownProcessor(){if(!this.data.enableMarkdownProcessor)return;const c=new RegExp(`(!{3,}|\\?{3,}\\+?) ad-(${this.types.join("|")})(\\s[\\s\\S]+)?`),a=new RegExp("\\-{3,} admonition");let i,o=!1;const n=new Map,s=new Map,t=new Map;Object.values(this.admonitions).filter((({command:c})=>c)).forEach((c=>{this.registerCommandsFor(c)})),this.registerMarkdownPostProcessor(((h,r)=>l(this,void 0,void 0,(function*(){var m,v;if(this.data.enableMarkdownProcessor)if(a.test(h.textContent)&&o){o=!1;const c=createDiv();if(i&&t.has(i)&&n.has(t.get(i))&&h.children[0].textContent.replace(a,"").length){c.innerHTML=h.children[0].outerHTML.replace(new RegExp(`(
)?\\n?${a.source}`),"");const l=n.get(t.get(i)).contentEl;l&&l.appendChild(c.children[0])}h.children[0].detach()}else if(c.test(h.textContent)||o){if(!o){if(!(Array.from(h.children).find((a=>c.test(a.textContent)))instanceof HTMLParagraphElement))return;o=!0;let a=new e.MarkdownRenderChild(h);return i=Zc(),t.set(i,a),n.set(a,{contentEl:null,elements:[],loaded:!1}),a.onload=()=>l(this,void 0,void 0,(function*(){var l,i,o;const s=h.textContent;let t,[,r,m,v=m[0].toUpperCase()+m.slice(1).toLowerCase()]=null!==(l=s.match(c))&&void 0!==l?l:[];if(!m)return;/\?{3,}/.test(r)&&(t=/\+/.test(r)?"open":"closed"),""!==v.trim()&&'""'!==v||void 0===t||"none"===t||(v=m[0].toUpperCase()+m.slice(1).toLowerCase(),new e.Notice("An admonition must have a title if it is collapsible."));const f=this.admonitions[m],z=yield this.getAdmonitionElementAsync(m,v.trim(),f.icon,(null!==(i=f.injectColor)&&void 0!==i?i:this.data.injectColor)?f.color:null,t),p=z.createDiv("admonition-content-holder").createDiv("admonition-content");a.containerEl.appendChild(z);for(let c of null===(o=n.get(a))||void 0===o?void 0:o.elements)p.appendChild(c);n.set(a,Object.assign(Object.assign({},n.get(a)),{contentEl:p,loaded:!0}))})),a.onunload=()=>{t.delete(i),n.delete(a)},r.addChild(a),void h.children[0].detach()}if(i&&t.get(i)){const c=t.get(i);if(n.set(c,Object.assign(Object.assign({},n.get(c)),{elements:[...n.get(c).elements,...Array.from(h.children)]})),s.set(h,c),null===(m=n.get(c))||void 0===m?void 0:m.loaded)for(let a of null===(v=n.get(c))||void 0===v?void 0:v.elements)n.get(c).contentEl.appendChild(a)}}}))))}disableMarkdownProcessor(){Object.values(this.admonitions).filter((({command:c})=>c)).forEach((c=>{this.registerCommandsFor(c)}))}unregisterCommandsFor(c){c.command=!1,this.app.commands.findCommand(`obsidian-admonition:insert-${c.type}`)&&(delete this.app.commands.editorCommands[`obsidian-admonition:insert-${c.type}`],delete this.app.commands.editorCommands[`obsidian-admonition:insert-${c.type}-with-title`],delete this.app.commands.commands[`obsidian-admonition:insert-${c.type}`],delete this.app.commands.commands[`obsidian-admonition:insert-${c.type}-with-title`])}registerCommandsFor(c){c.command=!0,this.addCommand({id:`insert-${c.type}`,name:`Insert ${c.type}`,editorCheckCallback:(a,l,i)=>{if(a)return c.command;if(c.command)try{l.getDoc().replaceSelection(`\`\`\`ad-${c.type}\n\n\`\`\`\n`);const a=l.getCursor();l.setCursor(a.line-2)}catch(c){new e.Notice("There was an issue inserting the admonition.")}}}),this.addCommand({id:`insert-${c.type}-with-title`,name:`Insert ${c.type} With Title`,editorCheckCallback:(a,l,i)=>{if(a)return c.command;if(c.command)try{l.getDoc().replaceSelection(`\`\`\`ad-${c.type}\ntitle: \n\n\`\`\`\n`);const a=l.getCursor();l.setCursor(a.line-3)}catch(c){new e.Notice("There was an issue inserting the admonition.")}}}),this.data.enableMarkdownProcessor&&this.addCommand({id:`insert-non-${c.type}`,name:`Insert Non-codeblock ${c.type}`,editorCheckCallback:(a,l,i)=>{if(a)return c.command&&this.data.enableMarkdownProcessor;if(c.command)try{l.getDoc().replaceSelection(`!!! ad-${c.type}\n\n--- admonition\n`);const a=l.getCursor();l.setCursor(a.line-2)}catch(c){new e.Notice("There was an issue inserting the admonition.")}}})}turnOnSyntaxHighlighting(c=Object.keys(this.admonitions)){this.data.syntaxHighlight&&(c.forEach((c=>{if(this.data.syntaxHighlight){const[,a]=`${c}`.match(/^([\w+#-]*)[^\n`]*$/);window.CodeMirror.defineMode(`ad-${a}`,((c,a)=>window.CodeMirror.getMode({},"hypermd")))}})),this.app.workspace.layoutReady?this.layoutReady():this.app.workspace.onLayoutReady(this.layoutReady.bind(this)))}turnOffSyntaxHighlighting(c=Object.keys(this.admonitions)){c.forEach((c=>{window.CodeMirror.modes.hasOwnProperty(`ad-${c}`)&&delete window.CodeMirror.modes[`ad-${c}`]})),this.app.workspace.layoutReady?this.layoutReady():this.app.workspace.onLayoutReady(this.layoutReady.bind(this))}layoutReady(){this.app.workspace.off("layout-ready",this.layoutReady.bind(this)),this.refreshLeaves()}refreshLeaves(){this.app.workspace.iterateCodeMirrors((c=>c.setOption("mode",c.getOption("mode"))))}postprocessor(c,a,i,o){var n,s,t,h,r,m,v;return l(this,void 0,void 0,(function*(){if(this.admonitions[c])try{const f="string"==typeof o?o:null!==(t=null!==(n=null==o?void 0:o.sourcePath)&&void 0!==n?n:null===(s=this.app.workspace.getActiveFile())||void 0===s?void 0:s.path)&&void 0!==t?t:"";let{title:z,collapse:p,content:g,icon:M,color:C}=function(c,a,l){var i;const o=null!==(i=l.title)&&void 0!==i?i:c[0].toUpperCase()+c.slice(1).toLowerCase(),n=["title:","collapse:","icon:","color:"],s=["title","collapse","icon","color"];let t=a.split("\n"),h=0,r={};for(let c=0;cM===c)))&&void 0!==r?r:H.icon,null!=C?C:(null!==(m=H.injectColor)&&void 0!==m?m:this.data.injectColor)?H.color:null,p,w),u=new e.MarkdownRenderChild(V);if(u.containerEl=V,o&&"string"!=typeof o&&(u.onload=()=>{},u.onunload=()=>{},o.addChild(u)),g&&g.length){const c=V.createDiv("admonition-content-holder"),i=c.createDiv("admonition-content");if(/^`{3,}mermaid/m.test(g)){const c=!V.hasAttribute("open");V instanceof HTMLDetailsElement&&V.setAttribute("open","open"),setImmediate((()=>{e.MarkdownRenderer.renderMarkdown(g,i,f,u),V instanceof HTMLDetailsElement&&c&&V.removeAttribute("open")}))}else e.MarkdownRenderer.renderMarkdown(g,i,f,u);(null!==(v=H.copy)&&void 0!==v?v:this.data.copyButton)&&c.createDiv("admonition-content-copy").appendChild(Qc.cloneNode(!0)).addEventListener("click",(()=>{navigator.clipboard.writeText(g.trim()).then((()=>l(this,void 0,void 0,(function*(){new e.Notice("Admonition content copied to clipboard.")}))))}));const o=i.querySelectorAll(".contains-task-list");if(o.length){const c=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(c&&c instanceof e.MarkdownView){c.file;const e=c.currentMode.get(),i=a.split("\n");let n=0;e.indexOf(a);for(let a=0;anew RegExp(`\\[.*\\]\\s*${o.innerText.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}`).test(c)));n=n+i.slice(n).indexOf(h)+1;const r=n;t.dataset.line=`${r}`,t.onclick=a=>l(this,void 0,void 0,(function*(){c.previewMode.renderer.onCheckboxClick(a,t)}))}}}}const n=i.querySelectorAll("a.internal-link");this.addLinksToCache(n,f)}const L=i.parentElement;return L&&!L.hasClass("admonition-content")&&L.addClass("admonition-parent",`admonition-${c}-parent`),i.replaceWith(V),V}catch(c){console.error(c);const l=createEl("pre");l.createEl("code",{attr:{style:"color: var(--text-error) !important"}}).createSpan({text:"There was an error rendering the admonition:\n\n"+a}),i.replaceWith(l)}}))}onunload(){return l(this,void 0,void 0,(function*(){console.log("Obsidian Admonition unloaded"),this.turnOffSyntaxHighlighting()}))}addLinksToCache(c,a){if(this.data.syncLinks)for(let l=0;l{var t={492:function(t,e,i){var n;t=i.nmd(t),function(r){var s=(t&&t.exports,"object"==typeof global&&global);s.global!==s&&s.window;var a=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,o=/[\x01-\x7F]/g,l=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,h={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon",ˆ:"circ",ˇ:"caron","°":"deg","©":"copy","®":"reg","℗":"copysr",℘:"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78",𝒶:"ascr",𝕒:"aopf",𝔞:"afr",𝔸:"Aopf",𝔄:"Afr",𝒜:"Ascr",ª:"ordf",á:"aacute",Á:"Aacute",à:"agrave",À:"Agrave",ă:"abreve",Ă:"Abreve",â:"acirc",Â:"Acirc",å:"aring",Å:"angst",ä:"auml",Ä:"Auml",ã:"atilde",Ã:"Atilde",ą:"aogon",Ą:"Aogon",ā:"amacr",Ā:"Amacr",æ:"aelig",Æ:"AElig",𝒷:"bscr",𝕓:"bopf",𝔟:"bfr",𝔹:"Bopf",ℬ:"Bscr",𝔅:"Bfr",𝔠:"cfr",𝒸:"cscr",𝕔:"copf",ℭ:"Cfr",𝒞:"Cscr",ℂ:"Copf",ć:"cacute",Ć:"Cacute",ĉ:"ccirc",Ĉ:"Ccirc",č:"ccaron",Č:"Ccaron",ċ:"cdot",Ċ:"Cdot",ç:"ccedil",Ç:"Ccedil","℅":"incare",𝔡:"dfr",ⅆ:"dd",𝕕:"dopf",𝒹:"dscr",𝒟:"Dscr",𝔇:"Dfr",ⅅ:"DD",𝔻:"Dopf",ď:"dcaron",Ď:"Dcaron",đ:"dstrok",Đ:"Dstrok",ð:"eth",Ð:"ETH",ⅇ:"ee",ℯ:"escr",𝔢:"efr",𝕖:"eopf",ℰ:"Escr",𝔈:"Efr",𝔼:"Eopf",é:"eacute",É:"Eacute",è:"egrave",È:"Egrave",ê:"ecirc",Ê:"Ecirc",ě:"ecaron",Ě:"Ecaron",ë:"euml",Ë:"Euml",ė:"edot",Ė:"Edot",ę:"eogon",Ę:"Eogon",ē:"emacr",Ē:"Emacr",𝔣:"ffr",𝕗:"fopf",𝒻:"fscr",𝔉:"Ffr",𝔽:"Fopf",ℱ:"Fscr",ff:"fflig",ffi:"ffilig",ffl:"ffllig",fi:"filig",fj:"fjlig",fl:"fllig",ƒ:"fnof",ℊ:"gscr",𝕘:"gopf",𝔤:"gfr",𝒢:"Gscr",𝔾:"Gopf",𝔊:"Gfr",ǵ:"gacute",ğ:"gbreve",Ğ:"Gbreve",ĝ:"gcirc",Ĝ:"Gcirc",ġ:"gdot",Ġ:"Gdot",Ģ:"Gcedil",𝔥:"hfr",ℎ:"planckh",𝒽:"hscr",𝕙:"hopf",ℋ:"Hscr",ℌ:"Hfr",ℍ:"Hopf",ĥ:"hcirc",Ĥ:"Hcirc",ℏ:"hbar",ħ:"hstrok",Ħ:"Hstrok",𝕚:"iopf",𝔦:"ifr",𝒾:"iscr",ⅈ:"ii",𝕀:"Iopf",ℐ:"Iscr",ℑ:"Im",í:"iacute",Í:"Iacute",ì:"igrave",Ì:"Igrave",î:"icirc",Î:"Icirc",ï:"iuml",Ï:"Iuml",ĩ:"itilde",Ĩ:"Itilde",İ:"Idot",į:"iogon",Į:"Iogon",ī:"imacr",Ī:"Imacr",ij:"ijlig",IJ:"IJlig",ı:"imath",𝒿:"jscr",𝕛:"jopf",𝔧:"jfr",𝒥:"Jscr",𝔍:"Jfr",𝕁:"Jopf",ĵ:"jcirc",Ĵ:"Jcirc",ȷ:"jmath",𝕜:"kopf",𝓀:"kscr",𝔨:"kfr",𝒦:"Kscr",𝕂:"Kopf",𝔎:"Kfr",ķ:"kcedil",Ķ:"Kcedil",𝔩:"lfr",𝓁:"lscr",ℓ:"ell",𝕝:"lopf",ℒ:"Lscr",𝔏:"Lfr",𝕃:"Lopf",ĺ:"lacute",Ĺ:"Lacute",ľ:"lcaron",Ľ:"Lcaron",ļ:"lcedil",Ļ:"Lcedil",ł:"lstrok",Ł:"Lstrok",ŀ:"lmidot",Ŀ:"Lmidot",𝔪:"mfr",𝕞:"mopf",𝓂:"mscr",𝔐:"Mfr",𝕄:"Mopf",ℳ:"Mscr",𝔫:"nfr",𝕟:"nopf",𝓃:"nscr",ℕ:"Nopf",𝒩:"Nscr",𝔑:"Nfr",ń:"nacute",Ń:"Nacute",ň:"ncaron",Ň:"Ncaron",ñ:"ntilde",Ñ:"Ntilde",ņ:"ncedil",Ņ:"Ncedil","№":"numero",ŋ:"eng",Ŋ:"ENG",𝕠:"oopf",𝔬:"ofr",ℴ:"oscr",𝒪:"Oscr",𝔒:"Ofr",𝕆:"Oopf",º:"ordm",ó:"oacute",Ó:"Oacute",ò:"ograve",Ò:"Ograve",ô:"ocirc",Ô:"Ocirc",ö:"ouml",Ö:"Ouml",ő:"odblac",Ő:"Odblac",õ:"otilde",Õ:"Otilde",ø:"oslash",Ø:"Oslash",ō:"omacr",Ō:"Omacr",œ:"oelig",Œ:"OElig",𝔭:"pfr",𝓅:"pscr",𝕡:"popf",ℙ:"Popf",𝔓:"Pfr",𝒫:"Pscr",𝕢:"qopf",𝔮:"qfr",𝓆:"qscr",𝒬:"Qscr",𝔔:"Qfr",ℚ:"Qopf",ĸ:"kgreen",𝔯:"rfr",𝕣:"ropf",𝓇:"rscr",ℛ:"Rscr",ℜ:"Re",ℝ:"Ropf",ŕ:"racute",Ŕ:"Racute",ř:"rcaron",Ř:"Rcaron",ŗ:"rcedil",Ŗ:"Rcedil",𝕤:"sopf",𝓈:"sscr",𝔰:"sfr",𝕊:"Sopf",𝔖:"Sfr",𝒮:"Sscr","Ⓢ":"oS",ś:"sacute",Ś:"Sacute",ŝ:"scirc",Ŝ:"Scirc",š:"scaron",Š:"Scaron",ş:"scedil",Ş:"Scedil",ß:"szlig",𝔱:"tfr",𝓉:"tscr",𝕥:"topf",𝒯:"Tscr",𝔗:"Tfr",𝕋:"Topf",ť:"tcaron",Ť:"Tcaron",ţ:"tcedil",Ţ:"Tcedil","™":"trade",ŧ:"tstrok",Ŧ:"Tstrok",𝓊:"uscr",𝕦:"uopf",𝔲:"ufr",𝕌:"Uopf",𝔘:"Ufr",𝒰:"Uscr",ú:"uacute",Ú:"Uacute",ù:"ugrave",Ù:"Ugrave",ŭ:"ubreve",Ŭ:"Ubreve",û:"ucirc",Û:"Ucirc",ů:"uring",Ů:"Uring",ü:"uuml",Ü:"Uuml",ű:"udblac",Ű:"Udblac",ũ:"utilde",Ũ:"Utilde",ų:"uogon",Ų:"Uogon",ū:"umacr",Ū:"Umacr",𝔳:"vfr",𝕧:"vopf",𝓋:"vscr",𝔙:"Vfr",𝕍:"Vopf",𝒱:"Vscr",𝕨:"wopf",𝓌:"wscr",𝔴:"wfr",𝒲:"Wscr",𝕎:"Wopf",𝔚:"Wfr",ŵ:"wcirc",Ŵ:"Wcirc",𝔵:"xfr",𝓍:"xscr",𝕩:"xopf",𝕏:"Xopf",𝔛:"Xfr",𝒳:"Xscr",𝔶:"yfr",𝓎:"yscr",𝕪:"yopf",𝒴:"Yscr",𝔜:"Yfr",𝕐:"Yopf",ý:"yacute",Ý:"Yacute",ŷ:"ycirc",Ŷ:"Ycirc",ÿ:"yuml",Ÿ:"Yuml",𝓏:"zscr",𝔷:"zfr",𝕫:"zopf",ℨ:"Zfr",ℤ:"Zopf",𝒵:"Zscr",ź:"zacute",Ź:"Zacute",ž:"zcaron",Ž:"Zcaron",ż:"zdot",Ż:"Zdot",Ƶ:"imped",þ:"thorn",Þ:"THORN",ʼn:"napos",α:"alpha",Α:"Alpha",β:"beta",Β:"Beta",γ:"gamma",Γ:"Gamma",δ:"delta",Δ:"Delta",ε:"epsi",ϵ:"epsiv",Ε:"Epsilon",ϝ:"gammad",Ϝ:"Gammad",ζ:"zeta",Ζ:"Zeta",η:"eta",Η:"Eta",θ:"theta",ϑ:"thetav",Θ:"Theta",ι:"iota",Ι:"Iota",κ:"kappa",ϰ:"kappav",Κ:"Kappa",λ:"lambda",Λ:"Lambda",μ:"mu",µ:"micro",Μ:"Mu",ν:"nu",Ν:"Nu",ξ:"xi",Ξ:"Xi",ο:"omicron",Ο:"Omicron",π:"pi",ϖ:"piv",Π:"Pi",ρ:"rho",ϱ:"rhov",Ρ:"Rho",σ:"sigma",Σ:"Sigma",ς:"sigmaf",τ:"tau",Τ:"Tau",υ:"upsi",Υ:"Upsilon",ϒ:"Upsi",φ:"phi",ϕ:"phiv",Φ:"Phi",χ:"chi",Χ:"Chi",ψ:"psi",Ψ:"Psi",ω:"omega",Ω:"ohm",а:"acy",А:"Acy",б:"bcy",Б:"Bcy",в:"vcy",В:"Vcy",г:"gcy",Г:"Gcy",ѓ:"gjcy",Ѓ:"GJcy",д:"dcy",Д:"Dcy",ђ:"djcy",Ђ:"DJcy",е:"iecy",Е:"IEcy",ё:"iocy",Ё:"IOcy",є:"jukcy",Є:"Jukcy",ж:"zhcy",Ж:"ZHcy",з:"zcy",З:"Zcy",ѕ:"dscy",Ѕ:"DScy",и:"icy",И:"Icy",і:"iukcy",І:"Iukcy",ї:"yicy",Ї:"YIcy",й:"jcy",Й:"Jcy",ј:"jsercy",Ј:"Jsercy",к:"kcy",К:"Kcy",ќ:"kjcy",Ќ:"KJcy",л:"lcy",Л:"Lcy",љ:"ljcy",Љ:"LJcy",м:"mcy",М:"Mcy",н:"ncy",Н:"Ncy",њ:"njcy",Њ:"NJcy",о:"ocy",О:"Ocy",п:"pcy",П:"Pcy",р:"rcy",Р:"Rcy",с:"scy",С:"Scy",т:"tcy",Т:"Tcy",ћ:"tshcy",Ћ:"TSHcy",у:"ucy",У:"Ucy",ў:"ubrcy",Ў:"Ubrcy",ф:"fcy",Ф:"Fcy",х:"khcy",Х:"KHcy",ц:"tscy",Ц:"TScy",ч:"chcy",Ч:"CHcy",џ:"dzcy",Џ:"DZcy",ш:"shcy",Ш:"SHcy",щ:"shchcy",Щ:"SHCHcy",ъ:"hardcy",Ъ:"HARDcy",ы:"ycy",Ы:"Ycy",ь:"softcy",Ь:"SOFTcy",э:"ecy",Э:"Ecy",ю:"yucy",Ю:"YUcy",я:"yacy",Я:"YAcy",ℵ:"aleph",ℶ:"beth",ℷ:"gimel",ℸ:"daleth"},u=/["&'<>`]/g,d={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,f=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,m=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,g={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},v={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},y={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},x=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],b=String.fromCharCode,w={}.hasOwnProperty,_=function(t,e){return w.call(t,e)},M=function(t,e){if(!t)return e;var i,n={};for(i in e)n[i]=_(t,i)?t[i]:e[i];return n},S=function(t,e){var i="";return t>=55296&&t<=57343||t>1114111?(e&&A("character reference outside the permissible Unicode range"),"�"):_(y,t)?(e&&A("disallowed character reference"),y[t]):(e&&function(t,e){for(var i=-1,n=t.length;++i65535&&(i+=b((t-=65536)>>>10&1023|55296),t=56320|1023&t),i+=b(t))},E=function(t){return"&#x"+t.toString(16).toUpperCase()+";"},T=function(t){return"&#"+t+";"},A=function(t){throw Error("Parse error: "+t)},L=function(t,e){(e=M(e,L.options)).strict&&f.test(t)&&A("forbidden code point");var i=e.encodeEverything,n=e.useNamedReferences,r=e.allowUnsafeSymbols,s=e.decimal?T:E,d=function(t){return s(t.charCodeAt(0))};return i?(t=t.replace(o,(function(t){return n&&_(h,t)?"&"+h[t]+";":d(t)})),n&&(t=t.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),n&&(t=t.replace(c,(function(t){return"&"+h[t]+";"})))):n?(r||(t=t.replace(u,(function(t){return"&"+h[t]+";"}))),t=(t=t.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒")).replace(c,(function(t){return"&"+h[t]+";"}))):r||(t=t.replace(u,d)),t.replace(a,(function(t){var e=t.charCodeAt(0),i=t.charCodeAt(1);return s(1024*(e-55296)+i-56320+65536)})).replace(l,d)};L.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var C=function(t,e){var i=(e=M(e,C.options)).strict;return i&&p.test(t)&&A("malformed character reference"),t.replace(m,(function(t,n,r,s,a,o,l,c,h){var u,d,p,f,m,y;return n?g[m=n]:r?(m=r,(y=s)&&e.isAttributeValue?(i&&"="==y&&A("`&` did not start a character reference"),t):(i&&A("named character reference was not terminated by a semicolon"),v[m]+(y||""))):a?(p=a,d=o,i&&!d&&A("character reference was not terminated by a semicolon"),u=parseInt(p,10),S(u,i)):l?(f=l,d=c,i&&!d&&A("character reference was not terminated by a semicolon"),u=parseInt(f,16),S(u,i)):(i&&A("named character reference was not terminated by a semicolon"),t)}))};C.options={isAttributeValue:!1,strict:!1};var R={version:"1.2.0",encode:L,decode:C,escape:function(t){return t.replace(u,(function(t){return d[t]}))},unescape:C};void 0===(n=function(){return R}.call(e,i,e,t))||(t.exports=n)}()},885:t=>{function e(t){"function"!=typeof t&&(t=e.defunct);var i=[],n=[],r=0;function s(){for(var t=[],e=0,i=this.state,r=this.index,s=this.input,a=0,o=n.length;a=0||i%2&&1===h&&!c[0]){var u=l.pattern;u.lastIndex=r;var d=u.exec(s);if(d&&d.index===r){var p=t.push({result:d,action:l.action,length:d[0].length});for(l.global&&(e=p);--p>e;){var f=p-1;if(t[p].length>t[f].length){var m=t[p];t[p]=t[f],t[f]=m}}}}}return t}this.state=0,this.index=0,this.input="",this.addRule=function(t,e,i){var r=t.global;if(!r){var s="g";t.multiline&&(s+="m"),t.ignoreCase&&(s+="i"),t=new RegExp(t.source,s)}return"[object Array]"!==Object.prototype.toString.call(i)&&(i=[0]),n.push({pattern:t,global:r,action:e,start:i}),this},this.setInput=function(t){return r=0,this.state=0,this.index=0,i.length=0,this.input=t,this},this.lex=function(){if(i.length)return i.shift();for(this.reject=!0;this.index<=this.input.length;){for(var e=s.call(this).splice(r),n=this.index;e.length&&this.reject;){var a=e.shift(),o=a.result,l=a.length;this.index+=l,this.reject=!1,r++;var c=a.action.apply(this,o);if(this.reject)this.index=o.index;else if(void 0!==c)return"[object Array]"===Object.prototype.toString.call(c)&&(i=c.slice(1),c=c[0]),l&&(r=0),c}var h=this.input;if(n{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var n={};(()=>{"use strict";function t(t,e,i,n){return new(i||(i=Promise))((function(r,s){function a(t){try{l(n.next(t))}catch(t){s(t)}}function o(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(a,o)}l((n=n.apply(t,e||[])).next())}))}i.r(n),i.d(n,{default:()=>Xf}),Object.create,Object.create;const e=require("obsidian");var r=i(885),s=i.n(r),a={prefix:"fas",iconName:"dice",icon:[640,512,[],"f522","M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},o={prefix:"far",iconName:"copy",icon:[448,512,[],"f0c5","M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"]};function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function c(t,e){for(var i=0;i0;)e+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return e}function it(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function nt(t){return Object.keys(t||{}).reduce((function(e,i){return e+"".concat(i,": ").concat(t[i],";")}),"")}function rt(t){return t.size!==tt.size||t.x!==tt.x||t.y!==tt.y||t.rotate!==tt.rotate||t.flipX||t.flipY}function st(t){var e=t.transform,i=t.containerWidth,n=t.iconWidth,r={transform:"translate(".concat(i/2," 256)")},s="translate(".concat(32*e.x,", ").concat(32*e.y,") "),a="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),o="rotate(".concat(e.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(s," ").concat(a," ").concat(o)},path:{transform:"translate(".concat(n/2*-1," -256)")}}}var at={x:0,y:0,width:"100%",height:"100%"};function ot(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function lt(t){var e=t.icons,i=e.main,n=e.mask,r=t.prefix,s=t.iconName,a=t.transform,o=t.symbol,l=t.title,c=t.maskId,h=t.titleId,d=t.extra,p=t.watchable,f=void 0!==p&&p,m=n.found?n:i,g=m.width,v=m.height,y="fak"===r,x=y?"":"fa-w-".concat(Math.ceil(g/v*16)),b=[C.replacementClass,s?"".concat(C.familyPrefix,"-").concat(s):"",x].filter((function(t){return-1===d.classes.indexOf(t)})).filter((function(t){return""!==t||!!t})).concat(d.classes).join(" "),w={children:[],attributes:u({},d.attributes,{"data-prefix":r,"data-icon":s,class:b,role:d.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(v)})},_=y&&!~d.classes.indexOf("fa-fw")?{width:"".concat(g/v*16*.0625,"em")}:{};f&&(w.attributes["data-fa-i2svg"]=""),l&&w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(h||et())},children:[l]});var M=u({},w,{prefix:r,iconName:s,main:i,mask:n,maskId:c,transform:a,symbol:o,styles:u({},_,d.styles)}),S=n.found&&i.found?function(t){var e,i=t.children,n=t.attributes,r=t.main,s=t.mask,a=t.maskId,o=t.transform,l=r.width,c=r.icon,h=s.width,d=s.icon,p=st({transform:o,containerWidth:h,iconWidth:l}),f={tag:"rect",attributes:u({},at,{fill:"white"})},m=c.children?{children:c.children.map(ot)}:{},g={tag:"g",attributes:u({},p.inner),children:[ot(u({tag:c.tag,attributes:u({},c.attributes,p.path)},m))]},v={tag:"g",attributes:u({},p.outer),children:[g]},y="mask-".concat(a||et()),x="clip-".concat(a||et()),b={tag:"mask",attributes:u({},at,{id:y,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[f,v]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:x},children:(e=d,"g"===e.tag?e.children:[e])},b]};return i.push(w,{tag:"rect",attributes:u({fill:"currentColor","clip-path":"url(#".concat(x,")"),mask:"url(#".concat(y,")")},at)}),{children:i,attributes:n}}(M):function(t){var e=t.children,i=t.attributes,n=t.main,r=t.transform,s=nt(t.styles);if(s.length>0&&(i.style=s),rt(r)){var a=st({transform:r,containerWidth:n.width,iconWidth:n.width});e.push({tag:"g",attributes:u({},a.outer),children:[{tag:"g",attributes:u({},a.inner),children:[{tag:n.icon.tag,children:n.icon.children,attributes:u({},n.icon.attributes,a.path)}]}]})}else e.push(n.icon);return{children:e,attributes:i}}(M),E=S.children,T=S.attributes;return M.children=E,M.attributes=T,o?function(t){var e=t.prefix,i=t.iconName,n=t.children,r=t.attributes,s=t.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:u({},r,{id:!0===s?"".concat(e,"-").concat(C.familyPrefix,"-").concat(i):s}),children:n}]}]}(M):function(t){var e=t.children,i=t.main,n=t.mask,r=t.attributes,s=t.styles,a=t.transform;if(rt(a)&&i.found&&!n.found){var o={x:i.width/i.height/2,y:.5};r.style=nt(u({},s,{"transform-origin":"".concat(o.x+a.x/16,"em ").concat(o.y+a.y/16,"em")}))}return[{tag:"svg",attributes:r,children:e}]}(M)}var ct=(C.measurePerformance&&w&&w.mark&&w.measure,function(t,e,i,n){var r,s,a,o=Object.keys(t),l=o.length,c=void 0!==n?function(t,e){return function(i,n,r,s){return t.call(e,i,n,r,s)}}(e,n):e;for(void 0===i?(r=1,a=t[o[0]]):(r=0,a=i);r2&&void 0!==arguments[2]?arguments[2]:{},n=i.skipHooks,r=void 0!==n&&n,s=Object.keys(e).reduce((function(t,i){var n=e[i];return n.icon?t[n.iconName]=n.icon:t[i]=n,t}),{});"function"!=typeof D.hooks.addPack||r?D.styles[t]=u({},D.styles[t]||{},s):D.hooks.addPack(t,s),"fas"===t&&ht("fa",e)}var ut=D.styles,dt=D.shims,pt=function(){var t=function(t){return ct(ut,(function(e,i,n){return e[n]=ct(i,t,{}),e}),{})};t((function(t,e,i){return e[3]&&(t[e[3]]=i),t})),t((function(t,e,i){var n=e[2];return t[i]=i,n.forEach((function(e){t[e]=i})),t}));var e="far"in ut;ct(dt,(function(t,i){var n=i[0],r=i[1],s=i[2];return"far"!==r||e||(r="fas"),t[n]={prefix:r,iconName:s},t}),{})};function ft(t,e,i){if(t&&t[e]&&t[e][i])return{prefix:e,iconName:i,icon:t[e][i]}}function mt(t){var e=t.tag,i=t.attributes,n=void 0===i?{}:i,r=t.children,s=void 0===r?[]:r;return"string"==typeof t?it(t):"<".concat(e," ").concat(function(t){return Object.keys(t||{}).reduce((function(e,i){return e+"".concat(i,'="').concat(it(t[i]),'" ')}),"").trim()}(n),">").concat(s.map(mt).join(""),"")}function gt(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=(new Error).stack}pt(),D.styles,gt.prototype=Object.create(Error.prototype),gt.prototype.constructor=gt;var vt={fill:"currentColor"},yt={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},xt=(u({},vt,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}),u({},yt,{attributeName:"opacity"}));function bt(t){var e=t[0],i=t[1],n=d(t.slice(4),1)[0];return{found:!0,width:e,height:i,icon:Array.isArray(n)?{tag:"g",attributes:{class:"".concat(C.familyPrefix,"-").concat(T.GROUP)},children:[{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(T.SECONDARY),fill:"currentColor",d:n[0]}},{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(T.PRIMARY),fill:"currentColor",d:n[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:n}}}}u({},vt,{cx:"256",cy:"364",r:"28"}),u({},yt,{attributeName:"r",values:"28;14;28;28;14;28;"}),u({},xt,{values:"1;0;1;1;0;1;"}),u({},vt,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),u({},xt,{values:"1;0;0;0;0;1;"}),u({},vt,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),u({},xt,{values:"0;0;1;1;0;0;"}),D.styles,D.styles;var wt=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var e,i;return e=t,i=[{key:"add",value:function(){for(var t=this,e=arguments.length,i=new Array(e),n=0;n-1;r--){var s=i[r],a=(s.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(n=s)}b.head.insertBefore(e,n)}}(function(){var t="fa",e=M,i=C.familyPrefix,n=C.replacementClass,r='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if(i!==t||n!==e){var s=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),o=new RegExp("\\.".concat(e),"g");r=r.replace(s,".".concat(i,"-")).replace(a,"--".concat(i,"-")).replace(o,".".concat(n))}return r}()),At=!0)}function Mt(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return mt(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(_){var e=b.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function St(t){var e=t.prefix,i=void 0===e?"fa":e,n=t.iconName;if(n)return ft(Tt.definitions,i,n)||ft(D.styles,i,n)}var Et,Tt=new wt,At=!1,Lt=(Et=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=e.transform,n=void 0===i?tt:i,r=e.symbol,s=void 0!==r&&r,a=e.mask,o=void 0===a?null:a,l=e.maskId,c=void 0===l?null:l,h=e.title,d=void 0===h?null:h,p=e.titleId,f=void 0===p?null:p,m=e.classes,g=void 0===m?[]:m,v=e.attributes,y=void 0===v?{}:v,x=e.styles,b=void 0===x?{}:x;if(t){var w=t.prefix,_=t.iconName,M=t.icon;return Mt(u({type:"icon"},t),(function(){return _t(),C.autoA11y&&(d?y["aria-labelledby"]="".concat(C.replacementClass,"-title-").concat(f||et()):(y["aria-hidden"]="true",y.focusable="false")),lt({icons:{main:bt(M),mask:o?bt(o.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:_,transform:u({},tt,n),symbol:s,title:d,maskId:c,titleId:f,extra:{attributes:y,styles:b,classes:g}})}))}},function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=(t||{}).icon?t:St(t||{}),n=e.mask;return n&&(n=(n||{}).icon?n:St(n||{})),Et(i,u({},e,{mask:n}))});class Ct{constructor(t){this.table=t}parse(t){for(var e=t.length,i=this.table,n=[],r=[],s=0;sc||l===c&&"right"===o.associativity)break;n.push(r.shift())}r.unshift(h)}else n.push(h)}for(;r.length;){var h;if("("===(h=r.shift()).data)throw new Error("Mismatched parentheses.");n.push(h)}return n}}function Rt(t,e){const i=Object.keys(e).map((i=>function(t,e,i){const n=t[e],r=t.hasOwnProperty(e);let s=i(n);return n&&Object.setPrototypeOf(s,n),Object.setPrototypeOf(a,s),t[e]=a,o;function a(...i){return s===n&&t[e]===a&&o(),s.apply(this,i)}function o(){t[e]===a&&(r?t[e]=n:delete t[e]),s!==n&&(s=n,Object.setPrototypeOf(a,n||Function))}}(t,i,e[i])));return 1===i.length?i[0]:function(){i.forEach((t=>t()))}}var Dt=i(492);const Pt=/(?:(?\d+)[Dd])?#(?[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?[\+-]))?(?:\|(?[^\+-]+))?/u,Nt=/(?:(?\d+)[Dd])?\[\[(?[\s\S]+?)#?\^(?[\s\S]+?)\]\]\|?(?
[\s\S]+)?/,It=/(?:(?\d+)[Dd])?\[\[(?[\s\S]+)\]\]\|?(?[\s\S]+)?/,zt=/[\(\^\+\-\*\/\)]/,Bt=/(?(?\d+)(?:[Dd]?\[?(?:-?\d+\s?,)?\s?(?:-?\d+|%|F)\]?)?)(?(?:(?:=|=!|<|>|<=|>=|=<|=>|\-=|=\-)\d+)*)?/,kt=/(?\d+)?[Dd](?\[?(?:-?\d+\s?,)?\s?(?:-?\d+|%|F)\]?)?(?(?:(?:=|=!|<|>|<=|>=|=<|=>|\-=|=\-)\d+)*)?/,Ft=/(?:(?=|=!|<|>|<=|>=|=<|=>|\-=|=\-)(?\d+))/g,Ot="dice-roller-icon",Ut="dice-roller-copy";function Ht(t,e,i){[...t].slice(e).reverse().forEach((([e,i])=>{t.set(e+1,i)})),t.set(e,i)}class Vt extends e.Events{constructor(t,i,n,r=t.data.showDice){if(super(),this.plugin=t,this.original=i,this.lexemes=n,this.showDice=r,this.loaded=!1,this.containerEl=createDiv({cls:"dice-roller",attr:{"aria-label-position":"top","data-dice":this.original}}),this.save=!1,this.resultEl=this.containerEl.createDiv("dice-roller-result"),this.showDice){const t=this.containerEl.createDiv({cls:"dice-roller-button"});(0,e.setIcon)(t,Ot),t.onclick=this.onClick.bind(this)}else this.containerEl.addClass("no-icon");this.containerEl.onclick=this.onClick.bind(this)}setTooltip(){this.plugin.data.displayResultsInline||this.containerEl.setAttrs({"aria-label":this.tooltip})}getRandomBetween(t,e){return Math.floor(Math.random()*(e-t+1))+t}render(){return t(this,void 0,void 0,(function*(){this.setTooltip(),yield this.build()}))}get inlineText(){return`${this.tooltip.split("\n").join(" -> ")} -> `}onClick(e){var i;return t(this,void 0,void 0,(function*(){e.stopPropagation(),e.stopImmediatePropagation(),(null===(i=window.getSelection())||void 0===i?void 0:i.isCollapsed)&&(yield this.roll())}))}}class qt extends Vt{}class Gt extends qt{constructor(t,e,i,n,r=t.data.showDice){super(t,e,[i],r),this.plugin=t,this.original=e,this.lexeme=i,this.source=n,this.getPath(),this.getFile()}getFile(){return t(this,void 0,void 0,(function*(){if(this.file=this.plugin.app.metadataCache.getFirstLinkpathDest(this.path,this.source),!(this.file&&this.file instanceof e.TFile))throw new Error("Could not load file.");yield this.load(),this.registerFileWatcher()}))}registerFileWatcher(){this.plugin.registerEvent(this.plugin.app.vault.on("modify",(e=>t(this,void 0,void 0,(function*(){this.save||e===this.file&&(yield this.getOptions())})))))}}class Wt{constructor(t,e={original:t,conditionals:[],type:"dice",data:t}){var i;if(this.lexeme=e,this.modifiers=new Map,this.modifiersAllowed=!0,this.static=!1,this.conditions=[],!/(\-?\d+)[dD]?(\d+|%|\[\d+,\s?\d+\])?/.test(t))throw new Error("Non parseable dice string passed to DiceRoll.");this.dice=t.split(" ").join(""),/^-?\d+$/.test(this.dice)&&(this.static=!0,this.modifiersAllowed=!1);let[,n,r=null,s=1]=this.dice.match(/(\-?\d+)[dD]\[?(?:(-?\d+)\s?,)?\s?(-?\d+|%|F)\]?/)||[,1,null,1];this.multiplier=n<0?-1:1,this.rolls=Math.abs(Number(n))||1,Number(s)<0&&!r&&(r=-1),"%"===s&&(s=100),"F"===s&&(s=1,r=-1),Number(s)[e,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])))}get text(){return`${this.result}`}get result(){return this.static?Number(this.dice):[...this.results].map((([,{usable:t,value:e}])=>t?e:0)).reduce(((t,e)=>t+e),0)}get display(){return this.static?`${this.result}`:`[${[...this.results].map((([,{modifiers:t,display:e}])=>`${e}${[...t].join("")}`)).join(", ")}]`}keepLow(t=1){this.modifiersAllowed?[...this.results].sort(((t,e)=>t[1].value-e[1].value)).slice(t-this.results.size).forEach((([t])=>{const e=this.results.get(t);e.usable=!1,e.modifiers.add("d"),this.results.set(t,Object.assign({},e))})):new e.Notice("Modifiers are only allowed on dice rolls.")}keepHigh(t=1){this.modifiersAllowed?[...this.results].sort(((t,e)=>e[1].value-t[1].value)).slice(t).forEach((([t])=>{const e=this.results.get(t);e.usable=!1,e.modifiers.add("d"),this.results.set(t,Object.assign({},e))})):new e.Notice("Modifiers are only allowed on dice rolls.")}reroll(t,i){if(!this.modifiersAllowed)return void new e.Notice("Modifiers are only allowed on dice rolls.");i.length||i.push({operator:"=",comparer:this.faces.min});let n=0,r=[...this.results].filter((([,{value:t}])=>this.checkCondition(t,i)));for(;nthis.checkCondition(t,i))).length>0;)n++,r.map((([,t])=>{t.modifiers.add("r"),t.value=this.getRandomBetween(this.faces.min,this.faces.max)}));r.forEach((([t,e])=>{this.results.set(t,e)}))}explodeAndCombine(t,i){if(!this.modifiersAllowed)return void new e.Notice("Modifiers are only allowed on dice rolls.");i.length||i.push({operator:"=",comparer:this.faces.max});let n=0;[...this.results].filter((([,{value:t}])=>this.checkCondition(t,i))).forEach((([e,r])=>{let s=this.getRandomBetween(this.faces.min,this.faces.max);for(n++,r.modifiers.add("!"),r.value+=s,r.display=`${r.value}`,this.results.set(e,r);nthis.multiplier*this.getRandomBetween(this.faces.min,this.faces.max)))}setResults(t){this.results=new Map([...t].map(((t,e)=>[e,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])))}roll(){var t;const e=this._roll();this.results=new Map([...e].map(((t,e)=>[e,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])));for(let[t,e]of this.modifiers)this.applyModifier(t,e);return(null===(t=this.conditions)||void 0===t?void 0:t.length)&&this.applyConditions(),e}applyConditions(){for(let[t,e]of this.results){const t=this.conditions.find((({operator:t})=>"-="===t||"=-"===t));t&&e.value===t.comparer?(e.value=-1,e.modifiers.add("-")):this.checkCondition(e.value,this.conditions)?(e.modifiers.add("*"),e.value=1):e.usable=!1}}applyModifier(t,e){switch(t){case"kh":this.keepHigh(e.data);break;case"kl":this.keepLow(e.data);break;case"!":this.explode(e.data,e.conditionals);break;case"!!":this.explodeAndCombine(e.data,e.conditionals);break;case"r":this.reroll(e.data,e.conditionals)}}checkCondition(t,e){return e&&e.length?e.some((({operator:e,comparer:i})=>{if(Number.isNaN(t)||Number.isNaN(i))return!1;let n=!1;switch(e){case"=":n=t===i;break;case"!=":case"=!":n=t!==i;break;case"<":n=t":n=t>i;break;case">=":n=t>=i}return n})):t}getRandomBetween(t,e){return Math.floor(Math.random()*(e-t+1))+t}}class jt extends Wt{constructor(t,e){super("3d6",e),this.lexeme=e,this.dice=t}get doubles(){return new Set([...this.results].map((([,{usable:t,value:e}])=>t?e:0))).size<3}get result(){return this.static?Number(this.dice):[...this.results].map((([,{usable:t,value:e}])=>t?e:0)).reduce(((t,e)=>t+e),0)}get display(){let t=[];for(let e of this.results)0==e[0]&&this.doubles?t.push(`${e[1].value}S`):t.push(`${e[1].value}`);return`[${t.join(", ")}]`}}class Xt extends qt{constructor(t,e,i,n=t.data.showDice){super(t,e,i,n),this.plugin=t,this.original=e,this.lexemes=i,this.stunted="",this.operators={"+":(t,e)=>t+e,"-":(t,e)=>t-e,"*":(t,e)=>t*e,"/":(t,e)=>t/e,"^":(t,e)=>Math.pow(t,e)},this.stack=[],this.stackCopy=[],this.dice=[],this.loaded=!0,this.trigger("loaded")}get resultText(){let t=this.original;return this.dice.forEach((e=>{t=t.replace(e.lexeme.original,e.display)})),t}get tooltip(){return this._tooltip?this._tooltip:`${this.original}\n${this.resultText}`}build(){return t(this,void 0,void 0,(function*(){const t=[this.result.toLocaleString(navigator.language,{maximumFractionDigits:2})];this.plugin.data.displayResultsInline&&t.unshift(this.inlineText),this.resultEl.setText(t.join("")+this.stunted)}))}get dynamic(){return this.dice.filter((t=>!t.static))}get static(){return this.dice.filter((t=>t.static))}roll(){return t(this,void 0,void 0,(function*(){let t=0;this.stunted="";for(const e of this.lexemes)switch(e.type){case"+":case"-":case"*":case"/":case"^":case"math":let i=this.stack.pop(),n=this.stack.pop();if(!n){"-"===e.data&&(i=new Wt(`-${i.dice}`,i.lexeme)),this.stackCopy.push(e.data),this.stack.push(i);continue}i.roll(),i instanceof jt&&i.doubles&&(this.stunted=` - ${i.results.get(0).value} Stunt Points`),n.roll(),n instanceof jt&&n.doubles&&(this.stunted=` - ${n.results.get(0).value} Stunt Points`);const r=this.operators[e.data](n.result,i.result);this.stackCopy.push(e.data),this.stack.push(new Wt(`${r}`,e));break;case"kh":{let i=this.dice[t-1],n=e.data?Number(e.data):1;i.modifiers.set("kh",{data:n,conditionals:[]});break}case"dl":{let i=this.dice[t-1],n=e.data?Number(e.data):1;n=i.results.size-n,i.modifiers.set("kh",{data:n,conditionals:[]});break}case"kl":{let i=this.dice[t-1],n=e.data?Number(e.data):1;i.modifiers.set("kl",{data:n,conditionals:[]});break}case"dh":{let i=this.dice[t-1],n=e.data?Number(e.data):1;n=i.results.size-n,i.modifiers.set("kl",{data:n,conditionals:[]});break}case"!":{let i=this.dice[t-1],n=Number(e.data)||1;i.modifiers.set("!",{data:n,conditionals:e.conditionals});break}case"!!":{let i=this.dice[t-1],n=Number(e.data)||1;i.modifiers.set("!!",{data:n,conditionals:e.conditionals});break}case"r":{let i=this.dice[t-1],n=Number(e.data)||1;i.modifiers.set("r",{data:n,conditionals:e.conditionals});break}case"dice":this.dice[t]||(this.dice[t]=new Wt(e.data,e)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++;break;case"stunt":this.dice[t]||(this.dice[t]=new jt(e.original,e)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++}const e=this.stack.pop();return e.roll(),e instanceof jt&&e.doubles&&(this.stunted=` - ${e.results.get(0).value} Stunt Points`),this.result=e.result,this._tooltip=null,this.render(),this.trigger("new-result"),this.result}))}recalculate(){let t=[],e=0;for(let e of this.stackCopy)if("string"==typeof e){let i=t.pop(),n=t.pop();if(!n){"-"===e&&(i=new Wt(`-${i.result}`,i.lexeme)),t.push(i);continue}const r=this.operators[e](n.result,i.result);t.push(new Wt(`${r}`))}else t.push(e);t.length&&t[0]instanceof Wt&&(e+=t[0].result),this.result=e}toResult(){return{type:"dice",result:this.result,tooltip:this.tooltip}}applyResult(e){return t(this,void 0,void 0,(function*(){"dice"===e.type&&(e.result&&(this.result=e.result),e.tooltip&&(this._tooltip=e.tooltip),yield this.render())}))}setResult(t){}}class Yt extends Gt{constructor(i,n,r,s,a=!0,o=i.data.showDice){super(i,n,r,s,o),this.plugin=i,this.original=n,this.lexeme=r,this.inline=a,this.containerEl.addClasses(["has-embed","markdown-embed"]),this.resultEl.addClass("internal-embed"),this.resultEl.setAttrs({src:s}),this.copy=this.containerEl.createDiv({cls:"dice-content-copy dice-roller-button no-show",attr:{"aria-label":"Copy Contents"}}),this.copy.addEventListener("click",(i=>{i.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(...this.results).trim()).then((()=>t(this,void 0,void 0,(function*(){new e.Notice("Result copied to clipboard.")}))))})),(0,e.setIcon)(this.copy,Ut)}get tooltip(){return`${this.original}\n${this.path}`}build(){return t(this,void 0,void 0,(function*(){if(this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.inline&&this.resultEl.createSpan({text:this.inlineText}),this.results&&this.results.length){this.plugin.data.copyContentButton&&this.copy.removeClass("no-show");for(const i of this.results){this.resultEl.onclick=e=>t(this,void 0,void 0,(function*(){(e&&e.getModifierState("Control")||e.getModifierState("Meta"))&&e.stopPropagation()}));const n=this.resultEl.createDiv({cls:"markdown-embed"});if(!this.plugin.data.displayResultsInline){const t="type"in i?i.type:"List Item";n.setAttrs({"aria-label":`${this.file.basename}: ${t}`})}if(i){if(e.MarkdownRenderer.renderMarkdown(this.displayFromCache(i),n.createDiv(),this.source,null),this.plugin.data.copyContentButton&&this.results.length>1){let r=n.createDiv({cls:"dice-content-copy dice-roller-button",attr:{"aria-label":"Copy Contents"}});r.addEventListener("click",(n=>{n.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(i).trim()).then((()=>t(this,void 0,void 0,(function*(){new e.Notice("Result copied to clipboard.")}))))})),(0,e.setIcon)(r,Ut)}}else n.createDiv({cls:"dice-no-results",text:"No results."})}}else this.resultEl.createDiv({cls:"dice-no-results",text:"No results."})}))}load(){return t(this,void 0,void 0,(function*(){yield this.getOptions()}))}displayFromCache(...t){let e=[];for(let i of t)e.push(this.content.slice(i.position.start.offset,i.position.end.offset));return e.join("\n\n")}getPath(){var t;const{groups:e}=this.lexeme.data.match(It),{roll:i=1,link:n,types:r}=e;if(!n)throw new Error("Could not parse link.");this.rolls=null!==(t=i&&!isNaN(Number(i))&&Number(i))&&void 0!==t?t:1,this.path=n.replace(/(\[|\])/g,""),this.types=null==r?void 0:r.split(",")}getOptions(){return t(this,void 0,void 0,(function*(){if(this.cache=this.plugin.app.metadataCache.getFileCache(this.file),!this.cache||!this.cache.sections)throw new Error("Could not read file cache.");this.content=yield this.plugin.app.vault.cachedRead(this.file),this.options=this.cache.sections.filter((({type:t})=>this.types?this.types.includes(t):!["yaml","thematicBreak"].includes(t))),this.types&&this.types.includes("listItem")&&this.options.push(...this.cache.listItems),this.loaded=!0,this.trigger("loaded")}))}roll(){return t(this,void 0,void 0,(function*(){return new Promise(((t,e)=>{if(this.loaded){const e=[...this.options];this.results=[...Array(this.rolls)].map((()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t})).filter((t=>t)),this.render(),this.trigger("new-result"),t(this.results[0])}else this.on("loaded",(()=>{const e=[...this.options];this.results=[...Array(this.rolls)].map((()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t})).filter((t=>t)),this.render(),this.trigger("new-result"),t(this.results[0])}))}))}))}toResult(){return{type:"section",result:this.results}}applyResult(e){return t(this,void 0,void 0,(function*(){"section"===e.type&&(e.result&&(this.results=e.result),yield this.render())}))}}class Zt extends qt{constructor(t,e,i,n,r=t.data.showDice){super(t,e,[i],r),this.plugin=t,this.original=e,this.lexeme=i,this.source=n,this.loaded=!1,this.containerEl.addClasses(["has-embed","markdown-embed"]);const{roll:s=1,tag:a,collapse:o,types:l}=i.data.match(Pt).groups;this.collapse="-"===o||"+"!==o&&!this.plugin.data.returnAllTags,this.tag=`#${a}`,this.rolls=Number(s),this.types=l,this.getFiles()}get typeText(){var t;return(null===(t=this.types)||void 0===t?void 0:t.length)?`|${this.types}`:""}getFiles(){return t(this,void 0,void 0,(function*(){const t=this.plugin.app.plugins.plugins.dataview.index.tags.invMap.get(this.tag);if(t&&t.delete(this.source),!t||!t.size)throw new Error("No files found with that tag. Is the tag correct?\n\n"+this.tag);const e=Array.from(t).map((t=>`${this.rolls}d[[${t}]]${this.typeText}`));this.results=e.map((t=>new Yt(this.plugin,t,{data:t,original:t,conditionals:null,type:"section"},this.source,!1))),this.loaded=!0,this.trigger("loaded")}))}build(){var e;return t(this,void 0,void 0,(function*(){if(this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.resultEl.createSpan({text:this.inlineText}),this.collapse){this.chosen=null!==(e=this.random)&&void 0!==e?e:this.getRandomBetween(0,this.results.length-1);let t=this.results[this.chosen];this.random=null;const i=this.resultEl.createDiv();i.createEl("h5",{cls:"dice-file-name",text:t.file.basename}),i.appendChild(t.containerEl)}else for(let t of this.results){const e=this.resultEl.createDiv();e.createEl("h5",{cls:"dice-file-name",text:t.file.basename}),e.appendChild(t.containerEl)}}))}roll(){return t(this,void 0,void 0,(function*(){return new Promise(((e,i)=>{this.loaded?(this.results.forEach((e=>t(this,void 0,void 0,(function*(){return yield e.roll()})))),this.render(),this.trigger("new-result"),e(this.result)):this.on("loaded",(()=>{this.results.forEach((e=>t(this,void 0,void 0,(function*(){return yield e.roll()})))),this.render(),this.trigger("new-result"),e(this.result)}))}))}))}get tooltip(){return this.original}toResult(){return{type:"tag",random:this.chosen,result:Object.fromEntries(this.results.map((t=>[t.path,t.toResult()])))}}applyResult(e){return t(this,void 0,void 0,(function*(){if("tag"===e.type){if(e.result)for(let t in e.result){const i=this.results.find((e=>e.path===t));i&&i.applyResult(e.result[t])}e.random&&(this.random=e.random),yield this.render()}}))}}class Jt extends qt{constructor(t,e,i,n,r=t.data.showDice){var s;super(t,e,[i],r),this.plugin=t,this.original=e,this.lexeme=i,this.source=n;const{roll:a=1,tag:o}=i.data.match(Pt).groups;this.tag=`#${o}`,this.rolls=null!==(s=a&&!isNaN(Number(a))&&Number(a))&&void 0!==s?s:1,this.getFiles()}get tooltip(){return`${this.original}\n${this.result.basename}`}roll(){return t(this,void 0,void 0,(function*(){return new Promise(((t,e)=>{this.loaded?(this.result=this.links[this.getRandomBetween(0,this.links.length-1)],this.render(),this.trigger("new-result"),t(this.result)):this.on("loaded",(()=>{this.result=this.links[this.getRandomBetween(0,this.links.length-1)],this.render(),this.trigger("new-result"),t(this.result)}))}))}))}build(){return t(this,void 0,void 0,(function*(){this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.resultEl.createSpan({text:this.inlineText});const e=this.resultEl.createEl("a",{cls:"internal-link",text:this.result.basename});e.onclick=e=>t(this,void 0,void 0,(function*(){var t;e.stopPropagation(),this.plugin.app.workspace.openLinkText(this.result.path,null===(t=this.plugin.app.workspace.getActiveFile())||void 0===t?void 0:t.path,!0)})),e.onmouseenter=i=>t(this,void 0,void 0,(function*(){var t;this.plugin.app.workspace.trigger("link-hover",this,e,this.result.path,null===(t=this.plugin.app.workspace.getActiveFile())||void 0===t?void 0:t.path)}))}))}getFiles(){return t(this,void 0,void 0,(function*(){const t=this.plugin.app.plugins.plugins.dataview.index.tags.invMap.get(this.tag);if(t&&t.delete(this.source),!t||!t.size)throw new Error("No files found with that tag. Is the tag correct?\n\n"+this.tag);this.links=Array.from(t).map((t=>this.plugin.app.metadataCache.getFirstLinkpathDest(t,this.source))),this.loaded=!0,this.trigger("loaded")}))}toResult(){return{type:"link",result:this.result.path}}applyResult(i){return t(this,void 0,void 0,(function*(){if("link"===i.type){if(i.result){const t=this.plugin.app.vault.getAbstractFileByPath(i.result);t&&t instanceof e.TFile&&(this.result=t)}yield this.render()}}))}}class Qt extends Gt{getPath(){var t;const{groups:e}=this.lexeme.data.match(Nt),{roll:i=1,link:n,block:r,header:s}=e;if(!n||!r)throw new Error("Could not parse link.");this.rolls=null!==(t=i&&!isNaN(Number(i))&&Number(i))&&void 0!==t?t:1,this.path=n.replace(/(\[|\])/g,""),this.block=r.replace(/(\^|#)/g,"").trim().toLowerCase(),this.header=s}get tooltip(){return`${this.original}\n${this.path} > ${this.block}${this.header?" | "+this.header:""}`}build(){return t(this,void 0,void 0,(function*(){this.resultEl.empty();const e=[this.result];this.plugin.data.displayResultsInline&&e.unshift(this.inlineText);const i=e.join("").split(/(\[\[(?:[\s\S]+?)\]\])/);for(let e of i)if(/\[\[(?:[\s\S]+?)\]\]/.test(e)){const[,i]=e.match(/\[\[([\s\S]+?)\]\]/),n=this.resultEl.createEl("a",{cls:"internal-link",text:i});n.onmouseover=()=>{var t;this.plugin.app.workspace.trigger("link-hover",this,n,i.replace("^","#^").split("|").shift(),null===(t=this.plugin.app.workspace.getActiveFile())||void 0===t?void 0:t.path)},n.onclick=e=>t(this,void 0,void 0,(function*(){var t;e.stopPropagation(),yield this.plugin.app.workspace.openLinkText(i.replace("^","#^").split(/\|/).shift(),null===(t=this.plugin.app.workspace.getActiveFile())||void 0===t?void 0:t.path,e.getModifierState("Control"))}))}else this.resultEl.createSpan({text:e})}))}getResult(){var e;return t(this,void 0,void 0,(function*(){if(this.isLookup){const t=yield this.lookupRoller.roll(),i=this.lookupRanges.find((([e])=>void 0===e[1]&&t===e[0]||t>=e[0]&&e[1]>=t));if(i){let n=0,r=i[1];const s=[];for(;n<5&&/dice:\s?[\s\S]+\s?/.test(r);){n++;for(let t of r.matchAll(/(`dice:\s*([\s\S]+?)`)/g)){let[,i,n]=null!==(e=t[0].match(/(`dice:\s*([\s\S]+?)`)\s?/))&&void 0!==e?e:[];if(!n)break;const a=yield this.plugin.getRoller(n,this.source);if(!a)break;r=yield a.roll(),s.push({full:i,result:r})}}let a=i[1];return s.forEach((({full:t,result:e})=>{a=a.replace(t,e)})),this.plugin.data.displayLookupRoll?`${t} > ${(0,Dt.decode)(a)}`:`${(0,Dt.decode)(a)}`}}const t=[...this.options];return[...Array(this.rolls)].map((()=>{let e=t[this.getRandomBetween(0,t.length-1)];return t.splice(t.indexOf(e),1),e})).join("||")}))}roll(){return t(this,void 0,void 0,(function*(){return new Promise((e=>t(this,void 0,void 0,(function*(){this.loaded?(this.result=yield this.getResult(),this.render(),this.trigger("new-result"),e(this.result)):this.on("loaded",(()=>t(this,void 0,void 0,(function*(){this.result=yield this.getResult(),this.render(),this.trigger("new-result"),e(this.result)}))))}))))}))}load(){return t(this,void 0,void 0,(function*(){yield this.getOptions()}))}getOptions(){var e,i;return t(this,void 0,void 0,(function*(){if(this.cache=this.plugin.app.metadataCache.getFileCache(this.file),!this.cache||!this.cache.blocks||!(this.block in this.cache.blocks))throw new Error(`Could not read file cache. Does the block reference exist?\n\n${this.path} > ${this.block}`);const t=null===(e=this.cache.sections)||void 0===e?void 0:e.find((t=>t.position==this.cache.blocks[this.block].position));if(this.position=this.cache.blocks[this.block].position,this.content=null===(i=yield this.plugin.app.vault.cachedRead(this.file))||void 0===i?void 0:i.slice(this.position.start.offset,this.position.end.offset),t&&"list"===t.type)this.options=this.content.split("\n");else{let t=function(t){const e=t.split("\n"),i=e.map((t=>{var e;return(null!==(e=t.trim().match(Kt))&&void 0!==e?e:[,t.trim()])[1]})),n=i[0].split($t),r=[],s=[];for(let t in n){let e=n[t];e.trim().length||(e=t),s.push([e.trim(),[]])}for(let t of e.slice(2)){const e=t.trim().split($t).map((t=>t.trim())).filter((t=>t.length));r.push(e.join(" | "));for(let t in e){const i=e[t].trim();i.length&&s[t]&&s[t][1].push(i)}}return{columns:Object.fromEntries(s),rows:r}}(this.content);if(2===Object.keys(t.columns).length&&/dice:\s*([\s\S]+)\s*?/.test(Object.keys(t.columns)[0])){const e=this.plugin.getRoller(Object.keys(t.columns)[0].split(":").pop(),this.source);e instanceof Xt&&(this.lookupRoller=e,yield this.lookupRoller.roll(),this.lookupRanges=t.rows.map((t=>{var e;const[i,n]=t.split("|").map((t=>t.trim()));let[,r,s]=null!==(e=i.match(/(\d+)(?:[^\d]+?(\d+))?/))&&void 0!==e?e:[];if(r||s)return[[Number(r),s?Number(s):void 0],n]})),this.isLookup=!0)}if(this.header&&t.columns[this.header])this.options=t.columns[this.header];else{if(this.header)throw new Error(`Header ${this.header} was not found in table ${this.path} > ${this.block}.`);this.options=t.rows}}this.loaded=!0,this.trigger("loaded")}))}toResult(){return{type:"table",result:this.result}}applyResult(e){return t(this,void 0,void 0,(function*(){"table"===e.type&&(e.result&&(this.result=e.result),yield this.render())}))}}const Kt=/^\|?([\s\S]+?)\|?$/,$t=/\|/;class te extends e.PluginSettingTab{constructor(t,e){super(t,e),this.plugin=e,this.plugin=e}display(){return t(this,void 0,void 0,(function*(){let{containerEl:i}=this;i.empty(),i.addClass("dice-roller-settings"),i.createEl("h2",{text:"Dice Roller Settings"}),new e.Setting(i).setName("Roll All Files for Tags").setDesc("Return a result for each file when rolling tags.").addToggle((e=>{e.setValue(this.plugin.data.returnAllTags),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.returnAllTags=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Always Return Links for Tags").setDesc("Enables random link rolling with the link parameter. Override by specifying a section type.").addToggle((e=>{e.setValue(this.plugin.data.rollLinksForTags),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.rollLinksForTags=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Add Copy Button to Section Results").setDesc("Randomly rolled sections will have a copy-content button to easy add result to clipboard.").addToggle((e=>{e.setValue(this.plugin.data.copyContentButton),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.copyContentButton=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Display Formula With Results").setDesc("Both the formula and the results will both be displayed in preview mode.").addToggle((e=>{e.setValue(this.plugin.data.displayResultsInline),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.displayResultsInline=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Display Lookup Table Roll").setDesc("Lookup table rolls will display the rolled number along with the result.").addToggle((e=>{e.setValue(this.plugin.data.displayLookupRoll),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.displayLookupRoll=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Show Dice Button").setDesc("A dice button will appear next to results.").addToggle((e=>{e.setValue(this.plugin.data.showDice),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.showDice=e,yield this.plugin.saveSettings()}))))}));const n=new e.Setting(i).setName("Globally Save Results").setDesc("Dice results will be saved by default. This can be overridden using ").addToggle((e=>{e.setValue(this.plugin.data.persistResults),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.persistResults=e,yield this.plugin.saveSettings()}))))}));new e.Setting(i).setName("Open Dice View on Startup").setDesc("The dice view can always be opened using the command from the command palette.").addToggle((e=>{e.setValue(this.plugin.data.showLeafOnStartup),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.showLeafOnStartup=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Display graphics for Dice View Rolls").setDesc("Dice rolls from dice view will be displayed on screen.").addToggle((e=>{e.setValue(this.plugin.data.renderer),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.renderer=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Dice Base Color").setDesc("Rendered dice will be this color.").controlEl.createEl("input",{type:"color",value:this.plugin.data.diceColor},(e=>{e.value=this.plugin.data.diceColor,e.onchange=({target:e})=>t(this,void 0,void 0,(function*(){let t=e.value;this.plugin.data.diceColor=t,yield this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors")}))})),new e.Setting(i).setName("Dice Text Color").setDesc("Rendered dice will use this color for their numbers.").controlEl.createEl("input",{type:"color",value:this.plugin.data.textColor},(e=>{e.value=this.plugin.data.textColor,e.onchange=({target:e})=>t(this,void 0,void 0,(function*(){let t=e.value;t&&(this.plugin.data.textColor=t,yield this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors"))}))})),new e.Setting(i).setName("Default Face").setDesc("Use this as the number of faces when it is omitted.").addText((i=>{i.setValue(`${this.plugin.data.defaultFace}`),i.inputEl.onblur=()=>t(this,void 0,void 0,(function*(){isNaN(Number(i.inputEl.value))&&new e.Notice("The default face must be a number."),this.plugin.data.defaultFace=Number(i.inputEl.value),yield this.plugin.saveSettings()}))})),n.descEl.createEl("code",{text:"dice-: formula"}),n.descEl.createEl("p",{text:"Please note that the plugin will attempt to save the result but may not be able to."}),this.additionalContainer=i.createDiv("dice-roller-setting-additional-container"),this.buildFormulaSettings(),i.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=☕&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}))}buildFormulaSettings(){this.additionalContainer.empty();const i=this.additionalContainer.createDiv();new e.Setting(i).setName("Add Formula").setDesc("Add a new formula shortcut.").addButton((e=>e.setTooltip("Add Formula").setButtonText("+").onClick((()=>t(this,void 0,void 0,(function*(){const t=yield this.buildFormulaForm(i);t&&(this.plugin.data.formulas[t.alias]=t.formula,this.buildFormulaSettings(),yield this.plugin.saveSettings())}))))));const n=this.additionalContainer.createDiv("additional"),r=this.plugin.data.formulas;for(const[s,a]of Object.entries(r)){const r=new e.Setting(n).setName(s);r.controlEl.createSpan({text:a}),r.addExtraButton((e=>e.setIcon("pencil").setTooltip("Edit").onClick((()=>t(this,void 0,void 0,(function*(){const t=yield this.buildFormulaForm(i,{alias:s,formula:a});t&&(delete this.plugin.data.formulas[s],this.plugin.data.formulas[t.alias]=t.formula,this.buildFormulaSettings(),yield this.plugin.saveSettings())})))))).addExtraButton((e=>e.setIcon("trash").setTooltip("Delete").onClick((()=>t(this,void 0,void 0,(function*(){delete this.plugin.data.formulas[s],yield this.plugin.saveSettings(),this.buildFormulaSettings()}))))))}Object.values(r).length||n.createSpan({text:"Create a formula to see it here!",cls:"no-formulas"})}buildFormulaForm(i,n={alias:null,formula:null}){return t(this,void 0,void 0,(function*(){return new Promise((r=>{const s=i.createDiv("add-new-formula"),a=s.createDiv("formula-data");new e.Setting(a).setName("Alias").addText((t=>{t.setValue(n.alias).onChange((t=>n.alias=t))})),new e.Setting(a).setName("Formula").addText((t=>{t.setValue(n.formula).onChange((t=>n.formula=t))}));const o=s.createDiv("formula-buttons");new e.Setting(o).addButton((e=>e.setCta().setButtonText("Save").onClick((()=>t(this,void 0,void 0,(function*(){s.detach(),r(n)})))))).addExtraButton((t=>t.setIcon("cross").setTooltip("Cancel").onClick((()=>{s.detach(),r(null)}))))}))}))}}const ee="DICE_ROLLER_VIEW";(0,e.addIcon)("d4",''),(0,e.addIcon)("d6",''),(0,e.addIcon)("d8",''),(0,e.addIcon)("d10",''),(0,e.addIcon)("d12",''),(0,e.addIcon)("d20",''),(0,e.addIcon)("d100",''),(0,e.addIcon)("dice-roller-save",''),(0,e.addIcon)("dice-roller-plus",''),(0,e.addIcon)("dice-roller-minus",'');class ie extends e.ItemView{constructor(t,e){super(e),this.plugin=t,this.leaf=e,this.dice=ie.DICE(),this.custom="",this.adv=!1,this.dis=!1,this.add=0,this.contentEl.addClass("dice-roller-view"),this.registerEvent(this.plugin.app.workspace.on("dice-roller:update-colors",(()=>{this.renderer.factory.updateColors()})))}static DICE(){return{d4:0,d6:0,d8:0,d10:0,d12:0,d20:0,d100:0}}get customFormulas(){return this.plugin.data.customFormulas}get renderer(){return this.plugin.renderer}onOpen(){return t(this,void 0,void 0,(function*(){this.display()}))}display(){return t(this,void 0,void 0,(function*(){this.contentEl.empty(),this.gridEl=this.contentEl.createDiv("dice-roller-grid"),this.formulaEl=this.contentEl.createDiv("dice-roller-formula");const t=this.contentEl.createDiv("dice-roller-results-container"),i=t.createDiv("dice-roller-results-header");i.createEl("h4",{text:"Results"}),new e.ExtraButtonComponent(i.createDiv("clear-all")).setIcon("trash").setTooltip("Clear All").onClick((()=>{this.resultEl.empty(),this.resultEl.append(this.noResultsEl)})),this.resultEl=t.createDiv("dice-roller-results"),this.noResultsEl=this.resultEl.createSpan({text:"No results yet! Roll some dice to get started :)"}),this.buildButtons(),this.buildFormula()}))}buildButtons(){this.gridEl.empty();const i=this.gridEl.createDiv("dice-buttons");for(let n in this.dice)new e.ExtraButtonComponent(i.createDiv("dice-button")).setIcon(n).extraSettingsEl.onclick=e=>t(this,void 0,void 0,(function*(){let t=e.getModifierState("Shift")?-1:1;this.dice[n]+=t,this.setFormula();const i=yield this.plugin.getRoller(this.formulaComponent.inputEl.value,"view");i instanceof Xt&&(this.stack=i)}));const n=this.gridEl.createDiv("advantage-disadvantage"),r=new e.ButtonComponent(n).setButtonText("ADV").onClick((()=>{this.adv=!this.adv,this.dis=!1,this.adv?(r.setCta(),s.removeCta()):r.removeCta(),this.setFormula()})),s=new e.ButtonComponent(n).setButtonText("DIS").onClick((()=>{this.dis=!this.dis,this.dis?(s.setCta(),r.removeCta()):s.removeCta(),this.adv=!1,this.setFormula()})),a=this.gridEl.createDiv("dice-context").createDiv("add-subtract");new e.ExtraButtonComponent(a).setIcon("dice-roller-minus").onClick((()=>{this.add-=1,o.setValue(`${this.add}`),this.setFormula()}));const o=new e.TextComponent(a).setValue(`${this.add?this.add:""}`).onChange((t=>{isNaN(Number(t))||(this.add=Number(t)),this.setFormula()}));if(new e.ExtraButtonComponent(a).setIcon("dice-roller-plus").onClick((()=>{this.add+=1,o.setValue(`${this.add}`),this.setFormula()})),this.customFormulas.length){const t=this.gridEl.createDiv("dice-roller-results-container");t.createDiv("dice-roller-results-header").createEl("h4",{text:"Saved Formulas"});for(let i of this.customFormulas){const n=t.createDiv("dice-custom-formula-container"),r=n.createDiv("dice-custom-formula");new e.ExtraButtonComponent(r).setIcon(Ot).setTooltip("Roll").onClick((()=>this.roll(i))),r.createSpan({text:i}),new e.ExtraButtonComponent(n).setIcon("trash").setTooltip("Remove").onClick((()=>{this.plugin.data.customFormulas=this.plugin.data.customFormulas.filter((t=>t!=i)),this.plugin.saveSettings(),this.buildButtons()}))}}}roll(i=this.formulaComponent.inputEl.value){return t(this,void 0,void 0,(function*(){if(!i)return;this.rollButton.setDisabled(!0);const t=yield this.plugin.getRoller(i,"view");if(t instanceof Xt)if(yield t.roll(),t.dice.length){try{this.plugin.data.renderer&&(this.addChild(this.renderer),this.renderer.setDice(t),yield this.renderer.start(),t.recalculate())}catch(t){new e.Notice("There was an error rendering the roll."),console.error(t)}this.rollButton.setDisabled(!1),this.addResult({result:t.result,original:t.original,resultText:t.resultText}),this.dice=ie.DICE(),this.add=null,this.adv=!1,this.dis=!1,this.buildButtons(),this.setFormula()}else new e.Notice("Invalid formula.");else new e.Notice("The Dice View only supports dice rolls.")}))}buildFormula(){this.formulaEl.empty(),this.formulaComponent=new e.TextAreaComponent(this.formulaEl).setPlaceholder("Dice Formula"),this.formulaComponent.onChange((0,e.debounce)((e=>t(this,void 0,void 0,(function*(){}))),500,!0));const i=this.formulaEl.createDiv("action-buttons");this.saveButton=new e.ButtonComponent(i).setIcon("plus-with-circle").setCta().setTooltip("Save Formula").onClick((()=>this.save())),this.saveButton.buttonEl.addClass("dice-roller-roll"),this.rollButton=new e.ButtonComponent(i).setIcon(Ot).setCta().setTooltip("Roll").onClick((()=>this.roll())),this.rollButton.buttonEl.addClass("dice-roller-roll")}save(){this.formulaComponent.inputEl.value&&(this.plugin.data.customFormulas.push(this.formulaComponent.inputEl.value),this.buildButtons(),this.plugin.saveSettings())}addResult(i){this.noResultsEl&&this.noResultsEl.detach();const n=createDiv("view-result");n.createSpan({text:i.original}),n.createEl("strong",{text:`${i.result}`,attr:{"aria-label":i.resultText}});const r=n.createDiv("result-context");r.createEl("em",{text:(new Date).toLocaleString()}),new e.ExtraButtonComponent(r).setIcon("trash").onClick((()=>{n.detach(),0===this.resultEl.children.length&&this.resultEl.prepend(this.noResultsEl)})),new e.ExtraButtonComponent(r).setIcon(Ut).setTooltip("Copy Result").onClick((()=>t(this,void 0,void 0,(function*(){yield navigator.clipboard.writeText(`${i.result}`)})))).extraSettingsEl.addClass("dice-content-copy"),new e.ExtraButtonComponent(r).setIcon(Ot).setTooltip("Roll Again").onClick((()=>this.roll(i.original))).extraSettingsEl.addClass("dice-result-reroll"),this.resultEl.prepend(n)}get formulaString(){const t=[],e=Object.entries(this.dice).filter((([t,e])=>0!=e));if(!e.length)return"";e.sort(((t,e)=>Number(e[0].slice(1))-Number(t[0].slice(1))));const i=e.shift();return t.push(`${i[1]}${i[0]}`),this.adv?t.push("kh"):this.dis&&t.push("dh"),e.length&&t.push(...e.map((([t,e])=>`${e>0?"+":"-"}${Math.abs(e)}${t}`))),this.add&&0!=this.add&&(t.push(this.add>0?"+":"-"),t.push(Math.abs(this.add))),t.join("")}setFormula(){this.formulaComponent.setValue(this.formulaString)}getDisplayText(){return"Dice Roller"}getViewType(){return ee}getIcon(){return Ot}onClose(){const e=Object.create(null,{onClose:{get:()=>super.onClose}});return t(this,void 0,void 0,(function*(){yield e.onClose.call(this),this.renderer.unload()}))}}const ne=100,re=301,se=302,ae=306,oe=1e3,le=1001,ce=1002,he=1003,ue=1006,de=1008,pe=1009,fe=1012,me=1014,ge=1015,ve=1016,ye=1020,xe=1022,be=1023,we=1026,_e=1027,Me=2300,Se=2301,Ee=2302,Te=2400,Ae=2401,Le=2402,Ce=3e3,Re=3001,De=3007,Pe=3002,Ne=7680,Ie=35044,ze=35048,Be="300 es";class ke{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const i=this._listeners;void 0===i[t]&&(i[t]=[]),-1===i[t].indexOf(e)&&i[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const i=this._listeners;return void 0!==i[t]&&-1!==i[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const i=this._listeners[t];if(void 0!==i){const t=i.indexOf(e);-1!==t&&i.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const i=e.slice(0);for(let e=0,n=i.length;e>8&255]+Fe[t>>16&255]+Fe[t>>24&255]+"-"+Fe[255&e]+Fe[e>>8&255]+"-"+Fe[e>>16&15|64]+Fe[e>>24&255]+"-"+Fe[63&i|128]+Fe[i>>8&255]+"-"+Fe[i>>16&255]+Fe[i>>24&255]+Fe[255&n]+Fe[n>>8&255]+Fe[n>>16&255]+Fe[n>>24&255]).toUpperCase()}function Ve(t,e,i){return Math.max(e,Math.min(i,t))}function qe(t,e,i){return(1-i)*t+i*e}function Ge(t){return 0==(t&t-1)&&0!==t}function We(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class je{constructor(t=0,e=0){this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this)}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this)}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,i=this.y,n=t.elements;return this.x=n[0]*e+n[3]*i+n[6],this.y=n[1]*e+n[4]*i+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(t,Math.min(e,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y;return e*e+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e,i){return void 0!==i&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const i=Math.cos(e),n=Math.sin(e),r=this.x-t.x,s=this.y-t.y;return this.x=r*i-s*n+t.x,this.y=r*n+s*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}}je.prototype.isVector2=!0;class Xe{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(t,e,i,n,r,s,a,o,l){const c=this.elements;return c[0]=t,c[1]=n,c[2]=a,c[3]=e,c[4]=r,c[5]=o,c[6]=i,c[7]=s,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,r=this.elements,s=i[0],a=i[3],o=i[6],l=i[1],c=i[4],h=i[7],u=i[2],d=i[5],p=i[8],f=n[0],m=n[3],g=n[6],v=n[1],y=n[4],x=n[7],b=n[2],w=n[5],_=n[8];return r[0]=s*f+a*v+o*b,r[3]=s*m+a*y+o*w,r[6]=s*g+a*x+o*_,r[1]=l*f+c*v+h*b,r[4]=l*m+c*y+h*w,r[7]=l*g+c*x+h*_,r[2]=u*f+d*v+p*b,r[5]=u*m+d*y+p*w,r[8]=u*g+d*x+p*_,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[1],n=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8];return e*s*c-e*a*l-i*r*c+i*a*o+n*r*l-n*s*o}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8],h=c*s-a*l,u=a*o-c*r,d=l*r-s*o,p=e*h+i*u+n*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const f=1/p;return t[0]=h*f,t[1]=(n*l-c*i)*f,t[2]=(a*i-n*s)*f,t[3]=u*f,t[4]=(c*e-n*o)*f,t[5]=(n*r-a*e)*f,t[6]=d*f,t[7]=(i*o-l*e)*f,t[8]=(s*e-i*r)*f,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,i,n,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(i*o,i*l,-i*(o*s+l*a)+s+t,-n*l,n*o,-n*(-l*s+o*a)+a+e,0,0,1),this}scale(t,e){const i=this.elements;return i[0]*=t,i[3]*=t,i[6]*=t,i[1]*=e,i[4]*=e,i[7]*=e,this}rotate(t){const e=Math.cos(t),i=Math.sin(t),n=this.elements,r=n[0],s=n[3],a=n[6],o=n[1],l=n[4],c=n[7];return n[0]=e*r+i*o,n[3]=e*s+i*l,n[6]=e*a+i*c,n[1]=-i*r+e*o,n[4]=-i*s+e*l,n[7]=-i*a+e*c,this}translate(t,e){const i=this.elements;return i[0]+=t*i[2],i[3]+=t*i[5],i[6]+=t*i[8],i[1]+=e*i[2],i[4]+=e*i[5],i[7]+=e*i[8],this}equals(t){const e=this.elements,i=t.elements;for(let t=0;t<9;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t,e=0){for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}let Ye;Xe.prototype.isMatrix3=!0;class Ze{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===Ye&&(Ye=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),Ye.width=t.width,Ye.height=t.height;const i=Ye.getContext("2d");t instanceof ImageData?i.putImageData(t,0,0):i.drawImage(t,0,0,t.width,t.height),e=Ye}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}}let Je=0;class Qe extends ke{constructor(t=Qe.DEFAULT_IMAGE,e=Qe.DEFAULT_MAPPING,i=1001,n=1001,r=1006,s=1008,a=1023,o=1009,l=1,c=3e3){super(),Object.defineProperty(this,"id",{value:Je++}),this.uuid=He(),this.name="",this.image=t,this.mipmaps=[],this.mapping=e,this.wrapS=i,this.wrapT=n,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=a,this.internalFormat=null,this.type=o,this.offset=new je(0,0),this.repeat=new je(1,1),this.center=new je(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Xe,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=c,this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(t){return this.name=t.name,this.image=t.image,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this}toJSON(t){const e=void 0===t||"string"==typeof t;if(!e&&void 0!==t.textures[this.uuid])return t.textures[this.uuid];const i={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){const n=this.image;if(void 0===n.uuid&&(n.uuid=He()),!e&&void 0===t.images[n.uuid]){let e;if(Array.isArray(n)){e=[];for(let t=0,i=n.length;t1)switch(this.wrapS){case oe:t.x=t.x-Math.floor(t.x);break;case le:t.x=t.x<0?0:1;break;case ce:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case oe:t.y=t.y-Math.floor(t.y);break;case le:t.y=t.y<0?0:1;break;case ce:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&this.version++}}function Ke(t){return"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?Ze.getDataURL(t):t.data?{data:Array.prototype.slice.call(t.data),width:t.width,height:t.height,type:t.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}Qe.DEFAULT_IMAGE=void 0,Qe.DEFAULT_MAPPING=300,Qe.prototype.isTexture=!0;class $e{constructor(t=0,e=0,i=0,n=1){this.x=t,this.y=e,this.z=i,this.w=n}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,i,n){return this.x=t,this.y=e,this.z=i,this.w=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,r=this.w,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n+s[12]*r,this.y=s[1]*e+s[5]*i+s[9]*n+s[13]*r,this.z=s[2]*e+s[6]*i+s[10]*n+s[14]*r,this.w=s[3]*e+s[7]*i+s[11]*n+s[15]*r,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,i,n,r;const s=.01,a=.1,o=t.elements,l=o[0],c=o[4],h=o[8],u=o[1],d=o[5],p=o[9],f=o[2],m=o[6],g=o[10];if(Math.abs(c-u)o&&t>v?tv?o=0?1:-1,n=1-e*e;if(n>Number.EPSILON){const r=Math.sqrt(n),s=Math.atan2(r,e*i);t=Math.sin(t*s)/r,a=Math.sin(a*s)/r}const r=a*i;if(o=o*t+u*r,l=l*t+d*r,c=c*t+p*r,h=h*t+f*r,t===1-a){const t=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=t,l*=t,c*=t,h*=t}}t[e]=o,t[e+1]=l,t[e+2]=c,t[e+3]=h}static multiplyQuaternionsFlat(t,e,i,n,r,s){const a=i[n],o=i[n+1],l=i[n+2],c=i[n+3],h=r[s],u=r[s+1],d=r[s+2],p=r[s+3];return t[e]=a*p+c*h+o*d-l*u,t[e+1]=o*p+c*u+l*h-a*d,t[e+2]=l*p+c*d+a*u-o*h,t[e+3]=c*p-a*h-o*u-l*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,i,n){return this._x=t,this._y=e,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){if(!t||!t.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const i=t._x,n=t._y,r=t._z,s=t._order,a=Math.cos,o=Math.sin,l=a(i/2),c=a(n/2),h=a(r/2),u=o(i/2),d=o(n/2),p=o(r/2);switch(s){case"XYZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"YXZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"ZXY":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"ZYX":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"YZX":this._x=u*c*h+l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h-u*d*p;break;case"XZY":this._x=u*c*h-l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const i=e/2,n=Math.sin(i);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,i=e[0],n=e[4],r=e[8],s=e[1],a=e[5],o=e[9],l=e[2],c=e[6],h=e[10],u=i+a+h;if(u>0){const t=.5/Math.sqrt(u+1);this._w=.25/t,this._x=(c-o)*t,this._y=(r-l)*t,this._z=(s-n)*t}else if(i>a&&i>h){const t=2*Math.sqrt(1+i-a-h);this._w=(c-o)/t,this._x=.25*t,this._y=(n+s)/t,this._z=(r+l)/t}else if(a>h){const t=2*Math.sqrt(1+a-i-h);this._w=(r-l)/t,this._x=(n+s)/t,this._y=.25*t,this._z=(o+c)/t}else{const t=2*Math.sqrt(1+h-i-a);this._w=(s-n)/t,this._x=(r+l)/t,this._y=(o+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return iMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(Ve(this.dot(t),-1,1)))}rotateTowards(t,e){const i=this.angleTo(t);if(0===i)return this;const n=Math.min(1,e/i);return this.slerp(t,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t,e){return void 0!==e?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(t,e)):this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const i=t._x,n=t._y,r=t._z,s=t._w,a=e._x,o=e._y,l=e._z,c=e._w;return this._x=i*c+s*a+n*l-r*o,this._y=n*c+s*o+r*a-i*l,this._z=r*c+s*l+i*o-n*a,this._w=s*c-i*a-n*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const i=this._x,n=this._y,r=this._z,s=this._w;let a=s*t._w+i*t._x+n*t._y+r*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=s,this._x=i,this._y=n,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const t=1-e;return this._w=t*s+e*this._w,this._x=t*i+e*this._x,this._y=t*n+e*this._y,this._z=t*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,a),h=Math.sin((1-e)*c)/l,u=Math.sin(e*c)/l;return this._w=s*h+this._w*u,this._x=i*h+this._x*u,this._y=n*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,i){this.copy(t).slerp(e,i)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}}ii.prototype.isQuaternion=!0;class ni{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}set(t,e,i){return void 0===i&&(i=this.z),this.x=t,this.y=e,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(si.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(si.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,i=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[3]*i+r[6]*n,this.y=r[1]*e+r[4]*i+r[7]*n,this.z=r[2]*e+r[5]*i+r[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,r=t.elements,s=1/(r[3]*e+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*e+r[4]*i+r[8]*n+r[12])*s,this.y=(r[1]*e+r[5]*i+r[9]*n+r[13])*s,this.z=(r[2]*e+r[6]*i+r[10]*n+r[14])*s,this}applyQuaternion(t){const e=this.x,i=this.y,n=this.z,r=t.x,s=t.y,a=t.z,o=t.w,l=o*e+s*n-a*i,c=o*i+a*e-r*n,h=o*n+r*i-s*e,u=-r*e-s*i-a*n;return this.x=l*o+u*-r+c*-a-h*-s,this.y=c*o+u*-s+h*-r-l*-a,this.z=h*o+u*-a+l*-s-c*-r,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,i=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[4]*i+r[8]*n,this.y=r[1]*e+r[5]*i+r[9]*n,this.z=r[2]*e+r[6]*i+r[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(t,Math.min(e,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t,e){return void 0!==e?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e)):this.crossVectors(this,t)}crossVectors(t,e){const i=t.x,n=t.y,r=t.z,s=e.x,a=e.y,o=e.z;return this.x=n*o-r*a,this.y=r*s-i*o,this.z=i*a-n*s,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return ri.copy(this).projectOnVector(t),this.sub(ri)}reflect(t){return this.sub(ri.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(Ve(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,i){const n=Math.sin(e)*t;return this.x=n*Math.sin(i),this.y=Math.cos(e)*t,this.z=n*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e,i){return void 0!==i&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}}ni.prototype.isVector3=!0;const ri=new ni,si=new ii;class ai{constructor(t=new ni(1/0,1/0,1/0),e=new ni(-1/0,-1/0,-1/0)){this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=t.length;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(e,i,n),this.max.set(r,s,a),this}setFromBufferAttribute(t){let e=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=t.count;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(e,i,n),this.max.set(r,s,a),this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,li),li.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(gi),vi.subVectors(this.max,gi),hi.subVectors(t.a,gi),ui.subVectors(t.b,gi),di.subVectors(t.c,gi),pi.subVectors(ui,hi),fi.subVectors(di,ui),mi.subVectors(hi,di);let e=[0,-pi.z,pi.y,0,-fi.z,fi.y,0,-mi.z,mi.y,pi.z,0,-pi.x,fi.z,0,-fi.x,mi.z,0,-mi.x,-pi.y,pi.x,0,-fi.y,fi.x,0,-mi.y,mi.x,0];return!!bi(e,hi,ui,di,vi)&&(e=[1,0,0,0,1,0,0,0,1],!!bi(e,hi,ui,di,vi)&&(yi.crossVectors(pi,fi),e=[yi.x,yi.y,yi.z],bi(e,hi,ui,di,vi)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return li.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=.5*this.getSize(li).length(),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||(oi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),oi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),oi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),oi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),oi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),oi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),oi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),oi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(oi)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}ai.prototype.isBox3=!0;const oi=[new ni,new ni,new ni,new ni,new ni,new ni,new ni,new ni],li=new ni,ci=new ai,hi=new ni,ui=new ni,di=new ni,pi=new ni,fi=new ni,mi=new ni,gi=new ni,vi=new ni,yi=new ni,xi=new ni;function bi(t,e,i,n,r){for(let s=0,a=t.length-3;s<=a;s+=3){xi.fromArray(t,s);const a=r.x*Math.abs(xi.x)+r.y*Math.abs(xi.y)+r.z*Math.abs(xi.z),o=e.dot(xi),l=i.dot(xi),c=n.dot(xi);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>a)return!1}return!0}const wi=new ai,_i=new ni,Mi=new ni,Si=new ni;class Ei{constructor(t=new ni,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const i=this.center;void 0!==e?i.copy(e):wi.setFromPoints(t).getCenter(i);let n=0;for(let e=0,r=t.length;ethis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){Si.subVectors(t,this.center);const e=Si.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),i=.5*(t-this.radius);this.center.add(Si.multiplyScalar(i/t)),this.radius+=i}return this}union(t){return Mi.subVectors(t.center,this.center).normalize().multiplyScalar(t.radius),this.expandByPoint(_i.copy(t.center).add(Mi)),this.expandByPoint(_i.copy(t.center).sub(Mi)),this}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const Ti=new ni,Ai=new ni,Li=new ni,Ci=new ni,Ri=new ni,Di=new ni,Pi=new ni;class Ni{constructor(t=new ni,e=new ni(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Ti)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=Ti.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Ti.copy(this.direction).multiplyScalar(e).add(this.origin),Ti.distanceToSquared(t))}distanceSqToSegment(t,e,i,n){Ai.copy(t).add(e).multiplyScalar(.5),Li.copy(e).sub(t).normalize(),Ci.copy(this.origin).sub(Ai);const r=.5*t.distanceTo(e),s=-this.direction.dot(Li),a=Ci.dot(this.direction),o=-Ci.dot(Li),l=Ci.lengthSq(),c=Math.abs(1-s*s);let h,u,d,p;if(c>0)if(h=s*o-a,u=s*a-o,p=r*c,h>=0)if(u>=-p)if(u<=p){const t=1/c;h*=t,u*=t,d=h*(h+s*u+2*a)+u*(s*h+u+2*o)+l}else u=r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;else u=-r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;else u<=-p?(h=Math.max(0,-(-s*r+a)),u=h>0?-r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l):u<=p?(h=0,u=Math.min(Math.max(-r,-o),r),d=u*(u+2*o)+l):(h=Math.max(0,-(s*r+a)),u=h>0?r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l);else u=s>0?-r:r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;return i&&i.copy(this.direction).multiplyScalar(h).add(this.origin),n&&n.copy(Li).multiplyScalar(u).add(Ai),d}intersectSphere(t,e){Ti.subVectors(t.center,this.origin);const i=Ti.dot(this.direction),n=Ti.dot(Ti)-i*i,r=t.radius*t.radius;if(n>r)return null;const s=Math.sqrt(r-n),a=i-s,o=i+s;return a<0&&o<0?null:a<0?this.at(o,e):this.at(a,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){const i=this.distanceToPlane(t);return null===i?null:this.at(i,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return 0===e||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let i,n,r,s,a,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(i=(t.min.x-u.x)*l,n=(t.max.x-u.x)*l):(i=(t.max.x-u.x)*l,n=(t.min.x-u.x)*l),c>=0?(r=(t.min.y-u.y)*c,s=(t.max.y-u.y)*c):(r=(t.max.y-u.y)*c,s=(t.min.y-u.y)*c),i>s||r>n?null:((r>i||i!=i)&&(i=r),(s=0?(a=(t.min.z-u.z)*h,o=(t.max.z-u.z)*h):(a=(t.max.z-u.z)*h,o=(t.min.z-u.z)*h),i>o||a>n?null:((a>i||i!=i)&&(i=a),(o=0?i:n,e)))}intersectsBox(t){return null!==this.intersectBox(t,Ti)}intersectTriangle(t,e,i,n,r){Ri.subVectors(e,t),Di.subVectors(i,t),Pi.crossVectors(Ri,Di);let s,a=this.direction.dot(Pi);if(a>0){if(n)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}Ci.subVectors(this.origin,t);const o=s*this.direction.dot(Di.crossVectors(Ci,Di));if(o<0)return null;const l=s*this.direction.dot(Ri.cross(Ci));if(l<0)return null;if(o+l>a)return null;const c=-s*Ci.dot(Pi);return c<0?null:this.at(c/a,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class Ii{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(t,e,i,n,r,s,a,o,l,c,h,u,d,p,f,m){const g=this.elements;return g[0]=t,g[4]=e,g[8]=i,g[12]=n,g[1]=r,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new Ii).fromArray(this.elements)}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){const e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,i){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,i=t.elements,n=1/zi.setFromMatrixColumn(t,0).length(),r=1/zi.setFromMatrixColumn(t,1).length(),s=1/zi.setFromMatrixColumn(t,2).length();return e[0]=i[0]*n,e[1]=i[1]*n,e[2]=i[2]*n,e[3]=0,e[4]=i[4]*r,e[5]=i[5]*r,e[6]=i[6]*r,e[7]=0,e[8]=i[8]*s,e[9]=i[9]*s,e[10]=i[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){t&&t.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const e=this.elements,i=t.x,n=t.y,r=t.z,s=Math.cos(i),a=Math.sin(i),o=Math.cos(n),l=Math.sin(n),c=Math.cos(r),h=Math.sin(r);if("XYZ"===t.order){const t=s*c,i=s*h,n=a*c,r=a*h;e[0]=o*c,e[4]=-o*h,e[8]=l,e[1]=i+n*l,e[5]=t-r*l,e[9]=-a*o,e[2]=r-t*l,e[6]=n+i*l,e[10]=s*o}else if("YXZ"===t.order){const t=o*c,i=o*h,n=l*c,r=l*h;e[0]=t+r*a,e[4]=n*a-i,e[8]=s*l,e[1]=s*h,e[5]=s*c,e[9]=-a,e[2]=i*a-n,e[6]=r+t*a,e[10]=s*o}else if("ZXY"===t.order){const t=o*c,i=o*h,n=l*c,r=l*h;e[0]=t-r*a,e[4]=-s*h,e[8]=n+i*a,e[1]=i+n*a,e[5]=s*c,e[9]=r-t*a,e[2]=-s*l,e[6]=a,e[10]=s*o}else if("ZYX"===t.order){const t=s*c,i=s*h,n=a*c,r=a*h;e[0]=o*c,e[4]=n*l-i,e[8]=t*l+r,e[1]=o*h,e[5]=r*l+t,e[9]=i*l-n,e[2]=-l,e[6]=a*o,e[10]=s*o}else if("YZX"===t.order){const t=s*o,i=s*l,n=a*o,r=a*l;e[0]=o*c,e[4]=r-t*h,e[8]=n*h+i,e[1]=h,e[5]=s*c,e[9]=-a*c,e[2]=-l*c,e[6]=i*h+n,e[10]=t-r*h}else if("XZY"===t.order){const t=s*o,i=s*l,n=a*o,r=a*l;e[0]=o*c,e[4]=-h,e[8]=l*c,e[1]=t*h+r,e[5]=s*c,e[9]=i*h-n,e[2]=n*h-i,e[6]=a*c,e[10]=r*h+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(ki,t,Fi)}lookAt(t,e,i){const n=this.elements;return Hi.subVectors(t,e),0===Hi.lengthSq()&&(Hi.z=1),Hi.normalize(),Oi.crossVectors(i,Hi),0===Oi.lengthSq()&&(1===Math.abs(i.z)?Hi.x+=1e-4:Hi.z+=1e-4,Hi.normalize(),Oi.crossVectors(i,Hi)),Oi.normalize(),Ui.crossVectors(Hi,Oi),n[0]=Oi.x,n[4]=Ui.x,n[8]=Hi.x,n[1]=Oi.y,n[5]=Ui.y,n[9]=Hi.y,n[2]=Oi.z,n[6]=Ui.z,n[10]=Hi.z,this}multiply(t,e){return void 0!==e?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,r=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],c=i[1],h=i[5],u=i[9],d=i[13],p=i[2],f=i[6],m=i[10],g=i[14],v=i[3],y=i[7],x=i[11],b=i[15],w=n[0],_=n[4],M=n[8],S=n[12],E=n[1],T=n[5],A=n[9],L=n[13],C=n[2],R=n[6],D=n[10],P=n[14],N=n[3],I=n[7],z=n[11],B=n[15];return r[0]=s*w+a*E+o*C+l*N,r[4]=s*_+a*T+o*R+l*I,r[8]=s*M+a*A+o*D+l*z,r[12]=s*S+a*L+o*P+l*B,r[1]=c*w+h*E+u*C+d*N,r[5]=c*_+h*T+u*R+d*I,r[9]=c*M+h*A+u*D+d*z,r[13]=c*S+h*L+u*P+d*B,r[2]=p*w+f*E+m*C+g*N,r[6]=p*_+f*T+m*R+g*I,r[10]=p*M+f*A+m*D+g*z,r[14]=p*S+f*L+m*P+g*B,r[3]=v*w+y*E+x*C+b*N,r[7]=v*_+y*T+x*R+b*I,r[11]=v*M+y*A+x*D+b*z,r[15]=v*S+y*L+x*P+b*B,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[4],n=t[8],r=t[12],s=t[1],a=t[5],o=t[9],l=t[13],c=t[2],h=t[6],u=t[10],d=t[14];return t[3]*(+r*o*h-n*l*h-r*a*u+i*l*u+n*a*d-i*o*d)+t[7]*(+e*o*d-e*l*u+r*s*u-n*s*d+n*l*c-r*o*c)+t[11]*(+e*l*h-e*a*d-r*s*h+i*s*d+r*a*c-i*l*c)+t[15]*(-n*a*c-e*o*h+e*a*u+n*s*h-i*s*u+i*o*c)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,i){const n=this.elements;return t.isVector3?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=i),this}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11],p=t[12],f=t[13],m=t[14],g=t[15],v=h*m*l-f*u*l+f*o*d-a*m*d-h*o*g+a*u*g,y=p*u*l-c*m*l-p*o*d+s*m*d+c*o*g-s*u*g,x=c*f*l-p*h*l+p*a*d-s*f*d-c*a*g+s*h*g,b=p*h*o-c*f*o-p*a*u+s*f*u+c*a*m-s*h*m,w=e*v+i*y+n*x+r*b;if(0===w)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const _=1/w;return t[0]=v*_,t[1]=(f*u*r-h*m*r-f*n*d+i*m*d+h*n*g-i*u*g)*_,t[2]=(a*m*r-f*o*r+f*n*l-i*m*l-a*n*g+i*o*g)*_,t[3]=(h*o*r-a*u*r-h*n*l+i*u*l+a*n*d-i*o*d)*_,t[4]=y*_,t[5]=(c*m*r-p*u*r+p*n*d-e*m*d-c*n*g+e*u*g)*_,t[6]=(p*o*r-s*m*r-p*n*l+e*m*l+s*n*g-e*o*g)*_,t[7]=(s*u*r-c*o*r+c*n*l-e*u*l-s*n*d+e*o*d)*_,t[8]=x*_,t[9]=(p*h*r-c*f*r-p*i*d+e*f*d+c*i*g-e*h*g)*_,t[10]=(s*f*r-p*a*r+p*i*l-e*f*l-s*i*g+e*a*g)*_,t[11]=(c*a*r-s*h*r-c*i*l+e*h*l+s*i*d-e*a*d)*_,t[12]=b*_,t[13]=(c*f*n-p*h*n+p*i*u-e*f*u-c*i*m+e*h*m)*_,t[14]=(p*a*n-s*f*n-p*i*o+e*f*o+s*i*m-e*a*m)*_,t[15]=(s*h*n-c*a*n+c*i*o-e*h*o-s*i*u+e*a*u)*_,this}scale(t){const e=this.elements,i=t.x,n=t.y,r=t.z;return e[0]*=i,e[4]*=n,e[8]*=r,e[1]*=i,e[5]*=n,e[9]*=r,e[2]*=i,e[6]*=n,e[10]*=r,e[3]*=i,e[7]*=n,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,i,n))}makeTranslation(t,e,i){return this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const i=Math.cos(e),n=Math.sin(e),r=1-i,s=t.x,a=t.y,o=t.z,l=r*s,c=r*a;return this.set(l*s+i,l*a-n*o,l*o+n*a,0,l*a+n*o,c*a+i,c*o-n*s,0,l*o-n*a,c*o+n*s,r*o*o+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,n,r,s){return this.set(1,i,r,0,t,1,s,0,e,n,1,0,0,0,0,1),this}compose(t,e,i){const n=this.elements,r=e._x,s=e._y,a=e._z,o=e._w,l=r+r,c=s+s,h=a+a,u=r*l,d=r*c,p=r*h,f=s*c,m=s*h,g=a*h,v=o*l,y=o*c,x=o*h,b=i.x,w=i.y,_=i.z;return n[0]=(1-(f+g))*b,n[1]=(d+x)*b,n[2]=(p-y)*b,n[3]=0,n[4]=(d-x)*w,n[5]=(1-(u+g))*w,n[6]=(m+v)*w,n[7]=0,n[8]=(p+y)*_,n[9]=(m-v)*_,n[10]=(1-(u+f))*_,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,i){const n=this.elements;let r=zi.set(n[0],n[1],n[2]).length();const s=zi.set(n[4],n[5],n[6]).length(),a=zi.set(n[8],n[9],n[10]).length();this.determinant()<0&&(r=-r),t.x=n[12],t.y=n[13],t.z=n[14],Bi.copy(this);const o=1/r,l=1/s,c=1/a;return Bi.elements[0]*=o,Bi.elements[1]*=o,Bi.elements[2]*=o,Bi.elements[4]*=l,Bi.elements[5]*=l,Bi.elements[6]*=l,Bi.elements[8]*=c,Bi.elements[9]*=c,Bi.elements[10]*=c,e.setFromRotationMatrix(Bi),i.x=r,i.y=s,i.z=a,this}makePerspective(t,e,i,n,r,s){void 0===s&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const a=this.elements,o=2*r/(e-t),l=2*r/(i-n),c=(e+t)/(e-t),h=(i+n)/(i-n),u=-(s+r)/(s-r),d=-2*s*r/(s-r);return a[0]=o,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=l,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=d,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(t,e,i,n,r,s){const a=this.elements,o=1/(e-t),l=1/(i-n),c=1/(s-r),h=(e+t)*o,u=(i+n)*l,d=(s+r)*c;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*c,a[14]=-d,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(t){const e=this.elements,i=t.elements;for(let t=0;t<16;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t,e=0){for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}}Ii.prototype.isMatrix4=!0;const zi=new ni,Bi=new Ii,ki=new ni(0,0,0),Fi=new ni(1,1,1),Oi=new ni,Ui=new ni,Hi=new ni,Vi=new Ii,qi=new ii;class Gi{constructor(t=0,e=0,i=0,n=Gi.DefaultOrder){this._x=t,this._y=e,this._z=i,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,i,n=this._order){return this._x=t,this._y=e,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,i=!0){const n=t.elements,r=n[0],s=n[4],a=n[8],o=n[1],l=n[5],c=n[9],h=n[2],u=n[6],d=n[10];switch(e){case"XYZ":this._y=Math.asin(Ve(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Ve(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(a,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(Ve(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-Ve(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(Ve(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-Ve(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===i&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return Vi.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Vi,e,i)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return qi.setFromEuler(this),this.setFromQuaternion(qi,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}toVector3(t){return t?t.set(this._x,this._y,this._z):new ni(this._x,this._y,this._z)}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}}Gi.prototype.isEuler=!0,Gi.DefaultOrder="XYZ",Gi.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];class Wi{constructor(){this.mask=1}set(t){this.mask=1<1){for(let t=0;t1){for(let t=0;t0){n.children=[];for(let e=0;e0){n.animations=[];for(let e=0;e0&&(i.geometries=e),n.length>0&&(i.materials=n),r.length>0&&(i.textures=r),a.length>0&&(i.images=a),o.length>0&&(i.shapes=o),l.length>0&&(i.skeletons=l),c.length>0&&(i.animations=c)}return i.object=n,i;function s(t){const e=[];for(const i in t){const n=t[i];delete n.metadata,e.push(n)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?n.multiplyScalar(1/Math.sqrt(r)):n.set(0,0,0)}static getBarycoord(t,e,i,n,r){on.subVectors(n,e),ln.subVectors(i,e),cn.subVectors(t,e);const s=on.dot(on),a=on.dot(ln),o=on.dot(cn),l=ln.dot(ln),c=ln.dot(cn),h=s*l-a*a;if(0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*o-a*c)*u,p=(s*c-a*o)*u;return r.set(1-d-p,p,d)}static containsPoint(t,e,i,n){return this.getBarycoord(t,e,i,n,hn),hn.x>=0&&hn.y>=0&&hn.x+hn.y<=1}static getUV(t,e,i,n,r,s,a,o){return this.getBarycoord(t,e,i,n,hn),o.set(0,0),o.addScaledVector(r,hn.x),o.addScaledVector(s,hn.y),o.addScaledVector(a,hn.z),o}static isFrontFacing(t,e,i,n){return on.subVectors(i,e),ln.subVectors(t,e),on.cross(ln).dot(n)<0}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,n){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[n]),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return on.subVectors(this.c,this.b),ln.subVectors(this.a,this.b),.5*on.cross(ln).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return vn.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return vn.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,i,n,r){return vn.getUV(t,this.a,this.b,this.c,e,i,n,r)}containsPoint(t){return vn.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return vn.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const i=this.a,n=this.b,r=this.c;let s,a;un.subVectors(n,i),dn.subVectors(r,i),fn.subVectors(t,i);const o=un.dot(fn),l=dn.dot(fn);if(o<=0&&l<=0)return e.copy(i);mn.subVectors(t,n);const c=un.dot(mn),h=dn.dot(mn);if(c>=0&&h<=c)return e.copy(n);const u=o*h-c*l;if(u<=0&&o>=0&&c<=0)return s=o/(o-c),e.copy(i).addScaledVector(un,s);gn.subVectors(t,r);const d=un.dot(gn),p=dn.dot(gn);if(p>=0&&d<=p)return e.copy(r);const f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return a=l/(l-p),e.copy(i).addScaledVector(dn,a);const m=c*p-d*h;if(m<=0&&h-c>=0&&d-p>=0)return pn.subVectors(r,n),a=(h-c)/(h-c+(d-p)),e.copy(n).addScaledVector(pn,a);const g=1/(m+f+u);return s=f*g,a=u*g,e.copy(i).addScaledVector(un,s).addScaledVector(dn,a)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}let yn=0;class xn extends ke{constructor(){super(),Object.defineProperty(this,"id",{value:yn++}),this.uuid=He(),this.name="",this.type="Material",this.fog=!0,this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.format=be,this.transparent=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=ne,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Ne,this.stencilZFail=Ne,this.stencilZPass=Ne,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const i=t[e];if(void 0===i){console.warn("THREE.Material: '"+e+"' parameter is undefined.");continue}if("shading"===e){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===i;continue}const n=this[e];void 0!==n?n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[e]=i:console.warn("THREE."+this.type+": '"+e+"' is not a property of this material.")}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function n(t){const e=[];for(const i in t){const n=t[i];delete n.metadata,e.push(n)}return e}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),this.sheenTint&&this.sheenTint.isColor&&(i.sheenTint=this.sheenTint.getHex()),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularTint&&this.specularTint.isColor&&(i.specularTint=this.specularTint.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularTintMap&&this.specularTintMap.isTexture&&(i.specularTintMap=this.specularTintMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationTint&&(i.attenuationTint=this.attenuationTint.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(i.blending=this.blending),0!==this.side&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.format!==be&&(i.format=this.format),!0===this.transparent&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(i.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=this.flatShading),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(i.userData=this.userData),e){const e=n(t.textures),r=n(t.images);e.length>0&&(i.textures=e),r.length>0&&(i.images=r)}return i}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.fog=t.fog,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.format=t.format,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let i=null;if(null!==e){const t=e.length;i=new Array(t);for(let n=0;n!==t;++n)i[n]=e[n].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}}xn.prototype.isMaterial=!0;const bn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},wn={h:0,s:0,l:0},_n={h:0,s:0,l:0};function Mn(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+6*(e-t)*(2/3-i):t}function Sn(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function En(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}class Tn{constructor(t,e,i){return void 0===e&&void 0===i?this.set(t):this.setRGB(t,e,i)}set(t){return t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,this}setRGB(t,e,i){return this.r=t,this.g=e,this.b=i,this}setHSL(t,e,i){if(t=(t%(n=1)+n)%n,e=Ve(e,0,1),i=Ve(i,0,1),0===e)this.r=this.g=this.b=i;else{const n=i<=.5?i*(1+e):i+e-i*e,r=2*i-n;this.r=Mn(r,n,t+1/3),this.g=Mn(r,n,t),this.b=Mn(r,n,t-1/3)}var n;return this}setStyle(t){function e(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(t)){let t;const n=i[1],r=i[2];switch(n){case"rgb":case"rgba":if(t=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,e(t[4]),this;if(t=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,e(t[4]),this;break;case"hsl":case"hsla":if(t=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r)){const i=parseFloat(t[1])/360,n=parseInt(t[2],10)/100,r=parseInt(t[3],10)/100;return e(t[4]),this.setHSL(i,n,r)}}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const t=i[1],e=t.length;if(3===e)return this.r=parseInt(t.charAt(0)+t.charAt(0),16)/255,this.g=parseInt(t.charAt(1)+t.charAt(1),16)/255,this.b=parseInt(t.charAt(2)+t.charAt(2),16)/255,this;if(6===e)return this.r=parseInt(t.charAt(0)+t.charAt(1),16)/255,this.g=parseInt(t.charAt(2)+t.charAt(3),16)/255,this.b=parseInt(t.charAt(4)+t.charAt(5),16)/255,this}return t&&t.length>0?this.setColorName(t):this}setColorName(t){const e=bn[t.toLowerCase()];return void 0!==e?this.setHex(e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copyGammaToLinear(t,e=2){return this.r=Math.pow(t.r,e),this.g=Math.pow(t.g,e),this.b=Math.pow(t.b,e),this}copyLinearToGamma(t,e=2){const i=e>0?1/e:1;return this.r=Math.pow(t.r,i),this.g=Math.pow(t.g,i),this.b=Math.pow(t.b,i),this}convertGammaToLinear(t){return this.copyGammaToLinear(this,t),this}convertLinearToGamma(t){return this.copyLinearToGamma(this,t),this}copySRGBToLinear(t){return this.r=Sn(t.r),this.g=Sn(t.g),this.b=Sn(t.b),this}copyLinearToSRGB(t){return this.r=En(t.r),this.g=En(t.g),this.b=En(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0}getHexString(){return("000000"+this.getHex().toString(16)).slice(-6)}getHSL(t){const e=this.r,i=this.g,n=this.b,r=Math.max(e,i,n),s=Math.min(e,i,n);let a,o;const l=(s+r)/2;if(s===r)a=0,o=0;else{const t=r-s;switch(o=l<=.5?t/(r+s):t/(2-r-s),r){case e:a=(i-n)/t+(ie&&(e=t[i]);return e}Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array;let zn=0;const Bn=new Ii,kn=new an,Fn=new ni,On=new ai,Un=new ai,Hn=new ni;class Vn extends ke{constructor(){super(),Object.defineProperty(this,"id",{value:zn++}),this.uuid=He(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(In(t)>65535?Pn:Dn)(t,1):this.index=t,this}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return void 0!==this.attributes[t]}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);const i=this.attributes.normal;if(void 0!==i){const e=(new Xe).getNormalMatrix(t);i.applyNormalMatrix(e),i.needsUpdate=!0}const n=this.attributes.tangent;return void 0!==n&&(n.transformDirection(t),n.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(t){return Bn.makeRotationFromQuaternion(t),this.applyMatrix4(Bn),this}rotateX(t){return Bn.makeRotationX(t),this.applyMatrix4(Bn),this}rotateY(t){return Bn.makeRotationY(t),this.applyMatrix4(Bn),this}rotateZ(t){return Bn.makeRotationZ(t),this.applyMatrix4(Bn),this}translate(t,e,i){return Bn.makeTranslation(t,e,i),this.applyMatrix4(Bn),this}scale(t,e,i){return Bn.makeScale(t,e,i),this.applyMatrix4(Bn),this}lookAt(t){return kn.lookAt(t),kn.updateMatrix(),this.applyMatrix4(kn.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Fn).negate(),this.translate(Fn.x,Fn.y,Fn.z),this}setFromPoints(t){const e=[];for(let i=0,n=t.length;i0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const i in e)void 0!==e[i]&&(t[i]=e[i]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const i=this.attributes;for(const e in i){const n=i[e];t.data.attributes[e]=n.toJSON(t.data)}const n={};let r=!1;for(const e in this.morphAttributes){const i=this.morphAttributes[e],s=[];for(let e=0,n=i.length;e0&&(n[e]=s,r=!0)}r&&(t.data.morphAttributes=n,t.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(t.data.groups=JSON.parse(JSON.stringify(s)));const a=this.boundingSphere;return null!==a&&(t.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),t}clone(){return(new Vn).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const i=t.index;null!==i&&this.setIndex(i.clone(e));const n=t.attributes;for(const t in n){const i=n[t];this.setAttribute(t,i.clone(e))}const r=t.morphAttributes;for(const t in r){const i=[],n=r[t];for(let t=0,r=n.length;t0){const t=e[i[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=t.length;e0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(t,e){const i=this.geometry,n=this.material,r=this.matrixWorld;if(void 0===n)return;if(null===i.boundingSphere&&i.computeBoundingSphere(),Wn.copy(i.boundingSphere),Wn.applyMatrix4(r),!1===t.ray.intersectsSphere(Wn))return;if(qn.copy(r).invert(),Gn.copy(t.ray).applyMatrix4(qn),null!==i.boundingBox&&!1===Gn.intersectsBox(i.boundingBox))return;let s;if(i.isBufferGeometry){const r=i.index,a=i.attributes.position,o=i.morphAttributes.position,l=i.morphTargetsRelative,c=i.attributes.uv,h=i.attributes.uv2,u=i.groups,d=i.drawRange;if(null!==r)if(Array.isArray(n))for(let i=0,p=u.length;ii.far?null:{distance:c,point:sr.clone(),object:t}}(t,e,i,n,jn,Xn,Yn,rr);if(p){o&&(er.fromBufferAttribute(o,c),ir.fromBufferAttribute(o,h),nr.fromBufferAttribute(o,u),p.uv=vn.getUV(rr,jn,Xn,Yn,er,ir,nr,new je)),l&&(er.fromBufferAttribute(l,c),ir.fromBufferAttribute(l,h),nr.fromBufferAttribute(l,u),p.uv2=vn.getUV(rr,jn,Xn,Yn,er,ir,nr,new je));const t={a:c,b:h,c:u,normal:new ni,materialIndex:0};vn.getNormal(jn,Xn,Yn,t.normal),p.face=t}return p}ar.prototype.isMesh=!0;class lr extends Vn{constructor(t=1,e=1,i=1,n=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:i,widthSegments:n,heightSegments:r,depthSegments:s};const a=this;n=Math.floor(n),r=Math.floor(r),s=Math.floor(s);const o=[],l=[],c=[],h=[];let u=0,d=0;function p(t,e,i,n,r,s,p,f,m,g,v){const y=s/m,x=p/g,b=s/2,w=p/2,_=f/2,M=m+1,S=g+1;let E=0,T=0;const A=new ni;for(let s=0;s0?1:-1,c.push(A.x,A.y,A.z),h.push(o/m),h.push(1-s/g),E+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;const i={};for(const t in this.extensions)!0===this.extensions[t]&&(i[t]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}}dr.prototype.isShaderMaterial=!0;class pr extends an{constructor(){super(),this.type="Camera",this.matrixWorldInverse=new Ii,this.projectionMatrix=new Ii,this.projectionMatrixInverse=new Ii}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}pr.prototype.isCamera=!0;class fr extends pr{constructor(t=50,e=1,i=.1,n=2e3){super(),this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*Ue*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*Oe*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*Ue*Math.atan(Math.tan(.5*Oe*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,i,n,r,s){this.aspect=t/e,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*Oe*this.fov)/this.zoom,i=2*e,n=this.aspect*i,r=-.5*n;const s=this.view;if(null!==this.view&&this.view.enabled){const t=s.fullWidth,a=s.fullHeight;r+=s.offsetX*n/t,e-=s.offsetY*i/a,n*=s.width/t,i*=s.height/a}const a=this.filmOffset;0!==a&&(r+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+n,e,e-i,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}fr.prototype.isPerspectiveCamera=!0;const mr=90;class gr extends an{constructor(t,e,i){if(super(),this.type="CubeCamera",!0!==i.isWebGLCubeRenderTarget)return void console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");this.renderTarget=i;const n=new fr(mr,1,t,e);n.layers=this.layers,n.up.set(0,-1,0),n.lookAt(new ni(1,0,0)),this.add(n);const r=new fr(mr,1,t,e);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new ni(-1,0,0)),this.add(r);const s=new fr(mr,1,t,e);s.layers=this.layers,s.up.set(0,0,1),s.lookAt(new ni(0,1,0)),this.add(s);const a=new fr(mr,1,t,e);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new ni(0,-1,0)),this.add(a);const o=new fr(mr,1,t,e);o.layers=this.layers,o.up.set(0,-1,0),o.lookAt(new ni(0,0,1)),this.add(o);const l=new fr(mr,1,t,e);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new ni(0,0,-1)),this.add(l)}update(t,e){null===this.parent&&this.updateMatrixWorld();const i=this.renderTarget,[n,r,s,a,o,l]=this.children,c=t.xr.enabled,h=t.getRenderTarget();t.xr.enabled=!1;const u=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,t.setRenderTarget(i,0),t.render(e,n),t.setRenderTarget(i,1),t.render(e,r),t.setRenderTarget(i,2),t.render(e,s),t.setRenderTarget(i,3),t.render(e,a),t.setRenderTarget(i,4),t.render(e,o),i.texture.generateMipmaps=u,t.setRenderTarget(i,5),t.render(e,l),t.setRenderTarget(h),t.xr.enabled=c}}class vr extends Qe{constructor(t,e,i,n,r,s,a,o,l,c){super(t=void 0!==t?t:[],e=void 0!==e?e:re,i,n,r,s,a=void 0!==a?a:xe,o,l,c),this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}vr.prototype.isCubeTexture=!0;class yr extends ti{constructor(t,e,i){Number.isInteger(e)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),e=i),super(t,t,e),e=e||{},this.texture=new vr(void 0,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:ue,this.texture._needsFlipEnvMap=!1}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.format=be,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const i={tEquirect:{value:null}},n="\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",r="\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t",s=new lr(5,5,5),a=new dr({name:"CubemapFromEquirect",uniforms:cr(i),vertexShader:n,fragmentShader:r,side:1,blending:0});a.uniforms.tEquirect.value=e;const o=new ar(s,a),l=e.minFilter;return e.minFilter===de&&(e.minFilter=ue),new gr(1,10,this).update(t,o),e.minFilter=l,o.geometry.dispose(),o.material.dispose(),this}clear(t,e,i,n){const r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,i,n);t.setRenderTarget(r)}}yr.prototype.isWebGLCubeRenderTarget=!0;const xr=new ni,br=new ni,wr=new Xe;class _r{constructor(t=new ni(1,0,0),e=0){this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,i){const n=xr.subVectors(i,e).cross(br.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){const i=t.delta(xr),n=this.normal.dot(i);if(0===n)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/n;return r<0||r>1?null:e.copy(i).multiplyScalar(r).add(t.start)}intersectsLine(t){const e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const i=e||wr.getNormalMatrix(t),n=this.coplanarPoint(xr).applyMatrix4(t),r=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}_r.prototype.isPlane=!0;const Mr=new Ei,Sr=new ni;class Er{constructor(t=new _r,e=new _r,i=new _r,n=new _r,r=new _r,s=new _r){this.planes=[t,e,i,n,r,s]}set(t,e,i,n,r,s){const a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(i),a[3].copy(n),a[4].copy(r),a[5].copy(s),this}copy(t){const e=this.planes;for(let i=0;i<6;i++)e[i].copy(t.planes[i]);return this}setFromProjectionMatrix(t){const e=this.planes,i=t.elements,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7],u=i[8],d=i[9],p=i[10],f=i[11],m=i[12],g=i[13],v=i[14],y=i[15];return e[0].setComponents(a-n,h-o,f-u,y-m).normalize(),e[1].setComponents(a+n,h+o,f+u,y+m).normalize(),e[2].setComponents(a+r,h+l,f+d,y+g).normalize(),e[3].setComponents(a-r,h-l,f-d,y-g).normalize(),e[4].setComponents(a-s,h-c,f-p,y-v).normalize(),e[5].setComponents(a+s,h+c,f+p,y+v).normalize(),this}intersectsObject(t){const e=t.geometry;return null===e.boundingSphere&&e.computeBoundingSphere(),Mr.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(Mr)}intersectsSprite(t){return Mr.center.set(0,0,0),Mr.radius=.7071067811865476,Mr.applyMatrix4(t.matrixWorld),this.intersectsSphere(Mr)}intersectsSphere(t){const e=this.planes,i=t.center,n=-t.radius;for(let t=0;t<6;t++)if(e[t].distanceToPoint(i)0?t.max.x:t.min.x,Sr.y=n.normal.y>0?t.max.y:t.min.y,Sr.z=n.normal.z>0?t.max.z:t.min.z,n.distanceToPoint(Sr)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let i=0;i<6;i++)if(e[i].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function Tr(){let t=null,e=!1,i=null,n=null;function r(e,s){i(e,s),n=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==i&&(n=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(t){i=t},setContext:function(e){t=e}}}function Ar(t,e){const i=e.isWebGL2,n=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),n.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);const i=n.get(e);i&&(t.deleteBuffer(i.buffer),n.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){const t=n.get(e);return void((!t||t.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotVH = saturate( dot( geometry.viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float NoH ) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float NoV, float NoL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( NoL + NoV - NoL * NoV ) ) );\n}\nvec3 BRDF_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_maxMipLevel 8.0\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_maxTileSize 256.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\n\t\tvec2 f = fract( uv );\n\t\tuv += 0.5 - f;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\n\t\t}\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\n\t\tuv *= texelSize;\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x += texelSize;\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.y += texelSize;\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x -= texelSize;\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tvec3 tm = mix( tl, tr, f.x );\n\t\tvec3 bm = mix( bl, br, f.x );\n\t\treturn mix( tm, bm, f.y );\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getIBLIrradiance( const in GeometricContext geometry ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec;\n\t\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\t\treflectVec = reflect( - viewDir, normal );\n\t\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\t#else\n\t\t\t\treflectVec = refract( - viewDir, normal, refractionRatio );\n\t\t\t#endif\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tlightMapIrradiance *= PI;\n\t#endif\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularTintFactor = specularTint;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARTINTMAP\n\t\t\tspecularTintFactor *= specularTintMapTexelToLinear( texture2D( specularTintMap, vUv ) ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularTintFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularTintFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenTint = sheenTint;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenTint;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += irradiance * BRDF_Sheen( material.roughness, directLight.direction, geometry, material.sheenTint );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\t\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\t\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",output_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tfloat transmissionAlpha = 1.0;\n\tfloat transmissionFactor = transmission;\n\tfloat thicknessFactor = thickness;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\n\t\tattenuationTint, attenuationDistance );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\n\ttransmissionAlpha = transmission.a;\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationTint;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( float roughness, float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\n\t\tif ( attenuationDistance == 0.0 ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\n\t\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\n\t\tvec3 attenuationColor, float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularTint;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARTINTMAP\n\t\tuniform sampler2D specularTintMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenTint;\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"},Rr={common:{diffuse:{value:new Tn(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new Xe},uv2Transform:{value:new Xe},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new je(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Tn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Tn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Xe}},sprite:{diffuse:{value:new Tn(16777215)},opacity:{value:1},center:{value:new je(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Xe}}},Dr={basic:{uniforms:hr([Rr.common,Rr.specularmap,Rr.envmap,Rr.aomap,Rr.lightmap,Rr.fog]),vertexShader:Cr.meshbasic_vert,fragmentShader:Cr.meshbasic_frag},lambert:{uniforms:hr([Rr.common,Rr.specularmap,Rr.envmap,Rr.aomap,Rr.lightmap,Rr.emissivemap,Rr.fog,Rr.lights,{emissive:{value:new Tn(0)}}]),vertexShader:Cr.meshlambert_vert,fragmentShader:Cr.meshlambert_frag},phong:{uniforms:hr([Rr.common,Rr.specularmap,Rr.envmap,Rr.aomap,Rr.lightmap,Rr.emissivemap,Rr.bumpmap,Rr.normalmap,Rr.displacementmap,Rr.fog,Rr.lights,{emissive:{value:new Tn(0)},specular:{value:new Tn(1118481)},shininess:{value:30}}]),vertexShader:Cr.meshphong_vert,fragmentShader:Cr.meshphong_frag},standard:{uniforms:hr([Rr.common,Rr.envmap,Rr.aomap,Rr.lightmap,Rr.emissivemap,Rr.bumpmap,Rr.normalmap,Rr.displacementmap,Rr.roughnessmap,Rr.metalnessmap,Rr.fog,Rr.lights,{emissive:{value:new Tn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Cr.meshphysical_vert,fragmentShader:Cr.meshphysical_frag},toon:{uniforms:hr([Rr.common,Rr.aomap,Rr.lightmap,Rr.emissivemap,Rr.bumpmap,Rr.normalmap,Rr.displacementmap,Rr.gradientmap,Rr.fog,Rr.lights,{emissive:{value:new Tn(0)}}]),vertexShader:Cr.meshtoon_vert,fragmentShader:Cr.meshtoon_frag},matcap:{uniforms:hr([Rr.common,Rr.bumpmap,Rr.normalmap,Rr.displacementmap,Rr.fog,{matcap:{value:null}}]),vertexShader:Cr.meshmatcap_vert,fragmentShader:Cr.meshmatcap_frag},points:{uniforms:hr([Rr.points,Rr.fog]),vertexShader:Cr.points_vert,fragmentShader:Cr.points_frag},dashed:{uniforms:hr([Rr.common,Rr.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Cr.linedashed_vert,fragmentShader:Cr.linedashed_frag},depth:{uniforms:hr([Rr.common,Rr.displacementmap]),vertexShader:Cr.depth_vert,fragmentShader:Cr.depth_frag},normal:{uniforms:hr([Rr.common,Rr.bumpmap,Rr.normalmap,Rr.displacementmap,{opacity:{value:1}}]),vertexShader:Cr.meshnormal_vert,fragmentShader:Cr.meshnormal_frag},sprite:{uniforms:hr([Rr.sprite,Rr.fog]),vertexShader:Cr.sprite_vert,fragmentShader:Cr.sprite_frag},background:{uniforms:{uvTransform:{value:new Xe},t2D:{value:null}},vertexShader:Cr.background_vert,fragmentShader:Cr.background_frag},cube:{uniforms:hr([Rr.envmap,{opacity:{value:1}}]),vertexShader:Cr.cube_vert,fragmentShader:Cr.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Cr.equirect_vert,fragmentShader:Cr.equirect_frag},distanceRGBA:{uniforms:hr([Rr.common,Rr.displacementmap,{referencePosition:{value:new ni},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Cr.distanceRGBA_vert,fragmentShader:Cr.distanceRGBA_frag},shadow:{uniforms:hr([Rr.lights,Rr.fog,{color:{value:new Tn(0)},opacity:{value:1}}]),vertexShader:Cr.shadow_vert,fragmentShader:Cr.shadow_frag}};function Pr(t,e,i,n,r){const s=new Tn(0);let a,o,l=0,c=null,h=0,u=null;function d(t,e){i.buffers.color.setClear(t.r,t.g,t.b,e,r)}return{getClearColor:function(){return s},setClearColor:function(t,e=1){s.set(t),l=e,d(s,l)},getClearAlpha:function(){return l},setClearAlpha:function(t){l=t,d(s,l)},render:function(i,r){let p=!1,f=!0===r.isScene?r.background:null;f&&f.isTexture&&(f=e.get(f));const m=t.xr,g=m.getSession&&m.getSession();g&&"additive"===g.environmentBlendMode&&(f=null),null===f?d(s,l):f&&f.isColor&&(d(f,1),p=!0),(t.autoClear||p)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),f&&(f.isCubeTexture||f.mapping===ae)?(void 0===o&&(o=new ar(new lr(1,1,1),new dr({name:"BackgroundCubeMaterial",uniforms:cr(Dr.cube.uniforms),vertexShader:Dr.cube.vertexShader,fragmentShader:Dr.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),o.geometry.deleteAttribute("normal"),o.geometry.deleteAttribute("uv"),o.onBeforeRender=function(t,e,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(o.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(o)),o.material.uniforms.envMap.value=f,o.material.uniforms.flipEnvMap.value=f.isCubeTexture&&!1===f.isRenderTargetTexture?-1:1,c===f&&h===f.version&&u===t.toneMapping||(o.material.needsUpdate=!0,c=f,h=f.version,u=t.toneMapping),i.unshift(o,o.geometry,o.material,0,0,null)):f&&f.isTexture&&(void 0===a&&(a=new ar(new Lr(2,2),new dr({name:"BackgroundMaterial",uniforms:cr(Dr.background.uniforms),vertexShader:Dr.background.vertexShader,fragmentShader:Dr.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),a.geometry.deleteAttribute("normal"),Object.defineProperty(a.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(a)),a.material.uniforms.t2D.value=f,!0===f.matrixAutoUpdate&&f.updateMatrix(),a.material.uniforms.uvTransform.value.copy(f.matrix),c===f&&h===f.version&&u===t.toneMapping||(a.material.needsUpdate=!0,c=f,h=f.version,u=t.toneMapping),i.unshift(a,a.geometry,a.material,0,0,null))}}}function Nr(t,e,i,n){const r=t.getParameter(34921),s=n.isWebGL2?null:e.get("OES_vertex_array_object"),a=n.isWebGL2||null!==s,o={},l=d(null);let c=l;function h(e){return n.isWebGL2?t.bindVertexArray(e):s.bindVertexArrayOES(e)}function u(e){return n.isWebGL2?t.deleteVertexArray(e):s.deleteVertexArrayOES(e)}function d(t){const e=[],i=[],n=[];for(let t=0;t=0){let s=l[e];if(void 0===s&&("instanceMatrix"===e&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===e&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const e=s.normalized,a=s.itemSize,l=i.get(s);if(void 0===l)continue;const c=l.buffer,h=l.type,u=l.bytesPerElement;if(s.isInterleavedBufferAttribute){const i=s.data,l=i.stride,d=s.offset;if(i&&i.isInstancedInterleavedBuffer){for(let t=0;t0&&t.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(35633,36337).precision>0&&t.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const s="undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&t instanceof WebGL2ComputeRenderingContext;let a=void 0!==i.precision?i.precision:"highp";const o=r(a);o!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",o,"instead."),a=o);const l=s||e.has("WEBGL_draw_buffers"),c=!0===i.logarithmicDepthBuffer,h=t.getParameter(34930),u=t.getParameter(35660),d=t.getParameter(3379),p=t.getParameter(34076),f=t.getParameter(34921),m=t.getParameter(36347),g=t.getParameter(36348),v=t.getParameter(36349),y=u>0,x=s||e.has("OES_texture_float");return{isWebGL2:s,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==n)return n;if(!0===e.has("EXT_texture_filter_anisotropic")){const i=e.get("EXT_texture_filter_anisotropic");n=t.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n},getMaxPrecision:r,precision:a,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:u,maxTextureSize:d,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:v,vertexTextures:y,floatFragmentTextures:x,floatVertexTextures:y&&x,maxSamples:s?t.getParameter(36183):0}}function Br(t){const e=this;let i=null,n=0,r=!1,s=!1;const a=new _r,o=new Xe,l={value:null,needsUpdate:!1};function c(){l.value!==i&&(l.value=i,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(t,i,n,r){const s=null!==t?t.length:0;let c=null;if(0!==s){if(c=l.value,!0!==r||null===c){const e=n+4*s,r=i.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0){const a=t.getRenderTarget(),o=new yr(s.height/2);return o.fromEquirectangularTexture(t,r),e.set(r,o),t.setRenderTarget(a),r.addEventListener("dispose",n),i(o.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}Dr.physical={uniforms:hr([Dr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new je(1,1)},clearcoatNormalMap:{value:null},sheenTint:{value:new Tn(0)},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new je},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationTint:{value:new Tn(0)},specularIntensity:{value:0},specularIntensityMap:{value:null},specularTint:{value:new Tn(1,1,1)},specularTintMap:{value:null}}]),vertexShader:Cr.meshphysical_vert,fragmentShader:Cr.meshphysical_frag};class Fr extends pr{constructor(t=-1,e=1,i=1,n=-1,r=.1,s=2e3){super(),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=i,this.bottom=n,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,i,n,r,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let r=i-t,s=i+t,a=n+e,o=n-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,s=r+t*this.view.width,a-=e*this.view.offsetY,o=a-e*this.view.height}this.projectionMatrix.makeOrthographic(r,s,a,o,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}Fr.prototype.isOrthographicCamera=!0;class Or extends dr{constructor(t){super(t),this.type="RawShaderMaterial"}}Or.prototype.isRawShaderMaterial=!0;const Ur=Math.pow(2,8),Hr=[.125,.215,.35,.446,.526,.582],Vr=5+Hr.length,qr={[Ce]:0,[Re]:1,[Pe]:2,3004:3,3005:4,3006:5,[De]:6},Gr=new Fr,{_lodPlanes:Wr,_sizeLods:jr,_sigmas:Xr}=es(),Yr=new Tn;let Zr=null;const Jr=(1+Math.sqrt(5))/2,Qr=1/Jr,Kr=[new ni(1,1,1),new ni(-1,1,1),new ni(1,1,-1),new ni(-1,1,-1),new ni(0,Jr,Qr),new ni(0,Jr,-Qr),new ni(Qr,0,Jr),new ni(-Qr,0,Jr),new ni(Jr,Qr,0),new ni(-Jr,Qr,0)];class $r{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._blurMaterial=function(t){const e=new Float32Array(20),i=new ni(0,1,0);return new Or({name:"SphericalGaussianBlur",defines:{n:20},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:e},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i},inputEncoding:{value:qr[3e3]},outputEncoding:{value:qr[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}(),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,i=.1,n=100){Zr=this._renderer.getRenderTarget();const r=this._allocateTargets();return this._sceneToCubeUV(t,i,n,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t){return this._fromTexture(t)}fromCubemap(t){return this._fromTexture(t)}compileCubemapShader(){null===this._cubemapShader&&(this._cubemapShader=ss(),this._compileMaterial(this._cubemapShader))}compileEquirectangularShader(){null===this._equirectShader&&(this._equirectShader=rs(),this._compileMaterial(this._equirectShader))}dispose(){this._blurMaterial.dispose(),null!==this._cubemapShader&&this._cubemapShader.dispose(),null!==this._equirectShader&&this._equirectShader.dispose();for(let t=0;t2?Ur:0,Ur,Ur),o.setRenderTarget(n),p&&o.render(d,r),o.render(t,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=h,o.outputEncoding=c,o.autoClear=l,t.background=f}_textureToCubeUV(t,e){const i=this._renderer;t.isCubeTexture?null==this._cubemapShader&&(this._cubemapShader=ss()):null==this._equirectShader&&(this._equirectShader=rs());const n=t.isCubeTexture?this._cubemapShader:this._equirectShader,r=new ar(Wr[0],n),s=n.uniforms;s.envMap.value=t,t.isCubeTexture||s.texelSize.value.set(1/t.image.width,1/t.image.height),s.inputEncoding.value=qr[t.encoding],s.outputEncoding.value=qr[e.texture.encoding],ns(e,0,0,3*Ur,2*Ur),i.setRenderTarget(e),i.render(r,Gr)}_applyPMREM(t){const e=this._renderer,i=e.autoClear;e.autoClear=!1;for(let e=1;e20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);const m=[];let g=0;for(let t=0;t<20;++t){const e=t/p,i=Math.exp(-e*e/2);m.push(i),0==t?g+=i:t4?n-8+4:0),3*v,2*v),o.setRenderTarget(e),o.render(c,Gr)}}function ts(t){return void 0!==t&&t.type===pe&&(t.encoding===Ce||t.encoding===Re||t.encoding===De)}function es(){const t=[],e=[],i=[];let n=8;for(let r=0;r4?a=Hr[r-8+4-1]:0==r&&(a=0),i.push(a);const o=1/(s-1),l=-o/2,c=1+o/2,h=[l,l,c,l,c,c,l,l,c,c,l,c],u=6,d=6,p=3,f=2,m=1,g=new Float32Array(p*d*u),v=new Float32Array(f*d*u),y=new Float32Array(m*d*u);for(let t=0;t2?0:-1,n=[e,i,0,e+2/3,i,0,e+2/3,i+1,0,e,i,0,e+2/3,i+1,0,e,i+1,0];g.set(n,p*d*t),v.set(h,f*d*t);const r=[t,t,t,t,t,t];y.set(r,m*d*t)}const x=new Vn;x.setAttribute("position",new Rn(g,p)),x.setAttribute("uv",new Rn(v,f)),x.setAttribute("faceIndex",new Rn(y,m)),t.push(x),n>4&&n--}return{_lodPlanes:t,_sizeLods:e,_sigmas:i}}function is(t){const e=new ti(3*Ur,3*Ur,t);return e.texture.mapping=ae,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function ns(t,e,i,n,r){t.viewport.set(e,i,n,r),t.scissor.set(e,i,n,r)}function rs(){const t=new je(1,1);return new Or({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:t},inputEncoding:{value:qr[3e3]},outputEncoding:{value:qr[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function ss(){return new Or({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},inputEncoding:{value:qr[3e3]},outputEncoding:{value:qr[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function as(t){let e=new WeakMap,i=null;function n(t){const i=t.target;i.removeEventListener("dispose",n);const r=e.get(i);void 0!==r&&(e.delete(i),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const s=r.mapping,a=303===s||304===s,o=s===re||s===se;if(a||o){if(e.has(r))return e.get(r).texture;{const s=r.image;if(a&&s&&s.height>0||o&&s&&function(t){let e=0;for(let i=0;i<6;i++)void 0!==t[i]&&e++;return 6===e}(s)){const s=t.getRenderTarget();null===i&&(i=new $r(t));const o=a?i.fromEquirectangular(r):i.fromCubemap(r);return e.set(r,o),t.setRenderTarget(s),r.addEventListener("dispose",n),o.texture}return null}}}return r},dispose:function(){e=new WeakMap,null!==i&&(i.dispose(),i=null)}}}function os(t){const e={};function i(i){if(void 0!==e[i])return e[i];let n;switch(i){case"WEBGL_depth_texture":n=t.getExtension("WEBGL_depth_texture")||t.getExtension("MOZ_WEBGL_depth_texture")||t.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=t.getExtension("WEBGL_compressed_texture_s3tc")||t.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:n=t.getExtension(i)}return e[i]=n,n}return{has:function(t){return null!==i(t)},init:function(t){t.isWebGL2?i("EXT_color_buffer_float"):(i("WEBGL_depth_texture"),i("OES_texture_float"),i("OES_texture_half_float"),i("OES_texture_half_float_linear"),i("OES_standard_derivatives"),i("OES_element_index_uint"),i("OES_vertex_array_object"),i("ANGLE_instanced_arrays")),i("OES_texture_float_linear"),i("EXT_color_buffer_half_float")},get:function(t){const e=i(t);return null===e&&console.warn("THREE.WebGLRenderer: "+t+" extension not supported."),e}}}function ls(t,e,i,n){const r={},s=new WeakMap;function a(t){const o=t.target;null!==o.index&&e.remove(o.index);for(const t in o.attributes)e.remove(o.attributes[t]);o.removeEventListener("dispose",a),delete r[o.id];const l=s.get(o);l&&(e.remove(l),s.delete(o)),n.releaseStatesOfGeometry(o),!0===o.isInstancedBufferGeometry&&delete o._maxInstanceCount,i.memory.geometries--}function o(t){const i=[],n=t.index,r=t.attributes.position;let a=0;if(null!==n){const t=n.array;a=n.version;for(let e=0,n=t.length;e65535?Pn:Dn)(i,1);o.version=a;const l=s.get(t);l&&e.remove(l),s.set(t,o)}return{get:function(t,e){return!0===r[e.id]||(e.addEventListener("dispose",a),r[e.id]=!0,i.memory.geometries++),e},update:function(t){const i=t.attributes;for(const t in i)e.update(i[t],34962);const n=t.morphAttributes;for(const t in n){const i=n[t];for(let t=0,n=i.length;t0)return t;const r=e*i;let s=ws[r];if(void 0===s&&(s=new Float32Array(r),ws[r]=s),0!==e){n.toArray(s,0);for(let n=1,r=0;n!==e;++n)r+=i,t[n].toArray(s,r)}return s}function As(t,e){if(t.length!==e.length)return!1;for(let i=0,n=t.length;i/gm;function Ra(t){return t.replace(Ca,Da)}function Da(t,e){const i=Cr[e];if(void 0===i)throw new Error("Can not resolve #include <"+e+">");return Ra(i)}const Pa=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,Na=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ia(t){return t.replace(Na,Ba).replace(Pa,za)}function za(t,e,i,n){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),Ba(0,e,i,n)}function Ba(t,e,i,n){let r="";for(let t=parseInt(e);t0?t.gammaFactor:1,p=i.isWebGL2?"":function(t){return[t.extensionDerivatives||t.envMapCubeUV||t.bumpMap||t.tangentSpaceNormalMap||t.clearcoatNormalMap||t.flatShading||"physical"===t.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(t.extensionFragDepth||t.logarithmicDepthBuffer)&&t.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",t.extensionDrawBuffers&&t.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(t.extensionShaderTextureLOD||t.envMap||t.transmission)&&t.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Ta).join("\n")}(i),f=function(t){const e=[];for(const i in t){const n=t[i];!1!==n&&e.push("#define "+i+" "+n)}return e.join("\n")}(s),m=r.createProgram();let g,v,y=i.glslVersion?"#version "+i.glslVersion+"\n":"";i.isRawShaderMaterial?(g=[f].filter(Ta).join("\n"),g.length>0&&(g+="\n"),v=[p,f].filter(Ta).join("\n"),v.length>0&&(v+="\n")):(g=[ka(i),"#define SHADER_NAME "+i.shaderName,f,i.instancing?"#define USE_INSTANCING":"",i.instancingColor?"#define USE_INSTANCING_COLOR":"",i.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+d,"#define MAX_BONES "+i.maxBones,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+h:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularTintMap?"#define USE_SPECULARTINTMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.useVertexTexture?"#define BONE_TEXTURE":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Ta).join("\n"),v=[p,ka(i),"#define SHADER_NAME "+i.shaderName,f,"#define GAMMA_FACTOR "+d,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.matcap?"#define USE_MATCAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+c:"",i.envMap?"#define "+h:"",i.envMap?"#define "+u:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoat?"#define USE_CLEARCOAT":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularTintMap?"#define USE_SPECULARTINTMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.alphaTest?"#define USE_ALPHATEST":"",i.sheenTint?"#define USE_SHEEN":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors||i.instancingColor?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(i.extensionShaderTextureLOD||i.envMap)&&i.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==i.toneMapping?"#define TONE_MAPPING":"",0!==i.toneMapping?Cr.tonemapping_pars_fragment:"",0!==i.toneMapping?Ea("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.format===xe?"#define OPAQUE":"",Cr.encodings_pars_fragment,i.map?Ma("mapTexelToLinear",i.mapEncoding):"",i.matcap?Ma("matcapTexelToLinear",i.matcapEncoding):"",i.envMap?Ma("envMapTexelToLinear",i.envMapEncoding):"",i.emissiveMap?Ma("emissiveMapTexelToLinear",i.emissiveMapEncoding):"",i.specularTintMap?Ma("specularTintMapTexelToLinear",i.specularTintMapEncoding):"",i.lightMap?Ma("lightMapTexelToLinear",i.lightMapEncoding):"",Sa("linearToOutputTexel",i.outputEncoding),i.depthPacking?"#define DEPTH_PACKING "+i.depthPacking:"","\n"].filter(Ta).join("\n")),a=Ra(a),a=Aa(a,i),a=La(a,i),o=Ra(o),o=Aa(o,i),o=La(o,i),a=Ia(a),o=Ia(o),i.isWebGL2&&!0!==i.isRawShaderMaterial&&(y="#version 300 es\n",g=["#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+g,v=["#define varying in",i.glslVersion===Be?"":"out highp vec4 pc_fragColor;",i.glslVersion===Be?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+v);const x=y+v+o,b=xa(r,35633,y+g+a),w=xa(r,35632,x);if(r.attachShader(m,b),r.attachShader(m,w),void 0!==i.index0AttributeName?r.bindAttribLocation(m,0,i.index0AttributeName):!0===i.morphTargets&&r.bindAttribLocation(m,0,"position"),r.linkProgram(m),t.debug.checkShaderErrors){const t=r.getProgramInfoLog(m).trim(),e=r.getShaderInfoLog(b).trim(),i=r.getShaderInfoLog(w).trim();let n=!0,s=!0;if(!1===r.getProgramParameter(m,35714)){n=!1;const e=_a(r,b,"vertex"),i=_a(r,w,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(m,35715)+"\n\nProgram Info Log: "+t+"\n"+e+"\n"+i)}else""!==t?console.warn("THREE.WebGLProgram: Program Info Log:",t):""!==e&&""!==i||(s=!1);s&&(this.diagnostics={runnable:n,programLog:t,vertexShader:{log:e,prefix:g},fragmentShader:{log:i,prefix:v}})}let _,M;return r.deleteShader(b),r.deleteShader(w),this.getUniforms=function(){return void 0===_&&(_=new ya(r,m)),_},this.getAttributes=function(){return void 0===M&&(M=function(t,e){const i={},n=t.getProgramParameter(e,35721);for(let r=0;r0,L=s.clearcoat>0;return{isWebGL2:l,shaderID:_,shaderName:s.type,vertexShader:S,fragmentShader:E,defines:s.defines,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:p,instancing:!0===y.isInstancedMesh,instancingColor:!0===y.isInstancedMesh&&null!==y.instanceColor,supportsVertexTextures:d,outputEncoding:null!==T?g(T.texture):t.outputEncoding,map:!!s.map,mapEncoding:g(s.map),matcap:!!s.matcap,matcapEncoding:g(s.matcap),envMap:!!w,envMapMode:w&&w.mapping,envMapEncoding:g(w),envMapCubeUV:!!w&&(w.mapping===ae||307===w.mapping),lightMap:!!s.lightMap,lightMapEncoding:g(s.lightMap),aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,emissiveMapEncoding:g(s.emissiveMap),bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:1===s.normalMapType,tangentSpaceNormalMap:0===s.normalMapType,clearcoat:L,clearcoatMap:L&&!!s.clearcoatMap,clearcoatRoughnessMap:L&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:L&&!!s.clearcoatNormalMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularTintMap:!!s.specularTintMap,specularTintMapEncoding:g(s.specularTintMap),alphaMap:!!s.alphaMap,alphaTest:A,gradientMap:!!s.gradientMap,sheenTint:!!s.sheenTint&&(s.sheenTint.r>0||s.sheenTint.g>0||s.sheenTint.b>0),transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!y.geometry&&!!y.geometry.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!y.geometry&&!!y.geometry.attributes.color&&4===y.geometry.attributes.color.itemSize,vertexUvs:!!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatMap||s.clearcoatRoughnessMap||s.clearcoatNormalMap||s.displacementMap||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularTintMap),uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularTintMap||!s.displacementMap),fog:!!x,useFog:s.fog,fogExp2:x&&x.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:c,skinning:!0===y.isSkinnedMesh&&M>0,maxBones:M,useVertexTexture:h,morphTargets:!!y.geometry&&!!y.geometry.morphAttributes.position,morphNormals:!!y.geometry&&!!y.geometry.morphAttributes.normal,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,format:s.format,dithering:s.dithering,shadowMapEnabled:t.shadowMap.enabled&&m.length>0,shadowMapType:t.shadowMap.type,toneMapping:s.toneMapped?t.toneMapping:0,physicallyCorrectLights:t.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:2===s.side,flipSided:1===s.side,depthPacking:void 0!==s.depthPacking&&s.depthPacking,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:l||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:l||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:l||n.has("EXT_shader_texture_lod"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function(e){const i=[];if(e.shaderID?i.push(e.shaderID):(i.push(e.fragmentShader),i.push(e.vertexShader)),void 0!==e.defines)for(const t in e.defines)i.push(t),i.push(e.defines[t]);if(!1===e.isRawShaderMaterial){for(let t=0;t0?r.push(h):!0===i.transparent?s.push(h):n.push(h)},unshift:function(t,e,i,a,l,c){const h=o(t,e,i,a,l,c);i.transmission>0?r.unshift(h):!0===i.transparent?s.unshift(h):n.unshift(h)},finish:function(){for(let t=i,n=e.length;t1&&n.sort(t||Ha),r.length>1&&r.sort(e||Va),s.length>1&&s.sort(e||Va)}}}function Ga(t){let e=new WeakMap;return{get:function(i,n){let r;return!1===e.has(i)?(r=new qa(t),e.set(i,[r])):n>=e.get(i).length?(r=new qa(t),e.get(i).push(r)):r=e.get(i)[n],r},dispose:function(){e=new WeakMap}}}function Wa(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let i;switch(e.type){case"DirectionalLight":i={direction:new ni,color:new Tn};break;case"SpotLight":i={position:new ni,direction:new ni,color:new Tn,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new ni,color:new Tn,distance:0,decay:0};break;case"HemisphereLight":i={direction:new ni,skyColor:new Tn,groundColor:new Tn};break;case"RectAreaLight":i={color:new Tn,position:new ni,halfWidth:new ni,halfHeight:new ni}}return t[e.id]=i,i}}}let ja=0;function Xa(t,e){return(e.castShadow?1:0)-(t.castShadow?1:0)}function Ya(t,e){const i=new Wa,n=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let i;switch(e.type){case"DirectionalLight":case"SpotLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new je};break;case"PointLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new je,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=i,i}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let t=0;t<9;t++)r.probe.push(new ni);const s=new ni,a=new Ii,o=new Ii;return{setup:function(s,a){let o=0,l=0,c=0;for(let t=0;t<9;t++)r.probe[t].set(0,0,0);let h=0,u=0,d=0,p=0,f=0,m=0,g=0,v=0;s.sort(Xa);const y=!0!==a?Math.PI:1;for(let t=0,e=s.length;t0&&(e.isWebGL2||!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=Rr.LTC_FLOAT_1,r.rectAreaLTC2=Rr.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=Rr.LTC_HALF_1,r.rectAreaLTC2=Rr.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const x=r.hash;x.directionalLength===h&&x.pointLength===u&&x.spotLength===d&&x.rectAreaLength===p&&x.hemiLength===f&&x.numDirectionalShadows===m&&x.numPointShadows===g&&x.numSpotShadows===v||(r.directional.length=h,r.spot.length=d,r.rectArea.length=p,r.point.length=u,r.hemi.length=f,r.directionalShadow.length=m,r.directionalShadowMap.length=m,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=v,r.spotShadowMap.length=v,r.directionalShadowMatrix.length=m,r.pointShadowMatrix.length=g,r.spotShadowMatrix.length=v,x.directionalLength=h,x.pointLength=u,x.spotLength=d,x.rectAreaLength=p,x.hemiLength=f,x.numDirectionalShadows=m,x.numPointShadows=g,x.numSpotShadows=v,r.version=ja++)},setupView:function(t,e){let i=0,n=0,l=0,c=0,h=0;const u=e.matrixWorldInverse;for(let e=0,d=t.length;e=i.get(n).length?(s=new Za(t,e),i.get(n).push(s)):s=i.get(n)[r],s},dispose:function(){i=new WeakMap}}}class Qa extends xn{constructor(t){super(),this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}Qa.prototype.isMeshDepthMaterial=!0;class Ka extends xn{constructor(t){super(),this.type="MeshDistanceMaterial",this.referencePosition=new ni,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}function $a(t,e,i){let n=new Er;const r=new je,s=new je,a=new $e,o=new Qa({depthPacking:3201}),l=new Ka,c={},h=i.maxTextureSize,u={0:1,1:0,2:2},d=new dr({uniforms:{shadow_pass:{value:null},resolution:{value:new je},radius:{value:4},samples:{value:8}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\nuniform float samples;\n#include \nvoid main() {\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),p=d.clone();p.defines.HORIZONTAL_PASS=1;const f=new Vn;f.setAttribute("position",new Rn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const m=new ar(f,d),g=this;function v(i,n){const r=e.update(m);d.uniforms.shadow_pass.value=i.map.texture,d.uniforms.resolution.value=i.mapSize,d.uniforms.radius.value=i.radius,d.uniforms.samples.value=i.blurSamples,t.setRenderTarget(i.mapPass),t.clear(),t.renderBufferDirect(n,null,r,d,m,null),p.uniforms.shadow_pass.value=i.mapPass.texture,p.uniforms.resolution.value=i.mapSize,p.uniforms.radius.value=i.radius,p.uniforms.samples.value=i.blurSamples,t.setRenderTarget(i.map),t.clear(),t.renderBufferDirect(n,null,r,p,m,null)}function y(e,i,n,r,s,a,h){let d=null;const p=!0===r.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(d=void 0!==p?p:!0===r.isPointLight?l:o,t.localClippingEnabled&&!0===n.clipShadows&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0){const t=d.uuid,e=n.uuid;let i=c[t];void 0===i&&(i={},c[t]=i);let r=i[e];void 0===r&&(r=d.clone(),i[e]=r),d=r}return d.visible=n.visible,d.wireframe=n.wireframe,d.side=3===h?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:u[n.side],d.alphaMap=n.alphaMap,d.alphaTest=n.alphaTest,d.clipShadows=n.clipShadows,d.clippingPlanes=n.clippingPlanes,d.clipIntersection=n.clipIntersection,d.displacementMap=n.displacementMap,d.displacementScale=n.displacementScale,d.displacementBias=n.displacementBias,d.wireframeLinewidth=n.wireframeLinewidth,d.linewidth=n.linewidth,!0===r.isPointLight&&!0===d.isMeshDistanceMaterial&&(d.referencePosition.setFromMatrixPosition(r.matrixWorld),d.nearDistance=s,d.farDistance=a),d}function x(i,r,s,a,o){if(!1===i.visible)return;if(i.layers.test(r.layers)&&(i.isMesh||i.isLine||i.isPoints)&&(i.castShadow||i.receiveShadow&&3===o)&&(!i.frustumCulled||n.intersectsObject(i))){i.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,i.matrixWorld);const n=e.update(i),r=i.material;if(Array.isArray(r)){const e=n.groups;for(let l=0,c=e.length;lh||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/p.x),r.x=s.x*p.x,u.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/p.y),r.y=s.y*p.y,u.mapSize.y=s.y)),null===u.map&&!u.isPointLightShadow&&3===this.type){const t={minFilter:ue,magFilter:ue,format:be};u.map=new ti(r.x,r.y,t),u.map.texture.name=c.name+".shadowMap",u.mapPass=new ti(r.x,r.y,t),u.camera.updateProjectionMatrix()}if(null===u.map){const t={minFilter:he,magFilter:he,format:be};u.map=new ti(r.x,r.y,t),u.map.texture.name=c.name+".shadowMap",u.camera.updateProjectionMatrix()}t.setRenderTarget(u.map),t.clear();const f=u.getViewportCount();for(let t=0;t=1):-1!==L.indexOf("OpenGL ES")&&(A=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),T=A>=2);let C=null,R={};const D=t.getParameter(3088),P=t.getParameter(2978),N=(new $e).fromArray(D),I=(new $e).fromArray(P);function z(e,i,n){const r=new Uint8Array(4),s=t.createTexture();t.bindTexture(e,s),t.texParameteri(e,10241,9728),t.texParameteri(e,10240,9728);for(let e=0;en||t.height>n)&&(r=n/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const n=e?We:Math.floor,s=n(r*t.width),a=n(r*t.height);void 0===p&&(p=m(s,a));const o=i?m(s,a):p;return o.width=s,o.height=a,o.getContext("2d").drawImage(t,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+s+"x"+a+")."),o}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function v(t){return Ge(t.width)&&Ge(t.height)}function y(t,e){return t.generateMipmaps&&e&&t.minFilter!==he&&t.minFilter!==ue}function x(e,i,r,s,a=1){t.generateMipmap(e),n.get(i).__maxMipLevel=Math.log2(Math.max(r,s,a))}function b(i,n,r){if(!1===o)return n;if(null!==i){if(void 0!==t[i])return t[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let s=n;return 6403===n&&(5126===r&&(s=33326),5131===r&&(s=33325),5121===r&&(s=33321)),6407===n&&(5126===r&&(s=34837),5131===r&&(s=34843),5121===r&&(s=32849)),6408===n&&(5126===r&&(s=34836),5131===r&&(s=34842),5121===r&&(s=32856)),33325!==s&&33326!==s&&34842!==s&&34836!==s||e.get("EXT_color_buffer_float"),s}function w(t){return t===he||1004===t||1005===t?9728:9729}function _(e){const i=e.target;i.removeEventListener("dispose",_),function(e){const i=n.get(e);void 0!==i.__webglInit&&(t.deleteTexture(i.__webglTexture),n.remove(e))}(i),i.isVideoTexture&&d.delete(i),a.memory.textures--}function M(e){const i=e.target;i.removeEventListener("dispose",M),function(e){const i=e.texture,r=n.get(e),s=n.get(i);if(e){if(void 0!==s.__webglTexture&&(t.deleteTexture(s.__webglTexture),a.memory.textures--),e.depthTexture&&e.depthTexture.dispose(),e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++)t.deleteFramebuffer(r.__webglFramebuffer[e]),r.__webglDepthbuffer&&t.deleteRenderbuffer(r.__webglDepthbuffer[e]);else t.deleteFramebuffer(r.__webglFramebuffer),r.__webglDepthbuffer&&t.deleteRenderbuffer(r.__webglDepthbuffer),r.__webglMultisampledFramebuffer&&t.deleteFramebuffer(r.__webglMultisampledFramebuffer),r.__webglColorRenderbuffer&&t.deleteRenderbuffer(r.__webglColorRenderbuffer),r.__webglDepthRenderbuffer&&t.deleteRenderbuffer(r.__webglDepthRenderbuffer);if(e.isWebGLMultipleRenderTargets)for(let e=0,r=i.length;e0&&r.__version!==t.version){const i=t.image;if(void 0===i)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==i.complete)return void D(r,t,e);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}i.activeTexture(33984+e),i.bindTexture(3553,r.__webglTexture)}function T(e,r){const a=n.get(e);e.version>0&&a.__version!==e.version?function(e,n,r){if(6!==n.image.length)return;R(e,n),i.activeTexture(33984+r),i.bindTexture(34067,e.__webglTexture),t.pixelStorei(37440,n.flipY),t.pixelStorei(37441,n.premultiplyAlpha),t.pixelStorei(3317,n.unpackAlignment),t.pixelStorei(37443,0);const a=n&&(n.isCompressedTexture||n.image[0].isCompressedTexture),l=n.image[0]&&n.image[0].isDataTexture,h=[];for(let t=0;t<6;t++)h[t]=a||l?l?n.image[t].image:n.image[t]:g(n.image[t],!1,!0,c);const u=h[0],d=v(u)||o,p=s.convert(n.format),f=s.convert(n.type),m=b(n.internalFormat,p,f);let w;if(C(34067,n,d),a){for(let t=0;t<6;t++){w=h[t].mipmaps;for(let e=0;e1||n.get(s).__currentAnisotropy)&&(t.texParameterf(i,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),n.get(s).__currentAnisotropy=s.anisotropy)}}function R(e,i){void 0===e.__webglInit&&(e.__webglInit=!0,i.addEventListener("dispose",_),e.__webglTexture=t.createTexture(),a.memory.textures++)}function D(e,n,r){let a=3553;n.isDataTexture2DArray&&(a=35866),n.isDataTexture3D&&(a=32879),R(e,n),i.activeTexture(33984+r),i.bindTexture(a,e.__webglTexture),t.pixelStorei(37440,n.flipY),t.pixelStorei(37441,n.premultiplyAlpha),t.pixelStorei(3317,n.unpackAlignment),t.pixelStorei(37443,0);const l=function(t){return!o&&(t.wrapS!==le||t.wrapT!==le||t.minFilter!==he&&t.minFilter!==ue)}(n)&&!1===v(n.image),c=g(n.image,l,!1,h),u=v(c)||o,d=s.convert(n.format);let p,f=s.convert(n.type),m=b(n.internalFormat,d,f);C(a,n,u);const w=n.mipmaps;if(n.isDepthTexture)m=6402,o?m=n.type===ge?36012:n.type===me?33190:n.type===ye?35056:33189:n.type===ge&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),n.format===we&&6402===m&&n.type!==fe&&n.type!==me&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=fe,f=s.convert(n.type)),n.format===_e&&6402===m&&(m=34041,n.type!==ye&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=ye,f=s.convert(n.type))),i.texImage2D(3553,0,m,c.width,c.height,0,d,f,null);else if(n.isDataTexture)if(w.length>0&&u){for(let t=0,e=w.length;t0&&u){for(let t=0,e=w.length;t=l&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+l),S+=1,t},this.resetTextureUnits=function(){S=0},this.setTexture2D=E,this.setTexture2DArray=function(t,e){const r=n.get(t);t.version>0&&r.__version!==t.version?D(r,t,e):(i.activeTexture(33984+e),i.bindTexture(35866,r.__webglTexture))},this.setTexture3D=function(t,e){const r=n.get(t);t.version>0&&r.__version!==t.version?D(r,t,e):(i.activeTexture(33984+e),i.bindTexture(32879,r.__webglTexture))},this.setTextureCube=T,this.setupRenderTarget=function(e){const l=e.texture,c=n.get(e),h=n.get(l);e.addEventListener("dispose",M),!0!==e.isWebGLMultipleRenderTargets&&(h.__webglTexture=t.createTexture(),h.__version=l.version,a.memory.textures++);const u=!0===e.isWebGLCubeRenderTarget,d=!0===e.isWebGLMultipleRenderTargets,p=!0===e.isWebGLMultisampleRenderTarget,f=l.isDataTexture3D||l.isDataTexture2DArray,m=v(e)||o;if(!o||l.format!==xe||l.type!==ge&&l.type!==ve||(l.format=be,console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),u){c.__webglFramebuffer=[];for(let e=0;e<6;e++)c.__webglFramebuffer[e]=t.createFramebuffer()}else if(c.__webglFramebuffer=t.createFramebuffer(),d)if(r.drawBuffers){const i=e.texture;for(let e=0,r=i.length;eo+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&a<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,i),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));return null!==a&&(a.visible=null!==n),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==s),this}}class oo extends ke{constructor(t,e){super();const i=this,n=t.state;let r=null,s=1,a=null,o="local-floor",l=null,c=null,h=null,u=null,d=null,p=!1,f=null,m=null,g=null,v=null,y=null,x=null;const b=[],w=new Map,_=new fr;_.layers.enable(1),_.viewport=new $e;const M=new fr;M.layers.enable(2),M.viewport=new $e;const S=[_,M],E=new no;E.layers.enable(1),E.layers.enable(2);let T=null,A=null;function L(t){const e=w.get(t.inputSource);e&&e.dispatchEvent({type:t.type,data:t.inputSource})}function C(){w.forEach((function(t,e){t.disconnect(e)})),w.clear(),T=null,A=null,n.bindXRFramebuffer(null),t.setRenderTarget(t.getRenderTarget()),h&&e.deleteFramebuffer(h),f&&e.deleteFramebuffer(f),m&&e.deleteRenderbuffer(m),g&&e.deleteRenderbuffer(g),h=null,f=null,m=null,g=null,d=null,u=null,c=null,r=null,z.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}function R(t){const e=r.inputSources;for(let t=0;t0&&(e.alphaTest.value=i.alphaTest);const n=t.get(i).envMap;if(n){e.envMap.value=n,e.flipEnvMap.value=n.isCubeTexture&&!1===n.isRenderTargetTexture?-1:1,e.reflectivity.value=i.reflectivity,e.ior.value=i.ior,e.refractionRatio.value=i.refractionRatio;const r=t.get(n).__maxMipLevel;void 0!==r&&(e.maxMipLevel.value=r)}let r,s;i.lightMap&&(e.lightMap.value=i.lightMap,e.lightMapIntensity.value=i.lightMapIntensity),i.aoMap&&(e.aoMap.value=i.aoMap,e.aoMapIntensity.value=i.aoMapIntensity),i.map?r=i.map:i.specularMap?r=i.specularMap:i.displacementMap?r=i.displacementMap:i.normalMap?r=i.normalMap:i.bumpMap?r=i.bumpMap:i.roughnessMap?r=i.roughnessMap:i.metalnessMap?r=i.metalnessMap:i.alphaMap?r=i.alphaMap:i.emissiveMap?r=i.emissiveMap:i.clearcoatMap?r=i.clearcoatMap:i.clearcoatNormalMap?r=i.clearcoatNormalMap:i.clearcoatRoughnessMap?r=i.clearcoatRoughnessMap:i.specularIntensityMap?r=i.specularIntensityMap:i.specularTintMap?r=i.specularTintMap:i.transmissionMap?r=i.transmissionMap:i.thicknessMap&&(r=i.thicknessMap),void 0!==r&&(r.isWebGLRenderTarget&&(r=r.texture),!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uvTransform.value.copy(r.matrix)),i.aoMap?s=i.aoMap:i.lightMap&&(s=i.lightMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),e.uv2Transform.value.copy(s.matrix))}function i(e,i){e.roughness.value=i.roughness,e.metalness.value=i.metalness,i.roughnessMap&&(e.roughnessMap.value=i.roughnessMap),i.metalnessMap&&(e.metalnessMap.value=i.metalnessMap),i.emissiveMap&&(e.emissiveMap.value=i.emissiveMap),i.bumpMap&&(e.bumpMap.value=i.bumpMap,e.bumpScale.value=i.bumpScale,1===i.side&&(e.bumpScale.value*=-1)),i.normalMap&&(e.normalMap.value=i.normalMap,e.normalScale.value.copy(i.normalScale),1===i.side&&e.normalScale.value.negate()),i.displacementMap&&(e.displacementMap.value=i.displacementMap,e.displacementScale.value=i.displacementScale,e.displacementBias.value=i.displacementBias),t.get(i).envMap&&(e.envMapIntensity.value=i.envMapIntensity)}return{refreshFogUniforms:function(t,e){t.fogColor.value.copy(e.color),e.isFog?(t.fogNear.value=e.near,t.fogFar.value=e.far):e.isFogExp2&&(t.fogDensity.value=e.density)},refreshMaterialUniforms:function(t,n,r,s,a){n.isMeshBasicMaterial?e(t,n):n.isMeshLambertMaterial?(e(t,n),function(t,e){e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap)}(t,n)):n.isMeshToonMaterial?(e(t,n),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap),e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshPhongMaterial?(e(t,n),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4),e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshStandardMaterial?(e(t,n),n.isMeshPhysicalMaterial?function(t,e,n){i(t,e),t.ior.value=e.ior,e.sheenTint&&t.sheenTint.value.copy(e.sheenTint),e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap),e.clearcoatNormalMap&&(t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),t.clearcoatNormalMap.value=e.clearcoatNormalMap,1===e.side&&t.clearcoatNormalScale.value.negate())),e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=n.texture,t.transmissionSamplerSize.value.set(n.width,n.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap),t.attenuationDistance.value=e.attenuationDistance,t.attenuationTint.value.copy(e.attenuationTint)),t.specularIntensity.value=e.specularIntensity,t.specularTint.value.copy(e.specularTint),e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap),e.specularTintMap&&(t.specularTintMap.value=e.specularTintMap)}(t,n,a):i(t,n)):n.isMeshMatcapMaterial?(e(t,n),function(t,e){e.matcap&&(t.matcap.value=e.matcap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshDepthMaterial?(e(t,n),function(t,e){e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshDistanceMaterial?(e(t,n),function(t,e){e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias),t.referencePosition.value.copy(e.referencePosition),t.nearDistance.value=e.nearDistance,t.farDistance.value=e.farDistance}(t,n)):n.isMeshNormalMaterial?(e(t,n),function(t,e){e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity}(t,n),n.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,n)):n.isPointsMaterial?function(t,e,i,n){let r;t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*i,t.scale.value=.5*n,e.map&&(t.map.value=e.map),e.alphaMap&&(t.alphaMap.value=e.alphaMap),e.alphaTest>0&&(t.alphaTest.value=e.alphaTest),e.map?r=e.map:e.alphaMap&&(r=e.alphaMap),void 0!==r&&(!0===r.matrixAutoUpdate&&r.updateMatrix(),t.uvTransform.value.copy(r.matrix))}(t,n,r,s):n.isSpriteMaterial?function(t,e){let i;t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map),e.alphaMap&&(t.alphaMap.value=e.alphaMap),e.alphaTest>0&&(t.alphaTest.value=e.alphaTest),e.map?i=e.map:e.alphaMap&&(i=e.alphaMap),void 0!==i&&(!0===i.matrixAutoUpdate&&i.updateMatrix(),t.uvTransform.value.copy(i.matrix))}(t,n):n.isShadowMaterial?(t.color.value.copy(n.color),t.opacity.value=n.opacity):n.isShaderMaterial&&(n.uniformsNeedUpdate=!1)}}}function co(t={}){const e=void 0!==t.canvas?t.canvas:function(){const t=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");return t.style.display="block",t}(),i=void 0!==t.context?t.context:null,n=void 0!==t.alpha&&t.alpha,r=void 0===t.depth||t.depth,s=void 0===t.stencil||t.stencil,a=void 0!==t.antialias&&t.antialias,o=void 0===t.premultipliedAlpha||t.premultipliedAlpha,l=void 0!==t.preserveDrawingBuffer&&t.preserveDrawingBuffer,c=void 0!==t.powerPreference?t.powerPreference:"default",h=void 0!==t.failIfMajorPerformanceCaveat&&t.failIfMajorPerformanceCaveat;let u=null,d=null;const p=[],f=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.gammaFactor=2,this.outputEncoding=Ce,this.physicallyCorrectLights=!1,this.toneMapping=0,this.toneMappingExposure=1;const m=this;let g=!1,v=0,y=0,x=null,b=-1,w=null;const _=new $e,M=new $e;let S=null,E=e.width,T=e.height,A=1,L=null,C=null;const R=new $e(0,0,E,T),D=new $e(0,0,E,T);let P=!1;const N=[],I=new Er;let z=!1,B=!1,k=null;const F=new Ii,O=new ni,U={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function H(){return null===x?A:1}let V,q,G,W,j,X,Y,Z,J,Q,K,$,tt,et,it,nt,rt,st,at,ot,lt,ct,ht,ut=i;function dt(t,i){for(let n=0;n0&&function(t,e,i){if(null===k){const t=!0===a&&!0===q.isWebGL2;k=new(t?ei:ti)(1024,1024,{generateMipmaps:!0,type:null!==ct.convert(ve)?ve:pe,minFilter:de,magFilter:he,wrapS:le,wrapT:le})}const n=m.getRenderTarget();m.setRenderTarget(k),m.clear();const r=m.toneMapping;m.toneMapping=0,St(t,e,i),m.toneMapping=r,X.updateMultisampleRenderTarget(k),X.updateRenderTargetMipmap(k),m.setRenderTarget(n)}(r,e,i),n&&G.viewport(_.copy(n)),r.length>0&&St(r,e,i),s.length>0&&St(s,e,i),o.length>0&&St(o,e,i)}function St(t,e,i){const n=!0===e.isScene?e.overrideMaterial:null;for(let r=0,s=t.length;r0?f[f.length-1]:null,p.pop(),u=p.length>0?p[p.length-1]:null},this.getActiveCubeFace=function(){return v},this.getActiveMipmapLevel=function(){return y},this.getRenderTarget=function(){return x},this.setRenderTarget=function(t,e=0,i=0){x=t,v=e,y=i,t&&void 0===j.get(t).__webglFramebuffer&&X.setupRenderTarget(t);let n=null,r=!1,s=!1;if(t){const i=t.texture;(i.isDataTexture3D||i.isDataTexture2DArray)&&(s=!0);const a=j.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(n=a[e],r=!0):n=t.isWebGLMultisampleRenderTarget?j.get(t).__webglMultisampledFramebuffer:a,_.copy(t.viewport),M.copy(t.scissor),S=t.scissorTest}else _.copy(R).multiplyScalar(A).floor(),M.copy(D).multiplyScalar(A).floor(),S=P;if(G.bindFramebuffer(36160,n)&&q.drawBuffers){let e=!1;if(t)if(t.isWebGLMultipleRenderTargets){const i=t.texture;if(N.length!==i.length||36064!==N[0]){for(let t=0,e=i.length;t=0&&e<=t.width-n&&i>=0&&i<=t.height-r&&ut.readPixels(e,i,n,r,ct.convert(o),ct.convert(l),s):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{const t=null!==x?j.get(x).__webglFramebuffer:null;G.bindFramebuffer(36160,t)}}},this.copyFramebufferToTexture=function(t,e,i=0){const n=Math.pow(2,-i),r=Math.floor(e.image.width*n),s=Math.floor(e.image.height*n);let a=ct.convert(e.format);q.isWebGL2&&(6407===a&&(a=32849),6408===a&&(a=32856)),X.setTexture2D(e,0),ut.copyTexImage2D(3553,i,a,t.x,t.y,r,s,0),G.unbindTexture()},this.copyTextureToTexture=function(t,e,i,n=0){const r=e.image.width,s=e.image.height,a=ct.convert(i.format),o=ct.convert(i.type);X.setTexture2D(i,0),ut.pixelStorei(37440,i.flipY),ut.pixelStorei(37441,i.premultiplyAlpha),ut.pixelStorei(3317,i.unpackAlignment),e.isDataTexture?ut.texSubImage2D(3553,n,t.x,t.y,r,s,a,o,e.image.data):e.isCompressedTexture?ut.compressedTexSubImage2D(3553,n,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,a,e.mipmaps[0].data):ut.texSubImage2D(3553,n,t.x,t.y,a,o,e.image),0===n&&i.generateMipmaps&&ut.generateMipmap(3553),G.unbindTexture()},this.copyTextureToTexture3D=function(t,e,i,n,r=0){if(m.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const s=t.max.x-t.min.x+1,a=t.max.y-t.min.y+1,o=t.max.z-t.min.z+1,l=ct.convert(n.format),c=ct.convert(n.type);let h;if(n.isDataTexture3D)X.setTexture3D(n,0),h=32879;else{if(!n.isDataTexture2DArray)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");X.setTexture2DArray(n,0),h=35866}ut.pixelStorei(37440,n.flipY),ut.pixelStorei(37441,n.premultiplyAlpha),ut.pixelStorei(3317,n.unpackAlignment);const u=ut.getParameter(3314),d=ut.getParameter(32878),p=ut.getParameter(3316),f=ut.getParameter(3315),g=ut.getParameter(32877),v=i.isCompressedTexture?i.mipmaps[0]:i.image;ut.pixelStorei(3314,v.width),ut.pixelStorei(32878,v.height),ut.pixelStorei(3316,t.min.x),ut.pixelStorei(3315,t.min.y),ut.pixelStorei(32877,t.min.z),i.isDataTexture||i.isDataTexture3D?ut.texSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,c,v.data):i.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),ut.compressedTexSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,v.data)):ut.texSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,c,v),ut.pixelStorei(3314,u),ut.pixelStorei(32878,d),ut.pixelStorei(3316,p),ut.pixelStorei(3315,f),ut.pixelStorei(32877,g),0===r&&n.generateMipmaps&&ut.generateMipmap(h),G.unbindTexture()},this.initTexture=function(t){X.setTexture2D(t,0),G.unbindTexture()},this.resetState=function(){v=0,y=0,x=null,G.reset(),ht.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}(class extends co{}).prototype.isWebGL1Renderer=!0;class ho{constructor(t,e=25e-5){this.name="",this.color=new Tn(t),this.density=e}clone(){return new ho(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}ho.prototype.isFogExp2=!0;class uo{constructor(t,e=1,i=1e3){this.name="",this.color=new Tn(t),this.near=e,this.far=i}clone(){return new uo(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}uo.prototype.isFog=!0;class po extends an{constructor(){super(),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),null!==t.background&&(this.background=t.background.clone()),null!==t.environment&&(this.environment=t.environment.clone()),null!==t.fog&&(this.fog=t.fog.clone()),null!==t.overrideMaterial&&(this.overrideMaterial=t.overrideMaterial.clone()),this.autoUpdate=t.autoUpdate,this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return null!==this.fog&&(e.object.fog=this.fog.toJSON()),e}}po.prototype.isScene=!0;class fo{constructor(t,e){this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=Ie,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=He()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,i){t*=this.stride,i*=e.stride;for(let n=0,r=this.stride;nt.far||e.push({distance:o,point:xo.clone(),uv:vn.getUV(xo,Eo,To,Ao,Lo,Co,Ro,new je),face:null,object:this})}copy(t){return super.copy(t),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}}).prototype.isSprite=!0;const Po=new ni,No=new $e,Io=new $e,zo=new ni,Bo=new Ii;class ko extends ar{constructor(t,e){super(t,e),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Ii,this.bindMatrixInverse=new Ii}copy(t){return super.copy(t),this.bindMode=t.bindMode,this.bindMatrix.copy(t.bindMatrix),this.bindMatrixInverse.copy(t.bindMatrixInverse),this.skeleton=t.skeleton,this}bind(t,e){this.skeleton=t,void 0===e&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),e=this.matrixWorld),this.bindMatrix.copy(e),this.bindMatrixInverse.copy(e).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const t=new $e,e=this.geometry.attributes.skinWeight;for(let i=0,n=e.count;io)continue;u.applyMatrix4(this.matrixWorld);const d=t.ray.origin.distanceTo(u);dt.far||e.push({distance:d,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}else for(let i=Math.max(0,s.start),n=Math.min(r.count,s.start+s.count)-1;io)continue;u.applyMatrix4(this.matrixWorld);const n=t.ray.origin.distanceTo(u);nt.far||e.push({distance:n,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else i.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}updateMorphTargets(){const t=this.geometry;if(t.isBufferGeometry){const e=t.morphAttributes,i=Object.keys(e);if(i.length>0){const t=e[i[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=t.length;e0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}Zo.prototype.isLine=!0;const Jo=new ni,Qo=new ni;class Ko extends Zo{constructor(t,e){super(t,e),this.type="LineSegments"}computeLineDistances(){const t=this.geometry;if(t.isBufferGeometry)if(null===t.index){const e=t.attributes.position,i=[];for(let t=0,n=e.count;tr.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:i,index:e,face:null,object:a})}}(class extends an{constructor(t=new Vn,e=new $o){super(),this.type="Points",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t){return super.copy(t),this.material=t.material,this.geometry=t.geometry,this}raycast(t,e){const i=this.geometry,n=this.matrixWorld,r=t.params.Points.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),il.copy(i.boundingSphere),il.applyMatrix4(n),il.radius+=r,!1===t.ray.intersectsSphere(il))return;tl.copy(n).invert(),el.copy(t.ray).applyMatrix4(tl);const a=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a;if(i.isBufferGeometry){const r=i.index,a=i.attributes.position;if(null!==r)for(let i=Math.max(0,s.start),l=Math.min(r.count,s.start+s.count);i0){const t=e[i[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=t.length;e0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}).prototype.isPoints=!0,class extends Qe{constructor(t,e,i,n,r,s,a,o,l){super(t,e,i,n,r,s,a,o,l),this.format=void 0!==a?a:xe,this.minFilter=void 0!==s?s:ue,this.magFilter=void 0!==r?r:ue,this.generateMipmaps=!1;const c=this;"requestVideoFrameCallback"in t&&t.requestVideoFrameCallback((function e(){c.needsUpdate=!0,t.requestVideoFrameCallback(e)}))}clone(){return new this.constructor(this.image).copy(this)}update(){const t=this.image;!1=="requestVideoFrameCallback"in t&&t.readyState>=t.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}.prototype.isVideoTexture=!0;(class extends Qe{constructor(t,e,i,n,r,s,a,o,l,c,h,u){super(null,s,a,o,l,c,n,r,h,u),this.image={width:e,height:i},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}}).prototype.isCompressedTexture=!0,class extends Qe{constructor(t,e,i,n,r,s,a,o,l){super(t,e,i,n,r,s,a,o,l),this.needsUpdate=!0}}.prototype.isCanvasTexture=!0,class extends Qe{constructor(t,e,i,n,r,s,a,o,l,c){if((c=void 0!==c?c:we)!==we&&c!==_e)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&c===we&&(i=fe),void 0===i&&c===_e&&(i=ye),super(null,n,r,s,a,o,c,i,l),this.image={width:t,height:e},this.magFilter=void 0!==a?a:he,this.minFilter=void 0!==o?o:he,this.flipY=!1,this.generateMipmaps=!1}}.prototype.isDepthTexture=!0,new ni,new ni,new ni,new vn;class sl{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(t,e){const i=this.getUtoTmapping(t);return this.getPoint(i,e)}getPoints(t=5){const e=[];for(let i=0;i<=t;i++)e.push(this.getPoint(i/t));return e}getSpacedPoints(t=5){const e=[];for(let i=0;i<=t;i++)e.push(this.getPointAt(i/t));return e}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===t+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const e=[];let i,n=this.getPoint(0),r=0;e.push(0);for(let s=1;s<=t;s++)i=this.getPoint(s/t),r+=i.distanceTo(n),e.push(r),n=i;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(t,e){const i=this.getLengths();let n=0;const r=i.length;let s;s=e||t*i[r-1];let a,o=0,l=r-1;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),a=i[n]-s,a<0)o=n+1;else{if(!(a>0)){l=n;break}l=n-1}if(n=l,i[n]===s)return n/(r-1);const c=i[n];return(n+(s-c)/(i[n+1]-c))/(r-1)}getTangent(t,e){const i=1e-4;let n=t-i,r=t+i;n<0&&(n=0),r>1&&(r=1);const s=this.getPoint(n),a=this.getPoint(r),o=e||(s.isVector2?new je:new ni);return o.copy(a).sub(s).normalize(),o}getTangentAt(t,e){const i=this.getUtoTmapping(t);return this.getTangent(i,e)}computeFrenetFrames(t,e){const i=new ni,n=[],r=[],s=[],a=new ni,o=new Ii;for(let e=0;e<=t;e++){const i=e/t;n[e]=this.getTangentAt(i,new ni),n[e].normalize()}r[0]=new ni,s[0]=new ni;let l=Number.MAX_VALUE;const c=Math.abs(n[0].x),h=Math.abs(n[0].y),u=Math.abs(n[0].z);c<=l&&(l=c,i.set(1,0,0)),h<=l&&(l=h,i.set(0,1,0)),u<=l&&i.set(0,0,1),a.crossVectors(n[0],i).normalize(),r[0].crossVectors(n[0],a),s[0].crossVectors(n[0],r[0]);for(let e=1;e<=t;e++){if(r[e]=r[e-1].clone(),s[e]=s[e-1].clone(),a.crossVectors(n[e-1],n[e]),a.length()>Number.EPSILON){a.normalize();const t=Math.acos(Ve(n[e-1].dot(n[e]),-1,1));r[e].applyMatrix4(o.makeRotationAxis(a,t))}s[e].crossVectors(n[e],r[e])}if(!0===e){let e=Math.acos(Ve(r[0].dot(r[t]),-1,1));e/=t,n[0].dot(a.crossVectors(r[0],r[t]))>0&&(e=-e);for(let i=1;i<=t;i++)r[i].applyMatrix4(o.makeRotationAxis(n[i],e*i)),s[i].crossVectors(n[i],r[i])}return{tangents:n,normals:r,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}toJSON(){const t={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t}fromJSON(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}}class al extends sl{constructor(t=0,e=0,i=1,n=1,r=0,s=2*Math.PI,a=!1,o=0){super(),this.type="EllipseCurve",this.aX=t,this.aY=e,this.xRadius=i,this.yRadius=n,this.aStartAngle=r,this.aEndAngle=s,this.aClockwise=a,this.aRotation=o}getPoint(t,e){const i=e||new je,n=2*Math.PI;let r=this.aEndAngle-this.aStartAngle;const s=Math.abs(r)n;)r-=n;r0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===c&&l===r-1&&(l=r-2,c=1),this.closed||l>0?a=n[(l-1)%r]:(cl.subVectors(n[0],n[1]).add(n[0]),a=cl);const h=n[l%r],u=n[(l+1)%r];if(this.closed||l+2n.length-2?n.length-1:s+1],h=n[s>n.length-3?n.length-1:s+2];return i.set(fl(a,o.x,l.x,c.x,h.x),fl(a,o.y,l.y,c.y,h.y)),i}copy(t){super.copy(t),this.points=[];for(let e=0,i=t.points.length;e0)for(s=e;s=e;s-=n)a=Wl(s,t[s],t[s+1],a);return a&&Ol(a,a.next)&&(jl(a),a=a.next),a}function El(t,e){if(!t)return t;e||(e=t);let i,n=t;do{if(i=!1,n.steiner||!Ol(n,n.next)&&0!==Fl(n.prev,n,n.next))n=n.next;else{if(jl(n),n=e=n.prev,n===n.next)break;i=!0}}while(i||n!==e);return e}function Tl(t,e,i,n,r,s,a){if(!t)return;!a&&s&&function(t,e,i,n){let r=t;do{null===r.z&&(r.z=Il(r.x,r.y,e,i,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){let e,i,n,r,s,a,o,l,c=1;do{for(i=t,t=null,s=null,a=0;i;){for(a++,n=i,o=0,e=0;e0||l>0&&n;)0!==o&&(0===l||!n||i.z<=n.z)?(r=i,i=i.nextZ,o--):(r=n,n=n.nextZ,l--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;i=n}s.nextZ=null,c*=2}while(a>1)}(r)}(t,n,r,s);let o,l,c=t;for(;t.prev!==t.next;)if(o=t.prev,l=t.next,s?Ll(t,n,r,s):Al(t))e.push(o.i/i),e.push(t.i/i),e.push(l.i/i),jl(t),t=l.next,c=l.next;else if((t=l)===c){a?1===a?Tl(t=Cl(El(t),e,i),e,i,n,r,s,2):2===a&&Rl(t,e,i,n,r,s):Tl(El(t),e,i,n,r,s,1);break}}function Al(t){const e=t.prev,i=t,n=t.next;if(Fl(e,i,n)>=0)return!1;let r=t.next.next;for(;r!==t.prev;){if(Bl(e.x,e.y,i.x,i.y,n.x,n.y,r.x,r.y)&&Fl(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function Ll(t,e,i,n){const r=t.prev,s=t,a=t.next;if(Fl(r,s,a)>=0)return!1;const o=r.xs.x?r.x>a.x?r.x:a.x:s.x>a.x?s.x:a.x,h=r.y>s.y?r.y>a.y?r.y:a.y:s.y>a.y?s.y:a.y,u=Il(o,l,e,i,n),d=Il(c,h,e,i,n);let p=t.prevZ,f=t.nextZ;for(;p&&p.z>=u&&f&&f.z<=d;){if(p!==t.prev&&p!==t.next&&Bl(r.x,r.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Fl(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,f!==t.prev&&f!==t.next&&Bl(r.x,r.y,s.x,s.y,a.x,a.y,f.x,f.y)&&Fl(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(;p&&p.z>=u;){if(p!==t.prev&&p!==t.next&&Bl(r.x,r.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Fl(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;f&&f.z<=d;){if(f!==t.prev&&f!==t.next&&Bl(r.x,r.y,s.x,s.y,a.x,a.y,f.x,f.y)&&Fl(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function Cl(t,e,i){let n=t;do{const r=n.prev,s=n.next.next;!Ol(r,s)&&Ul(r,n,n.next,s)&&ql(r,s)&&ql(s,r)&&(e.push(r.i/i),e.push(n.i/i),e.push(s.i/i),jl(n),jl(n.next),n=t=s),n=n.next}while(n!==t);return El(n)}function Rl(t,e,i,n,r,s){let a=t;do{let t=a.next.next;for(;t!==a.prev;){if(a.i!==t.i&&kl(a,t)){let o=Gl(a,t);return a=El(a,a.next),o=El(o,o.next),Tl(a,e,i,n,r,s),void Tl(o,e,i,n,r,s)}t=t.next}a=a.next}while(a!==t)}function Dl(t,e){return t.x-e.x}function Pl(t,e){if(e=function(t,e){let i=e;const n=t.x,r=t.y;let s,a=-1/0;do{if(r<=i.y&&r>=i.next.y&&i.next.y!==i.y){const t=i.x+(r-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(t<=n&&t>a){if(a=t,t===n){if(r===i.y)return i;if(r===i.next.y)return i.next}s=i.x=i.x&&i.x>=l&&n!==i.x&&Bl(rs.x||i.x===s.x&&Nl(s,i)))&&(s=i,u=h)),i=i.next}while(i!==o);return s}(t,e),e){const i=Gl(e,t);El(e,e.next),El(i,i.next)}}function Nl(t,e){return Fl(t.prev,t,e.prev)<0&&Fl(e.next,t,t.next)<0}function Il(t,e,i,n,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function zl(t){let e=t,i=t;do{(e.x=0&&(t-a)*(n-o)-(i-a)*(e-o)>=0&&(i-a)*(s-o)-(r-a)*(n-o)>=0}function kl(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&Ul(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}(t,e)&&(ql(t,e)&&ql(e,t)&&function(t,e){let i=t,n=!1;const r=(t.x+e.x)/2,s=(t.y+e.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&r<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}(t,e)&&(Fl(t.prev,t,e.prev)||Fl(t,e.prev,e))||Ol(t,e)&&Fl(t.prev,t,t.next)>0&&Fl(e.prev,e,e.next)>0)}function Fl(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function Ol(t,e){return t.x===e.x&&t.y===e.y}function Ul(t,e,i,n){const r=Vl(Fl(t,e,i)),s=Vl(Fl(t,e,n)),a=Vl(Fl(i,n,t)),o=Vl(Fl(i,n,e));return r!==s&&a!==o||!(0!==r||!Hl(t,i,e))||!(0!==s||!Hl(t,n,e))||!(0!==a||!Hl(i,t,n))||!(0!==o||!Hl(i,e,n))}function Hl(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function Vl(t){return t>0?1:t<0?-1:0}function ql(t,e){return Fl(t.prev,t,t.next)<0?Fl(t,e,t.next)>=0&&Fl(t,t.prev,e)>=0:Fl(t,e,t.prev)<0||Fl(t,t.next,e)<0}function Gl(t,e){const i=new Xl(t.i,t.x,t.y),n=new Xl(e.i,e.x,e.y),r=t.next,s=e.prev;return t.next=e,e.prev=t,i.next=r,r.prev=i,n.next=i,i.prev=n,s.next=n,n.prev=s,n}function Wl(t,e,i,n){const r=new Xl(t,e,i);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function jl(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Xl(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}class Yl{static area(t){const e=t.length;let i=0;for(let n=e-1,r=0;r80*i){o=c=t[0],l=h=t[1];for(let e=i;ec&&(c=u),d>h&&(h=d);p=Math.max(c-o,h-l),p=0!==p?1/p:0}return Tl(s,a,i,o,l,p),a}(i,n);for(let t=0;t2&&t[e-1].equals(t[0])&&t.pop()}function Jl(t,e){for(let i=0;iNumber.EPSILON){const u=Math.sqrt(h),d=Math.sqrt(l*l+c*c),p=e.x-o/u,f=e.y+a/u,m=((i.x-c/d-p)*c-(i.y+l/d-f)*l)/(a*c-o*l);n=p+a*m-t.x,r=f+o*m-t.y;const g=n*n+r*r;if(g<=2)return new je(n,r);s=Math.sqrt(g/2)}else{let t=!1;a>Number.EPSILON?l>Number.EPSILON&&(t=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(t=!0):Math.sign(o)===Math.sign(c)&&(t=!0),t?(n=-o,r=a,s=Math.sqrt(h)):(n=a,r=o,s=Math.sqrt(h/2))}return new je(n/s,r/s)}const D=[];for(let t=0,e=T.length,i=e-1,n=t+1;t=0;t--){const e=t/p,i=h*Math.cos(e*Math.PI/2),n=u*Math.sin(e*Math.PI/2)+d;for(let t=0,e=T.length;t=0;){const n=i;let r=i-1;r<0&&(r=t.length-1);for(let t=0,i=o+2*p;t0!=t>0&&this.version++,this._clearcoat=t}get transmission(){return this._transmission}set transmission(t){this._transmission>0!=t>0&&this.version++,this._transmission=t}copy(t){return super.copy(t),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=t.clearcoat,this.clearcoatMap=t.clearcoatMap,this.clearcoatRoughness=t.clearcoatRoughness,this.clearcoatRoughnessMap=t.clearcoatRoughnessMap,this.clearcoatNormalMap=t.clearcoatNormalMap,this.clearcoatNormalScale.copy(t.clearcoatNormalScale),this.ior=t.ior,this.sheenTint.copy(t.sheenTint),this.transmission=t.transmission,this.transmissionMap=t.transmissionMap,this.thickness=t.thickness,this.thicknessMap=t.thicknessMap,this.attenuationDistance=t.attenuationDistance,this.attenuationTint.copy(t.attenuationTint),this.specularIntensity=t.specularIntensity,this.specularIntensityMap=t.specularIntensityMap,this.specularTint.copy(t.specularTint),this.specularTintMap=t.specularTintMap,this}}).prototype.isMeshPhysicalMaterial=!0;class ic extends xn{constructor(t){super(),this.type="MeshPhongMaterial",this.color=new Tn(16777215),this.specular=new Tn(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Tn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new je(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.specular.copy(t.specular),this.shininess=t.shininess,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this}}ic.prototype.isMeshPhongMaterial=!0;(class extends xn{constructor(t){super(),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Tn(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Tn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new je(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.gradientMap=t.gradientMap,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this}}).prototype.isMeshToonMaterial=!0;(class extends xn{constructor(t){super(),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new je(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.flatShading=t.flatShading,this}}).prototype.isMeshNormalMaterial=!0;(class extends xn{constructor(t){super(),this.type="MeshLambertMaterial",this.color=new Tn(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Tn(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this}}).prototype.isMeshLambertMaterial=!0;(class extends xn{constructor(t){super(),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Tn(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new je(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.defines={MATCAP:""},this.color.copy(t.color),this.matcap=t.matcap,this.map=t.map,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.flatShading=t.flatShading,this}}).prototype.isMeshMatcapMaterial=!0;(class extends qo{constructor(t){super(),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(t)}copy(t){return super.copy(t),this.scale=t.scale,this.dashSize=t.dashSize,this.gapSize=t.gapSize,this}}).prototype.isLineDashedMaterial=!0;const nc={arraySlice:function(t,e,i){return nc.isTypedArray(t)?new t.constructor(t.subarray(e,void 0!==i?i:t.length)):t.slice(e,i)},convertArray:function(t,e,i){return!t||!i&&t.constructor===e?t:"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t)},isTypedArray:function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)},getKeyframeOrder:function(t){const e=t.length,i=new Array(e);for(let t=0;t!==e;++t)i[t]=t;return i.sort((function(e,i){return t[e]-t[i]})),i},sortedArray:function(t,e,i){const n=t.length,r=new t.constructor(n);for(let s=0,a=0;a!==n;++s){const n=i[s]*e;for(let i=0;i!==e;++i)r[a++]=t[n+i]}return r},flattenJSON:function(t,e,i,n){let r=1,s=t[0];for(;void 0!==s&&void 0===s[n];)s=t[r++];if(void 0===s)return;let a=s[n];if(void 0!==a)if(Array.isArray(a))do{a=s[n],void 0!==a&&(e.push(s.time),i.push.apply(i,a)),s=t[r++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[n],void 0!==a&&(e.push(s.time),a.toArray(i,i.length)),s=t[r++]}while(void 0!==s);else do{a=s[n],void 0!==a&&(e.push(s.time),i.push(a)),s=t[r++]}while(void 0!==s)},subclip:function(t,e,i,n,r=30){const s=t.clone();s.name=e;const a=[];for(let t=0;t=n)){l.push(e.times[t]);for(let i=0;is.tracks[t].times[0]&&(o=s.tracks[t].times[0]);for(let t=0;t=n.times[u]){const t=u*l+o,e=t+l-o;d=nc.arraySlice(n.values,t,e)}else{const t=n.createInterpolant(),e=o,i=l-o;t.evaluate(s),d=nc.arraySlice(t.resultBuffer,e,i)}"quaternion"===r&&(new ii).fromArray(d).normalize().conjugate().toArray(d);const p=a.times.length;for(let t=0;t=r)break t;{const a=e[1];t=r)break e}s=i,i=0}}for(;i>>1;te;)--s;if(++s,0!==r||s!==n){r>=s&&(s=Math.max(s,1),r=s-1);const t=this.getValueSize();this.times=nc.arraySlice(i,r,s),this.values=nc.arraySlice(this.values,r*t,s*t)}return this}validate(){let t=!0;const e=this.getValueSize();e-Math.floor(e)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);const i=this.times,n=this.values,r=i.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let s=null;for(let e=0;e!==r;e++){const n=i[e];if("number"==typeof n&&isNaN(n)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,e,n),t=!1;break}if(null!==s&&s>n){console.error("THREE.KeyframeTrack: Out of order keys.",this,e,n,s),t=!1;break}s=n}if(void 0!==n&&nc.isTypedArray(n))for(let e=0,i=n.length;e!==i;++e){const i=n[e];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,e,i),t=!1;break}}return t}optimize(){const t=nc.arraySlice(this.times),e=nc.arraySlice(this.values),i=this.getValueSize(),n=this.getInterpolation()===Ee,r=t.length-1;let s=1;for(let a=1;a0){t[s]=t[r];for(let t=r*i,n=s*i,a=0;a!==i;++a)e[n+a]=e[t+a];++s}return s!==t.length?(this.times=nc.arraySlice(t,0,s),this.values=nc.arraySlice(e,0,s*i)):(this.times=t,this.values=e),this}clone(){const t=nc.arraySlice(this.times,0),e=nc.arraySlice(this.values,0),i=new(0,this.constructor)(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}}lc.prototype.TimeBufferType=Float32Array,lc.prototype.ValueBufferType=Float32Array,lc.prototype.DefaultInterpolation=Se;class cc extends lc{}cc.prototype.ValueTypeName="bool",cc.prototype.ValueBufferType=Array,cc.prototype.DefaultInterpolation=Me,cc.prototype.InterpolantFactoryMethodLinear=void 0,cc.prototype.InterpolantFactoryMethodSmooth=void 0;class hc extends lc{}hc.prototype.ValueTypeName="color";class uc extends lc{}uc.prototype.ValueTypeName="number";class dc extends rc{constructor(t,e,i,n){super(t,e,i,n)}interpolate_(t,e,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(i-e)/(n-e);let l=t*a;for(let t=l+a;l!==t;l+=4)ii.slerpFlat(r,0,s,l-a,s,l,o);return r}}class pc extends lc{InterpolantFactoryMethodLinear(t){return new dc(this.times,this.values,this.getValueSize(),t)}}pc.prototype.ValueTypeName="quaternion",pc.prototype.DefaultInterpolation=Se,pc.prototype.InterpolantFactoryMethodSmooth=void 0;class fc extends lc{}fc.prototype.ValueTypeName="string",fc.prototype.ValueBufferType=Array,fc.prototype.DefaultInterpolation=Me,fc.prototype.InterpolantFactoryMethodLinear=void 0,fc.prototype.InterpolantFactoryMethodSmooth=void 0;class mc extends lc{}mc.prototype.ValueTypeName="vector";class gc{constructor(t,e=-1,i,n=2500){this.name=t,this.tracks=i,this.duration=e,this.blendMode=n,this.uuid=He(),this.duration<0&&this.resetDuration()}static parse(t){const e=[],i=t.tracks,n=1/(t.fps||1);for(let t=0,r=i.length;t!==r;++t)e.push(vc(i[t]).scale(n));const r=new this(t.name,t.duration,e,t.blendMode);return r.uuid=t.uuid,r}static toJSON(t){const e=[],i=t.tracks,n={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode};for(let t=0,n=i.length;t!==n;++t)e.push(lc.toJSON(i[t]));return n}static CreateFromMorphTargetSequence(t,e,i,n){const r=e.length,s=[];for(let t=0;t1){const t=s[1];let e=n[t];e||(n[t]=e=[]),e.push(i)}}const s=[];for(const t in n)s.push(this.CreateFromMorphTargetSequence(t,n[t],e,i));return s}static parseAnimation(t,e){if(!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(t,e,i,n,r){if(0!==i.length){const s=[],a=[];nc.flattenJSON(i,s,a,n),0!==s.length&&r.push(new t(e,s,a))}},n=[],r=t.name||"default",s=t.fps||30,a=t.blendMode;let o=t.length||-1;const l=t.hierarchy||[];for(let t=0;t0||0===t.search(/^data\:image\/jpeg/);r.format=n?xe:be,r.needsUpdate=!0,void 0!==e&&e(r)}),i,n),r}}class Tc extends sl{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(t){this.curves.push(t)}closePath(){const t=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);t.equals(e)||this.curves.push(new xl(e,t))}getPoint(t){const e=t*this.getLength(),i=this.getCurveLengths();let n=0;for(;n=e){const t=i[n]-e,r=this.curves[n],s=r.getLength(),a=0===s?0:1-t/s;return r.getPointAt(a)}n++}return null}getLength(){const t=this.getCurveLengths();return t[t.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const t=[];let e=0;for(let i=0,n=this.curves.length;i1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}copy(t){super.copy(t),this.curves=[];for(let e=0,i=t.curves.length;e0){const t=l.getPoint(0);t.equals(this.currentPoint)||this.lineTo(t.x,t.y)}this.curves.push(l);const c=l.getPoint(1);return this.currentPoint.copy(c),this}copy(t){return super.copy(t),this.currentPoint.copy(t.currentPoint),this}toJSON(){const t=super.toJSON();return t.currentPoint=this.currentPoint.toArray(),t}fromJSON(t){return super.fromJSON(t),this.currentPoint.fromArray(t.currentPoint),this}}class Lc extends Ac{constructor(t){super(t),this.uuid=He(),this.type="Shape",this.holes=[]}getPointsHoles(t){const e=[];for(let i=0,n=this.holes.length;i0&&this._mixBufferRegionAdditive(i,n,this._addIndex*e,1,e);for(let t=e,r=e+e;t!==r;++t)if(i[t]!==i[t+e]){a.setValue(i,n);break}}saveOriginalState(){const t=this.binding,e=this.buffer,i=this.valueSize,n=i*this._origIndex;t.getValue(e,n);for(let t=i,r=n;t!==r;++t)e[t]=e[n+t%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const t=3*this.valueSize;this.binding.setValue(this.buffer,t)}_setAdditiveIdentityNumeric(){const t=this._addIndex*this.valueSize,e=t+this.valueSize;for(let i=t;i=.5)for(let n=0;n!==r;++n)t[e+n]=t[i+n]}_slerp(t,e,i,n){ii.slerpFlat(t,e,t,e,t,i,n)}_slerpAdditive(t,e,i,n,r){const s=this._workIndex*r;ii.multiplyQuaternionsFlat(t,s,t,e,t,i),ii.slerpFlat(t,e,t,e,t,s,n)}_lerp(t,e,i,n,r){const s=1-n;for(let a=0;a!==r;++a){const r=e+a;t[r]=t[r]*s+t[i+a]*n}}_lerpAdditive(t,e,i,n,r){for(let s=0;s!==r;++s){const r=e+s;t[r]=t[r]+t[i+s]*n}}}const Xc=new RegExp("[\\[\\]\\.:\\/]","g"),Yc="[^\\[\\]\\.:\\/]",Zc="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",Jc=/((?:WC+[\/:])*)/.source.replace("WC",Yc),Qc=/(WCOD+)?/.source.replace("WCOD",Zc),Kc=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Yc),$c=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Yc),th=new RegExp("^"+Jc+Qc+Kc+$c+"$"),eh=["material","materials","bones"];class ih{constructor(t,e,i){this.path=e,this.parsedPath=i||ih.parseTrackName(e),this.node=ih.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,i){return t&&t.isAnimationObjectGroup?new ih.Composite(t,e,i):new ih(t,e,i)}static sanitizeNodeName(t){return t.replace(/\s/g,"_").replace(Xc,"")}static parseTrackName(t){const e=th.exec(t);if(!e)throw new Error("PropertyBinding: Cannot parse trackName: "+t);const i={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},n=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==n&&-1!==n){const t=i.nodeName.substring(n+1);-1!==eh.indexOf(t)&&(i.nodeName=i.nodeName.substring(0,n),i.objectName=t)}if(null===i.propertyName||0===i.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return i}static findNode(t,e){if(!e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){const i=t.skeleton.getBoneByName(e);if(void 0!==i)return i}if(t.children){const i=function(t){for(let n=0;n0){const t=this._interpolants,e=this._propertyBindings;if(2501===this.blendMode)for(let i=0,n=t.length;i!==n;++i)t[i].evaluate(s),e[i].accumulateAdditive(a);else for(let i=0,r=t.length;i!==r;++i)t[i].evaluate(s),e[i].accumulate(n,a)}}_updateWeight(t){let e=0;if(this.enabled){e=this.weight;const i=this._weightInterpolant;if(null!==i){const n=i.evaluate(t)[0];e*=n,t>i.parameterPositions[1]&&(this.stopFading(),0===n&&(this.enabled=!1))}}return this._effectiveWeight=e,e}_updateTimeScale(t){let e=0;if(!this.paused){e=this.timeScale;const i=this._timeScaleInterpolant;null!==i&&(e*=i.evaluate(t)[0],t>i.parameterPositions[1]&&(this.stopWarping(),0===e?this.paused=!0:this.timeScale=e))}return this._effectiveTimeScale=e,e}_updateTime(t){const e=this._clip.duration,i=this.loop;let n=this.time+t,r=this._loopCount;const s=2202===i;if(0===t)return-1===r?n:s&&1==(1&r)?e-n:n;if(2200===i){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));t:{if(n>=e)n=e;else{if(!(n<0)){this.time=n;break t}n=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:t<0?-1:1})}}else{if(-1===r&&(t>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),n>=e||n<0){const i=Math.floor(n/e);n-=e*i,r+=Math.abs(i);const a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,n=t>0?e:0,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:t>0?1:-1});else{if(1===a){const e=t<0;this._setEndings(e,!e,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this.time=n,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=n;if(s&&1==(1&r))return e-n}return n}_setEndings(t,e,i){const n=this._interpolantSettings;i?(n.endingStart=Ae,n.endingEnd=Ae):(n.endingStart=t?this.zeroSlopeAtStart?Ae:Te:Le,n.endingEnd=e?this.zeroSlopeAtEnd?Ae:Te:Le)}_scheduleFading(t,e,i){const n=this._mixer,r=n.time;let s=this._weightInterpolant;null===s&&(s=n._lendControlInterpolant(),this._weightInterpolant=s);const a=s.parameterPositions,o=s.sampleValues;return a[0]=r,o[0]=e,a[1]=r+t,o[1]=i,this}}(class extends ke{constructor(t){super(),this._root=t,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(t,e){const i=t._localRoot||this._root,n=t._clip.tracks,r=n.length,s=t._propertyBindings,a=t._interpolants,o=i.uuid,l=this._bindingsByRootAndName;let c=l[o];void 0===c&&(c={},l[o]=c);for(let t=0;t!==r;++t){const r=n[t],l=r.name;let h=c[l];if(void 0!==h)s[t]=h;else{if(h=s[t],void 0!==h){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,o,l));continue}const n=e&&e._propertyBindings[t].binding.parsedPath;h=new jc(ih.create(i,l,n),r.ValueTypeName,r.getValueSize()),++h.referenceCount,this._addInactiveBinding(h,o,l),s[t]=h}a[t].resultBuffer=h.buffer}}_activateAction(t){if(!this._isActiveAction(t)){if(null===t._cacheIndex){const e=(t._localRoot||this._root).uuid,i=t._clip.uuid,n=this._actionsByClip[i];this._bindAction(t,n&&n.knownActions[0]),this._addInactiveAction(t,i,e)}const e=t._propertyBindings;for(let t=0,i=e.length;t!==i;++t){const i=e[t];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(t)}}_deactivateAction(t){if(this._isActiveAction(t)){const e=t._propertyBindings;for(let t=0,i=e.length;t!==i;++t){const i=e[t];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(t)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const t=this;this.stats={actions:{get total(){return t._actions.length},get inUse(){return t._nActiveActions}},bindings:{get total(){return t._bindings.length},get inUse(){return t._nActiveBindings}},controlInterpolants:{get total(){return t._controlInterpolants.length},get inUse(){return t._nActiveControlInterpolants}}}}_isActiveAction(t){const e=t._cacheIndex;return null!==e&&e=0;--e)t[e].stop();return this}update(t){t*=this.timeScale;const e=this._actions,i=this._nActiveActions,n=this.time+=t,r=Math.sign(t),s=this._accuIndex^=1;for(let a=0;a!==i;++a)e[a]._update(n,t,r,s);const a=this._bindings,o=this._nActiveBindings;for(let t=0;t!==o;++t)a[t].apply(s);return this}setTime(t){this.time=0;for(let t=0;tthis.max.x||t.ythis.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y)}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return sh.copy(t).clamp(this.min,this.max).sub(t).length()}intersect(t){return this.min.max(t.min),this.max.min(t.max),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}ah.prototype.isBox2=!0,class extends an{constructor(t){super(),this.material=t,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}}.prototype.isImmediateRenderObject=!0;const oh=new ni,lh=new Ii,ch=new Ii;function hh(t){const e=[];t&&t.isBone&&e.push(t);for(let i=0;i0){this.source.connect(this.filters[0]);for(let t=1,e=this.filters.length;t0){this.source.disconnect(this.filters[0]);for(let t=1,e=this.filters.length;t0){const t=1/n;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return n}unit(t=new fh){const e=this.x,i=this.y,n=this.z;let r=Math.sqrt(e*e+i*i+n*n);return r>0?(r=1/r,t.x=e*r,t.y=i*r,t.z=n*r):(t.x=1,t.y=0,t.z=0),t}length(){const t=this.x,e=this.y,i=this.z;return Math.sqrt(t*t+e*e+i*i)}lengthSquared(){return this.dot(this)}distanceTo(t){const e=this.x,i=this.y,n=this.z,r=t.x,s=t.y,a=t.z;return Math.sqrt((r-e)*(r-e)+(s-i)*(s-i)+(a-n)*(a-n))}distanceSquared(t){const e=this.x,i=this.y,n=this.z,r=t.x,s=t.y,a=t.z;return(r-e)*(r-e)+(s-i)*(s-i)+(a-n)*(a-n)}scale(t,e=new fh){const i=this.x,n=this.y,r=this.z;return e.x=t*i,e.y=t*n,e.z=t*r,e}vmul(t,e=new fh){return e.x=t.x*this.x,e.y=t.y*this.y,e.z=t.z*this.z,e}addScaledVector(t,e,i=new fh){return i.x=this.x+t*e.x,i.y=this.y+t*e.y,i.z=this.z+t*e.z,i}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isZero(){return 0===this.x&&0===this.y&&0===this.z}negate(t=new fh){return t.x=-this.x,t.y=-this.y,t.z=-this.z,t}tangents(t,e){const i=this.length();if(i>0){const n=mh,r=1/i;n.set(this.x*r,this.y*r,this.z*r);const s=gh;Math.abs(n.x)<.9?(s.set(1,0,0),n.cross(s,t)):(s.set(0,1,0),n.cross(s,t)),n.cross(t,e)}else t.set(1,0,0),e.set(0,1,0)}toString(){return this.x+","+this.y+","+this.z}toArray(){return[this.x,this.y,this.z]}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}lerp(t,e,i){const n=this.x,r=this.y,s=this.z;i.x=n+(t.x-n)*e,i.y=r+(t.y-r)*e,i.z=s+(t.z-s)*e}almostEquals(t,e=1e-6){return!(Math.abs(this.x-t.x)>e||Math.abs(this.y-t.y)>e||Math.abs(this.z-t.z)>e)}almostZero(t=1e-6){return!(Math.abs(this.x)>t||Math.abs(this.y)>t||Math.abs(this.z)>t)}isAntiparallelTo(t,e){return this.negate(vh),vh.almostEquals(t,e)}clone(){return new fh(this.x,this.y,this.z)}}fh.ZERO=void 0,fh.UNIT_X=void 0,fh.UNIT_Y=void 0,fh.UNIT_Z=void 0,fh.ZERO=new fh(0,0,0),fh.UNIT_X=new fh(1,0,0),fh.UNIT_Y=new fh(0,1,0),fh.UNIT_Z=new fh(0,0,1);const mh=new fh,gh=new fh,vh=new fh;class yh{constructor(t={}){this.lowerBound=void 0,this.upperBound=void 0,this.lowerBound=new fh,this.upperBound=new fh,t.lowerBound&&this.lowerBound.copy(t.lowerBound),t.upperBound&&this.upperBound.copy(t.upperBound)}setFromPoints(t,e,i,n){const r=this.lowerBound,s=this.upperBound,a=i;r.copy(t[0]),a&&a.vmult(r,r),s.copy(r);for(let e=1;es.x&&(s.x=i.x),i.xs.y&&(s.y=i.y),i.ys.z&&(s.z=i.z),i.z=r.x&&e.y<=n.y&&i.y>=r.y&&e.z<=n.z&&i.z>=r.z}getCorners(t,e,i,n,r,s,a,o){const l=this.lowerBound,c=this.upperBound;t.copy(l),e.set(c.x,l.y,l.z),i.set(c.x,c.y,l.z),n.set(l.x,c.y,c.z),r.set(c.x,l.y,c.z),s.set(l.x,c.y,l.z),a.set(l.x,l.y,c.z),o.copy(c)}toLocalFrame(t,e){const i=bh,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7];this.getCorners(n,r,s,a,o,l,c,h);for(let e=0;8!==e;e++){const n=i[e];t.pointToLocal(n,n)}return e.setFromPoints(i)}toWorldFrame(t,e){const i=bh,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7];this.getCorners(n,r,s,a,o,l,c,h);for(let e=0;8!==e;e++){const n=i[e];t.pointToWorld(n,n)}return e.setFromPoints(i)}overlapsRay(t){const{direction:e,from:i}=t,n=1/e.x,r=1/e.y,s=1/e.z,a=(this.lowerBound.x-i.x)*n,o=(this.upperBound.x-i.x)*n,l=(this.lowerBound.y-i.y)*r,c=(this.upperBound.y-i.y)*r,h=(this.lowerBound.z-i.z)*s,u=(this.upperBound.z-i.z)*s,d=Math.max(Math.max(Math.min(a,o),Math.min(l,c)),Math.min(h,u)),p=Math.min(Math.min(Math.max(a,o),Math.max(l,c)),Math.max(h,u));return!(p<0||d>p)}}const xh=new fh,bh=[new fh,new fh,new fh,new fh,new fh,new fh,new fh,new fh];class wh{constructor(){this.matrix=void 0,this.matrix=[]}get(t,e){let{index:i}=t,{index:n}=e;if(n>i){const t=n;n=i,i=t}return this.matrix[(i*(i+1)>>1)+n-1]}set(t,e,i){let{index:n}=t,{index:r}=e;if(r>n){const t=r;r=n,n=t}this.matrix[(n*(n+1)>>1)+r-1]=i?1:0}reset(){for(let t=0,e=this.matrix.length;t!==e;t++)this.matrix[t]=0}setNumObjects(t){this.matrix.length=t*(t-1)>>1}}class _h{constructor(){this._listeners=void 0}addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const i=this._listeners;return void 0===i[t]&&(i[t]=[]),i[t].includes(e)||i[t].push(e),this}hasEventListener(t,e){if(void 0===this._listeners)return!1;const i=this._listeners;return!(void 0===i[t]||!i[t].includes(e))}hasAnyEventListener(t){return void 0!==this._listeners&&void 0!==this._listeners[t]}removeEventListener(t,e){if(void 0===this._listeners)return this;const i=this._listeners;if(void 0===i[t])return this;const n=i[t].indexOf(e);return-1!==n&&i[t].splice(n,1),this}dispatchEvent(t){if(void 0===this._listeners)return this;const e=this._listeners[t.type];if(void 0!==e){t.target=this;for(let i=0,n=e.length;i.499&&(i=2*Math.atan2(s,l),n=Math.PI/2,r=0),t<-.499&&(i=-2*Math.atan2(s,l),n=-Math.PI/2,r=0),void 0===i){const e=s*s,c=a*a,h=o*o;i=Math.atan2(2*a*l-2*s*o,1-2*c-2*h),n=Math.asin(2*t),r=Math.atan2(2*s*l-2*a*o,1-2*e-2*h)}}t.y=i,t.z=n,t.x=r}setFromEuler(t,e,i,n="XYZ"){const r=Math.cos(t/2),s=Math.cos(e/2),a=Math.cos(i/2),o=Math.sin(t/2),l=Math.sin(e/2),c=Math.sin(i/2);return"XYZ"===n?(this.x=o*s*a+r*l*c,this.y=r*l*a-o*s*c,this.z=r*s*c+o*l*a,this.w=r*s*a-o*l*c):"YXZ"===n?(this.x=o*s*a+r*l*c,this.y=r*l*a-o*s*c,this.z=r*s*c-o*l*a,this.w=r*s*a+o*l*c):"ZXY"===n?(this.x=o*s*a-r*l*c,this.y=r*l*a+o*s*c,this.z=r*s*c+o*l*a,this.w=r*s*a-o*l*c):"ZYX"===n?(this.x=o*s*a-r*l*c,this.y=r*l*a+o*s*c,this.z=r*s*c-o*l*a,this.w=r*s*a+o*l*c):"YZX"===n?(this.x=o*s*a+r*l*c,this.y=r*l*a+o*s*c,this.z=r*s*c-o*l*a,this.w=r*s*a-o*l*c):"XZY"===n&&(this.x=o*s*a-r*l*c,this.y=r*l*a-o*s*c,this.z=r*s*c+o*l*a,this.w=r*s*a+o*l*c),this}clone(){return new Mh(this.x,this.y,this.z,this.w)}slerp(t,e,i=new Mh){const n=this.x,r=this.y,s=this.z,a=this.w;let o,l,c,h,u,d=t.x,p=t.y,f=t.z,m=t.w;return l=n*d+r*p+s*f+a*m,l<0&&(l=-l,d=-d,p=-p,f=-f,m=-m),1-l>1e-6?(o=Math.acos(l),c=Math.sin(o),h=Math.sin((1-e)*o)/c,u=Math.sin(e*o)/c):(h=1-e,u=e),i.x=h*n+u*d,i.y=h*r+u*p,i.z=h*s+u*f,i.w=h*a+u*m,i}integrate(t,e,i,n=new Mh){const r=t.x*i.x,s=t.y*i.y,a=t.z*i.z,o=this.x,l=this.y,c=this.z,h=this.w,u=.5*e;return n.x+=u*(r*h+s*c-a*l),n.y+=u*(s*h+a*o-r*c),n.z+=u*(a*h+r*l-s*o),n.w+=u*(-r*o-s*l-a*c),n}}const Sh=new fh,Eh=new fh;class Th{constructor(t={}){this.id=void 0,this.type=void 0,this.boundingSphereRadius=void 0,this.collisionResponse=void 0,this.collisionFilterGroup=void 0,this.collisionFilterMask=void 0,this.material=void 0,this.body=void 0,this.id=Th.idCounter++,this.type=t.type||0,this.boundingSphereRadius=0,this.collisionResponse=!t.collisionResponse||t.collisionResponse,this.collisionFilterGroup=void 0!==t.collisionFilterGroup?t.collisionFilterGroup:1,this.collisionFilterMask=void 0!==t.collisionFilterMask?t.collisionFilterMask:-1,this.material=t.material?t.material:null,this.body=null}updateBoundingSphereRadius(){throw"computeBoundingSphereRadius() not implemented for shape type "+this.type}volume(){throw"volume() not implemented for shape type "+this.type}calculateLocalInertia(t,e){throw"calculateLocalInertia() not implemented for shape type "+this.type}calculateWorldAABB(t,e,i,n){throw"calculateWorldAABB() not implemented for shape type "+this.type}}Th.idCounter=0,Th.types={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256};class Ah{constructor(t={}){this.position=void 0,this.quaternion=void 0,this.position=new fh,this.quaternion=new Mh,t.position&&this.position.copy(t.position),t.quaternion&&this.quaternion.copy(t.quaternion)}pointToLocal(t,e){return Ah.pointToLocalFrame(this.position,this.quaternion,t,e)}pointToWorld(t,e){return Ah.pointToWorldFrame(this.position,this.quaternion,t,e)}vectorToWorldFrame(t,e=new fh){return this.quaternion.vmult(t,e),e}static pointToLocalFrame(t,e,i,n=new fh){return i.vsub(t,n),e.conjugate(Lh),Lh.vmult(n,n),n}static pointToWorldFrame(t,e,i,n=new fh){return e.vmult(i,n),n.vadd(t,n),n}static vectorToWorldFrame(t,e,i=new fh){return t.vmult(e,i),i}static vectorToLocalFrame(t,e,i,n=new fh){return e.w*=-1,e.vmult(i,n),e.w*=-1,n}}const Lh=new Mh;class Ch extends Th{constructor(t={}){const{vertices:e=[],faces:i=[],normals:n=[],axes:r,boundingSphereRadius:s}=t;super({type:Th.types.CONVEXPOLYHEDRON}),this.vertices=void 0,this.faces=void 0,this.faceNormals=void 0,this.worldVertices=void 0,this.worldVerticesNeedsUpdate=void 0,this.worldFaceNormals=void 0,this.worldFaceNormalsNeedsUpdate=void 0,this.uniqueAxes=void 0,this.uniqueEdges=void 0,this.vertices=e,this.faces=i,this.faceNormals=n,0===this.faceNormals.length&&this.computeNormals(),s?this.boundingSphereRadius=s:this.updateBoundingSphereRadius(),this.worldVertices=[],this.worldVerticesNeedsUpdate=!0,this.worldFaceNormals=[],this.worldFaceNormalsNeedsUpdate=!0,this.uniqueAxes=r?r.slice():null,this.uniqueEdges=[],this.computeEdges()}computeEdges(){const t=this.faces,e=this.vertices,i=this.uniqueEdges;i.length=0;const n=new fh;for(let r=0;r!==t.length;r++){const s=t[r],a=s.length;for(let t=0;t!==a;t++){const r=(t+1)%a;e[s[t]].vsub(e[s[r]],n),n.normalize();let o=!1;for(let t=0;t!==i.length;t++)if(i[t].almostEquals(n)||i[t].almostEquals(n)){o=!0;break}o||i.push(n.clone())}}}computeNormals(){this.faceNormals.length=this.faces.length;for(let t=0;tu&&(u=e,h=t)}const d=[];for(let t=0;t=0&&this.clipFaceAgainstHull(s,t,e,d,a,o,l)}findSeparatingAxis(t,e,i,n,r,s,a,o){const l=new fh,c=new fh,h=new fh,u=new fh,d=new fh,p=new fh;let f=Number.MAX_VALUE;const m=this;if(m.uniqueAxes)for(let a=0;a!==m.uniqueAxes.length;a++){i.vmult(m.uniqueAxes[a],l);const o=m.testSepAxis(l,t,e,i,n,r);if(!1===o)return!1;o0&&s.negate(s),!0}testSepAxis(t,e,i,n,r,s){Ch.project(this,t,i,n,Rh),Ch.project(e,t,r,s,Dh);const a=Rh[0],o=Rh[1],l=Dh[0],c=Dh[1];if(a0?1/e:0,this.material=t.material||null,this.linearDamping="number"==typeof t.linearDamping?t.linearDamping:.01,this.type=e<=0?kh.STATIC:kh.DYNAMIC,typeof t.type==typeof kh.STATIC&&(this.type=t.type),this.allowSleep=void 0===t.allowSleep||t.allowSleep,this.sleepState=kh.AWAKE,this.sleepSpeedLimit=void 0!==t.sleepSpeedLimit?t.sleepSpeedLimit:.1,this.sleepTimeLimit=void 0!==t.sleepTimeLimit?t.sleepTimeLimit:1,this.timeLastSleepy=0,this.wakeUpAfterNarrowphase=!1,this.torque=new fh,this.quaternion=new Mh,this.initQuaternion=new Mh,this.previousQuaternion=new Mh,this.interpolatedQuaternion=new Mh,t.quaternion&&(this.quaternion.copy(t.quaternion),this.initQuaternion.copy(t.quaternion),this.previousQuaternion.copy(t.quaternion),this.interpolatedQuaternion.copy(t.quaternion)),this.angularVelocity=new fh,t.angularVelocity&&this.angularVelocity.copy(t.angularVelocity),this.initAngularVelocity=new fh,this.shapes=[],this.shapeOffsets=[],this.shapeOrientations=[],this.inertia=new fh,this.invInertia=new fh,this.invInertiaWorld=new dh,this.invMassSolve=0,this.invInertiaSolve=new fh,this.invInertiaWorldSolve=new dh,this.fixedRotation=void 0!==t.fixedRotation&&t.fixedRotation,this.angularDamping=void 0!==t.angularDamping?t.angularDamping:.01,this.linearFactor=new fh(1,1,1),t.linearFactor&&this.linearFactor.copy(t.linearFactor),this.angularFactor=new fh(1,1,1),t.angularFactor&&this.angularFactor.copy(t.angularFactor),this.aabb=new yh,this.aabbNeedsUpdate=!0,this.boundingRadius=0,this.wlambda=new fh,this.isTrigger=Boolean(t.isTrigger),t.shape&&this.addShape(t.shape),this.updateMassProperties()}wakeUp(){const t=this.sleepState;this.sleepState=kh.AWAKE,this.wakeUpAfterNarrowphase=!1,t===kh.SLEEPING&&this.dispatchEvent(kh.wakeupEvent)}sleep(){this.sleepState=kh.SLEEPING,this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.wakeUpAfterNarrowphase=!1}sleepTick(t){if(this.allowSleep){const e=this.sleepState,i=this.velocity.lengthSquared()+this.angularVelocity.lengthSquared(),n=this.sleepSpeedLimit**2;e===kh.AWAKE&&in?this.wakeUp():e===kh.SLEEPY&&t-this.timeLastSleepy>this.sleepTimeLimit&&(this.sleep(),this.dispatchEvent(kh.sleepEvent))}}updateSolveMassProperties(){this.sleepState===kh.SLEEPING||this.type===kh.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve.setZero(),this.invInertiaWorldSolve.setZero()):(this.invMassSolve=this.invMass,this.invInertiaSolve.copy(this.invInertia),this.invInertiaWorldSolve.copy(this.invInertiaWorld))}pointToLocalFrame(t,e=new fh){return t.vsub(this.position,e),this.quaternion.conjugate().vmult(e,e),e}vectorToLocalFrame(t,e=new fh){return this.quaternion.conjugate().vmult(t,e),e}pointToWorldFrame(t,e=new fh){return this.quaternion.vmult(t,e),e.vadd(this.position,e),e}vectorToWorldFrame(t,e=new fh){return this.quaternion.vmult(t,e),e}addShape(t,e,i){const n=new fh,r=new Mh;return e&&n.copy(e),i&&r.copy(i),this.shapes.push(t),this.shapeOffsets.push(n),this.shapeOrientations.push(r),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,t.body=this,this}removeShape(t){const e=this.shapes.indexOf(t);return-1===e?(console.warn("Shape does not belong to the body"),this):(this.shapes.splice(e,1),this.shapeOffsets.splice(e,1),this.shapeOrientations.splice(e,1),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,t.body=null,this)}updateBoundingRadius(){const t=this.shapes,e=this.shapeOffsets,i=t.length;let n=0;for(let r=0;r!==i;r++){const i=t[r];i.updateBoundingSphereRadius();const s=e[r].length(),a=i.boundingSphereRadius;s+a>n&&(n=s+a)}this.boundingRadius=n}updateAABB(){const t=this.shapes,e=this.shapeOffsets,i=this.shapeOrientations,n=t.length,r=Fh,s=Oh,a=this.quaternion,o=this.aabb,l=Uh;for(let c=0;c!==n;c++){const n=t[c];a.vmult(e[c],r),r.vadd(this.position,r),a.mult(i[c],s),n.calculateWorldAABB(r,s,l.lowerBound,l.upperBound),0===c?o.copy(l):o.extend(l)}this.aabbNeedsUpdate=!1}updateInertiaWorld(t){const e=this.invInertia;if(e.x!==e.y||e.y!==e.z||t){const t=Hh,i=Vh;t.setRotationFromQuaternion(this.quaternion),t.transpose(i),t.scale(e,t),t.mmult(i,this.invInertiaWorld)}}applyForce(t,e=new fh){if(this.type!==kh.DYNAMIC)return;this.sleepState===kh.SLEEPING&&this.wakeUp();const i=qh;e.cross(t,i),this.force.vadd(t,this.force),this.torque.vadd(i,this.torque)}applyLocalForce(t,e=new fh){if(this.type!==kh.DYNAMIC)return;const i=Gh,n=Wh;this.vectorToWorldFrame(t,i),this.vectorToWorldFrame(e,n),this.applyForce(i,n)}applyTorque(t){this.type===kh.DYNAMIC&&(this.sleepState===kh.SLEEPING&&this.wakeUp(),this.torque.vadd(t,this.torque))}applyImpulse(t,e=new fh){if(this.type!==kh.DYNAMIC)return;this.sleepState===kh.SLEEPING&&this.wakeUp();const i=e,n=jh;n.copy(t),n.scale(this.invMass,n),this.velocity.vadd(n,this.velocity);const r=Xh;i.cross(t,r),this.invInertiaWorld.vmult(r,r),this.angularVelocity.vadd(r,this.angularVelocity)}applyLocalImpulse(t,e=new fh){if(this.type!==kh.DYNAMIC)return;const i=Yh,n=Zh;this.vectorToWorldFrame(t,i),this.vectorToWorldFrame(e,n),this.applyImpulse(i,n)}updateMassProperties(){const t=Jh;this.invMass=this.mass>0?1/this.mass:0;const e=this.inertia,i=this.fixedRotation;this.updateAABB(),t.set((this.aabb.upperBound.x-this.aabb.lowerBound.x)/2,(this.aabb.upperBound.y-this.aabb.lowerBound.y)/2,(this.aabb.upperBound.z-this.aabb.lowerBound.z)/2),Ih.calculateInertia(t,this.mass,e),this.invInertia.set(e.x>0&&!i?1/e.x:0,e.y>0&&!i?1/e.y:0,e.z>0&&!i?1/e.z:0),this.updateInertiaWorld(!0)}getVelocityAtWorldPoint(t,e){const i=new fh;return t.vsub(this.position,i),this.angularVelocity.cross(i,e),this.velocity.vadd(e,e),e}integrate(t,e,i){if(this.previousPosition.copy(this.position),this.previousQuaternion.copy(this.quaternion),this.type!==kh.DYNAMIC&&this.type!==kh.KINEMATIC||this.sleepState===kh.SLEEPING)return;const n=this.velocity,r=this.angularVelocity,s=this.position,a=this.force,o=this.torque,l=this.quaternion,c=this.invMass,h=this.invInertiaWorld,u=this.linearFactor,d=c*t;n.x+=a.x*d*u.x,n.y+=a.y*d*u.y,n.z+=a.z*d*u.z;const p=h.elements,f=this.angularFactor,m=o.x*f.x,g=o.y*f.y,v=o.z*f.z;r.x+=t*(p[0]*m+p[1]*g+p[2]*v),r.y+=t*(p[3]*m+p[4]*g+p[5]*v),r.z+=t*(p[6]*m+p[7]*g+p[8]*v),s.x+=n.x*t,s.y+=n.y*t,s.z+=n.z*t,l.integrate(this.angularVelocity,t,this.angularFactor,l),e&&(i?l.normalizeFast():l.normalize()),this.aabbNeedsUpdate=!0,this.updateInertiaWorld()}}kh.idCounter=0,kh.COLLIDE_EVENT_NAME="collide",kh.DYNAMIC=1,kh.STATIC=2,kh.KINEMATIC=4,kh.AWAKE=0,kh.SLEEPY=1,kh.SLEEPING=2,kh.wakeupEvent={type:"wakeup"},kh.sleepyEvent={type:"sleepy"},kh.sleepEvent={type:"sleep"};const Fh=new fh,Oh=new Mh,Uh=new yh,Hh=new dh,Vh=new dh,qh=new fh,Gh=new fh,Wh=new fh,jh=new fh,Xh=new fh,Yh=new fh,Zh=new fh,Jh=new fh;const Qh=new fh,Kh={keys:[]},$h=[],tu=[];new fh;class eu extends class{constructor(){this.world=void 0,this.useBoundingBoxes=void 0,this.dirty=void 0,this.world=null,this.useBoundingBoxes=!1,this.dirty=!0}collisionPairs(t,e,i){throw new Error("collisionPairs not implemented for this BroadPhase class!")}needBroadphaseCollision(t,e){return 0!=(t.collisionFilterGroup&e.collisionFilterMask)&&0!=(e.collisionFilterGroup&t.collisionFilterMask)&&(0==(t.type&kh.STATIC)&&t.sleepState!==kh.SLEEPING||0==(e.type&kh.STATIC)&&e.sleepState!==kh.SLEEPING)}intersectionTest(t,e,i,n){this.useBoundingBoxes?this.doBoundingBoxBroadphase(t,e,i,n):this.doBoundingSphereBroadphase(t,e,i,n)}doBoundingSphereBroadphase(t,e,i,n){const r=Qh;e.position.vsub(t.position,r);const s=(t.boundingRadius+e.boundingRadius)**2;r.lengthSquared()i.lengthSquared()}aabbQuery(t,e,i){return console.warn(".aabbQuery is not implemented in this Broadphase subclass."),[]}}{constructor(){super()}collisionPairs(t,e,i){const n=t.bodies,r=n.length;let s,a;for(let t=0;t!==r;t++)for(let r=0;r!==t;r++)s=n[t],a=n[r],this.needBroadphaseCollision(s,a)&&this.intersectionTest(s,a,e,i)}aabbQuery(t,e,i=[]){for(let n=0;n{}}intersectWorld(t,e){return this.mode=e.mode||hu.ANY,this.result=e.result||new iu,this.skipBackfaces=!!e.skipBackfaces,this.collisionFilterMask=void 0!==e.collisionFilterMask?e.collisionFilterMask:-1,this.collisionFilterGroup=void 0!==e.collisionFilterGroup?e.collisionFilterGroup:-1,this.checkCollisionResponse=void 0===e.checkCollisionResponse||e.checkCollisionResponse,e.from&&this.from.copy(e.from),e.to&&this.to.copy(e.to),this.callback=e.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(uu),du.length=0,t.broadphase.aabbQuery(t,uu,du),this.intersectBodies(du),this.hasHit}intersectBody(t,e){e&&(this.result=e,this.updateDirection());const i=this.checkCollisionResponse;if(i&&!t.collisionResponse)return;if(0==(this.collisionFilterGroup&t.collisionFilterMask)||0==(t.collisionFilterGroup&this.collisionFilterMask))return;const n=mu,r=gu;for(let e=0,s=t.shapes.length;et.boundingSphereRadius)return;const s=this[t.type];s&&s.call(this,t,e,i,n,t)}_intersectBox(t,e,i,n,r){return this._intersectConvex(t.convexPolyhedronRepresentation,e,i,n,r)}_intersectPlane(t,e,i,n,r){const s=this.from,a=this.to,o=this.direction,l=new fh(0,0,1);e.vmult(l,l);const c=new fh;s.vsub(i,c);const h=c.dot(l);if(a.vsub(i,c),h*c.dot(l)>0)return;if(s.distanceTo(a)=0&&t<=1&&(s.lerp(a,t,u),u.vsub(i,d),d.normalize(),this.reportIntersection(d,u,r,n,-1)),this.result.shouldStop)return;e>=0&&e<=1&&(s.lerp(a,e,u),u.vsub(i,d),d.normalize(),this.reportIntersection(d,u,r,n,-1))}}_intersectConvex(t,e,i,n,r,s){const a=Au,o=Lu,l=s&&s.faceList||null,c=t.faces,h=t.vertices,u=t.faceNormals,d=this.direction,p=this.from,f=this.to,m=p.distanceTo(f),g=l?l.length:c.length,v=this.result;for(let t=0;!v.shouldStop&&tm||this.reportIntersection(a,vu,r,n,s)}}}}_intersectTrimesh(t,e,i,n,r,s){const a=Cu,o=zu,l=Bu,c=Lu,h=Ru,u=Du,d=Pu,p=Iu,f=Nu,m=t.indices;t.vertices;const g=this.from,v=this.to,y=this.direction;l.position.copy(i),l.quaternion.copy(e),Ah.vectorToLocalFrame(i,e,y,h),Ah.pointToLocalFrame(i,e,g,u),Ah.pointToLocalFrame(i,e,v,d),d.x*=t.scale.x,d.y*=t.scale.y,d.z*=t.scale.z,u.x*=t.scale.x,u.y*=t.scale.y,u.z*=t.scale.z,d.vsub(u,h),h.normalize();const x=u.distanceSquared(d);t.tree.rayQuery(this,l,o);for(let s=0,l=o.length;!this.result.shouldStop&&s!==l;s++){const l=o[s];t.getNormal(l,a),t.getVertex(m[3*l],yu),yu.vsub(u,c);const d=h.dot(a),g=a.dot(c)/d;if(g<0)continue;h.scale(g,vu),vu.vadd(u,vu),t.getVertex(m[3*l+1],xu),t.getVertex(m[3*l+2],bu);const v=vu.distanceSquared(u);!hu.pointInTriangle(vu,xu,yu,bu)&&!hu.pointInTriangle(vu,yu,xu,bu)||v>x||(Ah.vectorToWorldFrame(e,a,f),Ah.pointToWorldFrame(i,e,vu,p),this.reportIntersection(f,p,r,n,l))}o.length=0}reportIntersection(t,e,i,n,r){const s=this.from,a=this.to,o=s.distanceTo(e),l=this.result;if(!(this.skipBackfaces&&t.dot(this.direction)>0))switch(l.hitFaceIndex=void 0!==r?r:-1,this.mode){case hu.ALL:this.hasHit=!0,l.set(s,a,t,e,i,n,o),l.hasHit=!0,this.callback(l);break;case hu.CLOSEST:(o=0&&(h=r*l-s*a)>=0&&c+he.maxForce&&(d=e.maxForce-m),y[t]+=d,p+=d>0?d:-d,e.addToWlambda(d)}if(p*pt;)e.pop();for(;e.length=0&&c.restitution>=0&&(a.restitution=l.restitution*c.restitution),a.si=r||i,a.sj=s||n,a}createFrictionEquationsFromContact(t,e){const i=t.bi,n=t.bj,r=t.si,s=t.sj,a=this.world,o=this.currentContactMaterial;let l=o.friction;const c=r.material||i.material,h=s.material||n.material;if(c&&h&&c.friction>=0&&h.friction>=0&&(l=c.friction*h.friction),l>0){const r=l*a.gravity.length();let s=i.invMass+n.invMass;s>0&&(s=1/s);const c=this.frictionEquationPool,h=c.length?c.pop():new rd(i,n,r*s),u=c.length?c.pop():new rd(i,n,r*s);return h.bi=u.bi=i,h.bj=u.bj=n,h.minForce=u.minForce=-r*s,h.maxForce=u.maxForce=r*s,h.ri.copy(t.ri),h.rj.copy(t.rj),u.ri.copy(t.ri),u.rj.copy(t.rj),t.ni.tangents(h.t,u.t),h.setSpookParams(o.frictionEquationStiffness,o.frictionEquationRelaxation,a.dt),u.setSpookParams(o.frictionEquationStiffness,o.frictionEquationRelaxation,a.dt),h.enabled=u.enabled=t.enabled,e.push(h,u),!0}return!1}createFrictionFromAverage(t){let e=this.result[this.result.length-1];if(!this.createFrictionEquationsFromContact(e,this.frictionResult)||1===t)return;const i=this.frictionResult[this.frictionResult.length-2],n=this.frictionResult[this.frictionResult.length-1];qd.setZero(),Gd.setZero(),Wd.setZero();const r=e.bi;e.bj;for(let i=0;i!==t;i++)e=this.result[this.result.length-1-i],e.bi!==r?(qd.vadd(e.ni,qd),Gd.vadd(e.ri,Gd),Wd.vadd(e.rj,Wd)):(qd.vsub(e.ni,qd),Gd.vadd(e.rj,Gd),Wd.vadd(e.ri,Wd));const s=1/t;Gd.scale(s,i.ri),Wd.scale(s,i.rj),n.ri.copy(i.ri),n.rj.copy(i.rj),qd.normalize(),qd.tangents(i.t,n.t)}getContacts(t,e,i,n,r,s,a){this.contactPointPool=r,this.frictionEquationPool=a,this.result=n,this.frictionResult=s;const o=Yd,l=Zd,c=jd,h=Xd;for(let n=0,r=t.length;n!==r;n++){const r=t[n],s=e[n];let a=null;r.material&&s.material&&(a=i.getContactMaterial(r.material,s.material)||null);const u=r.type&kh.KINEMATIC&&s.type&kh.STATIC||r.type&kh.STATIC&&s.type&kh.KINEMATIC||r.type&kh.KINEMATIC&&s.type&kh.KINEMATIC;for(let t=0;te.boundingSphereRadius+n.boundingSphereRadius)continue;let d=null;e.material&&n.material&&(d=i.getContactMaterial(e.material,n.material)||null),this.currentContactMaterial=d||a||i.defaultContactMaterial;const p=this[e.type|n.type];if(p){let t=!1;t=e.type0){const r=_p,s=Mp;r.copy(d[(t+1)%3]),s.copy(d[(t+2)%3]);const a=r.length(),o=s.length();r.normalize(),s.normalize();const l=bp.dot(r),c=bp.dot(s);if(l-a&&c-o){const t=Math.abs(n-i-p);if((null===_||t<_)&&(_=t,b=l,w=c,y=i,m.copy(e),g.copy(r),v.copy(s),x++,h))return!0}}}if(x){f=!0;const r=this.createContactEquation(a,o,t,e,l,c);m.scale(-p,r.ri),r.ni.copy(m),r.ni.negate(r.ni),m.scale(y,m),g.scale(b,g),m.vadd(g,m),v.scale(w,v),m.vadd(v,r.rj),r.ri.vadd(i,r.ri),r.ri.vsub(a.position,r.ri),r.rj.vadd(n,r.rj),r.rj.vsub(o.position,r.rj),this.result.push(r),this.createFrictionEquationsFromContact(r,this.frictionResult)}let M=u.get();const S=Ep;for(let r=0;2!==r&&!f;r++)for(let s=0;2!==s&&!f;s++)for(let u=0;2!==u&&!f;u++)if(M.set(0,0,0),r?M.vadd(d[0],M):M.vsub(d[0],M),s?M.vadd(d[1],M):M.vsub(d[1],M),u?M.vadd(d[2],M):M.vsub(d[2],M),n.vadd(M,S),S.vsub(i,S),S.lengthSquared()t.boundingSphereRadius+e.boundingSphereRadius)&&t.findSeparatingAxis(e,i,r,n,s,p,u,d)){const u=[],d=Gp;t.clipAgainstHull(i,r,e,n,s,p,-100,100,u);let f=0;for(let r=0;r!==u.length;r++){if(h)return!0;const s=this.createContactEquation(a,o,t,e,l,c),m=s.ri,g=s.rj;p.negate(s.ni),u[r].normal.negate(d),d.scale(u[r].depth,d),u[r].point.vadd(d,m),g.copy(u[r].point),m.vsub(i,m),g.vsub(n,g),m.vadd(i,m),m.vsub(a.position,m),g.vadd(n,g),g.vsub(o.position,g),this.result.push(s),f++,this.enableFrictionReduction||this.createFrictionEquationsFromContact(s,this.frictionResult)}this.enableFrictionReduction&&f&&this.createFrictionFromAverage(f)}}sphereConvex(t,e,i,n,r,s,a,o,l,c,h){const u=this.v3pool;i.vsub(n,Cp);const d=e.faceNormals,p=e.faces,f=e.vertices,m=t.radius;let g=!1;for(let r=0;r!==f.length;r++){const u=f[r],d=Np;s.vmult(u,d),n.vadd(d,d);const p=Pp;if(d.vsub(i,p),p.lengthSquared()0){const r=[];for(let t=0,e=y.length;t!==e;t++){const e=u.get();s.vmult(f[y[t]],e),n.vadd(e,e),r.push(e)}if(xp(r,x,i)){if(h)return!0;g=!0;const s=this.createContactEquation(a,o,t,e,l,c);x.scale(-m,s.ri),x.negate(s.ni);const d=u.get();x.scale(-M,d);const p=u.get();x.scale(-m,p),i.vsub(n,s.rj),s.rj.vadd(p,s.rj),s.rj.vadd(d,s.rj),s.rj.vadd(n,s.rj),s.rj.vsub(o.position,s.rj),s.ri.vadd(i,s.ri),s.ri.vsub(a.position,s.ri),u.release(d),u.release(p),this.result.push(s),this.createFrictionEquationsFromContact(s,this.frictionResult);for(let t=0,e=r.length;t!==e;t++)u.release(r[t]);return}for(let d=0;d!==y.length;d++){const p=u.get(),g=u.get();s.vmult(f[y[(d+1)%y.length]],p),s.vmult(f[y[(d+2)%y.length]],g),n.vadd(p,p),n.vadd(g,g);const v=Rp;g.vsub(p,v);const x=Dp;v.unit(x);const b=u.get(),w=u.get();i.vsub(p,w);const _=w.dot(x);x.scale(_,b),b.vadd(p,b);const M=u.get();if(b.vsub(i,M),_>0&&_*_u.length||y>u[0].length)return;g<0&&(g=0),v<0&&(v=0),y<0&&(y=0),x<0&&(x=0),g>=u.length&&(g=u.length-1),v>=u.length&&(v=u.length-1),x>=u[0].length&&(x=u[0].length-1),y>=u[0].length&&(y=u[0].length-1);const b=[];e.getRectMinMax(g,y,v,x,b);const w=b[0],_=b[1];if(m.z-d>_||m.z+d2)return}}boxHeightfield(t,e,i,n,r,s,a,o,l,c,h){return t.convexPolyhedronRepresentation.material=t.material,t.convexPolyhedronRepresentation.collisionResponse=t.collisionResponse,this.convexHeightfield(t.convexPolyhedronRepresentation,e,i,n,r,s,a,o,t,e,h)}convexHeightfield(t,e,i,n,r,s,a,o,l,c,h){const u=e.data,d=e.elementSize,p=t.boundingSphereRadius,f=ef,m=nf,g=tf;Ah.pointToLocalFrame(n,s,i,g);let v=Math.floor((g.x-p)/d)-1,y=Math.ceil((g.x+p)/d)+1,x=Math.floor((g.y-p)/d)-1,b=Math.ceil((g.y+p)/d)+1;if(y<0||b<0||v>u.length||x>u[0].length)return;v<0&&(v=0),y<0&&(y=0),x<0&&(x=0),b<0&&(b=0),v>=u.length&&(v=u.length-1),y>=u.length&&(y=u.length-1),b>=u[0].length&&(b=u[0].length-1),x>=u[0].length&&(x=u[0].length-1);const w=[];e.getRectMinMax(v,x,y,b,w);const _=w[0],M=w[1];if(!(g.z-p>M||g.z+p<_))for(let l=v;l0&&y<0&&(m.vsub(u,g),f.copy(p),f.normalize(),x=g.dot(f),f.scale(x,g),g.vadd(u,g),g.distanceTo(m)0&&!0===n||h<=0&&!1===n))return!1;null===n&&(n=h>0)}return!0}const bp=new fh,wp=new fh,_p=new fh,Mp=new fh,Sp=[new fh,new fh,new fh,new fh,new fh,new fh],Ep=new fh,Tp=new fh,Ap=new fh,Lp=new fh,Cp=new fh,Rp=new fh,Dp=new fh,Pp=new fh,Np=new fh,Ip=new fh,zp=new fh,Bp=new fh,kp=new fh,Fp=new fh,Op=new fh,Up=new fh,Hp=new fh,Vp=new fh,qp=new fh,Gp=new fh,Wp=new fh,jp=new fh,Xp=new fh,Yp=new fh,Zp=new Mh,Jp=new fh,Qp=new fh,Kp=new fh,$p=new fh,tf=new fh,ef=new fh,nf=[0],rf=new fh,sf=new fh;class af{constructor(){this.current=void 0,this.previous=void 0,this.current=[],this.previous=[]}getKey(t,e){if(en[r];)r++;if(i!==n[r]){for(let t=n.length-1;t>=r;t--)n[t+1]=n[t];n[r]=i}}tick(){const t=this.current;this.current=this.previous,this.previous=t,this.current.length=0}getDiff(t,e){const i=this.current,n=this.previous,r=i.length,s=n.length;let a=0;for(let e=0;en[a];)a++;r=s===n[a],r||of(t,s)}a=0;for(let t=0;ti[a];)a++;r=i[a]===s,r||of(e,s)}}}function of(t,e){t.push((4294901760&e)>>16,65535&e)}class lf{constructor(){this.data={keys:[]}}get(t,e){if(t>e){const i=e;e=t,t=i}return this.data[t+"-"+e]}set(t,e,i){if(t>e){const i=e;e=t,t=i}const n=t+"-"+e;this.get(t,e)||this.data.keys.push(n),this.data[n]=i}reset(){const t=this.data,e=t.keys;for(;e.length>0;)delete t[e.pop()]}}class cf extends _h{constructor(t={}){super(),this.dt=void 0,this.allowSleep=void 0,this.contacts=void 0,this.frictionEquations=void 0,this.quatNormalizeSkip=void 0,this.quatNormalizeFast=void 0,this.time=void 0,this.stepnumber=void 0,this.default_dt=void 0,this.nextId=void 0,this.gravity=void 0,this.broadphase=void 0,this.bodies=void 0,this.hasActiveBodies=void 0,this.solver=void 0,this.constraints=void 0,this.narrowphase=void 0,this.collisionMatrix=void 0,this.collisionMatrixPrevious=void 0,this.bodyOverlapKeeper=void 0,this.shapeOverlapKeeper=void 0,this.materials=void 0,this.contactmaterials=void 0,this.contactMaterialTable=void 0,this.defaultMaterial=void 0,this.defaultContactMaterial=void 0,this.doProfiling=void 0,this.profile=void 0,this.accumulator=void 0,this.subsystems=void 0,this.addBodyEvent=void 0,this.removeBodyEvent=void 0,this.idToBodyMap=void 0,this.dt=-1,this.allowSleep=!!t.allowSleep,this.contacts=[],this.frictionEquations=[],this.quatNormalizeSkip=void 0!==t.quatNormalizeSkip?t.quatNormalizeSkip:0,this.quatNormalizeFast=void 0!==t.quatNormalizeFast&&t.quatNormalizeFast,this.time=0,this.stepnumber=0,this.default_dt=1/60,this.nextId=0,this.gravity=new fh,t.gravity&&this.gravity.copy(t.gravity),this.broadphase=void 0!==t.broadphase?t.broadphase:new eu,this.bodies=[],this.hasActiveBodies=!1,this.solver=void 0!==t.solver?t.solver:new ud,this.constraints=[],this.narrowphase=new Vd(this),this.collisionMatrix=new wh,this.collisionMatrixPrevious=new wh,this.bodyOverlapKeeper=new af,this.shapeOverlapKeeper=new af,this.materials=[],this.contactmaterials=[],this.contactMaterialTable=new lf,this.defaultMaterial=new ld("default"),this.defaultContactMaterial=new od(this.defaultMaterial,this.defaultMaterial,{friction:.3,restitution:0}),this.doProfiling=!1,this.profile={solve:0,makeContactConstraints:0,broadphase:0,integrate:0,narrowphase:0},this.accumulator=0,this.subsystems=[],this.addBodyEvent={type:"addBody",body:null},this.removeBodyEvent={type:"removeBody",body:null},this.idToBodyMap={},this.broadphase.setWorld(this)}getContactMaterial(t,e){return this.contactMaterialTable.get(t.id,e.id)}numObjects(){return this.bodies.length}collisionMatrixTick(){const t=this.collisionMatrixPrevious;this.collisionMatrixPrevious=this.collisionMatrix,this.collisionMatrix=t,this.collisionMatrix.reset(),this.bodyOverlapKeeper.tick(),this.shapeOverlapKeeper.tick()}addConstraint(t){this.constraints.push(t)}removeConstraint(t){const e=this.constraints.indexOf(t);-1!==e&&this.constraints.splice(e,1)}rayTest(t,e,i){i instanceof iu?this.raycastClosest(t,e,{skipBackfaces:!0},i):this.raycastAll(t,e,{skipBackfaces:!0},i)}raycastAll(t,e,i={},n){return i.mode=hu.ALL,i.from=t,i.to=e,i.callback=n,hf.intersectWorld(this,i)}raycastAny(t,e,i={},n){return i.mode=hu.ANY,i.from=t,i.to=e,i.result=n,hf.intersectWorld(this,i)}raycastClosest(t,e,i={},n){return i.mode=hu.CLOSEST,i.from=t,i.to=e,i.result=n,hf.intersectWorld(this,i)}addBody(t){this.bodies.includes(t)||(t.index=this.bodies.length,this.bodies.push(t),t.world=this,t.initPosition.copy(t.position),t.initVelocity.copy(t.velocity),t.timeLastSleepy=this.time,t instanceof kh&&(t.initAngularVelocity.copy(t.angularVelocity),t.initQuaternion.copy(t.quaternion)),this.collisionMatrix.setNumObjects(this.bodies.length),this.addBodyEvent.body=t,this.idToBodyMap[t.id]=t,this.dispatchEvent(this.addBodyEvent))}removeBody(t){t.world=null;const e=this.bodies.length-1,i=this.bodies,n=i.indexOf(t);if(-1!==n){i.splice(n,1);for(let t=0;t!==i.length;t++)i[t].index=t;this.collisionMatrix.setNumObjects(e),this.removeBodyEvent.body=t,delete this.idToBodyMap[t.id],this.dispatchEvent(this.removeBodyEvent)}}getBodyById(t){return this.idToBodyMap[t]}getShapeById(t){const e=this.bodies;for(let i=0;i=t&&r1e3*t)););this.accumulator=this.accumulator%t;const s=this.accumulator/t;for(let t=0;t!==this.bodies.length;t++){const e=this.bodies[t];e.previousPosition.lerp(e.position,s,e.interpolatedPosition),e.previousQuaternion.slerp(e.quaternion,s,e.interpolatedQuaternion),e.previousQuaternion.normalize()}this.time+=e}}internalStep(t){this.dt=t;const e=this.contacts,i=vf,n=yf,r=this.numObjects(),s=this.bodies,a=this.solver,o=this.gravity,l=this.doProfiling,c=this.profile,h=kh.DYNAMIC;let u=-1/0;const d=this.constraints,p=gf;o.length();const f=o.x,m=o.y,g=o.z;let v=0;for(l&&(u=uf.now()),v=0;v!==r;v++){const t=s[v];if(t.type===h){const e=t.force,i=t.mass;e.x+=i*f,e.y+=i*m,e.z+=i*g}}for(let t=0,e=this.subsystems.length;t!==e;t++)this.subsystems[t].update();l&&(u=uf.now()),i.length=0,n.length=0,this.broadphase.collisionPairs(this,i,n),l&&(c.broadphase=uf.now()-u);let y=d.length;for(v=0;v!==y;v++){const t=d[v];if(!t.collideConnected)for(let e=i.length-1;e>=0;e-=1)(t.bodyA===i[e]&&t.bodyB===n[e]||t.bodyB===i[e]&&t.bodyA===n[e])&&(i.splice(e,1),n.splice(e,1))}this.collisionMatrixTick(),l&&(u=uf.now());const x=mf,b=e.length;for(v=0;v!==b;v++)x.push(e[v]);e.length=0;const w=this.frictionEquations.length;for(v=0;v!==w;v++)p.push(this.frictionEquations[v]);for(this.frictionEquations.length=0,this.narrowphase.getContacts(i,n,this,e,x,this.frictionEquations,p),l&&(c.narrowphase=uf.now()-u),l&&(u=uf.now()),v=0;v=0&&r.material.friction>=0&&(n.material.friction,r.material.friction),n.material.restitution>=0&&r.material.restitution>=0&&(i.restitution=n.material.restitution*r.material.restitution)),a.addEquation(i),n.allowSleep&&n.type===kh.DYNAMIC&&n.sleepState===kh.SLEEPING&&r.sleepState===kh.AWAKE&&r.type!==kh.STATIC&&r.velocity.lengthSquared()+r.angularVelocity.lengthSquared()>=2*r.sleepSpeedLimit**2&&(n.wakeUpAfterNarrowphase=!0),r.allowSleep&&r.type===kh.DYNAMIC&&r.sleepState===kh.SLEEPING&&n.sleepState===kh.AWAKE&&n.type!==kh.STATIC&&n.velocity.lengthSquared()+n.angularVelocity.lengthSquared()>=2*n.sleepSpeedLimit**2&&(r.wakeUpAfterNarrowphase=!0),this.collisionMatrix.set(n,r,!0),this.collisionMatrixPrevious.get(n,r)||(ff.body=r,ff.contact=i,n.dispatchEvent(ff),ff.body=n,r.dispatchEvent(ff)),this.bodyOverlapKeeper.set(n.id,r.id),this.shapeOverlapKeeper.set(s.id,o.id)}for(this.emitContactEvents(),l&&(c.makeContactConstraints=uf.now()-u,u=uf.now()),v=0;v!==r;v++){const t=s[v];t.wakeUpAfterNarrowphase&&(t.wakeUp(),t.wakeUpAfterNarrowphase=!1)}for(y=d.length,v=0;v!==y;v++){const t=d[v];t.update();for(let e=0,i=t.equations.length;e!==i;e++){const i=t.equations[e];a.addEquation(i)}}a.solve(t,this),l&&(c.solve=uf.now()-u),a.removeAllEquations();const M=Math.pow;for(v=0;v!==r;v++){const e=s[v];if(e.type&h){const i=M(1-e.linearDamping,t),n=e.velocity;n.scale(i,n);const r=e.angularVelocity;if(r){const i=M(1-e.angularDamping,t);r.scale(i,r)}}}for(this.dispatchEvent(pf),v=0;v!==r;v++){const t=s[v];t.preStep&&t.preStep.call(t)}l&&(u=uf.now());const S=this.stepnumber%(this.quatNormalizeSkip+1)==0,E=this.quatNormalizeFast;for(v=0;v!==r;v++)s[v].integrate(t,S,E);for(this.clearForces(),this.broadphase.dirty=!0,l&&(c.integrate=uf.now()-u),this.stepnumber+=1,this.dispatchEvent(df),v=0;v!==r;v++){const t=s[v],e=t.postStep;e&&e.call(t)}let T=!0;if(this.allowSleep)for(T=!1,v=0;v!==r;v++){const t=s[v];t.sleepTick(this.time),t.sleepState!==kh.SLEEPING&&(T=!0)}this.hasActiveBodies=T}emitContactEvents(){const t=this.hasAnyEventListener("beginContact"),e=this.hasAnyEventListener("endContact");if((t||e)&&this.bodyOverlapKeeper.getDiff(xf,bf),t){for(let t=0,e=xf.length;tDate.now()-t}const df={type:"postStep"},pf={type:"preStep"},ff={type:kh.COLLIDE_EVENT_NAME,body:null,contact:null},mf=[],gf=[],vf=[],yf=[],xf=[],bf=[],wf={type:"beginContact",bodyA:null,bodyB:null},_f={type:"endContact",bodyA:null,bodyB:null},Mf={type:"beginShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null},Sf={type:"endShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null},Ef={specular:1515554,color:15790320,shininess:60,flatShading:!0},Tf={diceColor:"#202020",textColor:"#ffffff"};class Af{constructor(t,e,i={diceColor:"#202020",textColor:"#aaaaaa"}){this.w=t,this.h=e,this.options=i,this.scale=50,this.labels=[" ","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"],this.options=Object.assign(Object.assign({},Tf),i)}setColor({diceColor:t,textColor:e}){this.options.diceColor=t,this.options.textColor=e}get radius(){return this.scale*this.scaleFactor}get diceColor(){return this.options.diceColor}get textColor(){return this.options.textColor}get buffer(){return this.geometry.geometry}create(){this.geometry=new ar(this.getGeometry(),this.getMaterials()),this.geometry.receiveShadow=!0,this.geometry.castShadow=!0,this.body.position.set(0+2*this.radius*Math.random(),0+2*this.radius*Math.random(),0+4*this.radius),this.body.velocity.x=500*Math.random()*2-1,this.body.velocity.y=500*Math.random()*2-1,this.body.angularVelocity.x=100*Math.random(),this.body.angularVelocity.y=100*Math.random()}getGeometry(){let t=new Array(this.vertices.length);for(let e=0;e=0&&s=0&&i!==r+1?n.unshift([t,i],[e,s]):n.push([t,i],[e,s]),r=i)}4===n.length&&i.push([i[n[0][0]][n[0][1]],i[n[1][0]][n[1][1]],i[n[3][0]][n[3][1]],i[n[2][0]][n[2][1]],-1])}for(let t=0;t=0&&n<4){-1==--n&&(n=3);let s=i[t][n];if(e.indexOf(s)>=0){r.push(s);break}}}--s}r.push(-1),i.push(r)}return{vectors:e,faces:i}}makeGeometry(t,e){let i=new Vn;for(let e=0;e6&&("6"==e||"9"==e)&&n.fillText(" .",i.width/2,i.height/2);var a=new Qe(i);return a.needsUpdate=!0,a}clone(){return{body:new kh({mass:this.mass,shape:this.shape}),geometry:this.geometry.clone()}}}class Lf extends Af{constructor(t,e,i=Tf){super(t,e,i),this.sides=20,this.tab=-.2,this.af=-Math.PI/4/2,this.chamfer=.955,this.vertices=[],this.faces=[[0,11,5,1],[0,5,1,2],[0,1,7,3],[0,7,10,4],[0,10,11,5],[1,5,9,6],[5,11,4,7],[11,10,2,8],[10,7,6,9],[7,1,8,10],[3,9,4,11],[3,4,2,12],[3,2,6,13],[3,6,8,14],[3,8,9,15],[4,9,5,16],[2,4,11,17],[6,2,10,18],[8,6,7,19],[9,8,1,20]],this.scaleFactor=1,this.values=[...Array(20).keys()],this.margin=1,this.mass=400;let n=(1+Math.sqrt(5))/2;this.vertices=[[-1,n,0],[1,n,0],[-1,-n,0],[1,-n,0],[0,-1,n],[0,1,n],[0,-1,-n],[0,1,-n],[n,0,-1],[n,0,1],[-n,0,-1],[-n,0,1]],this.create()}}class Cf extends Af{constructor(t,e,i=Tf){super(t,e,i),this.mass=350,this.sides=12,this.tab=.2,this.af=-Math.PI/4/2,this.chamfer=.968,this.vertices=[],this.faces=[[2,14,4,12,0,1],[15,9,11,19,3,2],[16,10,17,7,6,3],[6,7,19,11,18,4],[6,18,2,0,16,5],[18,11,9,14,2,6],[1,17,10,8,13,7],[1,13,5,15,3,8],[13,8,12,4,5,9],[5,4,14,9,15,10],[0,12,8,10,16,11],[3,19,7,17,1,12]],this.scaleFactor=.9,this.values=[...Array(12).keys()],this.margin=1;let n=(1+Math.sqrt(5))/2,r=1/n;this.vertices=[[0,r,n],[0,r,-n],[0,-r,n],[0,-r,-n],[n,0,r],[n,0,-r],[-n,0,r],[-n,0,-r],[r,n,0],[r,-n,0],[-r,n,0],[-r,-n,0],[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]],this.create()}}class Rf extends Af{constructor(t,e,i=Tf){super(t,e,i),this.mass=350,this.sides=10,this.tab=0,this.af=6*-Math.PI/5,this.chamfer=.945,this.vertices=[],this.faces=[[5,7,11,0],[4,2,10,1],[1,3,11,2],[0,8,10,3],[7,9,11,4],[8,6,10,5],[9,1,11,6],[2,0,10,7],[3,5,11,8],[6,4,10,9],[1,0,2,-1],[1,2,3,-1],[3,2,4,-1],[3,4,5,-1],[5,4,6,-1],[5,6,7,-1],[7,6,8,-1],[7,8,9,-1],[9,8,0,-1],[9,0,1,-1]],this.scaleFactor=.9,this.values=[...Array(10).keys()],this.margin=1;for(let t=0,e=0;t<10;++t,e+=2*Math.PI/10)this.vertices.push([Math.cos(e),Math.sin(e),.105*(t%2?1:-1)]);this.vertices.push([0,0,-1]),this.vertices.push([0,0,1]),this.create()}}class Df extends Af{constructor(t,e,i=Tf){super(t,e,i),this.labels=["","00","10","20","30","40","50","60","70","80","90"],this.sides=100,this.mass=350,this.tab=0,this.af=6*-Math.PI/5,this.chamfer=.945,this.vertices=[],this.faces=[[5,7,11,0],[4,2,10,1],[1,3,11,2],[0,8,10,3],[7,9,11,4],[8,6,10,5],[9,1,11,6],[2,0,10,7],[3,5,11,8],[6,4,10,9],[1,0,2,-1],[1,2,3,-1],[3,2,4,-1],[3,4,5,-1],[5,4,6,-1],[5,6,7,-1],[7,6,8,-1],[7,8,9,-1],[9,8,0,-1],[9,0,1,-1]],this.scaleFactor=.9,this.values=[...Array(10).keys()],this.margin=1;for(let t=0,e=0;t<10;++t,e+=2*Math.PI/10)this.vertices.push([Math.cos(e),Math.sin(e),.105*(t%2?1:-1)]);this.vertices.push([0,0,-1]),this.vertices.push([0,0,1]),this.create()}}class Pf extends Af{constructor(t,e,i=Tf){super(t,e,i),this.mass=340,this.sides=8,this.tab=0,this.af=-Math.PI/4/2,this.chamfer=.965,this.vertices=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],this.faces=[[0,2,4,1],[0,4,3,2],[0,3,5,3],[0,5,2,4],[1,3,4,5],[1,4,2,6],[1,2,5,7],[1,5,3,8]],this.scaleFactor=1,this.values=[...Array(8).keys()],this.margin=1.2,this.create()}}class Nf extends Af{constructor(t,e,i=Tf){super(t,e,i),this.mass=300,this.tab=.1,this.af=Math.PI/4,this.chamfer=.96,this.vertices=[[-1,-1,-1],[1,-1,-1],[1,1,-1],[-1,1,-1],[-1,-1,1],[1,-1,1],[1,1,1],[-1,1,1]],this.faces=[[0,3,2,1,1],[1,2,6,5,2],[0,1,5,4,3],[3,7,6,2,4],[0,4,7,3,5],[4,5,6,7,6]],this.scaleFactor=.9,this.sides=6,this.margin=1,this.values=[...Array(6).keys()],this.create()}}class If extends Af{constructor(t,e,i=Tf){super(t,e,i),this.mass=300,this.tab=-.1,this.af=7*Math.PI/6,this.chamfer=.96,this.vertices=[[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],this.faces=[[1,0,2,1],[0,1,3,2],[0,3,2,3],[1,2,3,4]],this.scaleFactor=1.2,this.sides=4,this.margin=1,this.d4FaceTexts=[[[],[0,0,0],[2,4,3],[1,3,4],[2,1,4],[1,2,3]],[[],[0,0,0],[2,3,4],[3,1,4],[2,4,1],[3,2,1]],[[],[0,0,0],[4,3,2],[3,4,1],[4,2,1],[3,1,2]],[[],[0,0,0],[4,2,3],[1,4,3],[4,1,2],[1,3,2]]],this.faceTexts=this.d4FaceTexts[0],this.values=[...Array(4).keys()],this.create()}getMaterials(){let t=[];for(let e=0;et.geometry))),this.world.add(...[...this.current.values()].flat())}onload(){this.container.empty(),this.container.style.opacity="1",document.body.appendChild(this.container),this.renderer.shadowMap.enabled=this.shadows,this.renderer.shadowMap.type=2,this.container.appendChild(this.renderer.domElement),this.renderer.setClearColor(0,0),this.scene=new po,this.initScene(),this.registerDomEvent(window,"resize",(()=>{this.initScene()})),this.initWorld()}start(){return t(this,void 0,void 0,(function*(){return new Promise(((e,i)=>t(this,void 0,void 0,(function*(){this.current.size||i(),this.event.on("throw-finished",(t=>{e(t)})),this.event.on("error",(t=>{i(t)})),this.animating=!0,this.render()}))))}))}enableShadows(){this.shadows=!0,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}disableShadows(){this.shadows=!1,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}get mw(){return Math.max(this.WIDTH,this.HEIGHT)}setDimensions(t){this.display.currentWidth=this.container.clientWidth/2,this.display.currentHeight=this.container.clientHeight/2,t?(this.display.containerWidth=t.w,this.display.containerHeight=t.h):(this.display.containerWidth=this.display.currentWidth,this.display.containerHeight=this.display.currentHeight),this.display.aspect=Math.min(this.display.currentWidth/this.display.containerWidth,this.display.currentHeight/this.display.containerHeight),this.display.scale=Math.sqrt(this.display.containerWidth*this.display.containerWidth+this.display.containerHeight*this.display.containerHeight)/13,this.renderer.setSize(2*this.display.currentWidth,2*this.display.currentHeight),this.cameraHeight.max=this.display.currentHeight/this.display.aspect/Math.tan(10*Math.PI/180),this.factory.width=this.display.currentWidth,this.factory.height=this.display.currentHeight,this.cameraHeight.medium=this.cameraHeight.max/1.5,this.cameraHeight.far=this.cameraHeight.max,this.cameraHeight.close=this.cameraHeight.max/2}initCamera(){this.camera&&this.scene.remove(this.camera),this.camera=new fr(20,this.display.currentWidth/this.display.currentHeight,1,1.3*this.cameraHeight.max),this.camera.position.z=this.cameraHeight.far,this.camera.lookAt(new ni(0,0,0))}initLighting(){const t=Math.max(this.display.containerWidth,this.display.containerHeight);this.light&&this.scene.remove(this.light),this.ambientLight&&this.scene.remove(this.ambientLight),this.light=new zc(this.colors.spotlight,1),this.light.position.set(-t/2,t/2,3*t),this.light.target.position.set(0,0,0),this.light.distance=5*t,this.light.angle=Math.PI/4,this.light.castShadow=this.shadows,this.light.shadow.camera.near=t/10,this.light.shadow.camera.far=5*t,this.light.shadow.camera.fov=50,this.light.shadow.bias=.001,this.light.shadow.mapSize.width=1024,this.light.shadow.mapSize.height=1024,this.scene.add(this.light),this.ambientLight=new Hc(16777215,.9),this.scene.add(this.ambientLight)}initDesk(){this.desk&&this.scene.remove(this.desk);let t=new tc;t.opacity=.5,this.desk=new ar(new Lr(6*this.display.containerWidth,6*this.display.containerHeight,1,1),t),this.desk.receiveShadow=this.shadows,this.scene.add(this.desk)}initScene(){this.setDimensions(),this.initCamera(),this.initLighting(),this.initDesk(),this.camera.updateProjectionMatrix(),this.renderer.render(this.scene,this.camera)}initWorld(){this.world=new Bf(this.WIDTH,this.HEIGHT),this.iterations=0}returnResult(){for(const t of this.stack.dynamic){if(!this.current.has(t))continue;const e=this.current.get(t),i=e.filter((t=>t instanceof Vf&&t.isPercentile)),n=[];for(let t=0;t!(t instanceof Vf&&t.isPercentile))).map((t=>t.getUpsideValue())).filter((t=>t)),...n.map((([t,e])=>{let i=t.getUpsideValue();if(!e)return i;let n=e.getUpsideValue();return 10===i&&10==n?100:(10==n&&(n=0),10==i&&(i=0),10*i+n)})).filter((t=>t))];t.setResults(r)}this.event.trigger("throw-finished",this.stack)}render(){if(this.throwFinished())try{this.returnResult(),this.registerInterval(window.setTimeout((()=>{this.container.style.opacity="0",this.registerInterval(window.setTimeout((()=>{this.animating=!1,this.unload()}),1e3))}),2e3))}catch(t){this.event.trigger("error",t)}else this.animation=requestAnimationFrame((()=>this.render())),this.world.step(this.frame_rate),this.iterations++,this.current.forEach((t=>{t.map((t=>t.set()))})),this.renderer.render(this.scene,this.camera)}dispose(...t){t.forEach((t=>{"dispose"in t&&t.dispose(),t.children&&this.dispose(...t.children)}))}detach(){}onunload(){cancelAnimationFrame(this.animation),this.container.detach(),this.container.empty(),this.renderer.domElement.detach(),this.renderer.dispose(),this.factory.dispose(),this.ambientLight.dispose(),this.light.dispose(),this.scene.children.forEach((t=>this.dispose(t))),this.scene.remove(this.scene,...this.scene.children,...[...this.current.values()].flat().map((t=>t.geometry))),this.current.forEach((t=>{t.forEach((t=>{[...Array.isArray(t.geometry.material)?t.geometry.material:[t.geometry.material]].forEach((t=>t&&t.dispose())),this.world.world.removeBody(t.body)}))})),this.current=new Map}onThrowFinished(){}throwFinished(){let t=!0;if(this.iterations<10/this.frame_rate)for(const e of this.current.values())for(const i of e){if(!0===i.stopped)continue;const e=i.body.angularVelocity,n=i.body.velocity;if(Math.abs(e.x)<6&&Math.abs(e.y)<6&&Math.abs(e.z)<6&&Math.abs(n.x)<6&&Math.abs(n.y)<6&&Math.abs(n.z)<6){if(i.stopped){if(this.iterations-i.stopped>3){i.stopped=!0;continue}}else i.stopped=this.iterations;t=!1}else i.stopped=void 0,t=!1}return t}}class Bf{constructor(t,e){this.WIDTH=t,this.HEIGHT=e,this.world=new cf({gravity:new fh(0,0,-3928)}),this.ground=this.getPlane(),this.diceMaterial=new ld,this.deskMaterial=new ld,this.barrierMaterial=new ld,this.world.broadphase=new eu,this.world.allowSleep=!0,this.ground.position.set(0,0,0),this.world.addBody(this.ground),this.buildWalls()}add(...t){t.forEach((t=>{this.world.addBody(t.body)}))}step(t=1/60){const e=performance.now()/1e3;if(this.lastCallTime){const i=e-this.lastCallTime;this.world.step(t,i)}else this.world.step(t);this.lastCallTime=e}buildWalls(){this.world.addContactMaterial(new od(this.deskMaterial,this.diceMaterial,{friction:.01,restitution:.5})),this.world.addContactMaterial(new od(this.barrierMaterial,this.diceMaterial,{friction:0,restitution:1})),this.world.addContactMaterial(new od(this.diceMaterial,this.diceMaterial,{friction:0,restitution:.5})),this.world.addBody(new kh({allowSleep:!1,mass:0,shape:new cd,material:this.deskMaterial}));let t=new kh({allowSleep:!1,mass:0,shape:new cd,material:this.barrierMaterial});t.quaternion.setFromAxisAngle(new fh(1,0,0),Math.PI/2),t.position.set(0,.93*this.HEIGHT,0),this.world.addBody(t),t=new kh({allowSleep:!1,mass:0,shape:new cd,material:this.barrierMaterial}),t.quaternion.setFromAxisAngle(new fh(1,0,0),-Math.PI/2),t.position.set(0,.93*-this.HEIGHT,0),this.world.addBody(t),t=new kh({allowSleep:!1,mass:0,shape:new cd,material:this.barrierMaterial}),t.quaternion.setFromAxisAngle(new fh(0,1,0),-Math.PI/2),t.position.set(.93*this.WIDTH,0,0),this.world.addBody(t),t=new kh({allowSleep:!1,mass:0,shape:new cd,material:this.barrierMaterial}),t.quaternion.setFromAxisAngle(new fh(0,1,0),Math.PI/2),t.position.set(.93*-this.WIDTH,0,0),this.world.addBody(t)}getPlane(){return new kh({type:kh.STATIC,shape:new cd})}}const kf={pos:{x:0+100*Math.random(),y:0+100*Math.random(),z:100},velocity:{x:500*Math.random()*2-1,y:500*Math.random()*2-1,z:0},angular:{x:100*Math.random(),y:100*Math.random(),z:100*Math.random()},axis:{x:Math.random(),y:Math.random(),z:Math.random(),w:Math.random()}};class Ff{constructor(t,e,i){this.w=t,this.h=e,this.data=i,this.scale=50,this.stopped=!1,this.iteration=0,this.vector=Object.assign({},kf),this.geometry=i.geometry,this.body=i.body}generateVector(t){const e=Math.sqrt(t.x*t.x+t.y*t.y),i=(Math.random()+3)*e,n={x:t.x/e,y:t.y/e},r=this.makeRandomVector(n),s={x:this.w*(r.x>0?-1:1)*.9,y:this.h*(r.y>0?-1:1)*.9,z:200*Math.random()+200},a=Math.abs(r.x/r.y);a>1?s.y/=a:s.x*=a;const o=this.makeRandomVector(n);return{pos:s,velocity:{x:o.x*i,y:o.y*i,z:-10},angular:{x:-(Math.random()*r.y*5+this.inertia*r.y),y:Math.random()*r.x*5+this.inertia*r.x,z:0},axis:{x:Math.random(),y:Math.random(),z:Math.random(),w:Math.random()}}}makeRandomVector(t){const e=Math.random()*Math.PI/5-Math.PI/5/2,i={x:t.x*Math.cos(e)-t.y*Math.sin(e),y:t.x*Math.sin(e)+t.y*Math.cos(e)};return 0==i.x&&(i.x=.01),0==i.y&&(i.y=.01),i}get buffer(){return this.geometry.geometry}getUpsideValue(){let t,e=new ni(0,0,4==this.sides?-1:1),i=2*Math.PI;const n=this.buffer.getAttribute("normal").array;for(let r=0,s=this.buffer.groups.length;rthis.sides;)r-=this.sides;for(;r<1;)r+=this.sides;e.groups[n].materialIndex=r+1}}this.updateMaterialsForValue(t-i),this.geometry.geometry=e}resetBody(){this.body.vlambda=new fh,this.body.position=new fh,this.body.previousPosition=new fh,this.body.initPosition=new fh,this.body.velocity=new fh,this.body.initVelocity=new fh,this.body.force=new fh,this.body.torque=new fh,this.body.quaternion=new Mh,this.body.initQuaternion=new Mh,this.body.angularVelocity=new fh,this.body.initAngularVelocity=new fh,this.body.interpolatedPosition=new fh,this.body.interpolatedQuaternion=new Mh,this.body.inertia=new fh,this.body.invInertia=new fh,this.body.invInertiaWorld=new dh,this.body.invInertiaSolve=new fh,this.body.invInertiaWorldSolve=new dh,this.body.wlambda=new fh,this.body.updateMassProperties()}updateMaterialsForValue(t){}set(){this.geometry.position.set(this.body.position.x,this.body.position.y,this.body.position.z),this.geometry.quaternion.set(this.body.quaternion.x,this.body.quaternion.y,this.body.quaternion.z,this.body.quaternion.w)}create(){this.body.position.set(this.vector.pos.x,this.vector.pos.y,this.vector.pos.z),this.body.quaternion.setFromAxisAngle(new fh(this.vector.axis.x,this.vector.axis.y,this.vector.axis.z),this.vector.axis.w*Math.PI*2),this.body.angularVelocity.set(this.vector.angular.x,this.vector.angular.y,this.vector.angular.z),this.body.velocity.set(this.vector.velocity.x,this.vector.velocity.y,this.vector.velocity.z),this.body.linearDamping=.1,this.body.angularDamping=.1}}class Of extends e.Component{constructor(t,e,i){super(),this.width=t,this.height=e,this.plugin=i,this.d100=new Df(this.width,this.height,this.colors),this.d20=new Lf(this.width,this.height,this.colors),this.d12=new Cf(this.width,this.height,this.colors),this.d10=new Rf(this.width,this.height,this.colors),this.d8=new Pf(this.width,this.height,this.colors),this.d6=new Nf(this.width,this.height,this.colors),this.d4=new If(this.width,this.height,this.colors)}get colors(){return{diceColor:this.plugin.data.diceColor,textColor:this.plugin.data.textColor}}updateColors(){this.dispose(),this.d100=new Df(this.width,this.height,this.colors),this.d20=new Lf(this.width,this.height,this.colors),this.d12=new Cf(this.width,this.height,this.colors),this.d10=new Rf(this.width,this.height,this.colors),this.d8=new Pf(this.width,this.height,this.colors),this.d6=new Nf(this.width,this.height,this.colors),this.d4=new If(this.width,this.height,this.colors)}onunload(){this.dispose()}disposeChildren(...t){t.forEach((t=>{"dispose"in t&&t.dispose(),t.children&&this.disposeChildren(...t.children)}))}dispose(){this.disposeChildren(this.d100.geometry.children),this.disposeChildren(this.d20.geometry.children),this.disposeChildren(this.d12.geometry.children),this.disposeChildren(this.d10.geometry.children),this.disposeChildren(this.d8.geometry.children),this.disposeChildren(this.d6.geometry.children),this.disposeChildren(this.d4.geometry.children)}getDice(t,e){const i=new Map;for(const n of t.dynamic){const t=[];switch(n.faces.max){case 4:t.push(...new Array(n.rolls).fill(0).map((t=>new Wf(this.width,this.height,this.d4.clone(),e))));break;case 6:t.push(...new Array(n.rolls).fill(0).map((t=>new Gf(this.width,this.height,this.d6.clone(),e))));break;case 8:t.push(...new Array(n.rolls).fill(0).map((t=>new qf(this.width,this.height,this.d8.clone(),e))));break;case 10:t.push(...new Array(n.rolls).fill(0).map((t=>new Vf(this.width,this.height,this.d10.clone(),e))));break;case 12:t.push(...new Array(n.rolls).fill(0).map((t=>new Hf(this.width,this.height,this.d12.clone(),e))));break;case 20:t.push(...new Array(n.rolls).fill(0).map((t=>new Uf(this.width,this.height,this.d20.clone(),e))));break;case 100:t.push(...new Array(n.rolls).fill(0).map((t=>[new Vf(this.width,this.height,this.d100.clone(),e,!0),new Vf(this.width,this.height,this.d10.clone(),e,!0)])).flat())}t.length&&i.set(n,t)}return i}}class Uf extends Ff{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=20,this.inertia=6,n&&(this.vector=this.generateVector(n)),this.create()}}class Hf extends Ff{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=12,this.inertia=8,n&&(this.vector=this.generateVector(n)),this.create()}}class Vf extends Ff{constructor(t,e,i,n,r=!1){super(t,e,i),this.w=t,this.h=e,this.data=i,this.isPercentile=r,this.sides=10,this.inertia=9,n&&(this.vector=this.generateVector(n)),this.create()}}class qf extends Ff{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=8,this.inertia=10,n&&(this.vector=this.generateVector(n)),this.create()}}class Gf extends Ff{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=6,this.inertia=13,n&&(this.vector=this.generateVector(n)),this.create()}}class Wf extends Ff{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=4,this.inertia=5,n&&(this.vector=this.generateVector(n)),this.create()}}String.prototype.matchAll=String.prototype.matchAll||function*(t){const e=t.global?t.flags:t.flags+"g",i=new RegExp(t,e);let n;for(;n=i.exec(this);)yield n};const jf={returnAllTags:!0,rollLinksForTags:!1,copyContentButton:!0,customFormulas:[],displayResultsInline:!1,displayLookupRoll:!0,formulas:{},persistResults:!1,results:{},defaultRoll:1,defaultFace:100,renderer:!1,diceColor:"#202020",textColor:"#ffffff",showLeafOnStartup:!0,showDice:!0};class Xf extends e.Plugin{constructor(){super(...arguments),this.persistingFiles=new Set,this.fileMap=new Map,this.operators={"+":(t,e)=>t+e,"-":(t,e)=>t-e,"*":(t,e)=>t*e,"/":(t,e)=>t/e,"^":(t,e)=>Math.pow(t,e)}}get view(){const t=this.app.workspace.getLeavesOfType(ee),e=t.length?t[0]:null;if(e&&e.view&&e.view instanceof ie)return e.view}addDiceView(e=!1){return t(this,void 0,void 0,(function*(){e&&!this.data.showLeafOnStartup||this.app.workspace.getLeavesOfType(ee).length||(yield this.app.workspace.getRightLeaf(!1).setViewState({type:ee}))}))}onload(){return t(this,void 0,void 0,(function*(){console.log("DiceRoller plugin loaded"),this.data=Object.assign(jf,yield this.loadData()),this.renderer=new zf(this),this.addSettingTab(new te(this.app,this)),this.registerView(ee,(t=>new ie(this,t))),this.app.workspace.onLayoutReady((()=>this.addDiceView(!0))),this.registerEvent(this.app.workspace.on("dice-roller:update-colors",(()=>{this.renderer.factory.updateColors()}))),this.registerEvent(this.app.workspace.on("dice-roller:render-dice",(i=>t(this,void 0,void 0,(function*(){const t=yield this.getRoller(i,"external");if(t instanceof Xt)if(yield t.roll(),t.dice.length){try{this.addChild(this.renderer),this.renderer.setDice(t),yield this.renderer.start(),t.recalculate()}catch(t){new e.Notice("There was an error rendering the roll."),console.error(t)}this.app.workspace.trigger("dice-roller:rendered-result",t.result)}else new e.Notice("Invalid formula.");else new e.Notice("The Dice View only supports dice rolls.")}))))),this.addCommand({id:"open-view",name:"Open Dice View",checkCallback:t=>{if(!this.view)return t||this.addDiceView(),!0}}),this.addCommand({id:"reroll",name:"Re-roll Dice",checkCallback:t=>{const i=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(i&&"preview"===i.getMode()&&this.fileMap.has(i.file))return t||this.fileMap.get(i.file).forEach((t=>{t.roll()})),!0}});const i=Lt(a).html[0];(0,e.addIcon)(Ot,i);const n=Lt(o).html[0];(0,e.addIcon)(Ut,n),this.registerMarkdownPostProcessor(((i,n)=>t(this,void 0,void 0,(function*(){var r;let s=i.querySelectorAll("code");if(!s.length)return;const a=n.sourcePath,o=n.getSectionInfo(i),l=null===(r=n.getSectionInfo(i))||void 0===r?void 0:r.lineStart,c=this.app.vault.getAbstractFileByPath(n.sourcePath);if(!(c&&c instanceof e.TFile&&o))return;const h={};for(let i=0;it(this,void 0,void 0,(function*(){var t,e,s,c;if(yield o.roll(),this.data.persistResults&&!/dice\-/.test(r.innerText)||/dice\+/.test(r.innerText)){this.persistingFiles.add(n.sourcePath),h[i]=o,o.save=!0;const r=null!==(c=null===(s=null===(e=null===(t=this.data.results)||void 0===t?void 0:t[a])||void 0===e?void 0:e[l])||void 0===s?void 0:s[i])&&void 0!==c?c:null;r&&(yield o.applyResult(r))}r.replaceWith(o.containerEl)}));o.loaded?yield u():o.on("loaded",(()=>t(this,void 0,void 0,(function*(){yield u()})))),this.fileMap.has(c)||this.fileMap.set(c,[]),this.fileMap.set(c,[...this.fileMap.get(c),o]);const d=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(d&&this.fileMap.has(c)&&1===this.fileMap.get(c).length){const e=this;let i=Rt(d,{onUnloadFile:function(n){return function(r){return t(this,void 0,void 0,(function*(){return r==c&&(e.fileMap.delete(c),i()),yield n.call(this,r)}))}}});d.register(i),d.register((()=>this.fileMap.delete(c)))}}catch(t){console.error(t),new e.Notice(`There was an error parsing the dice string: ${r.innerText}.\n\n${t}`,5e3);continue}}if(a in this.data.results&&(this.data.results[a][l]={}),Object.entries(h).length){const r=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(r){const e=this;let s=Rt(r,{onUnloadFile:function(r){return function(o){var l,u,d,p;return t(this,void 0,void 0,(function*(){if(o=c){e.persistingFiles.has(a)&&(e.persistingFiles.delete(a),e.data.results[a]={});for(let t in h){const r=h[t],s=null===(l=n.getSectionInfo(i))||void 0===l?void 0:l.lineStart;if(null==s)continue;const o={[s]:Object.assign(Object.assign({},null!==(d=null===(u=e.data.results[a])||void 0===u?void 0:u[s])&&void 0!==d?d:{}),{[t]:r.toResult()})};e.data.results[a]=Object.assign(Object.assign({},null!==(p=e.data.results[a])&&void 0!==p?p:{}),o),yield e.saveSettings()}}return s(),yield r.call(this,o)}))}}});r.register(s),r.register((()=>t(this,void 0,void 0,(function*(){var t,e,r,s;this.persistingFiles.has(a)&&(this.persistingFiles.delete(a),this.data.results[a]={});for(let o in h){const l=h[o],c=null===(t=n.getSectionInfo(i))||void 0===t?void 0:t.lineStart;if(null==c)continue;const u={[c]:Object.assign(Object.assign({},null!==(r=null===(e=this.data.results[a])||void 0===e?void 0:e[c])&&void 0!==r?r:{}),{[o]:l.toResult()})};this.data.results[a]=Object.assign(Object.assign({},null!==(s=this.data.results[a])&&void 0!==s?s:{}),u),yield this.saveSettings()}}))))}}})))),this.lexer=new(s()),this.addLexerRules();var r={precedence:2,associativity:"left"},l={precedence:1,associativity:"left"};this.parser=new Ct({"+":l,"-":l,"*":r,"/":r,"^":{precedence:3,associativity:"right"}})}))}parseDice(e,i){return t(this,void 0,void 0,(function*(){const t=this.getRoller(e,i);return{result:yield t.roll(),roller:t}}))}clearEmpties(t){for(var e in t)t[e]&&"object"==typeof t[e]&&(this.clearEmpties(t[e]),0===Object.keys(t[e]).length&&delete t[e])}saveSettings(){return t(this,void 0,void 0,(function*(){this.clearEmpties(this.data.results),yield this.saveData(this.data)}))}getRoller(t,e){let i=!t.includes("|nodice")&&this.data.showDice;(t=(0,Dt.decode)(t.replace("|nodice","").replace("\\|","|")))in this.data.formulas&&(t=this.data.formulas[t]);const n=this.parse(t);switch(this.getTypeFromLexemes(n)){case"dice":return new Xt(this,t,n,i);case"table":return new Qt(this,t,n[0],e,i);case"section":return new Yt(this,t,n[0],e,i);case"tag":if(!this.app.plugins.plugins.dataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new Zt(this,t,n[0],e,i);case"link":return new Jt(this,t,n[0],e,i)}}getTypeFromLexemes(t){return t.some((({type:t})=>"table"===t))?"table":t.some((({type:t})=>"section"===t))?"section":t.some((({type:t})=>"tag"===t))?"tag":t.some((({type:t})=>"link"===t))?"link":"dice"}addLexerRules(){this.lexer.addRule(/\s+/,(function(){})),this.lexer.addRule(/[{}]+/,(function(){})),this.lexer.addRule(Nt,(function(t){return{type:"table",data:t,original:t,conditionals:null}})),this.lexer.addRule(It,(function(t){return{type:"section",data:t,original:t,conditionals:null}})),this.lexer.addRule(Pt,(t=>{var e;const{groups:i}=t.match(Pt);let n="tag";return("link"===i.types||this.data.rollLinksForTags&&!(null===(e=i.types)||void 0===e?void 0:e.length))&&(n="link"),{type:n,data:t,original:t,conditionals:null}})),this.lexer.addRule(kt,(t=>{const{roll:e=this.data.defaultRoll,faces:i=this.data.defaultFace,conditional:n}=t.match(kt).groups;let r=[];if(n){let t=n.matchAll(Ft);if(t)for(let e of t){if(!e)continue;const{comparer:t,operator:i}=e.groups;r.push({comparer:Number(t),operator:i})}}return{type:"dice",data:`${e}d${i}`,original:t,conditionals:r}})),this.lexer.addRule(/\d+/,(function(t){return{type:"dice",data:t,original:t,conditionals:[]}})),this.lexer.addRule(zt,(function(t){return{type:"math",data:t,original:t,conditionals:null}})),this.lexer.addRule(/1[Dd]S/,(function(t){var e;const[,i]=null!==(e=t.match(/1[Dd]S/))&&void 0!==e?e:[,"1"];return{type:"stunt",data:i,original:t,conditionals:[]}})),this.lexer.addRule(/kh?(?!:l)(\d*)/,(function(t){return{type:"kh",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/dl?(?!:h)\d*/,(function(t){return{type:"dl",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/kl\d*/,(function(t){return{type:"kl",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/dh\d*/,(function(t){return{type:"dh",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/!!(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/,(function(t){let[,e="1"]=t.match(/!!(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/),i=[];if(/(?:(!?=|=!|>=?|<=?)(-?\d+))+/.test(t))for(const[,e,n]of t.matchAll(/(?:(!?=|=!|>=?|<=?)(-?\d+))/g))i.push({operator:e,comparer:Number(n)});return/!!i/.test(t)&&(e="100"),{type:"!!",data:e,original:t,conditionals:i}})),this.lexer.addRule(/!(i|\d+)?(?:(!?=|=!?|>=?|<=?)(-?\d+))*/,(function(t){let[,e="1"]=t.match(/!(i|\d+)?(?:(!?=|=!?|>=?|<=?)(-?\d+))*/),i=[];if(/(?:(!?=|=!|>=?|<=?)(\d+))+/.test(t))for(const[,e,n]of t.matchAll(/(?:(!?=|=!?|>=?|<=?)(-?\d+))/g))i.push({operator:e,comparer:Number(n)});return/!i/.test(t)&&(e="100"),{type:"!",data:e,original:t,conditionals:i}})),this.lexer.addRule(/r(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/,(function(t){let[,e="1"]=t.match(/r(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/),i=[];if(/(?:(!?={1,2}|>=?|<=?)(-?\d+))+/.test(t))for(const[,e,n]of t.matchAll(/(?:(!?=|=!|>=?|<=?)(-?\d+))/g))i.push({operator:e,comparer:Number(n)});return/ri/.test(t)&&(e="100"),{type:"r",data:e,original:t,conditionals:i}}))}onunload(){console.log("DiceRoller unloaded"),this.app.workspace.getLeavesOfType(ee).forEach((t=>t.detach())),"__THREE__"in window&&delete window.__THREE__}parse(t){this.lexer.setInput(t);for(var e,i=[];e=this.tryLex();)i.push(e);return this.parser.parse(i)}tryLex(){try{return this.lexer.lex()}catch(t){}}}})();var r=exports;for(var s in n)r[s]=n[s];n.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})(); +(()=>{var t={492:function(t,e,i){var n;t=i.nmd(t),function(r){var s=(t&&t.exports,"object"==typeof global&&global);s.global!==s&&s.window;var a=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,o=/[\x01-\x7F]/g,l=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,h={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon",ˆ:"circ",ˇ:"caron","°":"deg","©":"copy","®":"reg","℗":"copysr",℘:"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78",𝒶:"ascr",𝕒:"aopf",𝔞:"afr",𝔸:"Aopf",𝔄:"Afr",𝒜:"Ascr",ª:"ordf",á:"aacute",Á:"Aacute",à:"agrave",À:"Agrave",ă:"abreve",Ă:"Abreve",â:"acirc",Â:"Acirc",å:"aring",Å:"angst",ä:"auml",Ä:"Auml",ã:"atilde",Ã:"Atilde",ą:"aogon",Ą:"Aogon",ā:"amacr",Ā:"Amacr",æ:"aelig",Æ:"AElig",𝒷:"bscr",𝕓:"bopf",𝔟:"bfr",𝔹:"Bopf",ℬ:"Bscr",𝔅:"Bfr",𝔠:"cfr",𝒸:"cscr",𝕔:"copf",ℭ:"Cfr",𝒞:"Cscr",ℂ:"Copf",ć:"cacute",Ć:"Cacute",ĉ:"ccirc",Ĉ:"Ccirc",č:"ccaron",Č:"Ccaron",ċ:"cdot",Ċ:"Cdot",ç:"ccedil",Ç:"Ccedil","℅":"incare",𝔡:"dfr",ⅆ:"dd",𝕕:"dopf",𝒹:"dscr",𝒟:"Dscr",𝔇:"Dfr",ⅅ:"DD",𝔻:"Dopf",ď:"dcaron",Ď:"Dcaron",đ:"dstrok",Đ:"Dstrok",ð:"eth",Ð:"ETH",ⅇ:"ee",ℯ:"escr",𝔢:"efr",𝕖:"eopf",ℰ:"Escr",𝔈:"Efr",𝔼:"Eopf",é:"eacute",É:"Eacute",è:"egrave",È:"Egrave",ê:"ecirc",Ê:"Ecirc",ě:"ecaron",Ě:"Ecaron",ë:"euml",Ë:"Euml",ė:"edot",Ė:"Edot",ę:"eogon",Ę:"Eogon",ē:"emacr",Ē:"Emacr",𝔣:"ffr",𝕗:"fopf",𝒻:"fscr",𝔉:"Ffr",𝔽:"Fopf",ℱ:"Fscr",ff:"fflig",ffi:"ffilig",ffl:"ffllig",fi:"filig",fj:"fjlig",fl:"fllig",ƒ:"fnof",ℊ:"gscr",𝕘:"gopf",𝔤:"gfr",𝒢:"Gscr",𝔾:"Gopf",𝔊:"Gfr",ǵ:"gacute",ğ:"gbreve",Ğ:"Gbreve",ĝ:"gcirc",Ĝ:"Gcirc",ġ:"gdot",Ġ:"Gdot",Ģ:"Gcedil",𝔥:"hfr",ℎ:"planckh",𝒽:"hscr",𝕙:"hopf",ℋ:"Hscr",ℌ:"Hfr",ℍ:"Hopf",ĥ:"hcirc",Ĥ:"Hcirc",ℏ:"hbar",ħ:"hstrok",Ħ:"Hstrok",𝕚:"iopf",𝔦:"ifr",𝒾:"iscr",ⅈ:"ii",𝕀:"Iopf",ℐ:"Iscr",ℑ:"Im",í:"iacute",Í:"Iacute",ì:"igrave",Ì:"Igrave",î:"icirc",Î:"Icirc",ï:"iuml",Ï:"Iuml",ĩ:"itilde",Ĩ:"Itilde",İ:"Idot",į:"iogon",Į:"Iogon",ī:"imacr",Ī:"Imacr",ij:"ijlig",IJ:"IJlig",ı:"imath",𝒿:"jscr",𝕛:"jopf",𝔧:"jfr",𝒥:"Jscr",𝔍:"Jfr",𝕁:"Jopf",ĵ:"jcirc",Ĵ:"Jcirc",ȷ:"jmath",𝕜:"kopf",𝓀:"kscr",𝔨:"kfr",𝒦:"Kscr",𝕂:"Kopf",𝔎:"Kfr",ķ:"kcedil",Ķ:"Kcedil",𝔩:"lfr",𝓁:"lscr",ℓ:"ell",𝕝:"lopf",ℒ:"Lscr",𝔏:"Lfr",𝕃:"Lopf",ĺ:"lacute",Ĺ:"Lacute",ľ:"lcaron",Ľ:"Lcaron",ļ:"lcedil",Ļ:"Lcedil",ł:"lstrok",Ł:"Lstrok",ŀ:"lmidot",Ŀ:"Lmidot",𝔪:"mfr",𝕞:"mopf",𝓂:"mscr",𝔐:"Mfr",𝕄:"Mopf",ℳ:"Mscr",𝔫:"nfr",𝕟:"nopf",𝓃:"nscr",ℕ:"Nopf",𝒩:"Nscr",𝔑:"Nfr",ń:"nacute",Ń:"Nacute",ň:"ncaron",Ň:"Ncaron",ñ:"ntilde",Ñ:"Ntilde",ņ:"ncedil",Ņ:"Ncedil","№":"numero",ŋ:"eng",Ŋ:"ENG",𝕠:"oopf",𝔬:"ofr",ℴ:"oscr",𝒪:"Oscr",𝔒:"Ofr",𝕆:"Oopf",º:"ordm",ó:"oacute",Ó:"Oacute",ò:"ograve",Ò:"Ograve",ô:"ocirc",Ô:"Ocirc",ö:"ouml",Ö:"Ouml",ő:"odblac",Ő:"Odblac",õ:"otilde",Õ:"Otilde",ø:"oslash",Ø:"Oslash",ō:"omacr",Ō:"Omacr",œ:"oelig",Œ:"OElig",𝔭:"pfr",𝓅:"pscr",𝕡:"popf",ℙ:"Popf",𝔓:"Pfr",𝒫:"Pscr",𝕢:"qopf",𝔮:"qfr",𝓆:"qscr",𝒬:"Qscr",𝔔:"Qfr",ℚ:"Qopf",ĸ:"kgreen",𝔯:"rfr",𝕣:"ropf",𝓇:"rscr",ℛ:"Rscr",ℜ:"Re",ℝ:"Ropf",ŕ:"racute",Ŕ:"Racute",ř:"rcaron",Ř:"Rcaron",ŗ:"rcedil",Ŗ:"Rcedil",𝕤:"sopf",𝓈:"sscr",𝔰:"sfr",𝕊:"Sopf",𝔖:"Sfr",𝒮:"Sscr","Ⓢ":"oS",ś:"sacute",Ś:"Sacute",ŝ:"scirc",Ŝ:"Scirc",š:"scaron",Š:"Scaron",ş:"scedil",Ş:"Scedil",ß:"szlig",𝔱:"tfr",𝓉:"tscr",𝕥:"topf",𝒯:"Tscr",𝔗:"Tfr",𝕋:"Topf",ť:"tcaron",Ť:"Tcaron",ţ:"tcedil",Ţ:"Tcedil","™":"trade",ŧ:"tstrok",Ŧ:"Tstrok",𝓊:"uscr",𝕦:"uopf",𝔲:"ufr",𝕌:"Uopf",𝔘:"Ufr",𝒰:"Uscr",ú:"uacute",Ú:"Uacute",ù:"ugrave",Ù:"Ugrave",ŭ:"ubreve",Ŭ:"Ubreve",û:"ucirc",Û:"Ucirc",ů:"uring",Ů:"Uring",ü:"uuml",Ü:"Uuml",ű:"udblac",Ű:"Udblac",ũ:"utilde",Ũ:"Utilde",ų:"uogon",Ų:"Uogon",ū:"umacr",Ū:"Umacr",𝔳:"vfr",𝕧:"vopf",𝓋:"vscr",𝔙:"Vfr",𝕍:"Vopf",𝒱:"Vscr",𝕨:"wopf",𝓌:"wscr",𝔴:"wfr",𝒲:"Wscr",𝕎:"Wopf",𝔚:"Wfr",ŵ:"wcirc",Ŵ:"Wcirc",𝔵:"xfr",𝓍:"xscr",𝕩:"xopf",𝕏:"Xopf",𝔛:"Xfr",𝒳:"Xscr",𝔶:"yfr",𝓎:"yscr",𝕪:"yopf",𝒴:"Yscr",𝔜:"Yfr",𝕐:"Yopf",ý:"yacute",Ý:"Yacute",ŷ:"ycirc",Ŷ:"Ycirc",ÿ:"yuml",Ÿ:"Yuml",𝓏:"zscr",𝔷:"zfr",𝕫:"zopf",ℨ:"Zfr",ℤ:"Zopf",𝒵:"Zscr",ź:"zacute",Ź:"Zacute",ž:"zcaron",Ž:"Zcaron",ż:"zdot",Ż:"Zdot",Ƶ:"imped",þ:"thorn",Þ:"THORN",ʼn:"napos",α:"alpha",Α:"Alpha",β:"beta",Β:"Beta",γ:"gamma",Γ:"Gamma",δ:"delta",Δ:"Delta",ε:"epsi",ϵ:"epsiv",Ε:"Epsilon",ϝ:"gammad",Ϝ:"Gammad",ζ:"zeta",Ζ:"Zeta",η:"eta",Η:"Eta",θ:"theta",ϑ:"thetav",Θ:"Theta",ι:"iota",Ι:"Iota",κ:"kappa",ϰ:"kappav",Κ:"Kappa",λ:"lambda",Λ:"Lambda",μ:"mu",µ:"micro",Μ:"Mu",ν:"nu",Ν:"Nu",ξ:"xi",Ξ:"Xi",ο:"omicron",Ο:"Omicron",π:"pi",ϖ:"piv",Π:"Pi",ρ:"rho",ϱ:"rhov",Ρ:"Rho",σ:"sigma",Σ:"Sigma",ς:"sigmaf",τ:"tau",Τ:"Tau",υ:"upsi",Υ:"Upsilon",ϒ:"Upsi",φ:"phi",ϕ:"phiv",Φ:"Phi",χ:"chi",Χ:"Chi",ψ:"psi",Ψ:"Psi",ω:"omega",Ω:"ohm",а:"acy",А:"Acy",б:"bcy",Б:"Bcy",в:"vcy",В:"Vcy",г:"gcy",Г:"Gcy",ѓ:"gjcy",Ѓ:"GJcy",д:"dcy",Д:"Dcy",ђ:"djcy",Ђ:"DJcy",е:"iecy",Е:"IEcy",ё:"iocy",Ё:"IOcy",є:"jukcy",Є:"Jukcy",ж:"zhcy",Ж:"ZHcy",з:"zcy",З:"Zcy",ѕ:"dscy",Ѕ:"DScy",и:"icy",И:"Icy",і:"iukcy",І:"Iukcy",ї:"yicy",Ї:"YIcy",й:"jcy",Й:"Jcy",ј:"jsercy",Ј:"Jsercy",к:"kcy",К:"Kcy",ќ:"kjcy",Ќ:"KJcy",л:"lcy",Л:"Lcy",љ:"ljcy",Љ:"LJcy",м:"mcy",М:"Mcy",н:"ncy",Н:"Ncy",њ:"njcy",Њ:"NJcy",о:"ocy",О:"Ocy",п:"pcy",П:"Pcy",р:"rcy",Р:"Rcy",с:"scy",С:"Scy",т:"tcy",Т:"Tcy",ћ:"tshcy",Ћ:"TSHcy",у:"ucy",У:"Ucy",ў:"ubrcy",Ў:"Ubrcy",ф:"fcy",Ф:"Fcy",х:"khcy",Х:"KHcy",ц:"tscy",Ц:"TScy",ч:"chcy",Ч:"CHcy",џ:"dzcy",Џ:"DZcy",ш:"shcy",Ш:"SHcy",щ:"shchcy",Щ:"SHCHcy",ъ:"hardcy",Ъ:"HARDcy",ы:"ycy",Ы:"Ycy",ь:"softcy",Ь:"SOFTcy",э:"ecy",Э:"Ecy",ю:"yucy",Ю:"YUcy",я:"yacy",Я:"YAcy",ℵ:"aleph",ℶ:"beth",ℷ:"gimel",ℸ:"daleth"},u=/["&'<>`]/g,d={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,f=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,m=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,g={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},v={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},y={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},x=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],b=String.fromCharCode,w={}.hasOwnProperty,_=function(t,e){return w.call(t,e)},M=function(t,e){if(!t)return e;var i,n={};for(i in e)n[i]=_(t,i)?t[i]:e[i];return n},S=function(t,e){var i="";return t>=55296&&t<=57343||t>1114111?(e&&A("character reference outside the permissible Unicode range"),"�"):_(y,t)?(e&&A("disallowed character reference"),y[t]):(e&&function(t,e){for(var i=-1,n=t.length;++i65535&&(i+=b((t-=65536)>>>10&1023|55296),t=56320|1023&t),i+=b(t))},E=function(t){return"&#x"+t.toString(16).toUpperCase()+";"},T=function(t){return"&#"+t+";"},A=function(t){throw Error("Parse error: "+t)},L=function(t,e){(e=M(e,L.options)).strict&&f.test(t)&&A("forbidden code point");var i=e.encodeEverything,n=e.useNamedReferences,r=e.allowUnsafeSymbols,s=e.decimal?T:E,d=function(t){return s(t.charCodeAt(0))};return i?(t=t.replace(o,(function(t){return n&&_(h,t)?"&"+h[t]+";":d(t)})),n&&(t=t.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),n&&(t=t.replace(c,(function(t){return"&"+h[t]+";"})))):n?(r||(t=t.replace(u,(function(t){return"&"+h[t]+";"}))),t=(t=t.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒")).replace(c,(function(t){return"&"+h[t]+";"}))):r||(t=t.replace(u,d)),t.replace(a,(function(t){var e=t.charCodeAt(0),i=t.charCodeAt(1);return s(1024*(e-55296)+i-56320+65536)})).replace(l,d)};L.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var C=function(t,e){var i=(e=M(e,C.options)).strict;return i&&p.test(t)&&A("malformed character reference"),t.replace(m,(function(t,n,r,s,a,o,l,c,h){var u,d,p,f,m,y;return n?g[m=n]:r?(m=r,(y=s)&&e.isAttributeValue?(i&&"="==y&&A("`&` did not start a character reference"),t):(i&&A("named character reference was not terminated by a semicolon"),v[m]+(y||""))):a?(p=a,d=o,i&&!d&&A("character reference was not terminated by a semicolon"),u=parseInt(p,10),S(u,i)):l?(f=l,d=c,i&&!d&&A("character reference was not terminated by a semicolon"),u=parseInt(f,16),S(u,i)):(i&&A("named character reference was not terminated by a semicolon"),t)}))};C.options={isAttributeValue:!1,strict:!1};var R={version:"1.2.0",encode:L,decode:C,escape:function(t){return t.replace(u,(function(t){return d[t]}))},unescape:C};void 0===(n=function(){return R}.call(e,i,e,t))||(t.exports=n)}()},885:t=>{function e(t){"function"!=typeof t&&(t=e.defunct);var i=[],n=[],r=0;function s(){for(var t=[],e=0,i=this.state,r=this.index,s=this.input,a=0,o=n.length;a=0||i%2&&1===h&&!c[0]){var u=l.pattern;u.lastIndex=r;var d=u.exec(s);if(d&&d.index===r){var p=t.push({result:d,action:l.action,length:d[0].length});for(l.global&&(e=p);--p>e;){var f=p-1;if(t[p].length>t[f].length){var m=t[p];t[p]=t[f],t[f]=m}}}}}return t}this.state=0,this.index=0,this.input="",this.addRule=function(t,e,i){var r=t.global;if(!r){var s="g";t.multiline&&(s+="m"),t.ignoreCase&&(s+="i"),t=new RegExp(t.source,s)}return"[object Array]"!==Object.prototype.toString.call(i)&&(i=[0]),n.push({pattern:t,global:r,action:e,start:i}),this},this.setInput=function(t){return r=0,this.state=0,this.index=0,i.length=0,this.input=t,this},this.lex=function(){if(i.length)return i.shift();for(this.reject=!0;this.index<=this.input.length;){for(var e=s.call(this).splice(r),n=this.index;e.length&&this.reject;){var a=e.shift(),o=a.result,l=a.length;this.index+=l,this.reject=!1,r++;var c=a.action.apply(this,o);if(this.reject)this.index=o.index;else if(void 0!==c)return"[object Array]"===Object.prototype.toString.call(c)&&(i=c.slice(1),c=c[0]),l&&(r=0),c}var h=this.input;if(n{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var n={};(()=>{"use strict";function t(t,e,i,n){return new(i||(i=Promise))((function(r,s){function a(t){try{l(n.next(t))}catch(t){s(t)}}function o(t){try{l(n.throw(t))}catch(t){s(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(a,o)}l((n=n.apply(t,e||[])).next())}))}i.r(n),i.d(n,{default:()=>Yf}),Object.create,Object.create;const e=require("obsidian");var r=i(885),s=i.n(r),a={prefix:"fas",iconName:"dice",icon:[640,512,[],"f522","M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]},o={prefix:"far",iconName:"copy",icon:[448,512,[],"f0c5","M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"]};function l(t){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l(t)}function c(t,e){for(var i=0;i0;)e+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return e}function it(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function nt(t){return Object.keys(t||{}).reduce((function(e,i){return e+"".concat(i,": ").concat(t[i],";")}),"")}function rt(t){return t.size!==tt.size||t.x!==tt.x||t.y!==tt.y||t.rotate!==tt.rotate||t.flipX||t.flipY}function st(t){var e=t.transform,i=t.containerWidth,n=t.iconWidth,r={transform:"translate(".concat(i/2," 256)")},s="translate(".concat(32*e.x,", ").concat(32*e.y,") "),a="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),o="rotate(".concat(e.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(s," ").concat(a," ").concat(o)},path:{transform:"translate(".concat(n/2*-1," -256)")}}}var at={x:0,y:0,width:"100%",height:"100%"};function ot(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.attributes&&(t.attributes.fill||e)&&(t.attributes.fill="black"),t}function lt(t){var e=t.icons,i=e.main,n=e.mask,r=t.prefix,s=t.iconName,a=t.transform,o=t.symbol,l=t.title,c=t.maskId,h=t.titleId,d=t.extra,p=t.watchable,f=void 0!==p&&p,m=n.found?n:i,g=m.width,v=m.height,y="fak"===r,x=y?"":"fa-w-".concat(Math.ceil(g/v*16)),b=[C.replacementClass,s?"".concat(C.familyPrefix,"-").concat(s):"",x].filter((function(t){return-1===d.classes.indexOf(t)})).filter((function(t){return""!==t||!!t})).concat(d.classes).join(" "),w={children:[],attributes:u({},d.attributes,{"data-prefix":r,"data-icon":s,class:b,role:d.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(v)})},_=y&&!~d.classes.indexOf("fa-fw")?{width:"".concat(g/v*16*.0625,"em")}:{};f&&(w.attributes["data-fa-i2svg"]=""),l&&w.children.push({tag:"title",attributes:{id:w.attributes["aria-labelledby"]||"title-".concat(h||et())},children:[l]});var M=u({},w,{prefix:r,iconName:s,main:i,mask:n,maskId:c,transform:a,symbol:o,styles:u({},_,d.styles)}),S=n.found&&i.found?function(t){var e,i=t.children,n=t.attributes,r=t.main,s=t.mask,a=t.maskId,o=t.transform,l=r.width,c=r.icon,h=s.width,d=s.icon,p=st({transform:o,containerWidth:h,iconWidth:l}),f={tag:"rect",attributes:u({},at,{fill:"white"})},m=c.children?{children:c.children.map(ot)}:{},g={tag:"g",attributes:u({},p.inner),children:[ot(u({tag:c.tag,attributes:u({},c.attributes,p.path)},m))]},v={tag:"g",attributes:u({},p.outer),children:[g]},y="mask-".concat(a||et()),x="clip-".concat(a||et()),b={tag:"mask",attributes:u({},at,{id:y,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[f,v]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:x},children:(e=d,"g"===e.tag?e.children:[e])},b]};return i.push(w,{tag:"rect",attributes:u({fill:"currentColor","clip-path":"url(#".concat(x,")"),mask:"url(#".concat(y,")")},at)}),{children:i,attributes:n}}(M):function(t){var e=t.children,i=t.attributes,n=t.main,r=t.transform,s=nt(t.styles);if(s.length>0&&(i.style=s),rt(r)){var a=st({transform:r,containerWidth:n.width,iconWidth:n.width});e.push({tag:"g",attributes:u({},a.outer),children:[{tag:"g",attributes:u({},a.inner),children:[{tag:n.icon.tag,children:n.icon.children,attributes:u({},n.icon.attributes,a.path)}]}]})}else e.push(n.icon);return{children:e,attributes:i}}(M),E=S.children,T=S.attributes;return M.children=E,M.attributes=T,o?function(t){var e=t.prefix,i=t.iconName,n=t.children,r=t.attributes,s=t.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:u({},r,{id:!0===s?"".concat(e,"-").concat(C.familyPrefix,"-").concat(i):s}),children:n}]}]}(M):function(t){var e=t.children,i=t.main,n=t.mask,r=t.attributes,s=t.styles,a=t.transform;if(rt(a)&&i.found&&!n.found){var o={x:i.width/i.height/2,y:.5};r.style=nt(u({},s,{"transform-origin":"".concat(o.x+a.x/16,"em ").concat(o.y+a.y/16,"em")}))}return[{tag:"svg",attributes:r,children:e}]}(M)}var ct=(C.measurePerformance&&w&&w.mark&&w.measure,function(t,e,i,n){var r,s,a,o=Object.keys(t),l=o.length,c=void 0!==n?function(t,e){return function(i,n,r,s){return t.call(e,i,n,r,s)}}(e,n):e;for(void 0===i?(r=1,a=t[o[0]]):(r=0,a=i);r2&&void 0!==arguments[2]?arguments[2]:{},n=i.skipHooks,r=void 0!==n&&n,s=Object.keys(e).reduce((function(t,i){var n=e[i];return n.icon?t[n.iconName]=n.icon:t[i]=n,t}),{});"function"!=typeof D.hooks.addPack||r?D.styles[t]=u({},D.styles[t]||{},s):D.hooks.addPack(t,s),"fas"===t&&ht("fa",e)}var ut=D.styles,dt=D.shims,pt=function(){var t=function(t){return ct(ut,(function(e,i,n){return e[n]=ct(i,t,{}),e}),{})};t((function(t,e,i){return e[3]&&(t[e[3]]=i),t})),t((function(t,e,i){var n=e[2];return t[i]=i,n.forEach((function(e){t[e]=i})),t}));var e="far"in ut;ct(dt,(function(t,i){var n=i[0],r=i[1],s=i[2];return"far"!==r||e||(r="fas"),t[n]={prefix:r,iconName:s},t}),{})};function ft(t,e,i){if(t&&t[e]&&t[e][i])return{prefix:e,iconName:i,icon:t[e][i]}}function mt(t){var e=t.tag,i=t.attributes,n=void 0===i?{}:i,r=t.children,s=void 0===r?[]:r;return"string"==typeof t?it(t):"<".concat(e," ").concat(function(t){return Object.keys(t||{}).reduce((function(e,i){return e+"".concat(i,'="').concat(it(t[i]),'" ')}),"").trim()}(n),">").concat(s.map(mt).join(""),"")}function gt(t){this.name="MissingIcon",this.message=t||"Icon unavailable",this.stack=(new Error).stack}pt(),D.styles,gt.prototype=Object.create(Error.prototype),gt.prototype.constructor=gt;var vt={fill:"currentColor"},yt={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},xt=(u({},vt,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}),u({},yt,{attributeName:"opacity"}));function bt(t){var e=t[0],i=t[1],n=d(t.slice(4),1)[0];return{found:!0,width:e,height:i,icon:Array.isArray(n)?{tag:"g",attributes:{class:"".concat(C.familyPrefix,"-").concat(T.GROUP)},children:[{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(T.SECONDARY),fill:"currentColor",d:n[0]}},{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(T.PRIMARY),fill:"currentColor",d:n[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:n}}}}u({},vt,{cx:"256",cy:"364",r:"28"}),u({},yt,{attributeName:"r",values:"28;14;28;28;14;28;"}),u({},xt,{values:"1;0;1;1;0;1;"}),u({},vt,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),u({},xt,{values:"1;0;0;0;0;1;"}),u({},vt,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),u({},xt,{values:"0;0;1;1;0;0;"}),D.styles,D.styles;var wt=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.definitions={}}var e,i;return e=t,i=[{key:"add",value:function(){for(var t=this,e=arguments.length,i=new Array(e),n=0;n-1;r--){var s=i[r],a=(s.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(n=s)}b.head.insertBefore(e,n)}}(function(){var t="fa",e=M,i=C.familyPrefix,n=C.replacementClass,r='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if(i!==t||n!==e){var s=new RegExp("\\.".concat(t,"\\-"),"g"),a=new RegExp("\\--".concat(t,"\\-"),"g"),o=new RegExp("\\.".concat(e),"g");r=r.replace(s,".".concat(i,"-")).replace(a,"--".concat(i,"-")).replace(o,".".concat(n))}return r}()),At=!0)}function Mt(t,e){return Object.defineProperty(t,"abstract",{get:e}),Object.defineProperty(t,"html",{get:function(){return t.abstract.map((function(t){return mt(t)}))}}),Object.defineProperty(t,"node",{get:function(){if(_){var e=b.createElement("div");return e.innerHTML=t.html,e.children}}}),t}function St(t){var e=t.prefix,i=void 0===e?"fa":e,n=t.iconName;if(n)return ft(Tt.definitions,i,n)||ft(D.styles,i,n)}var Et,Tt=new wt,At=!1,Lt=(Et=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=e.transform,n=void 0===i?tt:i,r=e.symbol,s=void 0!==r&&r,a=e.mask,o=void 0===a?null:a,l=e.maskId,c=void 0===l?null:l,h=e.title,d=void 0===h?null:h,p=e.titleId,f=void 0===p?null:p,m=e.classes,g=void 0===m?[]:m,v=e.attributes,y=void 0===v?{}:v,x=e.styles,b=void 0===x?{}:x;if(t){var w=t.prefix,_=t.iconName,M=t.icon;return Mt(u({type:"icon"},t),(function(){return _t(),C.autoA11y&&(d?y["aria-labelledby"]="".concat(C.replacementClass,"-title-").concat(f||et()):(y["aria-hidden"]="true",y.focusable="false")),lt({icons:{main:bt(M),mask:o?bt(o.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:_,transform:u({},tt,n),symbol:s,title:d,maskId:c,titleId:f,extra:{attributes:y,styles:b,classes:g}})}))}},function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=(t||{}).icon?t:St(t||{}),n=e.mask;return n&&(n=(n||{}).icon?n:St(n||{})),Et(i,u({},e,{mask:n}))});class Ct{constructor(t){this.table=t}parse(t){for(var e=t.length,i=this.table,n=[],r=[],s=0;sc||l===c&&"right"===o.associativity)break;n.push(r.shift())}r.unshift(h)}else n.push(h)}for(;r.length;){var h;if("("===(h=r.shift()).data)throw new Error("Mismatched parentheses.");n.push(h)}return n}}function Rt(t,e){const i=Object.keys(e).map((i=>function(t,e,i){const n=t[e],r=t.hasOwnProperty(e);let s=i(n);return n&&Object.setPrototypeOf(s,n),Object.setPrototypeOf(a,s),t[e]=a,o;function a(...i){return s===n&&t[e]===a&&o(),s.apply(this,i)}function o(){t[e]===a&&(r?t[e]=n:delete t[e]),s!==n&&(s=n,Object.setPrototypeOf(a,n||Function))}}(t,i,e[i])));return 1===i.length?i[0]:function(){i.forEach((t=>t()))}}var Dt=i(492);const Pt=/(?:(?\d+)[Dd])?#(?[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?[\+-]))?(?:\|(?[^\+-]+))?/u,Nt=/(?:(?\d+)[Dd])?\[\[(?[\s\S]+?)#?\^(?[\s\S]+?)\]\]\|?(?
[\s\S]+)?/,It=/(?:(?\d+)[Dd])?\[\[(?[\s\S]+)\]\]\|?(?[\s\S]+)?/,Bt=/[\(\^\+\-\*\/\)]/,zt=/(?(?\d+)(?:[Dd]?\[?(?:-?\d+\s?,)?\s?(?:-?\d+|%|F)\]?)?)(?(?:(?:=|=!|<|>|<=|>=|=<|=>|\-=|=\-)\d+)*)?/,kt=/(?\d+)?[Dd](?\[?(?:-?\d+\s?,)?\s?(?:-?\d+|%|F)\]?)?(?(?:(?:=|=!|<|>|<=|>=|=<|=>|\-=|=\-)\d+)*)?/,Ft=/(?:(?=|=!|<|>|<=|>=|=<|=>|\-=|=\-)(?\d+))/g,Ot="dice-roller-icon",Ut="dice-roller-copy";function Ht(t,e,i){[...t].slice(e).reverse().forEach((([e,i])=>{t.set(e+1,i)})),t.set(e,i)}class Vt extends e.Events{constructor(t,i,n,r=t.data.showDice){if(super(),this.plugin=t,this.original=i,this.lexemes=n,this.showDice=r,this.loaded=!1,this.containerEl=createDiv({cls:"dice-roller",attr:{"aria-label-position":"top","data-dice":this.original}}),this.save=!1,this.resultEl=this.containerEl.createDiv("dice-roller-result"),this.showDice){const t=this.containerEl.createDiv({cls:"dice-roller-button"});(0,e.setIcon)(t,Ot),t.onclick=this.onClick.bind(this)}else this.containerEl.addClass("no-icon");this.containerEl.onclick=this.onClick.bind(this)}setTooltip(){this.plugin.data.displayResultsInline||this.containerEl.setAttrs({"aria-label":this.tooltip})}getRandomBetween(t,e){return Math.floor(Math.random()*(e-t+1))+t}render(){return t(this,void 0,void 0,(function*(){this.setTooltip(),yield this.build()}))}get inlineText(){return`${this.tooltip.split("\n").join(" -> ")} -> `}onClick(e){var i;return t(this,void 0,void 0,(function*(){e.stopPropagation(),e.stopImmediatePropagation(),(null===(i=window.getSelection())||void 0===i?void 0:i.isCollapsed)&&(yield this.roll())}))}}class qt extends Vt{}class Gt extends qt{constructor(t,e,i,n,r=t.data.showDice){super(t,e,[i],r),this.plugin=t,this.original=e,this.lexeme=i,this.source=n,this.getPath(),this.getFile()}getFile(){return t(this,void 0,void 0,(function*(){if(this.file=this.plugin.app.metadataCache.getFirstLinkpathDest(this.path,this.source),!(this.file&&this.file instanceof e.TFile))throw new Error("Could not load file.");yield this.load(),this.registerFileWatcher()}))}registerFileWatcher(){this.plugin.registerEvent(this.plugin.app.vault.on("modify",(e=>t(this,void 0,void 0,(function*(){this.save||e===this.file&&(yield this.getOptions())})))))}}class Wt{constructor(t,e={original:t,conditionals:[],type:"dice",data:t}){var i;if(this.lexeme=e,this.modifiers=new Map,this.modifiersAllowed=!0,this.static=!1,this.conditions=[],!/(\-?\d+)[dD]?(\d+|%|\[\d+,\s?\d+\])?/.test(t))throw new Error("Non parseable dice string passed to DiceRoll.");this.dice=t.split(" ").join(""),/^-?\d+$/.test(this.dice)&&(this.static=!0,this.modifiersAllowed=!1);let[,n,r=null,s=1]=this.dice.match(/(\-?\d+)[dD]\[?(?:(-?\d+)\s?,)?\s?(-?\d+|%|F)\]?/)||[,1,null,1];this.multiplier=n<0?-1:1,this.rolls=Math.abs(Number(n))||1,Number(s)<0&&!r&&(r=-1),"%"===s&&(s=100),"F"===s&&(s=1,r=-1),Number(s)[e,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])))}get text(){return`${this.result}`}get result(){return this.static?Number(this.dice):[...this.results].map((([,{usable:t,value:e}])=>t?e:0)).reduce(((t,e)=>t+e),0)}get display(){return this.static?`${this.result}`:`[${[...this.results].map((([,{modifiers:t,display:e}])=>`${e}${[...t].join("")}`)).join(", ")}]`}keepLow(t=1){this.modifiersAllowed?[...this.results].sort(((t,e)=>t[1].value-e[1].value)).slice(t-this.results.size).forEach((([t])=>{const e=this.results.get(t);e.usable=!1,e.modifiers.add("d"),this.results.set(t,Object.assign({},e))})):new e.Notice("Modifiers are only allowed on dice rolls.")}keepHigh(t=1){this.modifiersAllowed?[...this.results].sort(((t,e)=>e[1].value-t[1].value)).slice(t).forEach((([t])=>{const e=this.results.get(t);e.usable=!1,e.modifiers.add("d"),this.results.set(t,Object.assign({},e))})):new e.Notice("Modifiers are only allowed on dice rolls.")}reroll(t,i){if(!this.modifiersAllowed)return void new e.Notice("Modifiers are only allowed on dice rolls.");i.length||i.push({operator:"=",comparer:this.faces.min});let n=0,r=[...this.results].filter((([,{value:t}])=>this.checkCondition(t,i)));for(;nthis.checkCondition(t,i))).length>0;)n++,r.map((([,t])=>{t.modifiers.add("r"),t.value=this.getRandomBetween(this.faces.min,this.faces.max)}));r.forEach((([t,e])=>{this.results.set(t,e)}))}explodeAndCombine(t,i){if(!this.modifiersAllowed)return void new e.Notice("Modifiers are only allowed on dice rolls.");i.length||i.push({operator:"=",comparer:this.faces.max});let n=0;[...this.results].filter((([,{value:t}])=>this.checkCondition(t,i))).forEach((([e,r])=>{let s=this.getRandomBetween(this.faces.min,this.faces.max);for(n++,r.modifiers.add("!"),r.value+=s,r.display=`${r.value}`,this.results.set(e,r);nthis.multiplier*this.getRandomBetween(this.faces.min,this.faces.max)))}setResults(t){this.results=new Map([...t].map(((t,e)=>[e,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])))}roll(){var t;const e=this._roll();this.results=new Map([...e].map(((t,e)=>[e,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])));for(let[t,e]of this.modifiers)this.applyModifier(t,e);return(null===(t=this.conditions)||void 0===t?void 0:t.length)&&this.applyConditions(),e}applyConditions(){for(let[t,e]of this.results){const t=this.conditions.find((({operator:t})=>"-="===t||"=-"===t));t&&e.value===t.comparer?(e.value=-1,e.modifiers.add("-")):this.checkCondition(e.value,this.conditions)?(e.modifiers.add("*"),e.value=1):e.usable=!1}}applyModifier(t,e){switch(t){case"kh":this.keepHigh(e.data);break;case"kl":this.keepLow(e.data);break;case"!":this.explode(e.data,e.conditionals);break;case"!!":this.explodeAndCombine(e.data,e.conditionals);break;case"r":this.reroll(e.data,e.conditionals)}}checkCondition(t,e){return e&&e.length?e.some((({operator:e,comparer:i})=>{if(Number.isNaN(t)||Number.isNaN(i))return!1;let n=!1;switch(e){case"=":n=t===i;break;case"!=":case"=!":n=t!==i;break;case"<":n=t":n=t>i;break;case">=":n=t>=i}return n})):t}getRandomBetween(t,e){return Math.floor(Math.random()*(e-t+1))+t}}class jt extends Wt{constructor(t,e){super("3d6",e),this.lexeme=e,this.dice=t}get doubles(){return new Set([...this.results].map((([,{usable:t,value:e}])=>t?e:0))).size<3}get result(){return this.static?Number(this.dice):[...this.results].map((([,{usable:t,value:e}])=>t?e:0)).reduce(((t,e)=>t+e),0)}get display(){let t=[];for(let e of this.results)0==e[0]&&this.doubles?t.push(`${e[1].value}S`):t.push(`${e[1].value}`);return`[${t.join(", ")}]`}}class Xt extends qt{constructor(t,e,i,n=t.data.showDice){super(t,e,i,n),this.plugin=t,this.original=e,this.lexemes=i,this.stunted="",this.operators={"+":(t,e)=>t+e,"-":(t,e)=>t-e,"*":(t,e)=>t*e,"/":(t,e)=>t/e,"^":(t,e)=>Math.pow(t,e)},this.stack=[],this.stackCopy=[],this.dice=[],this.loaded=!0,this.trigger("loaded")}get resultText(){let t=[],e=0;return this.dice.forEach((i=>{const n=this.original.slice(e);t.push(n.slice(0,n.indexOf(i.lexeme.original)),i.display),e+=n.indexOf(i.lexeme.original)+i.lexeme.original.length})),t.join("")}get tooltip(){return this._tooltip?this._tooltip:`${this.original}\n${this.resultText}`}build(){return t(this,void 0,void 0,(function*(){const t=[this.result.toLocaleString(navigator.language,{maximumFractionDigits:2})];this.plugin.data.displayResultsInline&&t.unshift(this.inlineText),this.resultEl.setText(t.join("")+this.stunted)}))}get dynamic(){return this.dice.filter((t=>!t.static))}get static(){return this.dice.filter((t=>t.static))}roll(){return t(this,void 0,void 0,(function*(){let t=0;this.stunted="";for(const e of this.lexemes)switch(e.type){case"+":case"-":case"*":case"/":case"^":case"math":let i=this.stack.pop(),n=this.stack.pop();if(!n){"-"===e.data&&(i=new Wt(`-${i.dice}`,i.lexeme)),this.stackCopy.push(e.data),this.stack.push(i);continue}i.roll(),i instanceof jt&&i.doubles&&(this.stunted=` - ${i.results.get(0).value} Stunt Points`),n.roll(),n instanceof jt&&n.doubles&&(this.stunted=` - ${n.results.get(0).value} Stunt Points`);const r=this.operators[e.data](n.result,i.result);this.stackCopy.push(e.data),this.stack.push(new Wt(`${r}`,e));break;case"kh":{let i=this.dice[t-1],n=e.data?Number(e.data):1;i.modifiers.set("kh",{data:n,conditionals:[]});break}case"dl":{let i=this.dice[t-1],n=e.data?Number(e.data):1;n=i.results.size-n,i.modifiers.set("kh",{data:n,conditionals:[]});break}case"kl":{let i=this.dice[t-1],n=e.data?Number(e.data):1;i.modifiers.set("kl",{data:n,conditionals:[]});break}case"dh":{let i=this.dice[t-1],n=e.data?Number(e.data):1;n=i.results.size-n,i.modifiers.set("kl",{data:n,conditionals:[]});break}case"!":{let i=this.dice[t-1],n=Number(e.data)||1;i.modifiers.set("!",{data:n,conditionals:e.conditionals});break}case"!!":{let i=this.dice[t-1],n=Number(e.data)||1;i.modifiers.set("!!",{data:n,conditionals:e.conditionals});break}case"r":{let i=this.dice[t-1],n=Number(e.data)||1;i.modifiers.set("r",{data:n,conditionals:e.conditionals});break}case"dice":if(e.parenedDice&&/^d/.test(e.original)&&this.stack.length){const i=this.stack.pop();e.data=`${i.result}${e.original}`,this.dice[t]=new Wt(e.data,e)}this.dice[t]||(this.dice[t]=new Wt(e.data,e)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++;break;case"stunt":this.dice[t]||(this.dice[t]=new jt(e.original,e)),this.stack.push(this.dice[t]),this.stackCopy.push(this.dice[t]),t++}const e=this.stack.pop();return e.roll(),e instanceof jt&&e.doubles&&(this.stunted=` - ${e.results.get(0).value} Stunt Points`),this.result=e.result,this._tooltip=null,this.render(),this.trigger("new-result"),this.result}))}recalculate(){let t=[],e=0;for(let e of this.stackCopy)if("string"==typeof e){let i=t.pop(),n=t.pop();if(!n){"-"===e&&(i=new Wt(`-${i.result}`,i.lexeme)),t.push(i);continue}const r=this.operators[e](n.result,i.result);t.push(new Wt(`${r}`))}else t.push(e);t.length&&t[0]instanceof Wt&&(e+=t[0].result),this.result=e}toResult(){return{type:"dice",result:this.result,tooltip:this.tooltip}}applyResult(e){return t(this,void 0,void 0,(function*(){"dice"===e.type&&(e.result&&(this.result=e.result),e.tooltip&&(this._tooltip=e.tooltip),yield this.render())}))}setResult(t){}}class Yt extends Gt{constructor(i,n,r,s,a=!0,o=i.data.showDice){super(i,n,r,s,o),this.plugin=i,this.original=n,this.lexeme=r,this.inline=a,this.containerEl.addClasses(["has-embed","markdown-embed"]),this.resultEl.addClass("internal-embed"),this.resultEl.setAttrs({src:s}),this.copy=this.containerEl.createDiv({cls:"dice-content-copy dice-roller-button no-show",attr:{"aria-label":"Copy Contents"}}),this.copy.addEventListener("click",(i=>{i.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(...this.results).trim()).then((()=>t(this,void 0,void 0,(function*(){new e.Notice("Result copied to clipboard.")}))))})),(0,e.setIcon)(this.copy,Ut)}get tooltip(){return`${this.original}\n${this.path}`}build(){return t(this,void 0,void 0,(function*(){if(this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.inline&&this.resultEl.createSpan({text:this.inlineText}),this.results&&this.results.length){this.plugin.data.copyContentButton&&this.copy.removeClass("no-show");for(const i of this.results){this.resultEl.onclick=e=>t(this,void 0,void 0,(function*(){(e&&e.getModifierState("Control")||e.getModifierState("Meta"))&&e.stopPropagation()}));const n=this.resultEl.createDiv({cls:"markdown-embed"});if(!this.plugin.data.displayResultsInline){const t="type"in i?i.type:"List Item";n.setAttrs({"aria-label":`${this.file.basename}: ${t}`})}if(i){if(e.MarkdownRenderer.renderMarkdown(this.displayFromCache(i),n.createDiv(),this.source,null),this.plugin.data.copyContentButton&&this.results.length>1){let r=n.createDiv({cls:"dice-content-copy dice-roller-button",attr:{"aria-label":"Copy Contents"}});r.addEventListener("click",(n=>{n.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(i).trim()).then((()=>t(this,void 0,void 0,(function*(){new e.Notice("Result copied to clipboard.")}))))})),(0,e.setIcon)(r,Ut)}}else n.createDiv({cls:"dice-no-results",text:"No results."})}}else this.resultEl.createDiv({cls:"dice-no-results",text:"No results."})}))}load(){return t(this,void 0,void 0,(function*(){yield this.getOptions()}))}displayFromCache(...t){let e=[];for(let i of t)e.push(this.content.slice(i.position.start.offset,i.position.end.offset));return e.join("\n\n")}getPath(){var t;const{groups:e}=this.lexeme.data.match(It),{roll:i=1,link:n,types:r}=e;if(!n)throw new Error("Could not parse link.");this.rolls=null!==(t=i&&!isNaN(Number(i))&&Number(i))&&void 0!==t?t:1,this.path=n.replace(/(\[|\])/g,""),this.types=null==r?void 0:r.split(",")}getOptions(){return t(this,void 0,void 0,(function*(){if(this.cache=this.plugin.app.metadataCache.getFileCache(this.file),!this.cache||!this.cache.sections)throw new Error("Could not read file cache.");this.content=yield this.plugin.app.vault.cachedRead(this.file),this.options=this.cache.sections.filter((({type:t})=>this.types?this.types.includes(t):!["yaml","thematicBreak"].includes(t))),this.types&&this.types.includes("listItem")&&this.options.push(...this.cache.listItems),this.loaded=!0,this.trigger("loaded")}))}roll(){return t(this,void 0,void 0,(function*(){return new Promise(((t,e)=>{if(this.loaded){const e=[...this.options];this.results=[...Array(this.rolls)].map((()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t})).filter((t=>t)),this.render(),this.trigger("new-result"),t(this.results[0])}else this.on("loaded",(()=>{const e=[...this.options];this.results=[...Array(this.rolls)].map((()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t})).filter((t=>t)),this.render(),this.trigger("new-result"),t(this.results[0])}))}))}))}toResult(){return{type:"section",result:this.results}}applyResult(e){return t(this,void 0,void 0,(function*(){"section"===e.type&&(e.result&&(this.results=e.result),yield this.render())}))}}class Zt extends qt{constructor(t,i,n,r,s=t.data.showDice){if(super(t,i,[n],s),this.plugin=t,this.original=i,this.lexeme=n,this.source=r,this.loaded=!1,!this.plugin.canUseDataview)throw new e.Notice("A tag can only be rolled with the Dataview plugin enabled."),new Error("A tag can only be rolled with the Dataview plugin enabled.");this.containerEl.addClasses(["has-embed","markdown-embed"]);const{roll:a=1,tag:o,collapse:l,types:c}=n.data.match(Pt).groups;this.collapse="-"===l||"+"!==l&&!this.plugin.data.returnAllTags,this.tag=`#${o}`,this.rolls=Number(a),this.types=c,this.getFiles()}get typeText(){var t;return(null===(t=this.types)||void 0===t?void 0:t.length)?`|${this.types}`:""}getFiles(){return t(this,void 0,void 0,(function*(){yield this.plugin.dataviewReady();const t=this.plugin.dataview.index.tags.invMap.get(this.tag);if(t&&t.delete(this.source),!t||!t.size)throw new Error("No files found with that tag. Is the tag correct?\n\n"+this.tag);const e=Array.from(t).map((t=>`${this.rolls}d[[${t}]]${this.typeText}`));this.results=e.map((t=>new Yt(this.plugin,t,{data:t,original:t,conditionals:null,type:"section"},this.source,!1))),this.loaded=!0,this.trigger("loaded")}))}build(){var e;return t(this,void 0,void 0,(function*(){if(this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.resultEl.createSpan({text:this.inlineText}),this.collapse){this.chosen=null!==(e=this.random)&&void 0!==e?e:this.getRandomBetween(0,this.results.length-1);let t=this.results[this.chosen];this.random=null;const i=this.resultEl.createDiv();i.createEl("h5",{cls:"dice-file-name",text:t.file.basename}),i.appendChild(t.containerEl)}else for(let t of this.results){const e=this.resultEl.createDiv();e.createEl("h5",{cls:"dice-file-name",text:t.file.basename}),e.appendChild(t.containerEl)}}))}roll(){return t(this,void 0,void 0,(function*(){return new Promise(((e,i)=>{this.loaded?(this.results.forEach((e=>t(this,void 0,void 0,(function*(){return yield e.roll()})))),this.render(),this.trigger("new-result"),e(this.result)):this.on("loaded",(()=>{this.results.forEach((e=>t(this,void 0,void 0,(function*(){return yield e.roll()})))),this.render(),this.trigger("new-result"),e(this.result)}))}))}))}get tooltip(){return this.original}toResult(){return{type:"tag",random:this.chosen,result:Object.fromEntries(this.results.map((t=>[t.path,t.toResult()])))}}applyResult(e){return t(this,void 0,void 0,(function*(){if("tag"===e.type){if(e.result)for(let t in e.result){const i=this.results.find((e=>e.path===t));i&&i.applyResult(e.result[t])}e.random&&(this.random=e.random),yield this.render()}}))}}class Jt extends qt{constructor(t,e,i,n,r=t.data.showDice){var s;super(t,e,[i],r),this.plugin=t,this.original=e,this.lexeme=i,this.source=n;const{roll:a=1,tag:o}=i.data.match(Pt).groups;this.tag=`#${o}`,this.rolls=null!==(s=a&&!isNaN(Number(a))&&Number(a))&&void 0!==s?s:1,this.getFiles()}get tooltip(){return`${this.original}\n${this.result.basename}`}roll(){return t(this,void 0,void 0,(function*(){return new Promise(((t,e)=>{this.loaded?(this.result=this.links[this.getRandomBetween(0,this.links.length-1)],this.render(),this.trigger("new-result"),t(this.result)):this.on("loaded",(()=>{this.result=this.links[this.getRandomBetween(0,this.links.length-1)],this.render(),this.trigger("new-result"),t(this.result)}))}))}))}build(){return t(this,void 0,void 0,(function*(){this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.resultEl.createSpan({text:this.inlineText});const e=this.resultEl.createEl("a",{cls:"internal-link",text:this.result.basename});e.onclick=e=>t(this,void 0,void 0,(function*(){var t;e.stopPropagation(),this.plugin.app.workspace.openLinkText(this.result.path,null===(t=this.plugin.app.workspace.getActiveFile())||void 0===t?void 0:t.path,!0)})),e.onmouseenter=i=>t(this,void 0,void 0,(function*(){var t;this.plugin.app.workspace.trigger("link-hover",this,e,this.result.path,null===(t=this.plugin.app.workspace.getActiveFile())||void 0===t?void 0:t.path)}))}))}getFiles(){return t(this,void 0,void 0,(function*(){const t=this.plugin.app.plugins.plugins.dataview.index.tags.invMap.get(this.tag);if(t&&t.delete(this.source),!t||!t.size)throw new Error("No files found with that tag. Is the tag correct?\n\n"+this.tag);this.links=Array.from(t).map((t=>this.plugin.app.metadataCache.getFirstLinkpathDest(t,this.source))),this.loaded=!0,this.trigger("loaded")}))}toResult(){return{type:"link",result:this.result.path}}applyResult(i){return t(this,void 0,void 0,(function*(){if("link"===i.type){if(i.result){const t=this.plugin.app.vault.getAbstractFileByPath(i.result);t&&t instanceof e.TFile&&(this.result=t)}yield this.render()}}))}}class Qt extends Gt{constructor(i,n,r,s,a=!0,o=i.data.showDice){super(i,n,r,s,o),this.plugin=i,this.original=n,this.lexeme=r,this.inline=a,this.containerEl.addClasses(["has-embed","markdown-embed"]),this.resultEl.addClass("internal-embed"),this.resultEl.setAttrs({src:s}),this.copy=this.containerEl.createDiv({cls:"dice-content-copy dice-roller-button no-show",attr:{"aria-label":"Copy Contents"}}),this.copy.addEventListener("click",(i=>{i.stopPropagation(),navigator.clipboard.writeText(this.results.join("\n")).then((()=>t(this,void 0,void 0,(function*(){new e.Notice("Result copied to clipboard.")}))))})),(0,e.setIcon)(this.copy,Ut)}get tooltip(){return`${this.original}\n${this.path}`}build(){return t(this,void 0,void 0,(function*(){if(this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.inline&&this.resultEl.createSpan({text:this.inlineText}),this.results&&this.results.length){this.plugin.data.copyContentButton&&this.copy.removeClass("no-show");for(const i of this.results){this.resultEl.onclick=e=>t(this,void 0,void 0,(function*(){(e&&e.getModifierState("Control")||e.getModifierState("Meta"))&&e.stopPropagation()}));const n=this.resultEl.createDiv({cls:"markdown-embed"});if(i){if(e.MarkdownRenderer.renderMarkdown(i,n.createDiv(),this.source,null),this.plugin.data.copyContentButton&&this.results.length>1){let r=n.createDiv({cls:"dice-content-copy dice-roller-button",attr:{"aria-label":"Copy Contents"}});r.addEventListener("click",(n=>{n.stopPropagation(),navigator.clipboard.writeText(i).then((()=>t(this,void 0,void 0,(function*(){new e.Notice("Result copied to clipboard.")}))))})),(0,e.setIcon)(r,Ut)}}else n.createDiv({cls:"dice-no-results",text:"No results."})}}else this.resultEl.createDiv({cls:"dice-no-results",text:"No results."})}))}load(){return t(this,void 0,void 0,(function*(){yield this.getOptions()}))}getPath(){var t;const{groups:e}=this.lexeme.data.match(It),{roll:i=1,link:n,types:r}=e;if(!n)throw new Error("Could not parse link.");this.rolls=null!==(t=i&&!isNaN(Number(i))&&Number(i))&&void 0!==t?t:1,this.path=n.replace(/(\[|\])/g,""),this.types=null==r?void 0:r.split(",")}getOptions(){return t(this,void 0,void 0,(function*(){if(this.content=yield this.plugin.app.vault.cachedRead(this.file),!this.content)throw new Error("Could not read file cache.");this.options=this.content.trim().split("\n").map((t=>t.trim())).filter((t=>t&&t.length)),this.loaded=!0,this.trigger("loaded")}))}roll(){return t(this,void 0,void 0,(function*(){return new Promise(((t,e)=>{if(this.loaded){const e=[...this.options];this.results=[...Array(this.rolls)].map((()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t})).filter((t=>t)),this.render(),this.trigger("new-result"),t(this.results[0])}else this.on("loaded",(()=>{const e=[...this.options];this.results=[...Array(this.rolls)].map((()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t})).filter((t=>t)),this.render(),this.trigger("new-result"),t(this.results[0])}))}))}))}toResult(){return{type:"section",result:this.results}}applyResult(e){return t(this,void 0,void 0,(function*(){"section"===e.type&&(e.result&&(this.results=e.result),yield this.render())}))}}class Kt extends Gt{getPath(){var t;const{groups:e}=this.lexeme.data.match(Nt),{roll:i=1,link:n,block:r,header:s}=e;if(!n||!r)throw new Error("Could not parse link.");this.rolls=null!==(t=i&&!isNaN(Number(i))&&Number(i))&&void 0!==t?t:1,this.path=n.replace(/(\[|\])/g,""),this.block=r.replace(/(\^|#)/g,"").trim().toLowerCase(),this.header=s}get tooltip(){return`${this.original}\n${this.path} > ${this.block}${this.header?" | "+this.header:""}`}build(){return t(this,void 0,void 0,(function*(){this.resultEl.empty();const t=[this.result];this.plugin.data.displayResultsInline&&t.unshift(this.inlineText),yield e.MarkdownRenderer.renderMarkdown(t.join(""),this.resultEl.createSpan("embedded-table-result"),this.source,null)}))}getResult(){return t(this,void 0,void 0,(function*(){if(this.isLookup){const t=yield this.lookupRoller.roll(),e=this.lookupRanges.find((([e])=>void 0===e[1]&&t===e[0]||t>=e[0]&&e[1]>=t));if(e)return e[1]}const t=[...this.options];return[...Array(this.rolls)].map((()=>{let e=t[this.getRandomBetween(0,t.length-1)];return t.splice(t.indexOf(e),1),e})).join("||")}))}roll(){return t(this,void 0,void 0,(function*(){return new Promise((e=>t(this,void 0,void 0,(function*(){this.loaded?(this.result=yield this.getResult(),this.render(),this.trigger("new-result"),e(this.result)):this.on("loaded",(()=>t(this,void 0,void 0,(function*(){this.result=yield this.getResult(),this.render(),this.trigger("new-result"),e(this.result)}))))}))))}))}load(){return t(this,void 0,void 0,(function*(){yield this.getOptions()}))}getOptions(){var e,i;return t(this,void 0,void 0,(function*(){if(this.cache=this.plugin.app.metadataCache.getFileCache(this.file),!this.cache||!this.cache.blocks||!(this.block in this.cache.blocks))throw new Error(`Could not read file cache. Does the block reference exist?\n\n${this.path} > ${this.block}`);const t=null===(e=this.cache.sections)||void 0===e?void 0:e.find((t=>t.position==this.cache.blocks[this.block].position));if(this.position=this.cache.blocks[this.block].position,this.content=null===(i=yield this.plugin.app.vault.cachedRead(this.file))||void 0===i?void 0:i.slice(this.position.start.offset,this.position.end.offset),t&&"list"===t.type)this.options=this.content.split("\n");else{let t=function(t){const e=t.split("\n"),i=e.map((t=>{var e;return(null!==(e=t.trim().match($t))&&void 0!==e?e:[,t.trim()])[1]})),n=i[0].replace("\\|","{ESCAPED_PIPE}").split(te),r=[],s=[];for(let t in n){let e=n[t];e.trim().length||(e=t),s.push([e.trim(),[]])}for(let t of e.slice(2)){const e=t.trim().replace("\\|","{ESCAPED_PIPE}").split(te).map((t=>t.trim())).filter((t=>t.length));r.push(e.join(" | "));for(let t in e){const i=e[t].trim();i.length&&s[t]&&s[t][1].push(i)}}return{columns:Object.fromEntries(s),rows:r}}(this.content);if(2===Object.keys(t.columns).length&&/dice:\s*([\s\S]+)\s*?/.test(Object.keys(t.columns)[0])){const e=this.plugin.getRoller(Object.keys(t.columns)[0].split(":").pop(),this.source);e instanceof Xt&&(this.lookupRoller=e,yield this.lookupRoller.roll(),this.lookupRanges=t.rows.map((t=>{var e;const[i,n]=t.split("|").map((t=>t.replace("{ESCAPED_PIPE}","|"))).map((t=>t.trim()));let[,r,s]=null!==(e=i.match(/(\d+)(?:[^\d]+?(\d+))?/))&&void 0!==e?e:[];if(r||s)return[[Number(r),s?Number(s):void 0],n]})),this.isLookup=!0)}if(this.header&&t.columns[this.header])this.options=t.columns[this.header];else{if(this.header)throw new Error(`Header ${this.header} was not found in table ${this.path} > ${this.block}.`);this.options=t.rows}}this.loaded=!0,this.trigger("loaded")}))}toResult(){return{type:"table",result:this.result}}applyResult(e){return t(this,void 0,void 0,(function*(){"table"===e.type&&(e.result&&(this.result=e.result),yield this.render())}))}}const $t=/^\|?([\s\S]+?)\|?$/,te=/\|/;class ee extends e.PluginSettingTab{constructor(t,e){super(t,e),this.plugin=e,this.plugin=e}display(){return t(this,void 0,void 0,(function*(){let{containerEl:i}=this;i.empty(),i.addClass("dice-roller-settings"),i.createEl("h2",{text:"Dice Roller Settings"}),new e.Setting(i).setName("Roll All Files for Tags").setDesc("Return a result for each file when rolling tags.").addToggle((e=>{e.setValue(this.plugin.data.returnAllTags),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.returnAllTags=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Always Return Links for Tags").setDesc("Enables random link rolling with the link parameter. Override by specifying a section type.").addToggle((e=>{e.setValue(this.plugin.data.rollLinksForTags),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.rollLinksForTags=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Add Copy Button to Section Results").setDesc("Randomly rolled sections will have a copy-content button to easy add result to clipboard.").addToggle((e=>{e.setValue(this.plugin.data.copyContentButton),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.copyContentButton=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Display Formula With Results").setDesc("Both the formula and the results will both be displayed in preview mode.").addToggle((e=>{e.setValue(this.plugin.data.displayResultsInline),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.displayResultsInline=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Add Formula When Modifying").setDesc(createFragment((t=>{t.createSpan({text:"Both the formula and the results will both be added to the node when using "}),t.createEl("code",{text:"dice-mod"}),t.createSpan({text:"."})}))).addToggle((e=>{e.setValue(this.plugin.data.displayFormulaForMod),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.displayFormulaForMod=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Display Lookup Table Roll").setDesc("Lookup table rolls will display the rolled number along with the result.").addToggle((e=>{e.setValue(this.plugin.data.displayLookupRoll),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.displayLookupRoll=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Show Dice Button").setDesc("A dice button will appear next to results.").addToggle((e=>{e.setValue(this.plugin.data.showDice),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.showDice=e,yield this.plugin.saveSettings()}))))}));const n=new e.Setting(i).setName("Globally Save Results").setDesc("Dice results will be saved by default. This can be overridden using ").addToggle((e=>{e.setValue(this.plugin.data.persistResults),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.persistResults=e,yield this.plugin.saveSettings()}))))}));new e.Setting(i).setName("Open Dice View on Startup").setDesc("The dice view can always be opened using the command from the command palette.").addToggle((e=>{e.setValue(this.plugin.data.showLeafOnStartup),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.showLeafOnStartup=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Display graphics for Dice View Rolls").setDesc("Dice rolls from dice view will be displayed on screen.").addToggle((e=>{e.setValue(this.plugin.data.renderer),e.onChange((e=>t(this,void 0,void 0,(function*(){this.plugin.data.renderer=e,yield this.plugin.saveSettings()}))))})),new e.Setting(i).setName("Dice Base Color").setDesc("Rendered dice will be this color.").controlEl.createEl("input",{type:"color",value:this.plugin.data.diceColor},(e=>{e.value=this.plugin.data.diceColor,e.onchange=({target:e})=>t(this,void 0,void 0,(function*(){let t=e.value;this.plugin.data.diceColor=t,yield this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors")}))})),new e.Setting(i).setName("Dice Text Color").setDesc("Rendered dice will use this color for their numbers.").controlEl.createEl("input",{type:"color",value:this.plugin.data.textColor},(e=>{e.value=this.plugin.data.textColor,e.onchange=({target:e})=>t(this,void 0,void 0,(function*(){let t=e.value;t&&(this.plugin.data.textColor=t,yield this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors"))}))})),new e.Setting(i).setName("Default Face").setDesc("Use this as the number of faces when it is omitted.").addText((i=>{i.setValue(`${this.plugin.data.defaultFace}`),i.inputEl.onblur=()=>t(this,void 0,void 0,(function*(){isNaN(Number(i.inputEl.value))&&new e.Notice("The default face must be a number."),this.plugin.data.defaultFace=Number(i.inputEl.value),yield this.plugin.saveSettings()}))})),n.descEl.createEl("code",{text:"dice-: formula"}),n.descEl.createEl("p",{text:"Please note that the plugin will attempt to save the result but may not be able to."}),this.additionalContainer=i.createDiv("dice-roller-setting-additional-container"),this.buildFormulaSettings(),i.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=☕&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}))}buildFormulaSettings(){this.additionalContainer.empty();const i=this.additionalContainer.createDiv();new e.Setting(i).setName("Add Formula").setDesc("Add a new formula shortcut.").addButton((e=>e.setTooltip("Add Formula").setButtonText("+").onClick((()=>t(this,void 0,void 0,(function*(){const t=yield this.buildFormulaForm(i);t&&(this.plugin.data.formulas[t.alias]=t.formula,this.buildFormulaSettings(),yield this.plugin.saveSettings())}))))));const n=this.additionalContainer.createDiv("additional"),r=this.plugin.data.formulas;for(const[s,a]of Object.entries(r)){const r=new e.Setting(n).setName(s);r.controlEl.createSpan({text:a}),r.addExtraButton((e=>e.setIcon("pencil").setTooltip("Edit").onClick((()=>t(this,void 0,void 0,(function*(){const t=yield this.buildFormulaForm(i,{alias:s,formula:a});t&&(delete this.plugin.data.formulas[s],this.plugin.data.formulas[t.alias]=t.formula,this.buildFormulaSettings(),yield this.plugin.saveSettings())})))))).addExtraButton((e=>e.setIcon("trash").setTooltip("Delete").onClick((()=>t(this,void 0,void 0,(function*(){delete this.plugin.data.formulas[s],yield this.plugin.saveSettings(),this.buildFormulaSettings()}))))))}Object.values(r).length||n.createSpan({text:"Create a formula to see it here!",cls:"no-formulas"})}buildFormulaForm(i,n={alias:null,formula:null}){return t(this,void 0,void 0,(function*(){return new Promise((r=>{const s=i.createDiv("add-new-formula"),a=s.createDiv("formula-data");new e.Setting(a).setName("Alias").addText((t=>{t.setValue(n.alias).onChange((t=>n.alias=t))})),new e.Setting(a).setName("Formula").addText((t=>{t.setValue(n.formula).onChange((t=>n.formula=t))}));const o=s.createDiv("formula-buttons");new e.Setting(o).addButton((e=>e.setCta().setButtonText("Save").onClick((()=>t(this,void 0,void 0,(function*(){s.detach(),r(n)})))))).addExtraButton((t=>t.setIcon("cross").setTooltip("Cancel").onClick((()=>{s.detach(),r(null)}))))}))}))}}const ie="DICE_ROLLER_VIEW";(0,e.addIcon)("d4",''),(0,e.addIcon)("d6",''),(0,e.addIcon)("d8",''),(0,e.addIcon)("d10",''),(0,e.addIcon)("d12",''),(0,e.addIcon)("d20",''),(0,e.addIcon)("d100",''),(0,e.addIcon)("dice-roller-save",''),(0,e.addIcon)("dice-roller-plus",''),(0,e.addIcon)("dice-roller-minus",'');class ne extends e.ItemView{constructor(t,e){super(e),this.plugin=t,this.leaf=e,this.dice=ne.DICE(),this.custom="",this.adv=!1,this.dis=!1,this.add=0,this.contentEl.addClass("dice-roller-view"),this.registerEvent(this.plugin.app.workspace.on("dice-roller:update-colors",(()=>{this.renderer.factory.updateColors()})))}static DICE(){return{d4:0,d6:0,d8:0,d10:0,d12:0,d20:0,d100:0}}get customFormulas(){return this.plugin.data.customFormulas}get renderer(){return this.plugin.renderer}onOpen(){return t(this,void 0,void 0,(function*(){this.display()}))}display(){return t(this,void 0,void 0,(function*(){this.contentEl.empty(),this.gridEl=this.contentEl.createDiv("dice-roller-grid"),this.formulaEl=this.contentEl.createDiv("dice-roller-formula");const t=this.contentEl.createDiv("dice-roller-results-container"),i=t.createDiv("dice-roller-results-header");i.createEl("h4",{text:"Results"}),new e.ExtraButtonComponent(i.createDiv("clear-all")).setIcon("trash").setTooltip("Clear All").onClick((()=>{this.resultEl.empty(),this.resultEl.append(this.noResultsEl)})),this.resultEl=t.createDiv("dice-roller-results"),this.noResultsEl=this.resultEl.createSpan({text:"No results yet! Roll some dice to get started :)"}),this.buildButtons(),this.buildFormula()}))}buildButtons(){this.gridEl.empty();const i=this.gridEl.createDiv("dice-buttons");for(let n in this.dice)new e.ExtraButtonComponent(i.createDiv("dice-button")).setIcon(n).extraSettingsEl.onclick=e=>t(this,void 0,void 0,(function*(){let t=e.getModifierState("Shift")?-1:1;this.dice[n]+=t,this.setFormula();const i=yield this.plugin.getRoller(this.formulaComponent.inputEl.value,"view");i instanceof Xt&&(this.stack=i)}));const n=this.gridEl.createDiv("advantage-disadvantage"),r=new e.ButtonComponent(n).setButtonText("ADV").onClick((()=>{this.adv=!this.adv,this.dis=!1,this.adv?(r.setCta(),s.removeCta()):r.removeCta(),this.setFormula()})),s=new e.ButtonComponent(n).setButtonText("DIS").onClick((()=>{this.dis=!this.dis,this.dis?(s.setCta(),r.removeCta()):s.removeCta(),this.adv=!1,this.setFormula()})),a=this.gridEl.createDiv("dice-context").createDiv("add-subtract");new e.ExtraButtonComponent(a).setIcon("dice-roller-minus").onClick((()=>{this.add-=1,o.setValue(`${this.add}`),this.setFormula()}));const o=new e.TextComponent(a).setValue(`${this.add?this.add:""}`).onChange((t=>{isNaN(Number(t))||(this.add=Number(t)),this.setFormula()}));if(new e.ExtraButtonComponent(a).setIcon("dice-roller-plus").onClick((()=>{this.add+=1,o.setValue(`${this.add}`),this.setFormula()})),this.customFormulas.length){const t=this.gridEl.createDiv("dice-roller-results-container");t.createDiv("dice-roller-results-header").createEl("h4",{text:"Saved Formulas"});for(let i of this.customFormulas){const n=t.createDiv("dice-custom-formula-container"),r=n.createDiv("dice-custom-formula");new e.ExtraButtonComponent(r).setIcon(Ot).setTooltip("Roll").onClick((()=>this.roll(i))),r.createSpan({text:i}),new e.ExtraButtonComponent(n).setIcon("trash").setTooltip("Remove").onClick((()=>{this.plugin.data.customFormulas=this.plugin.data.customFormulas.filter((t=>t!=i)),this.plugin.saveSettings(),this.buildButtons()}))}}}roll(i=this.formulaComponent.inputEl.value){return t(this,void 0,void 0,(function*(){if(!i)return;this.rollButton.setDisabled(!0);const t=yield this.plugin.getRoller(i,"view");if(t instanceof Xt)if(yield t.roll(),t.dice.length){try{this.plugin.data.renderer&&(this.addChild(this.renderer),this.renderer.setDice(t),yield this.renderer.start(),t.recalculate())}catch(t){new e.Notice("There was an error rendering the roll."),console.error(t)}this.rollButton.setDisabled(!1),this.addResult({result:t.result,original:t.original,resultText:t.resultText}),this.dice=ne.DICE(),this.add=null,this.adv=!1,this.dis=!1,this.buildButtons(),this.setFormula()}else new e.Notice("Invalid formula.");else new e.Notice("The Dice View only supports dice rolls.")}))}buildFormula(){this.formulaEl.empty(),this.formulaComponent=new e.TextAreaComponent(this.formulaEl).setPlaceholder("Dice Formula"),this.formulaComponent.onChange((0,e.debounce)((e=>t(this,void 0,void 0,(function*(){}))),500,!0));const i=this.formulaEl.createDiv("action-buttons");this.saveButton=new e.ButtonComponent(i).setIcon("plus-with-circle").setCta().setTooltip("Save Formula").onClick((()=>this.save())),this.saveButton.buttonEl.addClass("dice-roller-roll"),this.rollButton=new e.ButtonComponent(i).setIcon(Ot).setCta().setTooltip("Roll").onClick((()=>this.roll())),this.rollButton.buttonEl.addClass("dice-roller-roll")}save(){this.formulaComponent.inputEl.value&&(this.plugin.data.customFormulas.push(this.formulaComponent.inputEl.value),this.buildButtons(),this.plugin.saveSettings())}addResult(i){this.noResultsEl&&this.noResultsEl.detach();const n=createDiv("view-result");n.createSpan({text:i.original}),n.createEl("strong",{text:`${i.result}`,attr:{"aria-label":i.resultText}});const r=n.createDiv("result-context");r.createEl("em",{text:(new Date).toLocaleString()}),new e.ExtraButtonComponent(r).setIcon("trash").onClick((()=>{n.detach(),0===this.resultEl.children.length&&this.resultEl.prepend(this.noResultsEl)})),new e.ExtraButtonComponent(r).setIcon(Ut).setTooltip("Copy Result").onClick((()=>t(this,void 0,void 0,(function*(){yield navigator.clipboard.writeText(`${i.result}`)})))).extraSettingsEl.addClass("dice-content-copy"),new e.ExtraButtonComponent(r).setIcon(Ot).setTooltip("Roll Again").onClick((()=>this.roll(i.original))).extraSettingsEl.addClass("dice-result-reroll"),this.resultEl.prepend(n)}get formulaString(){const t=[],e=Object.entries(this.dice).filter((([t,e])=>0!=e));if(!e.length)return"";e.sort(((t,e)=>Number(e[0].slice(1))-Number(t[0].slice(1))));const i=e.shift();return t.push(`${i[1]}${i[0]}`),this.adv?t.push("kh"):this.dis&&t.push("dh"),e.length&&t.push(...e.map((([t,e])=>`${e>0?"+":"-"}${Math.abs(e)}${t}`))),this.add&&0!=this.add&&(t.push(this.add>0?"+":"-"),t.push(Math.abs(this.add))),t.join("")}setFormula(){this.formulaComponent.setValue(this.formulaString)}getDisplayText(){return"Dice Roller"}getViewType(){return ie}getIcon(){return Ot}onClose(){const e=Object.create(null,{onClose:{get:()=>super.onClose}});return t(this,void 0,void 0,(function*(){yield e.onClose.call(this),this.renderer.unload()}))}}const re=100,se=301,ae=302,oe=306,le=1e3,ce=1001,he=1002,ue=1003,de=1006,pe=1008,fe=1009,me=1012,ge=1014,ve=1015,ye=1016,xe=1020,be=1022,we=1023,_e=1026,Me=1027,Se=2300,Ee=2301,Te=2302,Ae=2400,Le=2401,Ce=2402,Re=3e3,De=3001,Pe=3007,Ne=3002,Ie=7680,Be=35044,ze=35048,ke="300 es";class Fe{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const i=this._listeners;void 0===i[t]&&(i[t]=[]),-1===i[t].indexOf(e)&&i[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const i=this._listeners;return void 0!==i[t]&&-1!==i[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const i=this._listeners[t];if(void 0!==i){const t=i.indexOf(e);-1!==t&&i.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const i=e.slice(0);for(let e=0,n=i.length;e>8&255]+Oe[t>>16&255]+Oe[t>>24&255]+"-"+Oe[255&e]+Oe[e>>8&255]+"-"+Oe[e>>16&15|64]+Oe[e>>24&255]+"-"+Oe[63&i|128]+Oe[i>>8&255]+"-"+Oe[i>>16&255]+Oe[i>>24&255]+Oe[255&n]+Oe[n>>8&255]+Oe[n>>16&255]+Oe[n>>24&255]).toUpperCase()}function qe(t,e,i){return Math.max(e,Math.min(i,t))}function Ge(t,e,i){return(1-i)*t+i*e}function We(t){return 0==(t&t-1)&&0!==t}function je(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class Xe{constructor(t=0,e=0){this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this)}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this)}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,i=this.y,n=t.elements;return this.x=n[0]*e+n[3]*i+n[6],this.y=n[1]*e+n[4]*i+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(t,Math.min(e,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y;return e*e+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e,i){return void 0!==i&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const i=Math.cos(e),n=Math.sin(e),r=this.x-t.x,s=this.y-t.y;return this.x=r*i-s*n+t.x,this.y=r*n+s*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}}Xe.prototype.isVector2=!0;class Ye{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(t,e,i,n,r,s,a,o,l){const c=this.elements;return c[0]=t,c[1]=n,c[2]=a,c[3]=e,c[4]=r,c[5]=o,c[6]=i,c[7]=s,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,r=this.elements,s=i[0],a=i[3],o=i[6],l=i[1],c=i[4],h=i[7],u=i[2],d=i[5],p=i[8],f=n[0],m=n[3],g=n[6],v=n[1],y=n[4],x=n[7],b=n[2],w=n[5],_=n[8];return r[0]=s*f+a*v+o*b,r[3]=s*m+a*y+o*w,r[6]=s*g+a*x+o*_,r[1]=l*f+c*v+h*b,r[4]=l*m+c*y+h*w,r[7]=l*g+c*x+h*_,r[2]=u*f+d*v+p*b,r[5]=u*m+d*y+p*w,r[8]=u*g+d*x+p*_,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[1],n=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8];return e*s*c-e*a*l-i*r*c+i*a*o+n*r*l-n*s*o}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8],h=c*s-a*l,u=a*o-c*r,d=l*r-s*o,p=e*h+i*u+n*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const f=1/p;return t[0]=h*f,t[1]=(n*l-c*i)*f,t[2]=(a*i-n*s)*f,t[3]=u*f,t[4]=(c*e-n*o)*f,t[5]=(n*r-a*e)*f,t[6]=d*f,t[7]=(i*o-l*e)*f,t[8]=(s*e-i*r)*f,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,i,n,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(i*o,i*l,-i*(o*s+l*a)+s+t,-n*l,n*o,-n*(-l*s+o*a)+a+e,0,0,1),this}scale(t,e){const i=this.elements;return i[0]*=t,i[3]*=t,i[6]*=t,i[1]*=e,i[4]*=e,i[7]*=e,this}rotate(t){const e=Math.cos(t),i=Math.sin(t),n=this.elements,r=n[0],s=n[3],a=n[6],o=n[1],l=n[4],c=n[7];return n[0]=e*r+i*o,n[3]=e*s+i*l,n[6]=e*a+i*c,n[1]=-i*r+e*o,n[4]=-i*s+e*l,n[7]=-i*a+e*c,this}translate(t,e){const i=this.elements;return i[0]+=t*i[2],i[3]+=t*i[5],i[6]+=t*i[8],i[1]+=e*i[2],i[4]+=e*i[5],i[7]+=e*i[8],this}equals(t){const e=this.elements,i=t.elements;for(let t=0;t<9;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t,e=0){for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}let Ze;Ye.prototype.isMatrix3=!0;class Je{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===Ze&&(Ze=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")),Ze.width=t.width,Ze.height=t.height;const i=Ze.getContext("2d");t instanceof ImageData?i.putImageData(t,0,0):i.drawImage(t,0,0,t.width,t.height),e=Ze}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}}let Qe=0;class Ke extends Fe{constructor(t=Ke.DEFAULT_IMAGE,e=Ke.DEFAULT_MAPPING,i=1001,n=1001,r=1006,s=1008,a=1023,o=1009,l=1,c=3e3){super(),Object.defineProperty(this,"id",{value:Qe++}),this.uuid=Ve(),this.name="",this.image=t,this.mipmaps=[],this.mapping=e,this.wrapS=i,this.wrapT=n,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=a,this.internalFormat=null,this.type=o,this.offset=new Xe(0,0),this.repeat=new Xe(1,1),this.center=new Xe(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Ye,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=c,this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(t){return this.name=t.name,this.image=t.image,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this}toJSON(t){const e=void 0===t||"string"==typeof t;if(!e&&void 0!==t.textures[this.uuid])return t.textures[this.uuid];const i={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){const n=this.image;if(void 0===n.uuid&&(n.uuid=Ve()),!e&&void 0===t.images[n.uuid]){let e;if(Array.isArray(n)){e=[];for(let t=0,i=n.length;t1)switch(this.wrapS){case le:t.x=t.x-Math.floor(t.x);break;case ce:t.x=t.x<0?0:1;break;case he:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case le:t.y=t.y-Math.floor(t.y);break;case ce:t.y=t.y<0?0:1;break;case he:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&this.version++}}function $e(t){return"undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?Je.getDataURL(t):t.data?{data:Array.prototype.slice.call(t.data),width:t.width,height:t.height,type:t.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}Ke.DEFAULT_IMAGE=void 0,Ke.DEFAULT_MAPPING=300,Ke.prototype.isTexture=!0;class ti{constructor(t=0,e=0,i=0,n=1){this.x=t,this.y=e,this.z=i,this.w=n}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,i,n){return this.x=t,this.y=e,this.z=i,this.w=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,r=this.w,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n+s[12]*r,this.y=s[1]*e+s[5]*i+s[9]*n+s[13]*r,this.z=s[2]*e+s[6]*i+s[10]*n+s[14]*r,this.w=s[3]*e+s[7]*i+s[11]*n+s[15]*r,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,i,n,r;const s=.01,a=.1,o=t.elements,l=o[0],c=o[4],h=o[8],u=o[1],d=o[5],p=o[9],f=o[2],m=o[6],g=o[10];if(Math.abs(c-u)o&&t>v?tv?o=0?1:-1,n=1-e*e;if(n>Number.EPSILON){const r=Math.sqrt(n),s=Math.atan2(r,e*i);t=Math.sin(t*s)/r,a=Math.sin(a*s)/r}const r=a*i;if(o=o*t+u*r,l=l*t+d*r,c=c*t+p*r,h=h*t+f*r,t===1-a){const t=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=t,l*=t,c*=t,h*=t}}t[e]=o,t[e+1]=l,t[e+2]=c,t[e+3]=h}static multiplyQuaternionsFlat(t,e,i,n,r,s){const a=i[n],o=i[n+1],l=i[n+2],c=i[n+3],h=r[s],u=r[s+1],d=r[s+2],p=r[s+3];return t[e]=a*p+c*h+o*d-l*u,t[e+1]=o*p+c*u+l*h-a*d,t[e+2]=l*p+c*d+a*u-o*h,t[e+3]=c*p-a*h-o*u-l*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,i,n){return this._x=t,this._y=e,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){if(!t||!t.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const i=t._x,n=t._y,r=t._z,s=t._order,a=Math.cos,o=Math.sin,l=a(i/2),c=a(n/2),h=a(r/2),u=o(i/2),d=o(n/2),p=o(r/2);switch(s){case"XYZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"YXZ":this._x=u*c*h+l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"ZXY":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h-u*d*p;break;case"ZYX":this._x=u*c*h-l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h+u*d*p;break;case"YZX":this._x=u*c*h+l*d*p,this._y=l*d*h+u*c*p,this._z=l*c*p-u*d*h,this._w=l*c*h-u*d*p;break;case"XZY":this._x=u*c*h-l*d*p,this._y=l*d*h-u*c*p,this._z=l*c*p+u*d*h,this._w=l*c*h+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const i=e/2,n=Math.sin(i);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,i=e[0],n=e[4],r=e[8],s=e[1],a=e[5],o=e[9],l=e[2],c=e[6],h=e[10],u=i+a+h;if(u>0){const t=.5/Math.sqrt(u+1);this._w=.25/t,this._x=(c-o)*t,this._y=(r-l)*t,this._z=(s-n)*t}else if(i>a&&i>h){const t=2*Math.sqrt(1+i-a-h);this._w=(c-o)/t,this._x=.25*t,this._y=(n+s)/t,this._z=(r+l)/t}else if(a>h){const t=2*Math.sqrt(1+a-i-h);this._w=(r-l)/t,this._x=(n+s)/t,this._y=.25*t,this._z=(o+c)/t}else{const t=2*Math.sqrt(1+h-i-a);this._w=(s-n)/t,this._x=(r+l)/t,this._y=(o+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return iMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(qe(this.dot(t),-1,1)))}rotateTowards(t,e){const i=this.angleTo(t);if(0===i)return this;const n=Math.min(1,e/i);return this.slerp(t,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t,e){return void 0!==e?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(t,e)):this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const i=t._x,n=t._y,r=t._z,s=t._w,a=e._x,o=e._y,l=e._z,c=e._w;return this._x=i*c+s*a+n*l-r*o,this._y=n*c+s*o+r*a-i*l,this._z=r*c+s*l+i*o-n*a,this._w=s*c-i*a-n*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const i=this._x,n=this._y,r=this._z,s=this._w;let a=s*t._w+i*t._x+n*t._y+r*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=s,this._x=i,this._y=n,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const t=1-e;return this._w=t*s+e*this._w,this._x=t*i+e*this._x,this._y=t*n+e*this._y,this._z=t*r+e*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,a),h=Math.sin((1-e)*c)/l,u=Math.sin(e*c)/l;return this._w=s*h+this._w*u,this._x=i*h+this._x*u,this._y=n*h+this._y*u,this._z=r*h+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,i){this.copy(t).slerp(e,i)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}}ni.prototype.isQuaternion=!0;class ri{constructor(t=0,e=0,i=0){this.x=t,this.y=e,this.z=i}set(t,e,i){return void 0===i&&(i=this.z),this.x=t,this.y=e,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(ai.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(ai.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,i=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[3]*i+r[6]*n,this.y=r[1]*e+r[4]*i+r[7]*n,this.z=r[2]*e+r[5]*i+r[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,r=t.elements,s=1/(r[3]*e+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*e+r[4]*i+r[8]*n+r[12])*s,this.y=(r[1]*e+r[5]*i+r[9]*n+r[13])*s,this.z=(r[2]*e+r[6]*i+r[10]*n+r[14])*s,this}applyQuaternion(t){const e=this.x,i=this.y,n=this.z,r=t.x,s=t.y,a=t.z,o=t.w,l=o*e+s*n-a*i,c=o*i+a*e-r*n,h=o*n+r*i-s*e,u=-r*e-s*i-a*n;return this.x=l*o+u*-r+c*-a-h*-s,this.y=c*o+u*-s+h*-r-l*-a,this.z=h*o+u*-a+l*-s-c*-r,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,i=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[4]*i+r[8]*n,this.y=r[1]*e+r[5]*i+r[9]*n,this.z=r[2]*e+r[6]*i+r[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(t,Math.min(e,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t,e){return void 0!==e?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e)):this.crossVectors(this,t)}crossVectors(t,e){const i=t.x,n=t.y,r=t.z,s=e.x,a=e.y,o=e.z;return this.x=n*o-r*a,this.y=r*s-i*o,this.z=i*a-n*s,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return si.copy(this).projectOnVector(t),this.sub(si)}reflect(t){return this.sub(si.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(qe(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,i){const n=Math.sin(e)*t;return this.x=n*Math.sin(i),this.y=Math.cos(e)*t,this.z=n*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e,i){return void 0!==i&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}}ri.prototype.isVector3=!0;const si=new ri,ai=new ni;class oi{constructor(t=new ri(1/0,1/0,1/0),e=new ri(-1/0,-1/0,-1/0)){this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=t.length;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(e,i,n),this.max.set(r,s,a),this}setFromBufferAttribute(t){let e=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=t.count;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(e,i,n),this.max.set(r,s,a),this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,ci),ci.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(vi),yi.subVectors(this.max,vi),ui.subVectors(t.a,vi),di.subVectors(t.b,vi),pi.subVectors(t.c,vi),fi.subVectors(di,ui),mi.subVectors(pi,di),gi.subVectors(ui,pi);let e=[0,-fi.z,fi.y,0,-mi.z,mi.y,0,-gi.z,gi.y,fi.z,0,-fi.x,mi.z,0,-mi.x,gi.z,0,-gi.x,-fi.y,fi.x,0,-mi.y,mi.x,0,-gi.y,gi.x,0];return!!wi(e,ui,di,pi,yi)&&(e=[1,0,0,0,1,0,0,0,1],!!wi(e,ui,di,pi,yi)&&(xi.crossVectors(fi,mi),e=[xi.x,xi.y,xi.z],wi(e,ui,di,pi,yi)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return ci.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=.5*this.getSize(ci).length(),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||(li[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),li[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),li[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),li[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),li[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),li[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),li[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),li[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(li)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}oi.prototype.isBox3=!0;const li=[new ri,new ri,new ri,new ri,new ri,new ri,new ri,new ri],ci=new ri,hi=new oi,ui=new ri,di=new ri,pi=new ri,fi=new ri,mi=new ri,gi=new ri,vi=new ri,yi=new ri,xi=new ri,bi=new ri;function wi(t,e,i,n,r){for(let s=0,a=t.length-3;s<=a;s+=3){bi.fromArray(t,s);const a=r.x*Math.abs(bi.x)+r.y*Math.abs(bi.y)+r.z*Math.abs(bi.z),o=e.dot(bi),l=i.dot(bi),c=n.dot(bi);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>a)return!1}return!0}const _i=new oi,Mi=new ri,Si=new ri,Ei=new ri;class Ti{constructor(t=new ri,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const i=this.center;void 0!==e?i.copy(e):_i.setFromPoints(t).getCenter(i);let n=0;for(let e=0,r=t.length;ethis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){Ei.subVectors(t,this.center);const e=Ei.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),i=.5*(t-this.radius);this.center.add(Ei.multiplyScalar(i/t)),this.radius+=i}return this}union(t){return Si.subVectors(t.center,this.center).normalize().multiplyScalar(t.radius),this.expandByPoint(Mi.copy(t.center).add(Si)),this.expandByPoint(Mi.copy(t.center).sub(Si)),this}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const Ai=new ri,Li=new ri,Ci=new ri,Ri=new ri,Di=new ri,Pi=new ri,Ni=new ri;class Ii{constructor(t=new ri,e=new ri(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Ai)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=Ai.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Ai.copy(this.direction).multiplyScalar(e).add(this.origin),Ai.distanceToSquared(t))}distanceSqToSegment(t,e,i,n){Li.copy(t).add(e).multiplyScalar(.5),Ci.copy(e).sub(t).normalize(),Ri.copy(this.origin).sub(Li);const r=.5*t.distanceTo(e),s=-this.direction.dot(Ci),a=Ri.dot(this.direction),o=-Ri.dot(Ci),l=Ri.lengthSq(),c=Math.abs(1-s*s);let h,u,d,p;if(c>0)if(h=s*o-a,u=s*a-o,p=r*c,h>=0)if(u>=-p)if(u<=p){const t=1/c;h*=t,u*=t,d=h*(h+s*u+2*a)+u*(s*h+u+2*o)+l}else u=r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;else u=-r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;else u<=-p?(h=Math.max(0,-(-s*r+a)),u=h>0?-r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l):u<=p?(h=0,u=Math.min(Math.max(-r,-o),r),d=u*(u+2*o)+l):(h=Math.max(0,-(s*r+a)),u=h>0?r:Math.min(Math.max(-r,-o),r),d=-h*h+u*(u+2*o)+l);else u=s>0?-r:r,h=Math.max(0,-(s*u+a)),d=-h*h+u*(u+2*o)+l;return i&&i.copy(this.direction).multiplyScalar(h).add(this.origin),n&&n.copy(Ci).multiplyScalar(u).add(Li),d}intersectSphere(t,e){Ai.subVectors(t.center,this.origin);const i=Ai.dot(this.direction),n=Ai.dot(Ai)-i*i,r=t.radius*t.radius;if(n>r)return null;const s=Math.sqrt(r-n),a=i-s,o=i+s;return a<0&&o<0?null:a<0?this.at(o,e):this.at(a,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){const i=this.distanceToPlane(t);return null===i?null:this.at(i,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return 0===e||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let i,n,r,s,a,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(i=(t.min.x-u.x)*l,n=(t.max.x-u.x)*l):(i=(t.max.x-u.x)*l,n=(t.min.x-u.x)*l),c>=0?(r=(t.min.y-u.y)*c,s=(t.max.y-u.y)*c):(r=(t.max.y-u.y)*c,s=(t.min.y-u.y)*c),i>s||r>n?null:((r>i||i!=i)&&(i=r),(s=0?(a=(t.min.z-u.z)*h,o=(t.max.z-u.z)*h):(a=(t.max.z-u.z)*h,o=(t.min.z-u.z)*h),i>o||a>n?null:((a>i||i!=i)&&(i=a),(o=0?i:n,e)))}intersectsBox(t){return null!==this.intersectBox(t,Ai)}intersectTriangle(t,e,i,n,r){Di.subVectors(e,t),Pi.subVectors(i,t),Ni.crossVectors(Di,Pi);let s,a=this.direction.dot(Ni);if(a>0){if(n)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}Ri.subVectors(this.origin,t);const o=s*this.direction.dot(Pi.crossVectors(Ri,Pi));if(o<0)return null;const l=s*this.direction.dot(Di.cross(Ri));if(l<0)return null;if(o+l>a)return null;const c=-s*Ri.dot(Ni);return c<0?null:this.at(c/a,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class Bi{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(t,e,i,n,r,s,a,o,l,c,h,u,d,p,f,m){const g=this.elements;return g[0]=t,g[4]=e,g[8]=i,g[12]=n,g[1]=r,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new Bi).fromArray(this.elements)}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){const e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,i){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,i=t.elements,n=1/zi.setFromMatrixColumn(t,0).length(),r=1/zi.setFromMatrixColumn(t,1).length(),s=1/zi.setFromMatrixColumn(t,2).length();return e[0]=i[0]*n,e[1]=i[1]*n,e[2]=i[2]*n,e[3]=0,e[4]=i[4]*r,e[5]=i[5]*r,e[6]=i[6]*r,e[7]=0,e[8]=i[8]*s,e[9]=i[9]*s,e[10]=i[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){t&&t.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const e=this.elements,i=t.x,n=t.y,r=t.z,s=Math.cos(i),a=Math.sin(i),o=Math.cos(n),l=Math.sin(n),c=Math.cos(r),h=Math.sin(r);if("XYZ"===t.order){const t=s*c,i=s*h,n=a*c,r=a*h;e[0]=o*c,e[4]=-o*h,e[8]=l,e[1]=i+n*l,e[5]=t-r*l,e[9]=-a*o,e[2]=r-t*l,e[6]=n+i*l,e[10]=s*o}else if("YXZ"===t.order){const t=o*c,i=o*h,n=l*c,r=l*h;e[0]=t+r*a,e[4]=n*a-i,e[8]=s*l,e[1]=s*h,e[5]=s*c,e[9]=-a,e[2]=i*a-n,e[6]=r+t*a,e[10]=s*o}else if("ZXY"===t.order){const t=o*c,i=o*h,n=l*c,r=l*h;e[0]=t-r*a,e[4]=-s*h,e[8]=n+i*a,e[1]=i+n*a,e[5]=s*c,e[9]=r-t*a,e[2]=-s*l,e[6]=a,e[10]=s*o}else if("ZYX"===t.order){const t=s*c,i=s*h,n=a*c,r=a*h;e[0]=o*c,e[4]=n*l-i,e[8]=t*l+r,e[1]=o*h,e[5]=r*l+t,e[9]=i*l-n,e[2]=-l,e[6]=a*o,e[10]=s*o}else if("YZX"===t.order){const t=s*o,i=s*l,n=a*o,r=a*l;e[0]=o*c,e[4]=r-t*h,e[8]=n*h+i,e[1]=h,e[5]=s*c,e[9]=-a*c,e[2]=-l*c,e[6]=i*h+n,e[10]=t-r*h}else if("XZY"===t.order){const t=s*o,i=s*l,n=a*o,r=a*l;e[0]=o*c,e[4]=-h,e[8]=l*c,e[1]=t*h+r,e[5]=s*c,e[9]=i*h-n,e[2]=n*h-i,e[6]=a*c,e[10]=r*h+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Fi,t,Oi)}lookAt(t,e,i){const n=this.elements;return Vi.subVectors(t,e),0===Vi.lengthSq()&&(Vi.z=1),Vi.normalize(),Ui.crossVectors(i,Vi),0===Ui.lengthSq()&&(1===Math.abs(i.z)?Vi.x+=1e-4:Vi.z+=1e-4,Vi.normalize(),Ui.crossVectors(i,Vi)),Ui.normalize(),Hi.crossVectors(Vi,Ui),n[0]=Ui.x,n[4]=Hi.x,n[8]=Vi.x,n[1]=Ui.y,n[5]=Hi.y,n[9]=Vi.y,n[2]=Ui.z,n[6]=Hi.z,n[10]=Vi.z,this}multiply(t,e){return void 0!==e?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,r=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],c=i[1],h=i[5],u=i[9],d=i[13],p=i[2],f=i[6],m=i[10],g=i[14],v=i[3],y=i[7],x=i[11],b=i[15],w=n[0],_=n[4],M=n[8],S=n[12],E=n[1],T=n[5],A=n[9],L=n[13],C=n[2],R=n[6],D=n[10],P=n[14],N=n[3],I=n[7],B=n[11],z=n[15];return r[0]=s*w+a*E+o*C+l*N,r[4]=s*_+a*T+o*R+l*I,r[8]=s*M+a*A+o*D+l*B,r[12]=s*S+a*L+o*P+l*z,r[1]=c*w+h*E+u*C+d*N,r[5]=c*_+h*T+u*R+d*I,r[9]=c*M+h*A+u*D+d*B,r[13]=c*S+h*L+u*P+d*z,r[2]=p*w+f*E+m*C+g*N,r[6]=p*_+f*T+m*R+g*I,r[10]=p*M+f*A+m*D+g*B,r[14]=p*S+f*L+m*P+g*z,r[3]=v*w+y*E+x*C+b*N,r[7]=v*_+y*T+x*R+b*I,r[11]=v*M+y*A+x*D+b*B,r[15]=v*S+y*L+x*P+b*z,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[4],n=t[8],r=t[12],s=t[1],a=t[5],o=t[9],l=t[13],c=t[2],h=t[6],u=t[10],d=t[14];return t[3]*(+r*o*h-n*l*h-r*a*u+i*l*u+n*a*d-i*o*d)+t[7]*(+e*o*d-e*l*u+r*s*u-n*s*d+n*l*c-r*o*c)+t[11]*(+e*l*h-e*a*d-r*s*h+i*s*d+r*a*c-i*l*c)+t[15]*(-n*a*c-e*o*h+e*a*u+n*s*h-i*s*u+i*o*c)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,i){const n=this.elements;return t.isVector3?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=i),this}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],r=t[3],s=t[4],a=t[5],o=t[6],l=t[7],c=t[8],h=t[9],u=t[10],d=t[11],p=t[12],f=t[13],m=t[14],g=t[15],v=h*m*l-f*u*l+f*o*d-a*m*d-h*o*g+a*u*g,y=p*u*l-c*m*l-p*o*d+s*m*d+c*o*g-s*u*g,x=c*f*l-p*h*l+p*a*d-s*f*d-c*a*g+s*h*g,b=p*h*o-c*f*o-p*a*u+s*f*u+c*a*m-s*h*m,w=e*v+i*y+n*x+r*b;if(0===w)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const _=1/w;return t[0]=v*_,t[1]=(f*u*r-h*m*r-f*n*d+i*m*d+h*n*g-i*u*g)*_,t[2]=(a*m*r-f*o*r+f*n*l-i*m*l-a*n*g+i*o*g)*_,t[3]=(h*o*r-a*u*r-h*n*l+i*u*l+a*n*d-i*o*d)*_,t[4]=y*_,t[5]=(c*m*r-p*u*r+p*n*d-e*m*d-c*n*g+e*u*g)*_,t[6]=(p*o*r-s*m*r-p*n*l+e*m*l+s*n*g-e*o*g)*_,t[7]=(s*u*r-c*o*r+c*n*l-e*u*l-s*n*d+e*o*d)*_,t[8]=x*_,t[9]=(p*h*r-c*f*r-p*i*d+e*f*d+c*i*g-e*h*g)*_,t[10]=(s*f*r-p*a*r+p*i*l-e*f*l-s*i*g+e*a*g)*_,t[11]=(c*a*r-s*h*r-c*i*l+e*h*l+s*i*d-e*a*d)*_,t[12]=b*_,t[13]=(c*f*n-p*h*n+p*i*u-e*f*u-c*i*m+e*h*m)*_,t[14]=(p*a*n-s*f*n-p*i*o+e*f*o+s*i*m-e*a*m)*_,t[15]=(s*h*n-c*a*n+c*i*o-e*h*o-s*i*u+e*a*u)*_,this}scale(t){const e=this.elements,i=t.x,n=t.y,r=t.z;return e[0]*=i,e[4]*=n,e[8]*=r,e[1]*=i,e[5]*=n,e[9]*=r,e[2]*=i,e[6]*=n,e[10]*=r,e[3]*=i,e[7]*=n,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,i,n))}makeTranslation(t,e,i){return this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const i=Math.cos(e),n=Math.sin(e),r=1-i,s=t.x,a=t.y,o=t.z,l=r*s,c=r*a;return this.set(l*s+i,l*a-n*o,l*o+n*a,0,l*a+n*o,c*a+i,c*o-n*s,0,l*o-n*a,c*o+n*s,r*o*o+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,n,r,s){return this.set(1,i,r,0,t,1,s,0,e,n,1,0,0,0,0,1),this}compose(t,e,i){const n=this.elements,r=e._x,s=e._y,a=e._z,o=e._w,l=r+r,c=s+s,h=a+a,u=r*l,d=r*c,p=r*h,f=s*c,m=s*h,g=a*h,v=o*l,y=o*c,x=o*h,b=i.x,w=i.y,_=i.z;return n[0]=(1-(f+g))*b,n[1]=(d+x)*b,n[2]=(p-y)*b,n[3]=0,n[4]=(d-x)*w,n[5]=(1-(u+g))*w,n[6]=(m+v)*w,n[7]=0,n[8]=(p+y)*_,n[9]=(m-v)*_,n[10]=(1-(u+f))*_,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,i){const n=this.elements;let r=zi.set(n[0],n[1],n[2]).length();const s=zi.set(n[4],n[5],n[6]).length(),a=zi.set(n[8],n[9],n[10]).length();this.determinant()<0&&(r=-r),t.x=n[12],t.y=n[13],t.z=n[14],ki.copy(this);const o=1/r,l=1/s,c=1/a;return ki.elements[0]*=o,ki.elements[1]*=o,ki.elements[2]*=o,ki.elements[4]*=l,ki.elements[5]*=l,ki.elements[6]*=l,ki.elements[8]*=c,ki.elements[9]*=c,ki.elements[10]*=c,e.setFromRotationMatrix(ki),i.x=r,i.y=s,i.z=a,this}makePerspective(t,e,i,n,r,s){void 0===s&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const a=this.elements,o=2*r/(e-t),l=2*r/(i-n),c=(e+t)/(e-t),h=(i+n)/(i-n),u=-(s+r)/(s-r),d=-2*s*r/(s-r);return a[0]=o,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=l,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=d,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(t,e,i,n,r,s){const a=this.elements,o=1/(e-t),l=1/(i-n),c=1/(s-r),h=(e+t)*o,u=(i+n)*l,d=(s+r)*c;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*c,a[14]=-d,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(t){const e=this.elements,i=t.elements;for(let t=0;t<16;t++)if(e[t]!==i[t])return!1;return!0}fromArray(t,e=0){for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}}Bi.prototype.isMatrix4=!0;const zi=new ri,ki=new Bi,Fi=new ri(0,0,0),Oi=new ri(1,1,1),Ui=new ri,Hi=new ri,Vi=new ri,qi=new Bi,Gi=new ni;class Wi{constructor(t=0,e=0,i=0,n=Wi.DefaultOrder){this._x=t,this._y=e,this._z=i,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,i,n=this._order){return this._x=t,this._y=e,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,i=!0){const n=t.elements,r=n[0],s=n[4],a=n[8],o=n[1],l=n[5],c=n[9],h=n[2],u=n[6],d=n[10];switch(e){case"XYZ":this._y=Math.asin(qe(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-qe(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(a,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(qe(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-qe(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(qe(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(a,d));break;case"XZY":this._z=Math.asin(-qe(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===i&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return qi.makeRotationFromQuaternion(t),this.setFromRotationMatrix(qi,e,i)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Gi.setFromEuler(this),this.setFromQuaternion(Gi,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}toVector3(t){return t?t.set(this._x,this._y,this._z):new ri(this._x,this._y,this._z)}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}}Wi.prototype.isEuler=!0,Wi.DefaultOrder="XYZ",Wi.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];class ji{constructor(){this.mask=1}set(t){this.mask=1<1){for(let t=0;t1){for(let t=0;t0){n.children=[];for(let e=0;e0){n.animations=[];for(let e=0;e0&&(i.geometries=e),n.length>0&&(i.materials=n),r.length>0&&(i.textures=r),a.length>0&&(i.images=a),o.length>0&&(i.shapes=o),l.length>0&&(i.skeletons=l),c.length>0&&(i.animations=c)}return i.object=n,i;function s(t){const e=[];for(const i in t){const n=t[i];delete n.metadata,e.push(n)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?n.multiplyScalar(1/Math.sqrt(r)):n.set(0,0,0)}static getBarycoord(t,e,i,n,r){ln.subVectors(n,e),cn.subVectors(i,e),hn.subVectors(t,e);const s=ln.dot(ln),a=ln.dot(cn),o=ln.dot(hn),l=cn.dot(cn),c=cn.dot(hn),h=s*l-a*a;if(0===h)return r.set(-2,-1,-1);const u=1/h,d=(l*o-a*c)*u,p=(s*c-a*o)*u;return r.set(1-d-p,p,d)}static containsPoint(t,e,i,n){return this.getBarycoord(t,e,i,n,un),un.x>=0&&un.y>=0&&un.x+un.y<=1}static getUV(t,e,i,n,r,s,a,o){return this.getBarycoord(t,e,i,n,un),o.set(0,0),o.addScaledVector(r,un.x),o.addScaledVector(s,un.y),o.addScaledVector(a,un.z),o}static isFrontFacing(t,e,i,n){return ln.subVectors(i,e),cn.subVectors(t,e),ln.cross(cn).dot(n)<0}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,n){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[n]),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return ln.subVectors(this.c,this.b),cn.subVectors(this.a,this.b),.5*ln.cross(cn).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return yn.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return yn.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,i,n,r){return yn.getUV(t,this.a,this.b,this.c,e,i,n,r)}containsPoint(t){return yn.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return yn.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const i=this.a,n=this.b,r=this.c;let s,a;dn.subVectors(n,i),pn.subVectors(r,i),mn.subVectors(t,i);const o=dn.dot(mn),l=pn.dot(mn);if(o<=0&&l<=0)return e.copy(i);gn.subVectors(t,n);const c=dn.dot(gn),h=pn.dot(gn);if(c>=0&&h<=c)return e.copy(n);const u=o*h-c*l;if(u<=0&&o>=0&&c<=0)return s=o/(o-c),e.copy(i).addScaledVector(dn,s);vn.subVectors(t,r);const d=dn.dot(vn),p=pn.dot(vn);if(p>=0&&d<=p)return e.copy(r);const f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return a=l/(l-p),e.copy(i).addScaledVector(pn,a);const m=c*p-d*h;if(m<=0&&h-c>=0&&d-p>=0)return fn.subVectors(r,n),a=(h-c)/(h-c+(d-p)),e.copy(n).addScaledVector(fn,a);const g=1/(m+f+u);return s=f*g,a=u*g,e.copy(i).addScaledVector(dn,s).addScaledVector(pn,a)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}let xn=0;class bn extends Fe{constructor(){super(),Object.defineProperty(this,"id",{value:xn++}),this.uuid=Ve(),this.name="",this.type="Material",this.fog=!0,this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.format=we,this.transparent=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=re,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Ie,this.stencilZFail=Ie,this.stencilZPass=Ie,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const i=t[e];if(void 0===i){console.warn("THREE.Material: '"+e+"' parameter is undefined.");continue}if("shading"===e){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===i;continue}const n=this[e];void 0!==n?n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[e]=i:console.warn("THREE."+this.type+": '"+e+"' is not a property of this material.")}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function n(t){const e=[];for(const i in t){const n=t[i];delete n.metadata,e.push(n)}return e}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),this.sheenTint&&this.sheenTint.isColor&&(i.sheenTint=this.sheenTint.getHex()),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularTint&&this.specularTint.isColor&&(i.specularTint=this.specularTint.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularTintMap&&this.specularTintMap.isTexture&&(i.specularTintMap=this.specularTintMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationTint&&(i.attenuationTint=this.attenuationTint.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(i.blending=this.blending),0!==this.side&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.format!==we&&(i.format=this.format),!0===this.transparent&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(i.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=this.flatShading),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(i.userData=this.userData),e){const e=n(t.textures),r=n(t.images);e.length>0&&(i.textures=e),r.length>0&&(i.images=r)}return i}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.fog=t.fog,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.format=t.format,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let i=null;if(null!==e){const t=e.length;i=new Array(t);for(let n=0;n!==t;++n)i[n]=e[n].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}}bn.prototype.isMaterial=!0;const wn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},_n={h:0,s:0,l:0},Mn={h:0,s:0,l:0};function Sn(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+6*(e-t)*(2/3-i):t}function En(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function Tn(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}class An{constructor(t,e,i){return void 0===e&&void 0===i?this.set(t):this.setRGB(t,e,i)}set(t){return t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,this}setRGB(t,e,i){return this.r=t,this.g=e,this.b=i,this}setHSL(t,e,i){if(t=(t%(n=1)+n)%n,e=qe(e,0,1),i=qe(i,0,1),0===e)this.r=this.g=this.b=i;else{const n=i<=.5?i*(1+e):i+e-i*e,r=2*i-n;this.r=Sn(r,n,t+1/3),this.g=Sn(r,n,t),this.b=Sn(r,n,t-1/3)}var n;return this}setStyle(t){function e(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(t)){let t;const n=i[1],r=i[2];switch(n){case"rgb":case"rgba":if(t=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,e(t[4]),this;if(t=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,e(t[4]),this;break;case"hsl":case"hsla":if(t=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r)){const i=parseFloat(t[1])/360,n=parseInt(t[2],10)/100,r=parseInt(t[3],10)/100;return e(t[4]),this.setHSL(i,n,r)}}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const t=i[1],e=t.length;if(3===e)return this.r=parseInt(t.charAt(0)+t.charAt(0),16)/255,this.g=parseInt(t.charAt(1)+t.charAt(1),16)/255,this.b=parseInt(t.charAt(2)+t.charAt(2),16)/255,this;if(6===e)return this.r=parseInt(t.charAt(0)+t.charAt(1),16)/255,this.g=parseInt(t.charAt(2)+t.charAt(3),16)/255,this.b=parseInt(t.charAt(4)+t.charAt(5),16)/255,this}return t&&t.length>0?this.setColorName(t):this}setColorName(t){const e=wn[t.toLowerCase()];return void 0!==e?this.setHex(e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copyGammaToLinear(t,e=2){return this.r=Math.pow(t.r,e),this.g=Math.pow(t.g,e),this.b=Math.pow(t.b,e),this}copyLinearToGamma(t,e=2){const i=e>0?1/e:1;return this.r=Math.pow(t.r,i),this.g=Math.pow(t.g,i),this.b=Math.pow(t.b,i),this}convertGammaToLinear(t){return this.copyGammaToLinear(this,t),this}convertLinearToGamma(t){return this.copyLinearToGamma(this,t),this}copySRGBToLinear(t){return this.r=En(t.r),this.g=En(t.g),this.b=En(t.b),this}copyLinearToSRGB(t){return this.r=Tn(t.r),this.g=Tn(t.g),this.b=Tn(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0}getHexString(){return("000000"+this.getHex().toString(16)).slice(-6)}getHSL(t){const e=this.r,i=this.g,n=this.b,r=Math.max(e,i,n),s=Math.min(e,i,n);let a,o;const l=(s+r)/2;if(s===r)a=0,o=0;else{const t=r-s;switch(o=l<=.5?t/(r+s):t/(2-r-s),r){case e:a=(i-n)/t+(ie&&(e=t[i]);return e}Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array;let zn=0;const kn=new Bi,Fn=new on,On=new ri,Un=new oi,Hn=new oi,Vn=new ri;class qn extends Fe{constructor(){super(),Object.defineProperty(this,"id",{value:zn++}),this.uuid=Ve(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(Bn(t)>65535?Nn:Pn)(t,1):this.index=t,this}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return void 0!==this.attributes[t]}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;void 0!==e&&(e.applyMatrix4(t),e.needsUpdate=!0);const i=this.attributes.normal;if(void 0!==i){const e=(new Ye).getNormalMatrix(t);i.applyNormalMatrix(e),i.needsUpdate=!0}const n=this.attributes.tangent;return void 0!==n&&(n.transformDirection(t),n.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(t){return kn.makeRotationFromQuaternion(t),this.applyMatrix4(kn),this}rotateX(t){return kn.makeRotationX(t),this.applyMatrix4(kn),this}rotateY(t){return kn.makeRotationY(t),this.applyMatrix4(kn),this}rotateZ(t){return kn.makeRotationZ(t),this.applyMatrix4(kn),this}translate(t,e,i){return kn.makeTranslation(t,e,i),this.applyMatrix4(kn),this}scale(t,e,i){return kn.makeScale(t,e,i),this.applyMatrix4(kn),this}lookAt(t){return Fn.lookAt(t),Fn.updateMatrix(),this.applyMatrix4(Fn.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(On).negate(),this.translate(On.x,On.y,On.z),this}setFromPoints(t){const e=[];for(let i=0,n=t.length;i0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const i in e)void 0!==e[i]&&(t[i]=e[i]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const i=this.attributes;for(const e in i){const n=i[e];t.data.attributes[e]=n.toJSON(t.data)}const n={};let r=!1;for(const e in this.morphAttributes){const i=this.morphAttributes[e],s=[];for(let e=0,n=i.length;e0&&(n[e]=s,r=!0)}r&&(t.data.morphAttributes=n,t.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(t.data.groups=JSON.parse(JSON.stringify(s)));const a=this.boundingSphere;return null!==a&&(t.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),t}clone(){return(new qn).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const i=t.index;null!==i&&this.setIndex(i.clone(e));const n=t.attributes;for(const t in n){const i=n[t];this.setAttribute(t,i.clone(e))}const r=t.morphAttributes;for(const t in r){const i=[],n=r[t];for(let t=0,r=n.length;t0){const t=e[i[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=t.length;e0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(t,e){const i=this.geometry,n=this.material,r=this.matrixWorld;if(void 0===n)return;if(null===i.boundingSphere&&i.computeBoundingSphere(),jn.copy(i.boundingSphere),jn.applyMatrix4(r),!1===t.ray.intersectsSphere(jn))return;if(Gn.copy(r).invert(),Wn.copy(t.ray).applyMatrix4(Gn),null!==i.boundingBox&&!1===Wn.intersectsBox(i.boundingBox))return;let s;if(i.isBufferGeometry){const r=i.index,a=i.attributes.position,o=i.morphAttributes.position,l=i.morphTargetsRelative,c=i.attributes.uv,h=i.attributes.uv2,u=i.groups,d=i.drawRange;if(null!==r)if(Array.isArray(n))for(let i=0,p=u.length;ii.far?null:{distance:c,point:ar.clone(),object:t}}(t,e,i,n,Xn,Yn,Zn,sr);if(p){o&&(ir.fromBufferAttribute(o,c),nr.fromBufferAttribute(o,h),rr.fromBufferAttribute(o,u),p.uv=yn.getUV(sr,Xn,Yn,Zn,ir,nr,rr,new Xe)),l&&(ir.fromBufferAttribute(l,c),nr.fromBufferAttribute(l,h),rr.fromBufferAttribute(l,u),p.uv2=yn.getUV(sr,Xn,Yn,Zn,ir,nr,rr,new Xe));const t={a:c,b:h,c:u,normal:new ri,materialIndex:0};yn.getNormal(Xn,Yn,Zn,t.normal),p.face=t}return p}or.prototype.isMesh=!0;class cr extends qn{constructor(t=1,e=1,i=1,n=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:i,widthSegments:n,heightSegments:r,depthSegments:s};const a=this;n=Math.floor(n),r=Math.floor(r),s=Math.floor(s);const o=[],l=[],c=[],h=[];let u=0,d=0;function p(t,e,i,n,r,s,p,f,m,g,v){const y=s/m,x=p/g,b=s/2,w=p/2,_=f/2,M=m+1,S=g+1;let E=0,T=0;const A=new ri;for(let s=0;s0?1:-1,c.push(A.x,A.y,A.z),h.push(o/m),h.push(1-s/g),E+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;const i={};for(const t in this.extensions)!0===this.extensions[t]&&(i[t]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}}pr.prototype.isShaderMaterial=!0;class fr extends on{constructor(){super(),this.type="Camera",this.matrixWorldInverse=new Bi,this.projectionMatrix=new Bi,this.projectionMatrixInverse=new Bi}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}fr.prototype.isCamera=!0;class mr extends fr{constructor(t=50,e=1,i=.1,n=2e3){super(),this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*He*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*Ue*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*He*Math.atan(Math.tan(.5*Ue*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,i,n,r,s){this.aspect=t/e,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*Ue*this.fov)/this.zoom,i=2*e,n=this.aspect*i,r=-.5*n;const s=this.view;if(null!==this.view&&this.view.enabled){const t=s.fullWidth,a=s.fullHeight;r+=s.offsetX*n/t,e-=s.offsetY*i/a,n*=s.width/t,i*=s.height/a}const a=this.filmOffset;0!==a&&(r+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+n,e,e-i,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}mr.prototype.isPerspectiveCamera=!0;const gr=90;class vr extends on{constructor(t,e,i){if(super(),this.type="CubeCamera",!0!==i.isWebGLCubeRenderTarget)return void console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");this.renderTarget=i;const n=new mr(gr,1,t,e);n.layers=this.layers,n.up.set(0,-1,0),n.lookAt(new ri(1,0,0)),this.add(n);const r=new mr(gr,1,t,e);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new ri(-1,0,0)),this.add(r);const s=new mr(gr,1,t,e);s.layers=this.layers,s.up.set(0,0,1),s.lookAt(new ri(0,1,0)),this.add(s);const a=new mr(gr,1,t,e);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new ri(0,-1,0)),this.add(a);const o=new mr(gr,1,t,e);o.layers=this.layers,o.up.set(0,-1,0),o.lookAt(new ri(0,0,1)),this.add(o);const l=new mr(gr,1,t,e);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new ri(0,0,-1)),this.add(l)}update(t,e){null===this.parent&&this.updateMatrixWorld();const i=this.renderTarget,[n,r,s,a,o,l]=this.children,c=t.xr.enabled,h=t.getRenderTarget();t.xr.enabled=!1;const u=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,t.setRenderTarget(i,0),t.render(e,n),t.setRenderTarget(i,1),t.render(e,r),t.setRenderTarget(i,2),t.render(e,s),t.setRenderTarget(i,3),t.render(e,a),t.setRenderTarget(i,4),t.render(e,o),i.texture.generateMipmaps=u,t.setRenderTarget(i,5),t.render(e,l),t.setRenderTarget(h),t.xr.enabled=c}}class yr extends Ke{constructor(t,e,i,n,r,s,a,o,l,c){super(t=void 0!==t?t:[],e=void 0!==e?e:se,i,n,r,s,a=void 0!==a?a:be,o,l,c),this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}yr.prototype.isCubeTexture=!0;class xr extends ei{constructor(t,e,i){Number.isInteger(e)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),e=i),super(t,t,e),e=e||{},this.texture=new yr(void 0,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:de,this.texture._needsFlipEnvMap=!1}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.format=we,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const i={tEquirect:{value:null}},n="\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",r="\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t",s=new cr(5,5,5),a=new pr({name:"CubemapFromEquirect",uniforms:hr(i),vertexShader:n,fragmentShader:r,side:1,blending:0});a.uniforms.tEquirect.value=e;const o=new or(s,a),l=e.minFilter;return e.minFilter===pe&&(e.minFilter=de),new vr(1,10,this).update(t,o),e.minFilter=l,o.geometry.dispose(),o.material.dispose(),this}clear(t,e,i,n){const r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,i,n);t.setRenderTarget(r)}}xr.prototype.isWebGLCubeRenderTarget=!0;const br=new ri,wr=new ri,_r=new Ye;class Mr{constructor(t=new ri(1,0,0),e=0){this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,i){const n=br.subVectors(i,e).cross(wr.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){const i=t.delta(br),n=this.normal.dot(i);if(0===n)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/n;return r<0||r>1?null:e.copy(i).multiplyScalar(r).add(t.start)}intersectsLine(t){const e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const i=e||_r.getNormalMatrix(t),n=this.coplanarPoint(br).applyMatrix4(t),r=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}Mr.prototype.isPlane=!0;const Sr=new Ti,Er=new ri;class Tr{constructor(t=new Mr,e=new Mr,i=new Mr,n=new Mr,r=new Mr,s=new Mr){this.planes=[t,e,i,n,r,s]}set(t,e,i,n,r,s){const a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(i),a[3].copy(n),a[4].copy(r),a[5].copy(s),this}copy(t){const e=this.planes;for(let i=0;i<6;i++)e[i].copy(t.planes[i]);return this}setFromProjectionMatrix(t){const e=this.planes,i=t.elements,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7],u=i[8],d=i[9],p=i[10],f=i[11],m=i[12],g=i[13],v=i[14],y=i[15];return e[0].setComponents(a-n,h-o,f-u,y-m).normalize(),e[1].setComponents(a+n,h+o,f+u,y+m).normalize(),e[2].setComponents(a+r,h+l,f+d,y+g).normalize(),e[3].setComponents(a-r,h-l,f-d,y-g).normalize(),e[4].setComponents(a-s,h-c,f-p,y-v).normalize(),e[5].setComponents(a+s,h+c,f+p,y+v).normalize(),this}intersectsObject(t){const e=t.geometry;return null===e.boundingSphere&&e.computeBoundingSphere(),Sr.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(Sr)}intersectsSprite(t){return Sr.center.set(0,0,0),Sr.radius=.7071067811865476,Sr.applyMatrix4(t.matrixWorld),this.intersectsSphere(Sr)}intersectsSphere(t){const e=this.planes,i=t.center,n=-t.radius;for(let t=0;t<6;t++)if(e[t].distanceToPoint(i)0?t.max.x:t.min.x,Er.y=n.normal.y>0?t.max.y:t.min.y,Er.z=n.normal.z>0?t.max.z:t.min.z,n.distanceToPoint(Er)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let i=0;i<6;i++)if(e[i].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function Ar(){let t=null,e=!1,i=null,n=null;function r(e,s){i(e,s),n=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==i&&(n=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(t){i=t},setContext:function(e){t=e}}}function Lr(t,e){const i=e.isWebGL2,n=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),n.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);const i=n.get(e);i&&(t.deleteBuffer(i.buffer),n.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){const t=n.get(e);return void((!t||t.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotVH = saturate( dot( geometry.viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float NoH ) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float NoV, float NoL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( NoL + NoV - NoL * NoV ) ) );\n}\nvec3 BRDF_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_maxMipLevel 8.0\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_maxTileSize 256.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\n\t\tvec2 f = fract( uv );\n\t\tuv += 0.5 - f;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\n\t\t}\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\n\t\tuv *= texelSize;\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x += texelSize;\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.y += texelSize;\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x -= texelSize;\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tvec3 tm = mix( tl, tr, f.x );\n\t\tvec3 bm = mix( bl, br, f.x );\n\t\treturn mix( tm, bm, f.y );\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getIBLIrradiance( const in GeometricContext geometry ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec;\n\t\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\t\treflectVec = reflect( - viewDir, normal );\n\t\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\t#else\n\t\t\t\treflectVec = refract( - viewDir, normal, refractionRatio );\n\t\t\t#endif\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tlightMapIrradiance *= PI;\n\t#endif\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularTintFactor = specularTint;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARTINTMAP\n\t\t\tspecularTintFactor *= specularTintMapTexelToLinear( texture2D( specularTintMap, vUv ) ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularTintFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularTintFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenTint = sheenTint;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenTint;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\tvec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += irradiance * BRDF_Sheen( material.roughness, directLight.direction, geometry, material.sheenTint );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\t\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\t\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",output_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tfloat transmissionAlpha = 1.0;\n\tfloat transmissionFactor = transmission;\n\tfloat thicknessFactor = thickness;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\n\t\tattenuationTint, attenuationDistance );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\n\ttransmissionAlpha = transmission.a;\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationTint;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( float roughness, float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance ) {\n\t\tif ( attenuationDistance == 0.0 ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 diffuseColor, vec3 specularColor, float specularF90,\n\t\tvec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness,\n\t\tvec3 attenuationColor, float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularTint;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARTINTMAP\n\t\tuniform sampler2D specularTintMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenTint;\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"},Dr={common:{diffuse:{value:new An(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new Ye},uv2Transform:{value:new Ye},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Xe(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new An(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new An(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Ye}},sprite:{diffuse:{value:new An(16777215)},opacity:{value:1},center:{value:new Xe(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Ye}}},Pr={basic:{uniforms:ur([Dr.common,Dr.specularmap,Dr.envmap,Dr.aomap,Dr.lightmap,Dr.fog]),vertexShader:Rr.meshbasic_vert,fragmentShader:Rr.meshbasic_frag},lambert:{uniforms:ur([Dr.common,Dr.specularmap,Dr.envmap,Dr.aomap,Dr.lightmap,Dr.emissivemap,Dr.fog,Dr.lights,{emissive:{value:new An(0)}}]),vertexShader:Rr.meshlambert_vert,fragmentShader:Rr.meshlambert_frag},phong:{uniforms:ur([Dr.common,Dr.specularmap,Dr.envmap,Dr.aomap,Dr.lightmap,Dr.emissivemap,Dr.bumpmap,Dr.normalmap,Dr.displacementmap,Dr.fog,Dr.lights,{emissive:{value:new An(0)},specular:{value:new An(1118481)},shininess:{value:30}}]),vertexShader:Rr.meshphong_vert,fragmentShader:Rr.meshphong_frag},standard:{uniforms:ur([Dr.common,Dr.envmap,Dr.aomap,Dr.lightmap,Dr.emissivemap,Dr.bumpmap,Dr.normalmap,Dr.displacementmap,Dr.roughnessmap,Dr.metalnessmap,Dr.fog,Dr.lights,{emissive:{value:new An(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Rr.meshphysical_vert,fragmentShader:Rr.meshphysical_frag},toon:{uniforms:ur([Dr.common,Dr.aomap,Dr.lightmap,Dr.emissivemap,Dr.bumpmap,Dr.normalmap,Dr.displacementmap,Dr.gradientmap,Dr.fog,Dr.lights,{emissive:{value:new An(0)}}]),vertexShader:Rr.meshtoon_vert,fragmentShader:Rr.meshtoon_frag},matcap:{uniforms:ur([Dr.common,Dr.bumpmap,Dr.normalmap,Dr.displacementmap,Dr.fog,{matcap:{value:null}}]),vertexShader:Rr.meshmatcap_vert,fragmentShader:Rr.meshmatcap_frag},points:{uniforms:ur([Dr.points,Dr.fog]),vertexShader:Rr.points_vert,fragmentShader:Rr.points_frag},dashed:{uniforms:ur([Dr.common,Dr.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Rr.linedashed_vert,fragmentShader:Rr.linedashed_frag},depth:{uniforms:ur([Dr.common,Dr.displacementmap]),vertexShader:Rr.depth_vert,fragmentShader:Rr.depth_frag},normal:{uniforms:ur([Dr.common,Dr.bumpmap,Dr.normalmap,Dr.displacementmap,{opacity:{value:1}}]),vertexShader:Rr.meshnormal_vert,fragmentShader:Rr.meshnormal_frag},sprite:{uniforms:ur([Dr.sprite,Dr.fog]),vertexShader:Rr.sprite_vert,fragmentShader:Rr.sprite_frag},background:{uniforms:{uvTransform:{value:new Ye},t2D:{value:null}},vertexShader:Rr.background_vert,fragmentShader:Rr.background_frag},cube:{uniforms:ur([Dr.envmap,{opacity:{value:1}}]),vertexShader:Rr.cube_vert,fragmentShader:Rr.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Rr.equirect_vert,fragmentShader:Rr.equirect_frag},distanceRGBA:{uniforms:ur([Dr.common,Dr.displacementmap,{referencePosition:{value:new ri},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Rr.distanceRGBA_vert,fragmentShader:Rr.distanceRGBA_frag},shadow:{uniforms:ur([Dr.lights,Dr.fog,{color:{value:new An(0)},opacity:{value:1}}]),vertexShader:Rr.shadow_vert,fragmentShader:Rr.shadow_frag}};function Nr(t,e,i,n,r){const s=new An(0);let a,o,l=0,c=null,h=0,u=null;function d(t,e){i.buffers.color.setClear(t.r,t.g,t.b,e,r)}return{getClearColor:function(){return s},setClearColor:function(t,e=1){s.set(t),l=e,d(s,l)},getClearAlpha:function(){return l},setClearAlpha:function(t){l=t,d(s,l)},render:function(i,r){let p=!1,f=!0===r.isScene?r.background:null;f&&f.isTexture&&(f=e.get(f));const m=t.xr,g=m.getSession&&m.getSession();g&&"additive"===g.environmentBlendMode&&(f=null),null===f?d(s,l):f&&f.isColor&&(d(f,1),p=!0),(t.autoClear||p)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),f&&(f.isCubeTexture||f.mapping===oe)?(void 0===o&&(o=new or(new cr(1,1,1),new pr({name:"BackgroundCubeMaterial",uniforms:hr(Pr.cube.uniforms),vertexShader:Pr.cube.vertexShader,fragmentShader:Pr.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),o.geometry.deleteAttribute("normal"),o.geometry.deleteAttribute("uv"),o.onBeforeRender=function(t,e,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(o.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(o)),o.material.uniforms.envMap.value=f,o.material.uniforms.flipEnvMap.value=f.isCubeTexture&&!1===f.isRenderTargetTexture?-1:1,c===f&&h===f.version&&u===t.toneMapping||(o.material.needsUpdate=!0,c=f,h=f.version,u=t.toneMapping),i.unshift(o,o.geometry,o.material,0,0,null)):f&&f.isTexture&&(void 0===a&&(a=new or(new Cr(2,2),new pr({name:"BackgroundMaterial",uniforms:hr(Pr.background.uniforms),vertexShader:Pr.background.vertexShader,fragmentShader:Pr.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),a.geometry.deleteAttribute("normal"),Object.defineProperty(a.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(a)),a.material.uniforms.t2D.value=f,!0===f.matrixAutoUpdate&&f.updateMatrix(),a.material.uniforms.uvTransform.value.copy(f.matrix),c===f&&h===f.version&&u===t.toneMapping||(a.material.needsUpdate=!0,c=f,h=f.version,u=t.toneMapping),i.unshift(a,a.geometry,a.material,0,0,null))}}}function Ir(t,e,i,n){const r=t.getParameter(34921),s=n.isWebGL2?null:e.get("OES_vertex_array_object"),a=n.isWebGL2||null!==s,o={},l=d(null);let c=l;function h(e){return n.isWebGL2?t.bindVertexArray(e):s.bindVertexArrayOES(e)}function u(e){return n.isWebGL2?t.deleteVertexArray(e):s.deleteVertexArrayOES(e)}function d(t){const e=[],i=[],n=[];for(let t=0;t=0){let s=l[e];if(void 0===s&&("instanceMatrix"===e&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===e&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const e=s.normalized,a=s.itemSize,l=i.get(s);if(void 0===l)continue;const c=l.buffer,h=l.type,u=l.bytesPerElement;if(s.isInterleavedBufferAttribute){const i=s.data,l=i.stride,d=s.offset;if(i&&i.isInstancedInterleavedBuffer){for(let t=0;t0&&t.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(35633,36337).precision>0&&t.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const s="undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&t instanceof WebGL2ComputeRenderingContext;let a=void 0!==i.precision?i.precision:"highp";const o=r(a);o!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",o,"instead."),a=o);const l=s||e.has("WEBGL_draw_buffers"),c=!0===i.logarithmicDepthBuffer,h=t.getParameter(34930),u=t.getParameter(35660),d=t.getParameter(3379),p=t.getParameter(34076),f=t.getParameter(34921),m=t.getParameter(36347),g=t.getParameter(36348),v=t.getParameter(36349),y=u>0,x=s||e.has("OES_texture_float");return{isWebGL2:s,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==n)return n;if(!0===e.has("EXT_texture_filter_anisotropic")){const i=e.get("EXT_texture_filter_anisotropic");n=t.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n},getMaxPrecision:r,precision:a,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:u,maxTextureSize:d,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:v,vertexTextures:y,floatFragmentTextures:x,floatVertexTextures:y&&x,maxSamples:s?t.getParameter(36183):0}}function kr(t){const e=this;let i=null,n=0,r=!1,s=!1;const a=new Mr,o=new Ye,l={value:null,needsUpdate:!1};function c(){l.value!==i&&(l.value=i,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(t,i,n,r){const s=null!==t?t.length:0;let c=null;if(0!==s){if(c=l.value,!0!==r||null===c){const e=n+4*s,r=i.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0){const a=t.getRenderTarget(),o=new xr(s.height/2);return o.fromEquirectangularTexture(t,r),e.set(r,o),t.setRenderTarget(a),r.addEventListener("dispose",n),i(o.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}Pr.physical={uniforms:ur([Pr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Xe(1,1)},clearcoatNormalMap:{value:null},sheenTint:{value:new An(0)},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Xe},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationTint:{value:new An(0)},specularIntensity:{value:0},specularIntensityMap:{value:null},specularTint:{value:new An(1,1,1)},specularTintMap:{value:null}}]),vertexShader:Rr.meshphysical_vert,fragmentShader:Rr.meshphysical_frag};class Or extends fr{constructor(t=-1,e=1,i=1,n=-1,r=.1,s=2e3){super(),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=i,this.bottom=n,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,i,n,r,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let r=i-t,s=i+t,a=n+e,o=n-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,s=r+t*this.view.width,a-=e*this.view.offsetY,o=a-e*this.view.height}this.projectionMatrix.makeOrthographic(r,s,a,o,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}Or.prototype.isOrthographicCamera=!0;class Ur extends pr{constructor(t){super(t),this.type="RawShaderMaterial"}}Ur.prototype.isRawShaderMaterial=!0;const Hr=Math.pow(2,8),Vr=[.125,.215,.35,.446,.526,.582],qr=5+Vr.length,Gr={[Re]:0,[De]:1,[Ne]:2,3004:3,3005:4,3006:5,[Pe]:6},Wr=new Or,{_lodPlanes:jr,_sizeLods:Xr,_sigmas:Yr}=is(),Zr=new An;let Jr=null;const Qr=(1+Math.sqrt(5))/2,Kr=1/Qr,$r=[new ri(1,1,1),new ri(-1,1,1),new ri(1,1,-1),new ri(-1,1,-1),new ri(0,Qr,Kr),new ri(0,Qr,-Kr),new ri(Kr,0,Qr),new ri(-Kr,0,Qr),new ri(Qr,Kr,0),new ri(-Qr,Kr,0)];class ts{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._blurMaterial=function(t){const e=new Float32Array(20),i=new ri(0,1,0);return new Ur({name:"SphericalGaussianBlur",defines:{n:20},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:e},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i},inputEncoding:{value:Gr[3e3]},outputEncoding:{value:Gr[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}(),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,i=.1,n=100){Jr=this._renderer.getRenderTarget();const r=this._allocateTargets();return this._sceneToCubeUV(t,i,n,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t){return this._fromTexture(t)}fromCubemap(t){return this._fromTexture(t)}compileCubemapShader(){null===this._cubemapShader&&(this._cubemapShader=as(),this._compileMaterial(this._cubemapShader))}compileEquirectangularShader(){null===this._equirectShader&&(this._equirectShader=ss(),this._compileMaterial(this._equirectShader))}dispose(){this._blurMaterial.dispose(),null!==this._cubemapShader&&this._cubemapShader.dispose(),null!==this._equirectShader&&this._equirectShader.dispose();for(let t=0;t2?Hr:0,Hr,Hr),o.setRenderTarget(n),p&&o.render(d,r),o.render(t,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=h,o.outputEncoding=c,o.autoClear=l,t.background=f}_textureToCubeUV(t,e){const i=this._renderer;t.isCubeTexture?null==this._cubemapShader&&(this._cubemapShader=as()):null==this._equirectShader&&(this._equirectShader=ss());const n=t.isCubeTexture?this._cubemapShader:this._equirectShader,r=new or(jr[0],n),s=n.uniforms;s.envMap.value=t,t.isCubeTexture||s.texelSize.value.set(1/t.image.width,1/t.image.height),s.inputEncoding.value=Gr[t.encoding],s.outputEncoding.value=Gr[e.texture.encoding],rs(e,0,0,3*Hr,2*Hr),i.setRenderTarget(e),i.render(r,Wr)}_applyPMREM(t){const e=this._renderer,i=e.autoClear;e.autoClear=!1;for(let e=1;e20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);const m=[];let g=0;for(let t=0;t<20;++t){const e=t/p,i=Math.exp(-e*e/2);m.push(i),0==t?g+=i:t4?n-8+4:0),3*v,2*v),o.setRenderTarget(e),o.render(c,Wr)}}function es(t){return void 0!==t&&t.type===fe&&(t.encoding===Re||t.encoding===De||t.encoding===Pe)}function is(){const t=[],e=[],i=[];let n=8;for(let r=0;r4?a=Vr[r-8+4-1]:0==r&&(a=0),i.push(a);const o=1/(s-1),l=-o/2,c=1+o/2,h=[l,l,c,l,c,c,l,l,c,c,l,c],u=6,d=6,p=3,f=2,m=1,g=new Float32Array(p*d*u),v=new Float32Array(f*d*u),y=new Float32Array(m*d*u);for(let t=0;t2?0:-1,n=[e,i,0,e+2/3,i,0,e+2/3,i+1,0,e,i,0,e+2/3,i+1,0,e,i+1,0];g.set(n,p*d*t),v.set(h,f*d*t);const r=[t,t,t,t,t,t];y.set(r,m*d*t)}const x=new qn;x.setAttribute("position",new Dn(g,p)),x.setAttribute("uv",new Dn(v,f)),x.setAttribute("faceIndex",new Dn(y,m)),t.push(x),n>4&&n--}return{_lodPlanes:t,_sizeLods:e,_sigmas:i}}function ns(t){const e=new ei(3*Hr,3*Hr,t);return e.texture.mapping=oe,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function rs(t,e,i,n,r){t.viewport.set(e,i,n,r),t.scissor.set(e,i,n,r)}function ss(){const t=new Xe(1,1);return new Ur({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:t},inputEncoding:{value:Gr[3e3]},outputEncoding:{value:Gr[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function as(){return new Ur({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},inputEncoding:{value:Gr[3e3]},outputEncoding:{value:Gr[3e3]}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include \n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function os(t){let e=new WeakMap,i=null;function n(t){const i=t.target;i.removeEventListener("dispose",n);const r=e.get(i);void 0!==r&&(e.delete(i),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const s=r.mapping,a=303===s||304===s,o=s===se||s===ae;if(a||o){if(e.has(r))return e.get(r).texture;{const s=r.image;if(a&&s&&s.height>0||o&&s&&function(t){let e=0;for(let i=0;i<6;i++)void 0!==t[i]&&e++;return 6===e}(s)){const s=t.getRenderTarget();null===i&&(i=new ts(t));const o=a?i.fromEquirectangular(r):i.fromCubemap(r);return e.set(r,o),t.setRenderTarget(s),r.addEventListener("dispose",n),o.texture}return null}}}return r},dispose:function(){e=new WeakMap,null!==i&&(i.dispose(),i=null)}}}function ls(t){const e={};function i(i){if(void 0!==e[i])return e[i];let n;switch(i){case"WEBGL_depth_texture":n=t.getExtension("WEBGL_depth_texture")||t.getExtension("MOZ_WEBGL_depth_texture")||t.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=t.getExtension("WEBGL_compressed_texture_s3tc")||t.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:n=t.getExtension(i)}return e[i]=n,n}return{has:function(t){return null!==i(t)},init:function(t){t.isWebGL2?i("EXT_color_buffer_float"):(i("WEBGL_depth_texture"),i("OES_texture_float"),i("OES_texture_half_float"),i("OES_texture_half_float_linear"),i("OES_standard_derivatives"),i("OES_element_index_uint"),i("OES_vertex_array_object"),i("ANGLE_instanced_arrays")),i("OES_texture_float_linear"),i("EXT_color_buffer_half_float")},get:function(t){const e=i(t);return null===e&&console.warn("THREE.WebGLRenderer: "+t+" extension not supported."),e}}}function cs(t,e,i,n){const r={},s=new WeakMap;function a(t){const o=t.target;null!==o.index&&e.remove(o.index);for(const t in o.attributes)e.remove(o.attributes[t]);o.removeEventListener("dispose",a),delete r[o.id];const l=s.get(o);l&&(e.remove(l),s.delete(o)),n.releaseStatesOfGeometry(o),!0===o.isInstancedBufferGeometry&&delete o._maxInstanceCount,i.memory.geometries--}function o(t){const i=[],n=t.index,r=t.attributes.position;let a=0;if(null!==n){const t=n.array;a=n.version;for(let e=0,n=t.length;e65535?Nn:Pn)(i,1);o.version=a;const l=s.get(t);l&&e.remove(l),s.set(t,o)}return{get:function(t,e){return!0===r[e.id]||(e.addEventListener("dispose",a),r[e.id]=!0,i.memory.geometries++),e},update:function(t){const i=t.attributes;for(const t in i)e.update(i[t],34962);const n=t.morphAttributes;for(const t in n){const i=n[t];for(let t=0,n=i.length;t0)return t;const r=e*i;let s=_s[r];if(void 0===s&&(s=new Float32Array(r),_s[r]=s),0!==e){n.toArray(s,0);for(let n=1,r=0;n!==e;++n)r+=i,t[n].toArray(s,r)}return s}function Ls(t,e){if(t.length!==e.length)return!1;for(let i=0,n=t.length;i/gm;function Da(t){return t.replace(Ra,Pa)}function Pa(t,e){const i=Rr[e];if(void 0===i)throw new Error("Can not resolve #include <"+e+">");return Da(i)}const Na=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,Ia=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Ba(t){return t.replace(Ia,ka).replace(Na,za)}function za(t,e,i,n){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),ka(0,e,i,n)}function ka(t,e,i,n){let r="";for(let t=parseInt(e);t0?t.gammaFactor:1,p=i.isWebGL2?"":function(t){return[t.extensionDerivatives||t.envMapCubeUV||t.bumpMap||t.tangentSpaceNormalMap||t.clearcoatNormalMap||t.flatShading||"physical"===t.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(t.extensionFragDepth||t.logarithmicDepthBuffer)&&t.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",t.extensionDrawBuffers&&t.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(t.extensionShaderTextureLOD||t.envMap||t.transmission)&&t.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Aa).join("\n")}(i),f=function(t){const e=[];for(const i in t){const n=t[i];!1!==n&&e.push("#define "+i+" "+n)}return e.join("\n")}(s),m=r.createProgram();let g,v,y=i.glslVersion?"#version "+i.glslVersion+"\n":"";i.isRawShaderMaterial?(g=[f].filter(Aa).join("\n"),g.length>0&&(g+="\n"),v=[p,f].filter(Aa).join("\n"),v.length>0&&(v+="\n")):(g=[Fa(i),"#define SHADER_NAME "+i.shaderName,f,i.instancing?"#define USE_INSTANCING":"",i.instancingColor?"#define USE_INSTANCING_COLOR":"",i.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+d,"#define MAX_BONES "+i.maxBones,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+h:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularTintMap?"#define USE_SPECULARTINTMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.useVertexTexture?"#define BONE_TEXTURE":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Aa).join("\n"),v=[p,Fa(i),"#define SHADER_NAME "+i.shaderName,f,"#define GAMMA_FACTOR "+d,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.matcap?"#define USE_MATCAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+c:"",i.envMap?"#define "+h:"",i.envMap?"#define "+u:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoat?"#define USE_CLEARCOAT":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularTintMap?"#define USE_SPECULARTINTMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.alphaTest?"#define USE_ALPHATEST":"",i.sheenTint?"#define USE_SHEEN":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors||i.instancingColor?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(i.extensionShaderTextureLOD||i.envMap)&&i.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==i.toneMapping?"#define TONE_MAPPING":"",0!==i.toneMapping?Rr.tonemapping_pars_fragment:"",0!==i.toneMapping?Ta("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.format===be?"#define OPAQUE":"",Rr.encodings_pars_fragment,i.map?Sa("mapTexelToLinear",i.mapEncoding):"",i.matcap?Sa("matcapTexelToLinear",i.matcapEncoding):"",i.envMap?Sa("envMapTexelToLinear",i.envMapEncoding):"",i.emissiveMap?Sa("emissiveMapTexelToLinear",i.emissiveMapEncoding):"",i.specularTintMap?Sa("specularTintMapTexelToLinear",i.specularTintMapEncoding):"",i.lightMap?Sa("lightMapTexelToLinear",i.lightMapEncoding):"",Ea("linearToOutputTexel",i.outputEncoding),i.depthPacking?"#define DEPTH_PACKING "+i.depthPacking:"","\n"].filter(Aa).join("\n")),a=Da(a),a=La(a,i),a=Ca(a,i),o=Da(o),o=La(o,i),o=Ca(o,i),a=Ba(a),o=Ba(o),i.isWebGL2&&!0!==i.isRawShaderMaterial&&(y="#version 300 es\n",g=["#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+g,v=["#define varying in",i.glslVersion===ke?"":"out highp vec4 pc_fragColor;",i.glslVersion===ke?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+v);const x=y+v+o,b=ba(r,35633,y+g+a),w=ba(r,35632,x);if(r.attachShader(m,b),r.attachShader(m,w),void 0!==i.index0AttributeName?r.bindAttribLocation(m,0,i.index0AttributeName):!0===i.morphTargets&&r.bindAttribLocation(m,0,"position"),r.linkProgram(m),t.debug.checkShaderErrors){const t=r.getProgramInfoLog(m).trim(),e=r.getShaderInfoLog(b).trim(),i=r.getShaderInfoLog(w).trim();let n=!0,s=!0;if(!1===r.getProgramParameter(m,35714)){n=!1;const e=Ma(r,b,"vertex"),i=Ma(r,w,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(m,35715)+"\n\nProgram Info Log: "+t+"\n"+e+"\n"+i)}else""!==t?console.warn("THREE.WebGLProgram: Program Info Log:",t):""!==e&&""!==i||(s=!1);s&&(this.diagnostics={runnable:n,programLog:t,vertexShader:{log:e,prefix:g},fragmentShader:{log:i,prefix:v}})}let _,M;return r.deleteShader(b),r.deleteShader(w),this.getUniforms=function(){return void 0===_&&(_=new xa(r,m)),_},this.getAttributes=function(){return void 0===M&&(M=function(t,e){const i={},n=t.getProgramParameter(e,35721);for(let r=0;r0,L=s.clearcoat>0;return{isWebGL2:l,shaderID:_,shaderName:s.type,vertexShader:S,fragmentShader:E,defines:s.defines,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:p,instancing:!0===y.isInstancedMesh,instancingColor:!0===y.isInstancedMesh&&null!==y.instanceColor,supportsVertexTextures:d,outputEncoding:null!==T?g(T.texture):t.outputEncoding,map:!!s.map,mapEncoding:g(s.map),matcap:!!s.matcap,matcapEncoding:g(s.matcap),envMap:!!w,envMapMode:w&&w.mapping,envMapEncoding:g(w),envMapCubeUV:!!w&&(w.mapping===oe||307===w.mapping),lightMap:!!s.lightMap,lightMapEncoding:g(s.lightMap),aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,emissiveMapEncoding:g(s.emissiveMap),bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:1===s.normalMapType,tangentSpaceNormalMap:0===s.normalMapType,clearcoat:L,clearcoatMap:L&&!!s.clearcoatMap,clearcoatRoughnessMap:L&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:L&&!!s.clearcoatNormalMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularTintMap:!!s.specularTintMap,specularTintMapEncoding:g(s.specularTintMap),alphaMap:!!s.alphaMap,alphaTest:A,gradientMap:!!s.gradientMap,sheenTint:!!s.sheenTint&&(s.sheenTint.r>0||s.sheenTint.g>0||s.sheenTint.b>0),transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!y.geometry&&!!y.geometry.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!y.geometry&&!!y.geometry.attributes.color&&4===y.geometry.attributes.color.itemSize,vertexUvs:!!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatMap||s.clearcoatRoughnessMap||s.clearcoatNormalMap||s.displacementMap||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularTintMap),uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularTintMap||!s.displacementMap),fog:!!x,useFog:s.fog,fogExp2:x&&x.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:c,skinning:!0===y.isSkinnedMesh&&M>0,maxBones:M,useVertexTexture:h,morphTargets:!!y.geometry&&!!y.geometry.morphAttributes.position,morphNormals:!!y.geometry&&!!y.geometry.morphAttributes.normal,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,format:s.format,dithering:s.dithering,shadowMapEnabled:t.shadowMap.enabled&&m.length>0,shadowMapType:t.shadowMap.type,toneMapping:s.toneMapped?t.toneMapping:0,physicallyCorrectLights:t.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:2===s.side,flipSided:1===s.side,depthPacking:void 0!==s.depthPacking&&s.depthPacking,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:l||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:l||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:l||n.has("EXT_shader_texture_lod"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function(e){const i=[];if(e.shaderID?i.push(e.shaderID):(i.push(e.fragmentShader),i.push(e.vertexShader)),void 0!==e.defines)for(const t in e.defines)i.push(t),i.push(e.defines[t]);if(!1===e.isRawShaderMaterial){for(let t=0;t0?r.push(h):!0===i.transparent?s.push(h):n.push(h)},unshift:function(t,e,i,a,l,c){const h=o(t,e,i,a,l,c);i.transmission>0?r.unshift(h):!0===i.transparent?s.unshift(h):n.unshift(h)},finish:function(){for(let t=i,n=e.length;t1&&n.sort(t||Va),r.length>1&&r.sort(e||qa),s.length>1&&s.sort(e||qa)}}}function Wa(t){let e=new WeakMap;return{get:function(i,n){let r;return!1===e.has(i)?(r=new Ga(t),e.set(i,[r])):n>=e.get(i).length?(r=new Ga(t),e.get(i).push(r)):r=e.get(i)[n],r},dispose:function(){e=new WeakMap}}}function ja(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let i;switch(e.type){case"DirectionalLight":i={direction:new ri,color:new An};break;case"SpotLight":i={position:new ri,direction:new ri,color:new An,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new ri,color:new An,distance:0,decay:0};break;case"HemisphereLight":i={direction:new ri,skyColor:new An,groundColor:new An};break;case"RectAreaLight":i={color:new An,position:new ri,halfWidth:new ri,halfHeight:new ri}}return t[e.id]=i,i}}}let Xa=0;function Ya(t,e){return(e.castShadow?1:0)-(t.castShadow?1:0)}function Za(t,e){const i=new ja,n=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let i;switch(e.type){case"DirectionalLight":case"SpotLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Xe};break;case"PointLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Xe,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=i,i}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let t=0;t<9;t++)r.probe.push(new ri);const s=new ri,a=new Bi,o=new Bi;return{setup:function(s,a){let o=0,l=0,c=0;for(let t=0;t<9;t++)r.probe[t].set(0,0,0);let h=0,u=0,d=0,p=0,f=0,m=0,g=0,v=0;s.sort(Ya);const y=!0!==a?Math.PI:1;for(let t=0,e=s.length;t0&&(e.isWebGL2||!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=Dr.LTC_FLOAT_1,r.rectAreaLTC2=Dr.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=Dr.LTC_HALF_1,r.rectAreaLTC2=Dr.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const x=r.hash;x.directionalLength===h&&x.pointLength===u&&x.spotLength===d&&x.rectAreaLength===p&&x.hemiLength===f&&x.numDirectionalShadows===m&&x.numPointShadows===g&&x.numSpotShadows===v||(r.directional.length=h,r.spot.length=d,r.rectArea.length=p,r.point.length=u,r.hemi.length=f,r.directionalShadow.length=m,r.directionalShadowMap.length=m,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=v,r.spotShadowMap.length=v,r.directionalShadowMatrix.length=m,r.pointShadowMatrix.length=g,r.spotShadowMatrix.length=v,x.directionalLength=h,x.pointLength=u,x.spotLength=d,x.rectAreaLength=p,x.hemiLength=f,x.numDirectionalShadows=m,x.numPointShadows=g,x.numSpotShadows=v,r.version=Xa++)},setupView:function(t,e){let i=0,n=0,l=0,c=0,h=0;const u=e.matrixWorldInverse;for(let e=0,d=t.length;e=i.get(n).length?(s=new Ja(t,e),i.get(n).push(s)):s=i.get(n)[r],s},dispose:function(){i=new WeakMap}}}class Ka extends bn{constructor(t){super(),this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}Ka.prototype.isMeshDepthMaterial=!0;class $a extends bn{constructor(t){super(),this.type="MeshDistanceMaterial",this.referencePosition=new ri,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}function to(t,e,i){let n=new Tr;const r=new Xe,s=new Xe,a=new ti,o=new Ka({depthPacking:3201}),l=new $a,c={},h=i.maxTextureSize,u={0:1,1:0,2:2},d=new pr({uniforms:{shadow_pass:{value:null},resolution:{value:new Xe},radius:{value:4},samples:{value:8}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\nuniform float samples;\n#include \nvoid main() {\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),p=d.clone();p.defines.HORIZONTAL_PASS=1;const f=new qn;f.setAttribute("position",new Dn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const m=new or(f,d),g=this;function v(i,n){const r=e.update(m);d.uniforms.shadow_pass.value=i.map.texture,d.uniforms.resolution.value=i.mapSize,d.uniforms.radius.value=i.radius,d.uniforms.samples.value=i.blurSamples,t.setRenderTarget(i.mapPass),t.clear(),t.renderBufferDirect(n,null,r,d,m,null),p.uniforms.shadow_pass.value=i.mapPass.texture,p.uniforms.resolution.value=i.mapSize,p.uniforms.radius.value=i.radius,p.uniforms.samples.value=i.blurSamples,t.setRenderTarget(i.map),t.clear(),t.renderBufferDirect(n,null,r,p,m,null)}function y(e,i,n,r,s,a,h){let d=null;const p=!0===r.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(d=void 0!==p?p:!0===r.isPointLight?l:o,t.localClippingEnabled&&!0===n.clipShadows&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0){const t=d.uuid,e=n.uuid;let i=c[t];void 0===i&&(i={},c[t]=i);let r=i[e];void 0===r&&(r=d.clone(),i[e]=r),d=r}return d.visible=n.visible,d.wireframe=n.wireframe,d.side=3===h?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:u[n.side],d.alphaMap=n.alphaMap,d.alphaTest=n.alphaTest,d.clipShadows=n.clipShadows,d.clippingPlanes=n.clippingPlanes,d.clipIntersection=n.clipIntersection,d.displacementMap=n.displacementMap,d.displacementScale=n.displacementScale,d.displacementBias=n.displacementBias,d.wireframeLinewidth=n.wireframeLinewidth,d.linewidth=n.linewidth,!0===r.isPointLight&&!0===d.isMeshDistanceMaterial&&(d.referencePosition.setFromMatrixPosition(r.matrixWorld),d.nearDistance=s,d.farDistance=a),d}function x(i,r,s,a,o){if(!1===i.visible)return;if(i.layers.test(r.layers)&&(i.isMesh||i.isLine||i.isPoints)&&(i.castShadow||i.receiveShadow&&3===o)&&(!i.frustumCulled||n.intersectsObject(i))){i.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,i.matrixWorld);const n=e.update(i),r=i.material;if(Array.isArray(r)){const e=n.groups;for(let l=0,c=e.length;lh||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/p.x),r.x=s.x*p.x,u.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/p.y),r.y=s.y*p.y,u.mapSize.y=s.y)),null===u.map&&!u.isPointLightShadow&&3===this.type){const t={minFilter:de,magFilter:de,format:we};u.map=new ei(r.x,r.y,t),u.map.texture.name=c.name+".shadowMap",u.mapPass=new ei(r.x,r.y,t),u.camera.updateProjectionMatrix()}if(null===u.map){const t={minFilter:ue,magFilter:ue,format:we};u.map=new ei(r.x,r.y,t),u.map.texture.name=c.name+".shadowMap",u.camera.updateProjectionMatrix()}t.setRenderTarget(u.map),t.clear();const f=u.getViewportCount();for(let t=0;t=1):-1!==L.indexOf("OpenGL ES")&&(A=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),T=A>=2);let C=null,R={};const D=t.getParameter(3088),P=t.getParameter(2978),N=(new ti).fromArray(D),I=(new ti).fromArray(P);function B(e,i,n){const r=new Uint8Array(4),s=t.createTexture();t.bindTexture(e,s),t.texParameteri(e,10241,9728),t.texParameteri(e,10240,9728);for(let e=0;en||t.height>n)&&(r=n/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const n=e?je:Math.floor,s=n(r*t.width),a=n(r*t.height);void 0===p&&(p=m(s,a));const o=i?m(s,a):p;return o.width=s,o.height=a,o.getContext("2d").drawImage(t,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+s+"x"+a+")."),o}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function v(t){return We(t.width)&&We(t.height)}function y(t,e){return t.generateMipmaps&&e&&t.minFilter!==ue&&t.minFilter!==de}function x(e,i,r,s,a=1){t.generateMipmap(e),n.get(i).__maxMipLevel=Math.log2(Math.max(r,s,a))}function b(i,n,r){if(!1===o)return n;if(null!==i){if(void 0!==t[i])return t[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let s=n;return 6403===n&&(5126===r&&(s=33326),5131===r&&(s=33325),5121===r&&(s=33321)),6407===n&&(5126===r&&(s=34837),5131===r&&(s=34843),5121===r&&(s=32849)),6408===n&&(5126===r&&(s=34836),5131===r&&(s=34842),5121===r&&(s=32856)),33325!==s&&33326!==s&&34842!==s&&34836!==s||e.get("EXT_color_buffer_float"),s}function w(t){return t===ue||1004===t||1005===t?9728:9729}function _(e){const i=e.target;i.removeEventListener("dispose",_),function(e){const i=n.get(e);void 0!==i.__webglInit&&(t.deleteTexture(i.__webglTexture),n.remove(e))}(i),i.isVideoTexture&&d.delete(i),a.memory.textures--}function M(e){const i=e.target;i.removeEventListener("dispose",M),function(e){const i=e.texture,r=n.get(e),s=n.get(i);if(e){if(void 0!==s.__webglTexture&&(t.deleteTexture(s.__webglTexture),a.memory.textures--),e.depthTexture&&e.depthTexture.dispose(),e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++)t.deleteFramebuffer(r.__webglFramebuffer[e]),r.__webglDepthbuffer&&t.deleteRenderbuffer(r.__webglDepthbuffer[e]);else t.deleteFramebuffer(r.__webglFramebuffer),r.__webglDepthbuffer&&t.deleteRenderbuffer(r.__webglDepthbuffer),r.__webglMultisampledFramebuffer&&t.deleteFramebuffer(r.__webglMultisampledFramebuffer),r.__webglColorRenderbuffer&&t.deleteRenderbuffer(r.__webglColorRenderbuffer),r.__webglDepthRenderbuffer&&t.deleteRenderbuffer(r.__webglDepthRenderbuffer);if(e.isWebGLMultipleRenderTargets)for(let e=0,r=i.length;e0&&r.__version!==t.version){const i=t.image;if(void 0===i)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==i.complete)return void D(r,t,e);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}i.activeTexture(33984+e),i.bindTexture(3553,r.__webglTexture)}function T(e,r){const a=n.get(e);e.version>0&&a.__version!==e.version?function(e,n,r){if(6!==n.image.length)return;R(e,n),i.activeTexture(33984+r),i.bindTexture(34067,e.__webglTexture),t.pixelStorei(37440,n.flipY),t.pixelStorei(37441,n.premultiplyAlpha),t.pixelStorei(3317,n.unpackAlignment),t.pixelStorei(37443,0);const a=n&&(n.isCompressedTexture||n.image[0].isCompressedTexture),l=n.image[0]&&n.image[0].isDataTexture,h=[];for(let t=0;t<6;t++)h[t]=a||l?l?n.image[t].image:n.image[t]:g(n.image[t],!1,!0,c);const u=h[0],d=v(u)||o,p=s.convert(n.format),f=s.convert(n.type),m=b(n.internalFormat,p,f);let w;if(C(34067,n,d),a){for(let t=0;t<6;t++){w=h[t].mipmaps;for(let e=0;e1||n.get(s).__currentAnisotropy)&&(t.texParameterf(i,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),n.get(s).__currentAnisotropy=s.anisotropy)}}function R(e,i){void 0===e.__webglInit&&(e.__webglInit=!0,i.addEventListener("dispose",_),e.__webglTexture=t.createTexture(),a.memory.textures++)}function D(e,n,r){let a=3553;n.isDataTexture2DArray&&(a=35866),n.isDataTexture3D&&(a=32879),R(e,n),i.activeTexture(33984+r),i.bindTexture(a,e.__webglTexture),t.pixelStorei(37440,n.flipY),t.pixelStorei(37441,n.premultiplyAlpha),t.pixelStorei(3317,n.unpackAlignment),t.pixelStorei(37443,0);const l=function(t){return!o&&(t.wrapS!==ce||t.wrapT!==ce||t.minFilter!==ue&&t.minFilter!==de)}(n)&&!1===v(n.image),c=g(n.image,l,!1,h),u=v(c)||o,d=s.convert(n.format);let p,f=s.convert(n.type),m=b(n.internalFormat,d,f);C(a,n,u);const w=n.mipmaps;if(n.isDepthTexture)m=6402,o?m=n.type===ve?36012:n.type===ge?33190:n.type===xe?35056:33189:n.type===ve&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),n.format===_e&&6402===m&&n.type!==me&&n.type!==ge&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=me,f=s.convert(n.type)),n.format===Me&&6402===m&&(m=34041,n.type!==xe&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=xe,f=s.convert(n.type))),i.texImage2D(3553,0,m,c.width,c.height,0,d,f,null);else if(n.isDataTexture)if(w.length>0&&u){for(let t=0,e=w.length;t0&&u){for(let t=0,e=w.length;t=l&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+l),S+=1,t},this.resetTextureUnits=function(){S=0},this.setTexture2D=E,this.setTexture2DArray=function(t,e){const r=n.get(t);t.version>0&&r.__version!==t.version?D(r,t,e):(i.activeTexture(33984+e),i.bindTexture(35866,r.__webglTexture))},this.setTexture3D=function(t,e){const r=n.get(t);t.version>0&&r.__version!==t.version?D(r,t,e):(i.activeTexture(33984+e),i.bindTexture(32879,r.__webglTexture))},this.setTextureCube=T,this.setupRenderTarget=function(e){const l=e.texture,c=n.get(e),h=n.get(l);e.addEventListener("dispose",M),!0!==e.isWebGLMultipleRenderTargets&&(h.__webglTexture=t.createTexture(),h.__version=l.version,a.memory.textures++);const u=!0===e.isWebGLCubeRenderTarget,d=!0===e.isWebGLMultipleRenderTargets,p=!0===e.isWebGLMultisampleRenderTarget,f=l.isDataTexture3D||l.isDataTexture2DArray,m=v(e)||o;if(!o||l.format!==be||l.type!==ve&&l.type!==ye||(l.format=we,console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),u){c.__webglFramebuffer=[];for(let e=0;e<6;e++)c.__webglFramebuffer[e]=t.createFramebuffer()}else if(c.__webglFramebuffer=t.createFramebuffer(),d)if(r.drawBuffers){const i=e.texture;for(let e=0,r=i.length;eo+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&a<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,i),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));return null!==a&&(a.visible=null!==n),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==s),this}}class lo extends Fe{constructor(t,e){super();const i=this,n=t.state;let r=null,s=1,a=null,o="local-floor",l=null,c=null,h=null,u=null,d=null,p=!1,f=null,m=null,g=null,v=null,y=null,x=null;const b=[],w=new Map,_=new mr;_.layers.enable(1),_.viewport=new ti;const M=new mr;M.layers.enable(2),M.viewport=new ti;const S=[_,M],E=new ro;E.layers.enable(1),E.layers.enable(2);let T=null,A=null;function L(t){const e=w.get(t.inputSource);e&&e.dispatchEvent({type:t.type,data:t.inputSource})}function C(){w.forEach((function(t,e){t.disconnect(e)})),w.clear(),T=null,A=null,n.bindXRFramebuffer(null),t.setRenderTarget(t.getRenderTarget()),h&&e.deleteFramebuffer(h),f&&e.deleteFramebuffer(f),m&&e.deleteRenderbuffer(m),g&&e.deleteRenderbuffer(g),h=null,f=null,m=null,g=null,d=null,u=null,c=null,r=null,B.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}function R(t){const e=r.inputSources;for(let t=0;t0&&(e.alphaTest.value=i.alphaTest);const n=t.get(i).envMap;if(n){e.envMap.value=n,e.flipEnvMap.value=n.isCubeTexture&&!1===n.isRenderTargetTexture?-1:1,e.reflectivity.value=i.reflectivity,e.ior.value=i.ior,e.refractionRatio.value=i.refractionRatio;const r=t.get(n).__maxMipLevel;void 0!==r&&(e.maxMipLevel.value=r)}let r,s;i.lightMap&&(e.lightMap.value=i.lightMap,e.lightMapIntensity.value=i.lightMapIntensity),i.aoMap&&(e.aoMap.value=i.aoMap,e.aoMapIntensity.value=i.aoMapIntensity),i.map?r=i.map:i.specularMap?r=i.specularMap:i.displacementMap?r=i.displacementMap:i.normalMap?r=i.normalMap:i.bumpMap?r=i.bumpMap:i.roughnessMap?r=i.roughnessMap:i.metalnessMap?r=i.metalnessMap:i.alphaMap?r=i.alphaMap:i.emissiveMap?r=i.emissiveMap:i.clearcoatMap?r=i.clearcoatMap:i.clearcoatNormalMap?r=i.clearcoatNormalMap:i.clearcoatRoughnessMap?r=i.clearcoatRoughnessMap:i.specularIntensityMap?r=i.specularIntensityMap:i.specularTintMap?r=i.specularTintMap:i.transmissionMap?r=i.transmissionMap:i.thicknessMap&&(r=i.thicknessMap),void 0!==r&&(r.isWebGLRenderTarget&&(r=r.texture),!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uvTransform.value.copy(r.matrix)),i.aoMap?s=i.aoMap:i.lightMap&&(s=i.lightMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),e.uv2Transform.value.copy(s.matrix))}function i(e,i){e.roughness.value=i.roughness,e.metalness.value=i.metalness,i.roughnessMap&&(e.roughnessMap.value=i.roughnessMap),i.metalnessMap&&(e.metalnessMap.value=i.metalnessMap),i.emissiveMap&&(e.emissiveMap.value=i.emissiveMap),i.bumpMap&&(e.bumpMap.value=i.bumpMap,e.bumpScale.value=i.bumpScale,1===i.side&&(e.bumpScale.value*=-1)),i.normalMap&&(e.normalMap.value=i.normalMap,e.normalScale.value.copy(i.normalScale),1===i.side&&e.normalScale.value.negate()),i.displacementMap&&(e.displacementMap.value=i.displacementMap,e.displacementScale.value=i.displacementScale,e.displacementBias.value=i.displacementBias),t.get(i).envMap&&(e.envMapIntensity.value=i.envMapIntensity)}return{refreshFogUniforms:function(t,e){t.fogColor.value.copy(e.color),e.isFog?(t.fogNear.value=e.near,t.fogFar.value=e.far):e.isFogExp2&&(t.fogDensity.value=e.density)},refreshMaterialUniforms:function(t,n,r,s,a){n.isMeshBasicMaterial?e(t,n):n.isMeshLambertMaterial?(e(t,n),function(t,e){e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap)}(t,n)):n.isMeshToonMaterial?(e(t,n),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap),e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshPhongMaterial?(e(t,n),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4),e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshStandardMaterial?(e(t,n),n.isMeshPhysicalMaterial?function(t,e,n){i(t,e),t.ior.value=e.ior,e.sheenTint&&t.sheenTint.value.copy(e.sheenTint),e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap),e.clearcoatNormalMap&&(t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),t.clearcoatNormalMap.value=e.clearcoatNormalMap,1===e.side&&t.clearcoatNormalScale.value.negate())),e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=n.texture,t.transmissionSamplerSize.value.set(n.width,n.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap),t.attenuationDistance.value=e.attenuationDistance,t.attenuationTint.value.copy(e.attenuationTint)),t.specularIntensity.value=e.specularIntensity,t.specularTint.value.copy(e.specularTint),e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap),e.specularTintMap&&(t.specularTintMap.value=e.specularTintMap)}(t,n,a):i(t,n)):n.isMeshMatcapMaterial?(e(t,n),function(t,e){e.matcap&&(t.matcap.value=e.matcap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshDepthMaterial?(e(t,n),function(t,e){e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isMeshDistanceMaterial?(e(t,n),function(t,e){e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias),t.referencePosition.value.copy(e.referencePosition),t.nearDistance.value=e.nearDistance,t.farDistance.value=e.farDistance}(t,n)):n.isMeshNormalMaterial?(e(t,n),function(t,e){e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale,1===e.side&&(t.bumpScale.value*=-1)),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale),1===e.side&&t.normalScale.value.negate()),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(t,n)):n.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity}(t,n),n.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,n)):n.isPointsMaterial?function(t,e,i,n){let r;t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*i,t.scale.value=.5*n,e.map&&(t.map.value=e.map),e.alphaMap&&(t.alphaMap.value=e.alphaMap),e.alphaTest>0&&(t.alphaTest.value=e.alphaTest),e.map?r=e.map:e.alphaMap&&(r=e.alphaMap),void 0!==r&&(!0===r.matrixAutoUpdate&&r.updateMatrix(),t.uvTransform.value.copy(r.matrix))}(t,n,r,s):n.isSpriteMaterial?function(t,e){let i;t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map),e.alphaMap&&(t.alphaMap.value=e.alphaMap),e.alphaTest>0&&(t.alphaTest.value=e.alphaTest),e.map?i=e.map:e.alphaMap&&(i=e.alphaMap),void 0!==i&&(!0===i.matrixAutoUpdate&&i.updateMatrix(),t.uvTransform.value.copy(i.matrix))}(t,n):n.isShadowMaterial?(t.color.value.copy(n.color),t.opacity.value=n.opacity):n.isShaderMaterial&&(n.uniformsNeedUpdate=!1)}}}function ho(t={}){const e=void 0!==t.canvas?t.canvas:function(){const t=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");return t.style.display="block",t}(),i=void 0!==t.context?t.context:null,n=void 0!==t.alpha&&t.alpha,r=void 0===t.depth||t.depth,s=void 0===t.stencil||t.stencil,a=void 0!==t.antialias&&t.antialias,o=void 0===t.premultipliedAlpha||t.premultipliedAlpha,l=void 0!==t.preserveDrawingBuffer&&t.preserveDrawingBuffer,c=void 0!==t.powerPreference?t.powerPreference:"default",h=void 0!==t.failIfMajorPerformanceCaveat&&t.failIfMajorPerformanceCaveat;let u=null,d=null;const p=[],f=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.gammaFactor=2,this.outputEncoding=Re,this.physicallyCorrectLights=!1,this.toneMapping=0,this.toneMappingExposure=1;const m=this;let g=!1,v=0,y=0,x=null,b=-1,w=null;const _=new ti,M=new ti;let S=null,E=e.width,T=e.height,A=1,L=null,C=null;const R=new ti(0,0,E,T),D=new ti(0,0,E,T);let P=!1;const N=[],I=new Tr;let B=!1,z=!1,k=null;const F=new Bi,O=new ri,U={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function H(){return null===x?A:1}let V,q,G,W,j,X,Y,Z,J,Q,K,$,tt,et,it,nt,rt,st,at,ot,lt,ct,ht,ut=i;function dt(t,i){for(let n=0;n0&&function(t,e,i){if(null===k){const t=!0===a&&!0===q.isWebGL2;k=new(t?ii:ei)(1024,1024,{generateMipmaps:!0,type:null!==ct.convert(ye)?ye:fe,minFilter:pe,magFilter:ue,wrapS:ce,wrapT:ce})}const n=m.getRenderTarget();m.setRenderTarget(k),m.clear();const r=m.toneMapping;m.toneMapping=0,St(t,e,i),m.toneMapping=r,X.updateMultisampleRenderTarget(k),X.updateRenderTargetMipmap(k),m.setRenderTarget(n)}(r,e,i),n&&G.viewport(_.copy(n)),r.length>0&&St(r,e,i),s.length>0&&St(s,e,i),o.length>0&&St(o,e,i)}function St(t,e,i){const n=!0===e.isScene?e.overrideMaterial:null;for(let r=0,s=t.length;r0?f[f.length-1]:null,p.pop(),u=p.length>0?p[p.length-1]:null},this.getActiveCubeFace=function(){return v},this.getActiveMipmapLevel=function(){return y},this.getRenderTarget=function(){return x},this.setRenderTarget=function(t,e=0,i=0){x=t,v=e,y=i,t&&void 0===j.get(t).__webglFramebuffer&&X.setupRenderTarget(t);let n=null,r=!1,s=!1;if(t){const i=t.texture;(i.isDataTexture3D||i.isDataTexture2DArray)&&(s=!0);const a=j.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(n=a[e],r=!0):n=t.isWebGLMultisampleRenderTarget?j.get(t).__webglMultisampledFramebuffer:a,_.copy(t.viewport),M.copy(t.scissor),S=t.scissorTest}else _.copy(R).multiplyScalar(A).floor(),M.copy(D).multiplyScalar(A).floor(),S=P;if(G.bindFramebuffer(36160,n)&&q.drawBuffers){let e=!1;if(t)if(t.isWebGLMultipleRenderTargets){const i=t.texture;if(N.length!==i.length||36064!==N[0]){for(let t=0,e=i.length;t=0&&e<=t.width-n&&i>=0&&i<=t.height-r&&ut.readPixels(e,i,n,r,ct.convert(o),ct.convert(l),s):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{const t=null!==x?j.get(x).__webglFramebuffer:null;G.bindFramebuffer(36160,t)}}},this.copyFramebufferToTexture=function(t,e,i=0){const n=Math.pow(2,-i),r=Math.floor(e.image.width*n),s=Math.floor(e.image.height*n);let a=ct.convert(e.format);q.isWebGL2&&(6407===a&&(a=32849),6408===a&&(a=32856)),X.setTexture2D(e,0),ut.copyTexImage2D(3553,i,a,t.x,t.y,r,s,0),G.unbindTexture()},this.copyTextureToTexture=function(t,e,i,n=0){const r=e.image.width,s=e.image.height,a=ct.convert(i.format),o=ct.convert(i.type);X.setTexture2D(i,0),ut.pixelStorei(37440,i.flipY),ut.pixelStorei(37441,i.premultiplyAlpha),ut.pixelStorei(3317,i.unpackAlignment),e.isDataTexture?ut.texSubImage2D(3553,n,t.x,t.y,r,s,a,o,e.image.data):e.isCompressedTexture?ut.compressedTexSubImage2D(3553,n,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,a,e.mipmaps[0].data):ut.texSubImage2D(3553,n,t.x,t.y,a,o,e.image),0===n&&i.generateMipmaps&&ut.generateMipmap(3553),G.unbindTexture()},this.copyTextureToTexture3D=function(t,e,i,n,r=0){if(m.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const s=t.max.x-t.min.x+1,a=t.max.y-t.min.y+1,o=t.max.z-t.min.z+1,l=ct.convert(n.format),c=ct.convert(n.type);let h;if(n.isDataTexture3D)X.setTexture3D(n,0),h=32879;else{if(!n.isDataTexture2DArray)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");X.setTexture2DArray(n,0),h=35866}ut.pixelStorei(37440,n.flipY),ut.pixelStorei(37441,n.premultiplyAlpha),ut.pixelStorei(3317,n.unpackAlignment);const u=ut.getParameter(3314),d=ut.getParameter(32878),p=ut.getParameter(3316),f=ut.getParameter(3315),g=ut.getParameter(32877),v=i.isCompressedTexture?i.mipmaps[0]:i.image;ut.pixelStorei(3314,v.width),ut.pixelStorei(32878,v.height),ut.pixelStorei(3316,t.min.x),ut.pixelStorei(3315,t.min.y),ut.pixelStorei(32877,t.min.z),i.isDataTexture||i.isDataTexture3D?ut.texSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,c,v.data):i.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),ut.compressedTexSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,v.data)):ut.texSubImage3D(h,r,e.x,e.y,e.z,s,a,o,l,c,v),ut.pixelStorei(3314,u),ut.pixelStorei(32878,d),ut.pixelStorei(3316,p),ut.pixelStorei(3315,f),ut.pixelStorei(32877,g),0===r&&n.generateMipmaps&&ut.generateMipmap(h),G.unbindTexture()},this.initTexture=function(t){X.setTexture2D(t,0),G.unbindTexture()},this.resetState=function(){v=0,y=0,x=null,G.reset(),ht.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}(class extends ho{}).prototype.isWebGL1Renderer=!0;class uo{constructor(t,e=25e-5){this.name="",this.color=new An(t),this.density=e}clone(){return new uo(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}uo.prototype.isFogExp2=!0;class po{constructor(t,e=1,i=1e3){this.name="",this.color=new An(t),this.near=e,this.far=i}clone(){return new po(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}po.prototype.isFog=!0;class fo extends on{constructor(){super(),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),null!==t.background&&(this.background=t.background.clone()),null!==t.environment&&(this.environment=t.environment.clone()),null!==t.fog&&(this.fog=t.fog.clone()),null!==t.overrideMaterial&&(this.overrideMaterial=t.overrideMaterial.clone()),this.autoUpdate=t.autoUpdate,this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return null!==this.fog&&(e.object.fog=this.fog.toJSON()),e}}fo.prototype.isScene=!0;class mo{constructor(t,e){this.array=t,this.stride=e,this.count=void 0!==t?t.length/e:0,this.usage=Be,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Ve()}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.array=new t.array.constructor(t.array),this.count=t.count,this.stride=t.stride,this.usage=t.usage,this}copyAt(t,e,i){t*=this.stride,i*=e.stride;for(let n=0,r=this.stride;nt.far||e.push({distance:o,point:bo.clone(),uv:yn.getUV(bo,To,Ao,Lo,Co,Ro,Do,new Xe),face:null,object:this})}copy(t){return super.copy(t),void 0!==t.center&&this.center.copy(t.center),this.material=t.material,this}}).prototype.isSprite=!0;const No=new ri,Io=new ti,Bo=new ti,zo=new ri,ko=new Bi;class Fo extends or{constructor(t,e){super(t,e),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Bi,this.bindMatrixInverse=new Bi}copy(t){return super.copy(t),this.bindMode=t.bindMode,this.bindMatrix.copy(t.bindMatrix),this.bindMatrixInverse.copy(t.bindMatrixInverse),this.skeleton=t.skeleton,this}bind(t,e){this.skeleton=t,void 0===e&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),e=this.matrixWorld),this.bindMatrix.copy(e),this.bindMatrixInverse.copy(e).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const t=new ti,e=this.geometry.attributes.skinWeight;for(let i=0,n=e.count;io)continue;u.applyMatrix4(this.matrixWorld);const d=t.ray.origin.distanceTo(u);dt.far||e.push({distance:d,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}else for(let i=Math.max(0,s.start),n=Math.min(r.count,s.start+s.count)-1;io)continue;u.applyMatrix4(this.matrixWorld);const n=t.ray.origin.distanceTo(u);nt.far||e.push({distance:n,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else i.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}updateMorphTargets(){const t=this.geometry;if(t.isBufferGeometry){const e=t.morphAttributes,i=Object.keys(e);if(i.length>0){const t=e[i[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=t.length;e0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}Jo.prototype.isLine=!0;const Qo=new ri,Ko=new ri;class $o extends Jo{constructor(t,e){super(t,e),this.type="LineSegments"}computeLineDistances(){const t=this.geometry;if(t.isBufferGeometry)if(null===t.index){const e=t.attributes.position,i=[];for(let t=0,n=e.count;tr.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:i,index:e,face:null,object:a})}}(class extends on{constructor(t=new qn,e=new tl){super(),this.type="Points",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t){return super.copy(t),this.material=t.material,this.geometry=t.geometry,this}raycast(t,e){const i=this.geometry,n=this.matrixWorld,r=t.params.Points.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),nl.copy(i.boundingSphere),nl.applyMatrix4(n),nl.radius+=r,!1===t.ray.intersectsSphere(nl))return;el.copy(n).invert(),il.copy(t.ray).applyMatrix4(el);const a=r/((this.scale.x+this.scale.y+this.scale.z)/3),o=a*a;if(i.isBufferGeometry){const r=i.index,a=i.attributes.position;if(null!==r)for(let i=Math.max(0,s.start),l=Math.min(r.count,s.start+s.count);i0){const t=e[i[0]];if(void 0!==t){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=t.length;e0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}).prototype.isPoints=!0,class extends Ke{constructor(t,e,i,n,r,s,a,o,l){super(t,e,i,n,r,s,a,o,l),this.format=void 0!==a?a:be,this.minFilter=void 0!==s?s:de,this.magFilter=void 0!==r?r:de,this.generateMipmaps=!1;const c=this;"requestVideoFrameCallback"in t&&t.requestVideoFrameCallback((function e(){c.needsUpdate=!0,t.requestVideoFrameCallback(e)}))}clone(){return new this.constructor(this.image).copy(this)}update(){const t=this.image;!1=="requestVideoFrameCallback"in t&&t.readyState>=t.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}.prototype.isVideoTexture=!0;(class extends Ke{constructor(t,e,i,n,r,s,a,o,l,c,h,u){super(null,s,a,o,l,c,n,r,h,u),this.image={width:e,height:i},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}}).prototype.isCompressedTexture=!0,class extends Ke{constructor(t,e,i,n,r,s,a,o,l){super(t,e,i,n,r,s,a,o,l),this.needsUpdate=!0}}.prototype.isCanvasTexture=!0,class extends Ke{constructor(t,e,i,n,r,s,a,o,l,c){if((c=void 0!==c?c:_e)!==_e&&c!==Me)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&c===_e&&(i=me),void 0===i&&c===Me&&(i=xe),super(null,n,r,s,a,o,c,i,l),this.image={width:t,height:e},this.magFilter=void 0!==a?a:ue,this.minFilter=void 0!==o?o:ue,this.flipY=!1,this.generateMipmaps=!1}}.prototype.isDepthTexture=!0,new ri,new ri,new ri,new yn;class al{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(t,e){const i=this.getUtoTmapping(t);return this.getPoint(i,e)}getPoints(t=5){const e=[];for(let i=0;i<=t;i++)e.push(this.getPoint(i/t));return e}getSpacedPoints(t=5){const e=[];for(let i=0;i<=t;i++)e.push(this.getPointAt(i/t));return e}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===t+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const e=[];let i,n=this.getPoint(0),r=0;e.push(0);for(let s=1;s<=t;s++)i=this.getPoint(s/t),r+=i.distanceTo(n),e.push(r),n=i;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(t,e){const i=this.getLengths();let n=0;const r=i.length;let s;s=e||t*i[r-1];let a,o=0,l=r-1;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),a=i[n]-s,a<0)o=n+1;else{if(!(a>0)){l=n;break}l=n-1}if(n=l,i[n]===s)return n/(r-1);const c=i[n];return(n+(s-c)/(i[n+1]-c))/(r-1)}getTangent(t,e){const i=1e-4;let n=t-i,r=t+i;n<0&&(n=0),r>1&&(r=1);const s=this.getPoint(n),a=this.getPoint(r),o=e||(s.isVector2?new Xe:new ri);return o.copy(a).sub(s).normalize(),o}getTangentAt(t,e){const i=this.getUtoTmapping(t);return this.getTangent(i,e)}computeFrenetFrames(t,e){const i=new ri,n=[],r=[],s=[],a=new ri,o=new Bi;for(let e=0;e<=t;e++){const i=e/t;n[e]=this.getTangentAt(i,new ri),n[e].normalize()}r[0]=new ri,s[0]=new ri;let l=Number.MAX_VALUE;const c=Math.abs(n[0].x),h=Math.abs(n[0].y),u=Math.abs(n[0].z);c<=l&&(l=c,i.set(1,0,0)),h<=l&&(l=h,i.set(0,1,0)),u<=l&&i.set(0,0,1),a.crossVectors(n[0],i).normalize(),r[0].crossVectors(n[0],a),s[0].crossVectors(n[0],r[0]);for(let e=1;e<=t;e++){if(r[e]=r[e-1].clone(),s[e]=s[e-1].clone(),a.crossVectors(n[e-1],n[e]),a.length()>Number.EPSILON){a.normalize();const t=Math.acos(qe(n[e-1].dot(n[e]),-1,1));r[e].applyMatrix4(o.makeRotationAxis(a,t))}s[e].crossVectors(n[e],r[e])}if(!0===e){let e=Math.acos(qe(r[0].dot(r[t]),-1,1));e/=t,n[0].dot(a.crossVectors(r[0],r[t]))>0&&(e=-e);for(let i=1;i<=t;i++)r[i].applyMatrix4(o.makeRotationAxis(n[i],e*i)),s[i].crossVectors(n[i],r[i])}return{tangents:n,normals:r,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}toJSON(){const t={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return t.arcLengthDivisions=this.arcLengthDivisions,t.type=this.type,t}fromJSON(t){return this.arcLengthDivisions=t.arcLengthDivisions,this}}class ol extends al{constructor(t=0,e=0,i=1,n=1,r=0,s=2*Math.PI,a=!1,o=0){super(),this.type="EllipseCurve",this.aX=t,this.aY=e,this.xRadius=i,this.yRadius=n,this.aStartAngle=r,this.aEndAngle=s,this.aClockwise=a,this.aRotation=o}getPoint(t,e){const i=e||new Xe,n=2*Math.PI;let r=this.aEndAngle-this.aStartAngle;const s=Math.abs(r)n;)r-=n;r0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===c&&l===r-1&&(l=r-2,c=1),this.closed||l>0?a=n[(l-1)%r]:(hl.subVectors(n[0],n[1]).add(n[0]),a=hl);const h=n[l%r],u=n[(l+1)%r];if(this.closed||l+2n.length-2?n.length-1:s+1],h=n[s>n.length-3?n.length-1:s+2];return i.set(ml(a,o.x,l.x,c.x,h.x),ml(a,o.y,l.y,c.y,h.y)),i}copy(t){super.copy(t),this.points=[];for(let e=0,i=t.points.length;e0)for(s=e;s=e;s-=n)a=jl(s,t[s],t[s+1],a);return a&&Ul(a,a.next)&&(Xl(a),a=a.next),a}function Tl(t,e){if(!t)return t;e||(e=t);let i,n=t;do{if(i=!1,n.steiner||!Ul(n,n.next)&&0!==Ol(n.prev,n,n.next))n=n.next;else{if(Xl(n),n=e=n.prev,n===n.next)break;i=!0}}while(i||n!==e);return e}function Al(t,e,i,n,r,s,a){if(!t)return;!a&&s&&function(t,e,i,n){let r=t;do{null===r.z&&(r.z=Bl(r.x,r.y,e,i,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,function(t){let e,i,n,r,s,a,o,l,c=1;do{for(i=t,t=null,s=null,a=0;i;){for(a++,n=i,o=0,e=0;e0||l>0&&n;)0!==o&&(0===l||!n||i.z<=n.z)?(r=i,i=i.nextZ,o--):(r=n,n=n.nextZ,l--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;i=n}s.nextZ=null,c*=2}while(a>1)}(r)}(t,n,r,s);let o,l,c=t;for(;t.prev!==t.next;)if(o=t.prev,l=t.next,s?Cl(t,n,r,s):Ll(t))e.push(o.i/i),e.push(t.i/i),e.push(l.i/i),Xl(t),t=l.next,c=l.next;else if((t=l)===c){a?1===a?Al(t=Rl(Tl(t),e,i),e,i,n,r,s,2):2===a&&Dl(t,e,i,n,r,s):Al(Tl(t),e,i,n,r,s,1);break}}function Ll(t){const e=t.prev,i=t,n=t.next;if(Ol(e,i,n)>=0)return!1;let r=t.next.next;for(;r!==t.prev;){if(kl(e.x,e.y,i.x,i.y,n.x,n.y,r.x,r.y)&&Ol(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function Cl(t,e,i,n){const r=t.prev,s=t,a=t.next;if(Ol(r,s,a)>=0)return!1;const o=r.xs.x?r.x>a.x?r.x:a.x:s.x>a.x?s.x:a.x,h=r.y>s.y?r.y>a.y?r.y:a.y:s.y>a.y?s.y:a.y,u=Bl(o,l,e,i,n),d=Bl(c,h,e,i,n);let p=t.prevZ,f=t.nextZ;for(;p&&p.z>=u&&f&&f.z<=d;){if(p!==t.prev&&p!==t.next&&kl(r.x,r.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Ol(p.prev,p,p.next)>=0)return!1;if(p=p.prevZ,f!==t.prev&&f!==t.next&&kl(r.x,r.y,s.x,s.y,a.x,a.y,f.x,f.y)&&Ol(f.prev,f,f.next)>=0)return!1;f=f.nextZ}for(;p&&p.z>=u;){if(p!==t.prev&&p!==t.next&&kl(r.x,r.y,s.x,s.y,a.x,a.y,p.x,p.y)&&Ol(p.prev,p,p.next)>=0)return!1;p=p.prevZ}for(;f&&f.z<=d;){if(f!==t.prev&&f!==t.next&&kl(r.x,r.y,s.x,s.y,a.x,a.y,f.x,f.y)&&Ol(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function Rl(t,e,i){let n=t;do{const r=n.prev,s=n.next.next;!Ul(r,s)&&Hl(r,n,n.next,s)&&Gl(r,s)&&Gl(s,r)&&(e.push(r.i/i),e.push(n.i/i),e.push(s.i/i),Xl(n),Xl(n.next),n=t=s),n=n.next}while(n!==t);return Tl(n)}function Dl(t,e,i,n,r,s){let a=t;do{let t=a.next.next;for(;t!==a.prev;){if(a.i!==t.i&&Fl(a,t)){let o=Wl(a,t);return a=Tl(a,a.next),o=Tl(o,o.next),Al(a,e,i,n,r,s),void Al(o,e,i,n,r,s)}t=t.next}a=a.next}while(a!==t)}function Pl(t,e){return t.x-e.x}function Nl(t,e){if(e=function(t,e){let i=e;const n=t.x,r=t.y;let s,a=-1/0;do{if(r<=i.y&&r>=i.next.y&&i.next.y!==i.y){const t=i.x+(r-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(t<=n&&t>a){if(a=t,t===n){if(r===i.y)return i;if(r===i.next.y)return i.next}s=i.x=i.x&&i.x>=l&&n!==i.x&&kl(rs.x||i.x===s.x&&Il(s,i)))&&(s=i,u=h)),i=i.next}while(i!==o);return s}(t,e),e){const i=Wl(e,t);Tl(e,e.next),Tl(i,i.next)}}function Il(t,e){return Ol(t.prev,t,e.prev)<0&&Ol(e.next,t,t.next)<0}function Bl(t,e,i,n,r){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function zl(t){let e=t,i=t;do{(e.x=0&&(t-a)*(n-o)-(i-a)*(e-o)>=0&&(i-a)*(s-o)-(r-a)*(n-o)>=0}function Fl(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&Hl(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}(t,e)&&(Gl(t,e)&&Gl(e,t)&&function(t,e){let i=t,n=!1;const r=(t.x+e.x)/2,s=(t.y+e.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&r<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}(t,e)&&(Ol(t.prev,t,e.prev)||Ol(t,e.prev,e))||Ul(t,e)&&Ol(t.prev,t,t.next)>0&&Ol(e.prev,e,e.next)>0)}function Ol(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function Ul(t,e){return t.x===e.x&&t.y===e.y}function Hl(t,e,i,n){const r=ql(Ol(t,e,i)),s=ql(Ol(t,e,n)),a=ql(Ol(i,n,t)),o=ql(Ol(i,n,e));return r!==s&&a!==o||!(0!==r||!Vl(t,i,e))||!(0!==s||!Vl(t,n,e))||!(0!==a||!Vl(i,t,n))||!(0!==o||!Vl(i,e,n))}function Vl(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function ql(t){return t>0?1:t<0?-1:0}function Gl(t,e){return Ol(t.prev,t,t.next)<0?Ol(t,e,t.next)>=0&&Ol(t,t.prev,e)>=0:Ol(t,e,t.prev)<0||Ol(t,t.next,e)<0}function Wl(t,e){const i=new Yl(t.i,t.x,t.y),n=new Yl(e.i,e.x,e.y),r=t.next,s=e.prev;return t.next=e,e.prev=t,i.next=r,r.prev=i,n.next=i,i.prev=n,s.next=n,n.prev=s,n}function jl(t,e,i,n){const r=new Yl(t,e,i);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Xl(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Yl(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}class Zl{static area(t){const e=t.length;let i=0;for(let n=e-1,r=0;r80*i){o=c=t[0],l=h=t[1];for(let e=i;ec&&(c=u),d>h&&(h=d);p=Math.max(c-o,h-l),p=0!==p?1/p:0}return Al(s,a,i,o,l,p),a}(i,n);for(let t=0;t2&&t[e-1].equals(t[0])&&t.pop()}function Ql(t,e){for(let i=0;iNumber.EPSILON){const u=Math.sqrt(h),d=Math.sqrt(l*l+c*c),p=e.x-o/u,f=e.y+a/u,m=((i.x-c/d-p)*c-(i.y+l/d-f)*l)/(a*c-o*l);n=p+a*m-t.x,r=f+o*m-t.y;const g=n*n+r*r;if(g<=2)return new Xe(n,r);s=Math.sqrt(g/2)}else{let t=!1;a>Number.EPSILON?l>Number.EPSILON&&(t=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(t=!0):Math.sign(o)===Math.sign(c)&&(t=!0),t?(n=-o,r=a,s=Math.sqrt(h)):(n=a,r=o,s=Math.sqrt(h/2))}return new Xe(n/s,r/s)}const D=[];for(let t=0,e=T.length,i=e-1,n=t+1;t=0;t--){const e=t/p,i=h*Math.cos(e*Math.PI/2),n=u*Math.sin(e*Math.PI/2)+d;for(let t=0,e=T.length;t=0;){const n=i;let r=i-1;r<0&&(r=t.length-1);for(let t=0,i=o+2*p;t0!=t>0&&this.version++,this._clearcoat=t}get transmission(){return this._transmission}set transmission(t){this._transmission>0!=t>0&&this.version++,this._transmission=t}copy(t){return super.copy(t),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=t.clearcoat,this.clearcoatMap=t.clearcoatMap,this.clearcoatRoughness=t.clearcoatRoughness,this.clearcoatRoughnessMap=t.clearcoatRoughnessMap,this.clearcoatNormalMap=t.clearcoatNormalMap,this.clearcoatNormalScale.copy(t.clearcoatNormalScale),this.ior=t.ior,this.sheenTint.copy(t.sheenTint),this.transmission=t.transmission,this.transmissionMap=t.transmissionMap,this.thickness=t.thickness,this.thicknessMap=t.thicknessMap,this.attenuationDistance=t.attenuationDistance,this.attenuationTint.copy(t.attenuationTint),this.specularIntensity=t.specularIntensity,this.specularIntensityMap=t.specularIntensityMap,this.specularTint.copy(t.specularTint),this.specularTintMap=t.specularTintMap,this}}).prototype.isMeshPhysicalMaterial=!0;class nc extends bn{constructor(t){super(),this.type="MeshPhongMaterial",this.color=new An(16777215),this.specular=new An(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new An(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Xe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.specular.copy(t.specular),this.shininess=t.shininess,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this}}nc.prototype.isMeshPhongMaterial=!0;(class extends bn{constructor(t){super(),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new An(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new An(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Xe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.gradientMap=t.gradientMap,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this}}).prototype.isMeshToonMaterial=!0;(class extends bn{constructor(t){super(),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Xe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.flatShading=t.flatShading,this}}).prototype.isMeshNormalMaterial=!0;(class extends bn{constructor(t){super(),this.type="MeshLambertMaterial",this.color=new An(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new An(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this}}).prototype.isMeshLambertMaterial=!0;(class extends bn{constructor(t){super(),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new An(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Xe(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.setValues(t)}copy(t){return super.copy(t),this.defines={MATCAP:""},this.color.copy(t.color),this.matcap=t.matcap,this.map=t.map,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.alphaMap=t.alphaMap,this.flatShading=t.flatShading,this}}).prototype.isMeshMatcapMaterial=!0;(class extends Go{constructor(t){super(),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(t)}copy(t){return super.copy(t),this.scale=t.scale,this.dashSize=t.dashSize,this.gapSize=t.gapSize,this}}).prototype.isLineDashedMaterial=!0;const rc={arraySlice:function(t,e,i){return rc.isTypedArray(t)?new t.constructor(t.subarray(e,void 0!==i?i:t.length)):t.slice(e,i)},convertArray:function(t,e,i){return!t||!i&&t.constructor===e?t:"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t)},isTypedArray:function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)},getKeyframeOrder:function(t){const e=t.length,i=new Array(e);for(let t=0;t!==e;++t)i[t]=t;return i.sort((function(e,i){return t[e]-t[i]})),i},sortedArray:function(t,e,i){const n=t.length,r=new t.constructor(n);for(let s=0,a=0;a!==n;++s){const n=i[s]*e;for(let i=0;i!==e;++i)r[a++]=t[n+i]}return r},flattenJSON:function(t,e,i,n){let r=1,s=t[0];for(;void 0!==s&&void 0===s[n];)s=t[r++];if(void 0===s)return;let a=s[n];if(void 0!==a)if(Array.isArray(a))do{a=s[n],void 0!==a&&(e.push(s.time),i.push.apply(i,a)),s=t[r++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[n],void 0!==a&&(e.push(s.time),a.toArray(i,i.length)),s=t[r++]}while(void 0!==s);else do{a=s[n],void 0!==a&&(e.push(s.time),i.push(a)),s=t[r++]}while(void 0!==s)},subclip:function(t,e,i,n,r=30){const s=t.clone();s.name=e;const a=[];for(let t=0;t=n)){l.push(e.times[t]);for(let i=0;is.tracks[t].times[0]&&(o=s.tracks[t].times[0]);for(let t=0;t=n.times[u]){const t=u*l+o,e=t+l-o;d=rc.arraySlice(n.values,t,e)}else{const t=n.createInterpolant(),e=o,i=l-o;t.evaluate(s),d=rc.arraySlice(t.resultBuffer,e,i)}"quaternion"===r&&(new ni).fromArray(d).normalize().conjugate().toArray(d);const p=a.times.length;for(let t=0;t=r)break t;{const a=e[1];t=r)break e}s=i,i=0}}for(;i>>1;te;)--s;if(++s,0!==r||s!==n){r>=s&&(s=Math.max(s,1),r=s-1);const t=this.getValueSize();this.times=rc.arraySlice(i,r,s),this.values=rc.arraySlice(this.values,r*t,s*t)}return this}validate(){let t=!0;const e=this.getValueSize();e-Math.floor(e)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);const i=this.times,n=this.values,r=i.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let s=null;for(let e=0;e!==r;e++){const n=i[e];if("number"==typeof n&&isNaN(n)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,e,n),t=!1;break}if(null!==s&&s>n){console.error("THREE.KeyframeTrack: Out of order keys.",this,e,n,s),t=!1;break}s=n}if(void 0!==n&&rc.isTypedArray(n))for(let e=0,i=n.length;e!==i;++e){const i=n[e];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,e,i),t=!1;break}}return t}optimize(){const t=rc.arraySlice(this.times),e=rc.arraySlice(this.values),i=this.getValueSize(),n=this.getInterpolation()===Te,r=t.length-1;let s=1;for(let a=1;a0){t[s]=t[r];for(let t=r*i,n=s*i,a=0;a!==i;++a)e[n+a]=e[t+a];++s}return s!==t.length?(this.times=rc.arraySlice(t,0,s),this.values=rc.arraySlice(e,0,s*i)):(this.times=t,this.values=e),this}clone(){const t=rc.arraySlice(this.times,0),e=rc.arraySlice(this.values,0),i=new(0,this.constructor)(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}}cc.prototype.TimeBufferType=Float32Array,cc.prototype.ValueBufferType=Float32Array,cc.prototype.DefaultInterpolation=Ee;class hc extends cc{}hc.prototype.ValueTypeName="bool",hc.prototype.ValueBufferType=Array,hc.prototype.DefaultInterpolation=Se,hc.prototype.InterpolantFactoryMethodLinear=void 0,hc.prototype.InterpolantFactoryMethodSmooth=void 0;class uc extends cc{}uc.prototype.ValueTypeName="color";class dc extends cc{}dc.prototype.ValueTypeName="number";class pc extends sc{constructor(t,e,i,n){super(t,e,i,n)}interpolate_(t,e,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(i-e)/(n-e);let l=t*a;for(let t=l+a;l!==t;l+=4)ni.slerpFlat(r,0,s,l-a,s,l,o);return r}}class fc extends cc{InterpolantFactoryMethodLinear(t){return new pc(this.times,this.values,this.getValueSize(),t)}}fc.prototype.ValueTypeName="quaternion",fc.prototype.DefaultInterpolation=Ee,fc.prototype.InterpolantFactoryMethodSmooth=void 0;class mc extends cc{}mc.prototype.ValueTypeName="string",mc.prototype.ValueBufferType=Array,mc.prototype.DefaultInterpolation=Se,mc.prototype.InterpolantFactoryMethodLinear=void 0,mc.prototype.InterpolantFactoryMethodSmooth=void 0;class gc extends cc{}gc.prototype.ValueTypeName="vector";class vc{constructor(t,e=-1,i,n=2500){this.name=t,this.tracks=i,this.duration=e,this.blendMode=n,this.uuid=Ve(),this.duration<0&&this.resetDuration()}static parse(t){const e=[],i=t.tracks,n=1/(t.fps||1);for(let t=0,r=i.length;t!==r;++t)e.push(yc(i[t]).scale(n));const r=new this(t.name,t.duration,e,t.blendMode);return r.uuid=t.uuid,r}static toJSON(t){const e=[],i=t.tracks,n={name:t.name,duration:t.duration,tracks:e,uuid:t.uuid,blendMode:t.blendMode};for(let t=0,n=i.length;t!==n;++t)e.push(cc.toJSON(i[t]));return n}static CreateFromMorphTargetSequence(t,e,i,n){const r=e.length,s=[];for(let t=0;t1){const t=s[1];let e=n[t];e||(n[t]=e=[]),e.push(i)}}const s=[];for(const t in n)s.push(this.CreateFromMorphTargetSequence(t,n[t],e,i));return s}static parseAnimation(t,e){if(!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const i=function(t,e,i,n,r){if(0!==i.length){const s=[],a=[];rc.flattenJSON(i,s,a,n),0!==s.length&&r.push(new t(e,s,a))}},n=[],r=t.name||"default",s=t.fps||30,a=t.blendMode;let o=t.length||-1;const l=t.hierarchy||[];for(let t=0;t0||0===t.search(/^data\:image\/jpeg/);r.format=n?be:we,r.needsUpdate=!0,void 0!==e&&e(r)}),i,n),r}}class Ac extends al{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(t){this.curves.push(t)}closePath(){const t=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);t.equals(e)||this.curves.push(new bl(e,t))}getPoint(t){const e=t*this.getLength(),i=this.getCurveLengths();let n=0;for(;n=e){const t=i[n]-e,r=this.curves[n],s=r.getLength(),a=0===s?0:1-t/s;return r.getPointAt(a)}n++}return null}getLength(){const t=this.getCurveLengths();return t[t.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const t=[];let e=0;for(let i=0,n=this.curves.length;i1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}copy(t){super.copy(t),this.curves=[];for(let e=0,i=t.curves.length;e0){const t=l.getPoint(0);t.equals(this.currentPoint)||this.lineTo(t.x,t.y)}this.curves.push(l);const c=l.getPoint(1);return this.currentPoint.copy(c),this}copy(t){return super.copy(t),this.currentPoint.copy(t.currentPoint),this}toJSON(){const t=super.toJSON();return t.currentPoint=this.currentPoint.toArray(),t}fromJSON(t){return super.fromJSON(t),this.currentPoint.fromArray(t.currentPoint),this}}class Cc extends Lc{constructor(t){super(t),this.uuid=Ve(),this.type="Shape",this.holes=[]}getPointsHoles(t){const e=[];for(let i=0,n=this.holes.length;i0&&this._mixBufferRegionAdditive(i,n,this._addIndex*e,1,e);for(let t=e,r=e+e;t!==r;++t)if(i[t]!==i[t+e]){a.setValue(i,n);break}}saveOriginalState(){const t=this.binding,e=this.buffer,i=this.valueSize,n=i*this._origIndex;t.getValue(e,n);for(let t=i,r=n;t!==r;++t)e[t]=e[n+t%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const t=3*this.valueSize;this.binding.setValue(this.buffer,t)}_setAdditiveIdentityNumeric(){const t=this._addIndex*this.valueSize,e=t+this.valueSize;for(let i=t;i=.5)for(let n=0;n!==r;++n)t[e+n]=t[i+n]}_slerp(t,e,i,n){ni.slerpFlat(t,e,t,e,t,i,n)}_slerpAdditive(t,e,i,n,r){const s=this._workIndex*r;ni.multiplyQuaternionsFlat(t,s,t,e,t,i),ni.slerpFlat(t,e,t,e,t,s,n)}_lerp(t,e,i,n,r){const s=1-n;for(let a=0;a!==r;++a){const r=e+a;t[r]=t[r]*s+t[i+a]*n}}_lerpAdditive(t,e,i,n,r){for(let s=0;s!==r;++s){const r=e+s;t[r]=t[r]+t[i+s]*n}}}const Yc=new RegExp("[\\[\\]\\.:\\/]","g"),Zc="[^\\[\\]\\.:\\/]",Jc="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",Qc=/((?:WC+[\/:])*)/.source.replace("WC",Zc),Kc=/(WCOD+)?/.source.replace("WCOD",Jc),$c=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Zc),th=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Zc),eh=new RegExp("^"+Qc+Kc+$c+th+"$"),ih=["material","materials","bones"];class nh{constructor(t,e,i){this.path=e,this.parsedPath=i||nh.parseTrackName(e),this.node=nh.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,i){return t&&t.isAnimationObjectGroup?new nh.Composite(t,e,i):new nh(t,e,i)}static sanitizeNodeName(t){return t.replace(/\s/g,"_").replace(Yc,"")}static parseTrackName(t){const e=eh.exec(t);if(!e)throw new Error("PropertyBinding: Cannot parse trackName: "+t);const i={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},n=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==n&&-1!==n){const t=i.nodeName.substring(n+1);-1!==ih.indexOf(t)&&(i.nodeName=i.nodeName.substring(0,n),i.objectName=t)}if(null===i.propertyName||0===i.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return i}static findNode(t,e){if(!e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){const i=t.skeleton.getBoneByName(e);if(void 0!==i)return i}if(t.children){const i=function(t){for(let n=0;n0){const t=this._interpolants,e=this._propertyBindings;if(2501===this.blendMode)for(let i=0,n=t.length;i!==n;++i)t[i].evaluate(s),e[i].accumulateAdditive(a);else for(let i=0,r=t.length;i!==r;++i)t[i].evaluate(s),e[i].accumulate(n,a)}}_updateWeight(t){let e=0;if(this.enabled){e=this.weight;const i=this._weightInterpolant;if(null!==i){const n=i.evaluate(t)[0];e*=n,t>i.parameterPositions[1]&&(this.stopFading(),0===n&&(this.enabled=!1))}}return this._effectiveWeight=e,e}_updateTimeScale(t){let e=0;if(!this.paused){e=this.timeScale;const i=this._timeScaleInterpolant;null!==i&&(e*=i.evaluate(t)[0],t>i.parameterPositions[1]&&(this.stopWarping(),0===e?this.paused=!0:this.timeScale=e))}return this._effectiveTimeScale=e,e}_updateTime(t){const e=this._clip.duration,i=this.loop;let n=this.time+t,r=this._loopCount;const s=2202===i;if(0===t)return-1===r?n:s&&1==(1&r)?e-n:n;if(2200===i){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));t:{if(n>=e)n=e;else{if(!(n<0)){this.time=n;break t}n=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:t<0?-1:1})}}else{if(-1===r&&(t>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),n>=e||n<0){const i=Math.floor(n/e);n-=e*i,r+=Math.abs(i);const a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,n=t>0?e:0,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:t>0?1:-1});else{if(1===a){const e=t<0;this._setEndings(e,!e,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this.time=n,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=n;if(s&&1==(1&r))return e-n}return n}_setEndings(t,e,i){const n=this._interpolantSettings;i?(n.endingStart=Le,n.endingEnd=Le):(n.endingStart=t?this.zeroSlopeAtStart?Le:Ae:Ce,n.endingEnd=e?this.zeroSlopeAtEnd?Le:Ae:Ce)}_scheduleFading(t,e,i){const n=this._mixer,r=n.time;let s=this._weightInterpolant;null===s&&(s=n._lendControlInterpolant(),this._weightInterpolant=s);const a=s.parameterPositions,o=s.sampleValues;return a[0]=r,o[0]=e,a[1]=r+t,o[1]=i,this}}(class extends Fe{constructor(t){super(),this._root=t,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(t,e){const i=t._localRoot||this._root,n=t._clip.tracks,r=n.length,s=t._propertyBindings,a=t._interpolants,o=i.uuid,l=this._bindingsByRootAndName;let c=l[o];void 0===c&&(c={},l[o]=c);for(let t=0;t!==r;++t){const r=n[t],l=r.name;let h=c[l];if(void 0!==h)s[t]=h;else{if(h=s[t],void 0!==h){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,o,l));continue}const n=e&&e._propertyBindings[t].binding.parsedPath;h=new Xc(nh.create(i,l,n),r.ValueTypeName,r.getValueSize()),++h.referenceCount,this._addInactiveBinding(h,o,l),s[t]=h}a[t].resultBuffer=h.buffer}}_activateAction(t){if(!this._isActiveAction(t)){if(null===t._cacheIndex){const e=(t._localRoot||this._root).uuid,i=t._clip.uuid,n=this._actionsByClip[i];this._bindAction(t,n&&n.knownActions[0]),this._addInactiveAction(t,i,e)}const e=t._propertyBindings;for(let t=0,i=e.length;t!==i;++t){const i=e[t];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(t)}}_deactivateAction(t){if(this._isActiveAction(t)){const e=t._propertyBindings;for(let t=0,i=e.length;t!==i;++t){const i=e[t];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(t)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const t=this;this.stats={actions:{get total(){return t._actions.length},get inUse(){return t._nActiveActions}},bindings:{get total(){return t._bindings.length},get inUse(){return t._nActiveBindings}},controlInterpolants:{get total(){return t._controlInterpolants.length},get inUse(){return t._nActiveControlInterpolants}}}}_isActiveAction(t){const e=t._cacheIndex;return null!==e&&e=0;--e)t[e].stop();return this}update(t){t*=this.timeScale;const e=this._actions,i=this._nActiveActions,n=this.time+=t,r=Math.sign(t),s=this._accuIndex^=1;for(let a=0;a!==i;++a)e[a]._update(n,t,r,s);const a=this._bindings,o=this._nActiveBindings;for(let t=0;t!==o;++t)a[t].apply(s);return this}setTime(t){this.time=0;for(let t=0;tthis.max.x||t.ythis.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y)}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return ah.copy(t).clamp(this.min,this.max).sub(t).length()}intersect(t){return this.min.max(t.min),this.max.min(t.max),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}oh.prototype.isBox2=!0,class extends on{constructor(t){super(),this.material=t,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}}.prototype.isImmediateRenderObject=!0;const lh=new ri,ch=new Bi,hh=new Bi;function uh(t){const e=[];t&&t.isBone&&e.push(t);for(let i=0;i0){this.source.connect(this.filters[0]);for(let t=1,e=this.filters.length;t0){this.source.disconnect(this.filters[0]);for(let t=1,e=this.filters.length;t0){const t=1/n;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return n}unit(t=new mh){const e=this.x,i=this.y,n=this.z;let r=Math.sqrt(e*e+i*i+n*n);return r>0?(r=1/r,t.x=e*r,t.y=i*r,t.z=n*r):(t.x=1,t.y=0,t.z=0),t}length(){const t=this.x,e=this.y,i=this.z;return Math.sqrt(t*t+e*e+i*i)}lengthSquared(){return this.dot(this)}distanceTo(t){const e=this.x,i=this.y,n=this.z,r=t.x,s=t.y,a=t.z;return Math.sqrt((r-e)*(r-e)+(s-i)*(s-i)+(a-n)*(a-n))}distanceSquared(t){const e=this.x,i=this.y,n=this.z,r=t.x,s=t.y,a=t.z;return(r-e)*(r-e)+(s-i)*(s-i)+(a-n)*(a-n)}scale(t,e=new mh){const i=this.x,n=this.y,r=this.z;return e.x=t*i,e.y=t*n,e.z=t*r,e}vmul(t,e=new mh){return e.x=t.x*this.x,e.y=t.y*this.y,e.z=t.z*this.z,e}addScaledVector(t,e,i=new mh){return i.x=this.x+t*e.x,i.y=this.y+t*e.y,i.z=this.z+t*e.z,i}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isZero(){return 0===this.x&&0===this.y&&0===this.z}negate(t=new mh){return t.x=-this.x,t.y=-this.y,t.z=-this.z,t}tangents(t,e){const i=this.length();if(i>0){const n=gh,r=1/i;n.set(this.x*r,this.y*r,this.z*r);const s=vh;Math.abs(n.x)<.9?(s.set(1,0,0),n.cross(s,t)):(s.set(0,1,0),n.cross(s,t)),n.cross(t,e)}else t.set(1,0,0),e.set(0,1,0)}toString(){return this.x+","+this.y+","+this.z}toArray(){return[this.x,this.y,this.z]}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}lerp(t,e,i){const n=this.x,r=this.y,s=this.z;i.x=n+(t.x-n)*e,i.y=r+(t.y-r)*e,i.z=s+(t.z-s)*e}almostEquals(t,e=1e-6){return!(Math.abs(this.x-t.x)>e||Math.abs(this.y-t.y)>e||Math.abs(this.z-t.z)>e)}almostZero(t=1e-6){return!(Math.abs(this.x)>t||Math.abs(this.y)>t||Math.abs(this.z)>t)}isAntiparallelTo(t,e){return this.negate(yh),yh.almostEquals(t,e)}clone(){return new mh(this.x,this.y,this.z)}}mh.ZERO=void 0,mh.UNIT_X=void 0,mh.UNIT_Y=void 0,mh.UNIT_Z=void 0,mh.ZERO=new mh(0,0,0),mh.UNIT_X=new mh(1,0,0),mh.UNIT_Y=new mh(0,1,0),mh.UNIT_Z=new mh(0,0,1);const gh=new mh,vh=new mh,yh=new mh;class xh{constructor(t={}){this.lowerBound=void 0,this.upperBound=void 0,this.lowerBound=new mh,this.upperBound=new mh,t.lowerBound&&this.lowerBound.copy(t.lowerBound),t.upperBound&&this.upperBound.copy(t.upperBound)}setFromPoints(t,e,i,n){const r=this.lowerBound,s=this.upperBound,a=i;r.copy(t[0]),a&&a.vmult(r,r),s.copy(r);for(let e=1;es.x&&(s.x=i.x),i.xs.y&&(s.y=i.y),i.ys.z&&(s.z=i.z),i.z=r.x&&e.y<=n.y&&i.y>=r.y&&e.z<=n.z&&i.z>=r.z}getCorners(t,e,i,n,r,s,a,o){const l=this.lowerBound,c=this.upperBound;t.copy(l),e.set(c.x,l.y,l.z),i.set(c.x,c.y,l.z),n.set(l.x,c.y,c.z),r.set(c.x,l.y,c.z),s.set(l.x,c.y,l.z),a.set(l.x,l.y,c.z),o.copy(c)}toLocalFrame(t,e){const i=wh,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7];this.getCorners(n,r,s,a,o,l,c,h);for(let e=0;8!==e;e++){const n=i[e];t.pointToLocal(n,n)}return e.setFromPoints(i)}toWorldFrame(t,e){const i=wh,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7];this.getCorners(n,r,s,a,o,l,c,h);for(let e=0;8!==e;e++){const n=i[e];t.pointToWorld(n,n)}return e.setFromPoints(i)}overlapsRay(t){const{direction:e,from:i}=t,n=1/e.x,r=1/e.y,s=1/e.z,a=(this.lowerBound.x-i.x)*n,o=(this.upperBound.x-i.x)*n,l=(this.lowerBound.y-i.y)*r,c=(this.upperBound.y-i.y)*r,h=(this.lowerBound.z-i.z)*s,u=(this.upperBound.z-i.z)*s,d=Math.max(Math.max(Math.min(a,o),Math.min(l,c)),Math.min(h,u)),p=Math.min(Math.min(Math.max(a,o),Math.max(l,c)),Math.max(h,u));return!(p<0||d>p)}}const bh=new mh,wh=[new mh,new mh,new mh,new mh,new mh,new mh,new mh,new mh];class _h{constructor(){this.matrix=void 0,this.matrix=[]}get(t,e){let{index:i}=t,{index:n}=e;if(n>i){const t=n;n=i,i=t}return this.matrix[(i*(i+1)>>1)+n-1]}set(t,e,i){let{index:n}=t,{index:r}=e;if(r>n){const t=r;r=n,n=t}this.matrix[(n*(n+1)>>1)+r-1]=i?1:0}reset(){for(let t=0,e=this.matrix.length;t!==e;t++)this.matrix[t]=0}setNumObjects(t){this.matrix.length=t*(t-1)>>1}}class Mh{constructor(){this._listeners=void 0}addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const i=this._listeners;return void 0===i[t]&&(i[t]=[]),i[t].includes(e)||i[t].push(e),this}hasEventListener(t,e){if(void 0===this._listeners)return!1;const i=this._listeners;return!(void 0===i[t]||!i[t].includes(e))}hasAnyEventListener(t){return void 0!==this._listeners&&void 0!==this._listeners[t]}removeEventListener(t,e){if(void 0===this._listeners)return this;const i=this._listeners;if(void 0===i[t])return this;const n=i[t].indexOf(e);return-1!==n&&i[t].splice(n,1),this}dispatchEvent(t){if(void 0===this._listeners)return this;const e=this._listeners[t.type];if(void 0!==e){t.target=this;for(let i=0,n=e.length;i.499&&(i=2*Math.atan2(s,l),n=Math.PI/2,r=0),t<-.499&&(i=-2*Math.atan2(s,l),n=-Math.PI/2,r=0),void 0===i){const e=s*s,c=a*a,h=o*o;i=Math.atan2(2*a*l-2*s*o,1-2*c-2*h),n=Math.asin(2*t),r=Math.atan2(2*s*l-2*a*o,1-2*e-2*h)}}t.y=i,t.z=n,t.x=r}setFromEuler(t,e,i,n="XYZ"){const r=Math.cos(t/2),s=Math.cos(e/2),a=Math.cos(i/2),o=Math.sin(t/2),l=Math.sin(e/2),c=Math.sin(i/2);return"XYZ"===n?(this.x=o*s*a+r*l*c,this.y=r*l*a-o*s*c,this.z=r*s*c+o*l*a,this.w=r*s*a-o*l*c):"YXZ"===n?(this.x=o*s*a+r*l*c,this.y=r*l*a-o*s*c,this.z=r*s*c-o*l*a,this.w=r*s*a+o*l*c):"ZXY"===n?(this.x=o*s*a-r*l*c,this.y=r*l*a+o*s*c,this.z=r*s*c+o*l*a,this.w=r*s*a-o*l*c):"ZYX"===n?(this.x=o*s*a-r*l*c,this.y=r*l*a+o*s*c,this.z=r*s*c-o*l*a,this.w=r*s*a+o*l*c):"YZX"===n?(this.x=o*s*a+r*l*c,this.y=r*l*a+o*s*c,this.z=r*s*c-o*l*a,this.w=r*s*a-o*l*c):"XZY"===n&&(this.x=o*s*a-r*l*c,this.y=r*l*a-o*s*c,this.z=r*s*c+o*l*a,this.w=r*s*a+o*l*c),this}clone(){return new Sh(this.x,this.y,this.z,this.w)}slerp(t,e,i=new Sh){const n=this.x,r=this.y,s=this.z,a=this.w;let o,l,c,h,u,d=t.x,p=t.y,f=t.z,m=t.w;return l=n*d+r*p+s*f+a*m,l<0&&(l=-l,d=-d,p=-p,f=-f,m=-m),1-l>1e-6?(o=Math.acos(l),c=Math.sin(o),h=Math.sin((1-e)*o)/c,u=Math.sin(e*o)/c):(h=1-e,u=e),i.x=h*n+u*d,i.y=h*r+u*p,i.z=h*s+u*f,i.w=h*a+u*m,i}integrate(t,e,i,n=new Sh){const r=t.x*i.x,s=t.y*i.y,a=t.z*i.z,o=this.x,l=this.y,c=this.z,h=this.w,u=.5*e;return n.x+=u*(r*h+s*c-a*l),n.y+=u*(s*h+a*o-r*c),n.z+=u*(a*h+r*l-s*o),n.w+=u*(-r*o-s*l-a*c),n}}const Eh=new mh,Th=new mh;class Ah{constructor(t={}){this.id=void 0,this.type=void 0,this.boundingSphereRadius=void 0,this.collisionResponse=void 0,this.collisionFilterGroup=void 0,this.collisionFilterMask=void 0,this.material=void 0,this.body=void 0,this.id=Ah.idCounter++,this.type=t.type||0,this.boundingSphereRadius=0,this.collisionResponse=!t.collisionResponse||t.collisionResponse,this.collisionFilterGroup=void 0!==t.collisionFilterGroup?t.collisionFilterGroup:1,this.collisionFilterMask=void 0!==t.collisionFilterMask?t.collisionFilterMask:-1,this.material=t.material?t.material:null,this.body=null}updateBoundingSphereRadius(){throw"computeBoundingSphereRadius() not implemented for shape type "+this.type}volume(){throw"volume() not implemented for shape type "+this.type}calculateLocalInertia(t,e){throw"calculateLocalInertia() not implemented for shape type "+this.type}calculateWorldAABB(t,e,i,n){throw"calculateWorldAABB() not implemented for shape type "+this.type}}Ah.idCounter=0,Ah.types={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256};class Lh{constructor(t={}){this.position=void 0,this.quaternion=void 0,this.position=new mh,this.quaternion=new Sh,t.position&&this.position.copy(t.position),t.quaternion&&this.quaternion.copy(t.quaternion)}pointToLocal(t,e){return Lh.pointToLocalFrame(this.position,this.quaternion,t,e)}pointToWorld(t,e){return Lh.pointToWorldFrame(this.position,this.quaternion,t,e)}vectorToWorldFrame(t,e=new mh){return this.quaternion.vmult(t,e),e}static pointToLocalFrame(t,e,i,n=new mh){return i.vsub(t,n),e.conjugate(Ch),Ch.vmult(n,n),n}static pointToWorldFrame(t,e,i,n=new mh){return e.vmult(i,n),n.vadd(t,n),n}static vectorToWorldFrame(t,e,i=new mh){return t.vmult(e,i),i}static vectorToLocalFrame(t,e,i,n=new mh){return e.w*=-1,e.vmult(i,n),e.w*=-1,n}}const Ch=new Sh;class Rh extends Ah{constructor(t={}){const{vertices:e=[],faces:i=[],normals:n=[],axes:r,boundingSphereRadius:s}=t;super({type:Ah.types.CONVEXPOLYHEDRON}),this.vertices=void 0,this.faces=void 0,this.faceNormals=void 0,this.worldVertices=void 0,this.worldVerticesNeedsUpdate=void 0,this.worldFaceNormals=void 0,this.worldFaceNormalsNeedsUpdate=void 0,this.uniqueAxes=void 0,this.uniqueEdges=void 0,this.vertices=e,this.faces=i,this.faceNormals=n,0===this.faceNormals.length&&this.computeNormals(),s?this.boundingSphereRadius=s:this.updateBoundingSphereRadius(),this.worldVertices=[],this.worldVerticesNeedsUpdate=!0,this.worldFaceNormals=[],this.worldFaceNormalsNeedsUpdate=!0,this.uniqueAxes=r?r.slice():null,this.uniqueEdges=[],this.computeEdges()}computeEdges(){const t=this.faces,e=this.vertices,i=this.uniqueEdges;i.length=0;const n=new mh;for(let r=0;r!==t.length;r++){const s=t[r],a=s.length;for(let t=0;t!==a;t++){const r=(t+1)%a;e[s[t]].vsub(e[s[r]],n),n.normalize();let o=!1;for(let t=0;t!==i.length;t++)if(i[t].almostEquals(n)||i[t].almostEquals(n)){o=!0;break}o||i.push(n.clone())}}}computeNormals(){this.faceNormals.length=this.faces.length;for(let t=0;tu&&(u=e,h=t)}const d=[];for(let t=0;t=0&&this.clipFaceAgainstHull(s,t,e,d,a,o,l)}findSeparatingAxis(t,e,i,n,r,s,a,o){const l=new mh,c=new mh,h=new mh,u=new mh,d=new mh,p=new mh;let f=Number.MAX_VALUE;const m=this;if(m.uniqueAxes)for(let a=0;a!==m.uniqueAxes.length;a++){i.vmult(m.uniqueAxes[a],l);const o=m.testSepAxis(l,t,e,i,n,r);if(!1===o)return!1;o0&&s.negate(s),!0}testSepAxis(t,e,i,n,r,s){Rh.project(this,t,i,n,Dh),Rh.project(e,t,r,s,Ph);const a=Dh[0],o=Dh[1],l=Ph[0],c=Ph[1];if(a0?1/e:0,this.material=t.material||null,this.linearDamping="number"==typeof t.linearDamping?t.linearDamping:.01,this.type=e<=0?Fh.STATIC:Fh.DYNAMIC,typeof t.type==typeof Fh.STATIC&&(this.type=t.type),this.allowSleep=void 0===t.allowSleep||t.allowSleep,this.sleepState=Fh.AWAKE,this.sleepSpeedLimit=void 0!==t.sleepSpeedLimit?t.sleepSpeedLimit:.1,this.sleepTimeLimit=void 0!==t.sleepTimeLimit?t.sleepTimeLimit:1,this.timeLastSleepy=0,this.wakeUpAfterNarrowphase=!1,this.torque=new mh,this.quaternion=new Sh,this.initQuaternion=new Sh,this.previousQuaternion=new Sh,this.interpolatedQuaternion=new Sh,t.quaternion&&(this.quaternion.copy(t.quaternion),this.initQuaternion.copy(t.quaternion),this.previousQuaternion.copy(t.quaternion),this.interpolatedQuaternion.copy(t.quaternion)),this.angularVelocity=new mh,t.angularVelocity&&this.angularVelocity.copy(t.angularVelocity),this.initAngularVelocity=new mh,this.shapes=[],this.shapeOffsets=[],this.shapeOrientations=[],this.inertia=new mh,this.invInertia=new mh,this.invInertiaWorld=new ph,this.invMassSolve=0,this.invInertiaSolve=new mh,this.invInertiaWorldSolve=new ph,this.fixedRotation=void 0!==t.fixedRotation&&t.fixedRotation,this.angularDamping=void 0!==t.angularDamping?t.angularDamping:.01,this.linearFactor=new mh(1,1,1),t.linearFactor&&this.linearFactor.copy(t.linearFactor),this.angularFactor=new mh(1,1,1),t.angularFactor&&this.angularFactor.copy(t.angularFactor),this.aabb=new xh,this.aabbNeedsUpdate=!0,this.boundingRadius=0,this.wlambda=new mh,this.isTrigger=Boolean(t.isTrigger),t.shape&&this.addShape(t.shape),this.updateMassProperties()}wakeUp(){const t=this.sleepState;this.sleepState=Fh.AWAKE,this.wakeUpAfterNarrowphase=!1,t===Fh.SLEEPING&&this.dispatchEvent(Fh.wakeupEvent)}sleep(){this.sleepState=Fh.SLEEPING,this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.wakeUpAfterNarrowphase=!1}sleepTick(t){if(this.allowSleep){const e=this.sleepState,i=this.velocity.lengthSquared()+this.angularVelocity.lengthSquared(),n=this.sleepSpeedLimit**2;e===Fh.AWAKE&&in?this.wakeUp():e===Fh.SLEEPY&&t-this.timeLastSleepy>this.sleepTimeLimit&&(this.sleep(),this.dispatchEvent(Fh.sleepEvent))}}updateSolveMassProperties(){this.sleepState===Fh.SLEEPING||this.type===Fh.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve.setZero(),this.invInertiaWorldSolve.setZero()):(this.invMassSolve=this.invMass,this.invInertiaSolve.copy(this.invInertia),this.invInertiaWorldSolve.copy(this.invInertiaWorld))}pointToLocalFrame(t,e=new mh){return t.vsub(this.position,e),this.quaternion.conjugate().vmult(e,e),e}vectorToLocalFrame(t,e=new mh){return this.quaternion.conjugate().vmult(t,e),e}pointToWorldFrame(t,e=new mh){return this.quaternion.vmult(t,e),e.vadd(this.position,e),e}vectorToWorldFrame(t,e=new mh){return this.quaternion.vmult(t,e),e}addShape(t,e,i){const n=new mh,r=new Sh;return e&&n.copy(e),i&&r.copy(i),this.shapes.push(t),this.shapeOffsets.push(n),this.shapeOrientations.push(r),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,t.body=this,this}removeShape(t){const e=this.shapes.indexOf(t);return-1===e?(console.warn("Shape does not belong to the body"),this):(this.shapes.splice(e,1),this.shapeOffsets.splice(e,1),this.shapeOrientations.splice(e,1),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,t.body=null,this)}updateBoundingRadius(){const t=this.shapes,e=this.shapeOffsets,i=t.length;let n=0;for(let r=0;r!==i;r++){const i=t[r];i.updateBoundingSphereRadius();const s=e[r].length(),a=i.boundingSphereRadius;s+a>n&&(n=s+a)}this.boundingRadius=n}updateAABB(){const t=this.shapes,e=this.shapeOffsets,i=this.shapeOrientations,n=t.length,r=Oh,s=Uh,a=this.quaternion,o=this.aabb,l=Hh;for(let c=0;c!==n;c++){const n=t[c];a.vmult(e[c],r),r.vadd(this.position,r),a.mult(i[c],s),n.calculateWorldAABB(r,s,l.lowerBound,l.upperBound),0===c?o.copy(l):o.extend(l)}this.aabbNeedsUpdate=!1}updateInertiaWorld(t){const e=this.invInertia;if(e.x!==e.y||e.y!==e.z||t){const t=Vh,i=qh;t.setRotationFromQuaternion(this.quaternion),t.transpose(i),t.scale(e,t),t.mmult(i,this.invInertiaWorld)}}applyForce(t,e=new mh){if(this.type!==Fh.DYNAMIC)return;this.sleepState===Fh.SLEEPING&&this.wakeUp();const i=Gh;e.cross(t,i),this.force.vadd(t,this.force),this.torque.vadd(i,this.torque)}applyLocalForce(t,e=new mh){if(this.type!==Fh.DYNAMIC)return;const i=Wh,n=jh;this.vectorToWorldFrame(t,i),this.vectorToWorldFrame(e,n),this.applyForce(i,n)}applyTorque(t){this.type===Fh.DYNAMIC&&(this.sleepState===Fh.SLEEPING&&this.wakeUp(),this.torque.vadd(t,this.torque))}applyImpulse(t,e=new mh){if(this.type!==Fh.DYNAMIC)return;this.sleepState===Fh.SLEEPING&&this.wakeUp();const i=e,n=Xh;n.copy(t),n.scale(this.invMass,n),this.velocity.vadd(n,this.velocity);const r=Yh;i.cross(t,r),this.invInertiaWorld.vmult(r,r),this.angularVelocity.vadd(r,this.angularVelocity)}applyLocalImpulse(t,e=new mh){if(this.type!==Fh.DYNAMIC)return;const i=Zh,n=Jh;this.vectorToWorldFrame(t,i),this.vectorToWorldFrame(e,n),this.applyImpulse(i,n)}updateMassProperties(){const t=Qh;this.invMass=this.mass>0?1/this.mass:0;const e=this.inertia,i=this.fixedRotation;this.updateAABB(),t.set((this.aabb.upperBound.x-this.aabb.lowerBound.x)/2,(this.aabb.upperBound.y-this.aabb.lowerBound.y)/2,(this.aabb.upperBound.z-this.aabb.lowerBound.z)/2),Bh.calculateInertia(t,this.mass,e),this.invInertia.set(e.x>0&&!i?1/e.x:0,e.y>0&&!i?1/e.y:0,e.z>0&&!i?1/e.z:0),this.updateInertiaWorld(!0)}getVelocityAtWorldPoint(t,e){const i=new mh;return t.vsub(this.position,i),this.angularVelocity.cross(i,e),this.velocity.vadd(e,e),e}integrate(t,e,i){if(this.previousPosition.copy(this.position),this.previousQuaternion.copy(this.quaternion),this.type!==Fh.DYNAMIC&&this.type!==Fh.KINEMATIC||this.sleepState===Fh.SLEEPING)return;const n=this.velocity,r=this.angularVelocity,s=this.position,a=this.force,o=this.torque,l=this.quaternion,c=this.invMass,h=this.invInertiaWorld,u=this.linearFactor,d=c*t;n.x+=a.x*d*u.x,n.y+=a.y*d*u.y,n.z+=a.z*d*u.z;const p=h.elements,f=this.angularFactor,m=o.x*f.x,g=o.y*f.y,v=o.z*f.z;r.x+=t*(p[0]*m+p[1]*g+p[2]*v),r.y+=t*(p[3]*m+p[4]*g+p[5]*v),r.z+=t*(p[6]*m+p[7]*g+p[8]*v),s.x+=n.x*t,s.y+=n.y*t,s.z+=n.z*t,l.integrate(this.angularVelocity,t,this.angularFactor,l),e&&(i?l.normalizeFast():l.normalize()),this.aabbNeedsUpdate=!0,this.updateInertiaWorld()}}Fh.idCounter=0,Fh.COLLIDE_EVENT_NAME="collide",Fh.DYNAMIC=1,Fh.STATIC=2,Fh.KINEMATIC=4,Fh.AWAKE=0,Fh.SLEEPY=1,Fh.SLEEPING=2,Fh.wakeupEvent={type:"wakeup"},Fh.sleepyEvent={type:"sleepy"},Fh.sleepEvent={type:"sleep"};const Oh=new mh,Uh=new Sh,Hh=new xh,Vh=new ph,qh=new ph,Gh=new mh,Wh=new mh,jh=new mh,Xh=new mh,Yh=new mh,Zh=new mh,Jh=new mh,Qh=new mh;const Kh=new mh,$h={keys:[]},tu=[],eu=[];new mh;class iu extends class{constructor(){this.world=void 0,this.useBoundingBoxes=void 0,this.dirty=void 0,this.world=null,this.useBoundingBoxes=!1,this.dirty=!0}collisionPairs(t,e,i){throw new Error("collisionPairs not implemented for this BroadPhase class!")}needBroadphaseCollision(t,e){return 0!=(t.collisionFilterGroup&e.collisionFilterMask)&&0!=(e.collisionFilterGroup&t.collisionFilterMask)&&(0==(t.type&Fh.STATIC)&&t.sleepState!==Fh.SLEEPING||0==(e.type&Fh.STATIC)&&e.sleepState!==Fh.SLEEPING)}intersectionTest(t,e,i,n){this.useBoundingBoxes?this.doBoundingBoxBroadphase(t,e,i,n):this.doBoundingSphereBroadphase(t,e,i,n)}doBoundingSphereBroadphase(t,e,i,n){const r=Kh;e.position.vsub(t.position,r);const s=(t.boundingRadius+e.boundingRadius)**2;r.lengthSquared()i.lengthSquared()}aabbQuery(t,e,i){return console.warn(".aabbQuery is not implemented in this Broadphase subclass."),[]}}{constructor(){super()}collisionPairs(t,e,i){const n=t.bodies,r=n.length;let s,a;for(let t=0;t!==r;t++)for(let r=0;r!==t;r++)s=n[t],a=n[r],this.needBroadphaseCollision(s,a)&&this.intersectionTest(s,a,e,i)}aabbQuery(t,e,i=[]){for(let n=0;n{}}intersectWorld(t,e){return this.mode=e.mode||uu.ANY,this.result=e.result||new nu,this.skipBackfaces=!!e.skipBackfaces,this.collisionFilterMask=void 0!==e.collisionFilterMask?e.collisionFilterMask:-1,this.collisionFilterGroup=void 0!==e.collisionFilterGroup?e.collisionFilterGroup:-1,this.checkCollisionResponse=void 0===e.checkCollisionResponse||e.checkCollisionResponse,e.from&&this.from.copy(e.from),e.to&&this.to.copy(e.to),this.callback=e.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(du),pu.length=0,t.broadphase.aabbQuery(t,du,pu),this.intersectBodies(pu),this.hasHit}intersectBody(t,e){e&&(this.result=e,this.updateDirection());const i=this.checkCollisionResponse;if(i&&!t.collisionResponse)return;if(0==(this.collisionFilterGroup&t.collisionFilterMask)||0==(t.collisionFilterGroup&this.collisionFilterMask))return;const n=gu,r=vu;for(let e=0,s=t.shapes.length;et.boundingSphereRadius)return;const s=this[t.type];s&&s.call(this,t,e,i,n,t)}_intersectBox(t,e,i,n,r){return this._intersectConvex(t.convexPolyhedronRepresentation,e,i,n,r)}_intersectPlane(t,e,i,n,r){const s=this.from,a=this.to,o=this.direction,l=new mh(0,0,1);e.vmult(l,l);const c=new mh;s.vsub(i,c);const h=c.dot(l);if(a.vsub(i,c),h*c.dot(l)>0)return;if(s.distanceTo(a)=0&&t<=1&&(s.lerp(a,t,u),u.vsub(i,d),d.normalize(),this.reportIntersection(d,u,r,n,-1)),this.result.shouldStop)return;e>=0&&e<=1&&(s.lerp(a,e,u),u.vsub(i,d),d.normalize(),this.reportIntersection(d,u,r,n,-1))}}_intersectConvex(t,e,i,n,r,s){const a=Lu,o=Cu,l=s&&s.faceList||null,c=t.faces,h=t.vertices,u=t.faceNormals,d=this.direction,p=this.from,f=this.to,m=p.distanceTo(f),g=l?l.length:c.length,v=this.result;for(let t=0;!v.shouldStop&&tm||this.reportIntersection(a,yu,r,n,s)}}}}_intersectTrimesh(t,e,i,n,r,s){const a=Ru,o=zu,l=ku,c=Cu,h=Du,u=Pu,d=Nu,p=Bu,f=Iu,m=t.indices;t.vertices;const g=this.from,v=this.to,y=this.direction;l.position.copy(i),l.quaternion.copy(e),Lh.vectorToLocalFrame(i,e,y,h),Lh.pointToLocalFrame(i,e,g,u),Lh.pointToLocalFrame(i,e,v,d),d.x*=t.scale.x,d.y*=t.scale.y,d.z*=t.scale.z,u.x*=t.scale.x,u.y*=t.scale.y,u.z*=t.scale.z,d.vsub(u,h),h.normalize();const x=u.distanceSquared(d);t.tree.rayQuery(this,l,o);for(let s=0,l=o.length;!this.result.shouldStop&&s!==l;s++){const l=o[s];t.getNormal(l,a),t.getVertex(m[3*l],xu),xu.vsub(u,c);const d=h.dot(a),g=a.dot(c)/d;if(g<0)continue;h.scale(g,yu),yu.vadd(u,yu),t.getVertex(m[3*l+1],bu),t.getVertex(m[3*l+2],wu);const v=yu.distanceSquared(u);!uu.pointInTriangle(yu,bu,xu,wu)&&!uu.pointInTriangle(yu,xu,bu,wu)||v>x||(Lh.vectorToWorldFrame(e,a,f),Lh.pointToWorldFrame(i,e,yu,p),this.reportIntersection(f,p,r,n,l))}o.length=0}reportIntersection(t,e,i,n,r){const s=this.from,a=this.to,o=s.distanceTo(e),l=this.result;if(!(this.skipBackfaces&&t.dot(this.direction)>0))switch(l.hitFaceIndex=void 0!==r?r:-1,this.mode){case uu.ALL:this.hasHit=!0,l.set(s,a,t,e,i,n,o),l.hasHit=!0,this.callback(l);break;case uu.CLOSEST:(o=0&&(h=r*l-s*a)>=0&&c+he.maxForce&&(d=e.maxForce-m),y[t]+=d,p+=d>0?d:-d,e.addToWlambda(d)}if(p*pt;)e.pop();for(;e.length=0&&c.restitution>=0&&(a.restitution=l.restitution*c.restitution),a.si=r||i,a.sj=s||n,a}createFrictionEquationsFromContact(t,e){const i=t.bi,n=t.bj,r=t.si,s=t.sj,a=this.world,o=this.currentContactMaterial;let l=o.friction;const c=r.material||i.material,h=s.material||n.material;if(c&&h&&c.friction>=0&&h.friction>=0&&(l=c.friction*h.friction),l>0){const r=l*a.gravity.length();let s=i.invMass+n.invMass;s>0&&(s=1/s);const c=this.frictionEquationPool,h=c.length?c.pop():new sd(i,n,r*s),u=c.length?c.pop():new sd(i,n,r*s);return h.bi=u.bi=i,h.bj=u.bj=n,h.minForce=u.minForce=-r*s,h.maxForce=u.maxForce=r*s,h.ri.copy(t.ri),h.rj.copy(t.rj),u.ri.copy(t.ri),u.rj.copy(t.rj),t.ni.tangents(h.t,u.t),h.setSpookParams(o.frictionEquationStiffness,o.frictionEquationRelaxation,a.dt),u.setSpookParams(o.frictionEquationStiffness,o.frictionEquationRelaxation,a.dt),h.enabled=u.enabled=t.enabled,e.push(h,u),!0}return!1}createFrictionFromAverage(t){let e=this.result[this.result.length-1];if(!this.createFrictionEquationsFromContact(e,this.frictionResult)||1===t)return;const i=this.frictionResult[this.frictionResult.length-2],n=this.frictionResult[this.frictionResult.length-1];Gd.setZero(),Wd.setZero(),jd.setZero();const r=e.bi;e.bj;for(let i=0;i!==t;i++)e=this.result[this.result.length-1-i],e.bi!==r?(Gd.vadd(e.ni,Gd),Wd.vadd(e.ri,Wd),jd.vadd(e.rj,jd)):(Gd.vsub(e.ni,Gd),Wd.vadd(e.rj,Wd),jd.vadd(e.ri,jd));const s=1/t;Wd.scale(s,i.ri),jd.scale(s,i.rj),n.ri.copy(i.ri),n.rj.copy(i.rj),Gd.normalize(),Gd.tangents(i.t,n.t)}getContacts(t,e,i,n,r,s,a){this.contactPointPool=r,this.frictionEquationPool=a,this.result=n,this.frictionResult=s;const o=Zd,l=Jd,c=Xd,h=Yd;for(let n=0,r=t.length;n!==r;n++){const r=t[n],s=e[n];let a=null;r.material&&s.material&&(a=i.getContactMaterial(r.material,s.material)||null);const u=r.type&Fh.KINEMATIC&&s.type&Fh.STATIC||r.type&Fh.STATIC&&s.type&Fh.KINEMATIC||r.type&Fh.KINEMATIC&&s.type&Fh.KINEMATIC;for(let t=0;te.boundingSphereRadius+n.boundingSphereRadius)continue;let d=null;e.material&&n.material&&(d=i.getContactMaterial(e.material,n.material)||null),this.currentContactMaterial=d||a||i.defaultContactMaterial;const p=this[e.type|n.type];if(p){let t=!1;t=e.type0){const r=Mp,s=Sp;r.copy(d[(t+1)%3]),s.copy(d[(t+2)%3]);const a=r.length(),o=s.length();r.normalize(),s.normalize();const l=wp.dot(r),c=wp.dot(s);if(l-a&&c-o){const t=Math.abs(n-i-p);if((null===_||t<_)&&(_=t,b=l,w=c,y=i,m.copy(e),g.copy(r),v.copy(s),x++,h))return!0}}}if(x){f=!0;const r=this.createContactEquation(a,o,t,e,l,c);m.scale(-p,r.ri),r.ni.copy(m),r.ni.negate(r.ni),m.scale(y,m),g.scale(b,g),m.vadd(g,m),v.scale(w,v),m.vadd(v,r.rj),r.ri.vadd(i,r.ri),r.ri.vsub(a.position,r.ri),r.rj.vadd(n,r.rj),r.rj.vsub(o.position,r.rj),this.result.push(r),this.createFrictionEquationsFromContact(r,this.frictionResult)}let M=u.get();const S=Tp;for(let r=0;2!==r&&!f;r++)for(let s=0;2!==s&&!f;s++)for(let u=0;2!==u&&!f;u++)if(M.set(0,0,0),r?M.vadd(d[0],M):M.vsub(d[0],M),s?M.vadd(d[1],M):M.vsub(d[1],M),u?M.vadd(d[2],M):M.vsub(d[2],M),n.vadd(M,S),S.vsub(i,S),S.lengthSquared()t.boundingSphereRadius+e.boundingSphereRadius)&&t.findSeparatingAxis(e,i,r,n,s,p,u,d)){const u=[],d=Wp;t.clipAgainstHull(i,r,e,n,s,p,-100,100,u);let f=0;for(let r=0;r!==u.length;r++){if(h)return!0;const s=this.createContactEquation(a,o,t,e,l,c),m=s.ri,g=s.rj;p.negate(s.ni),u[r].normal.negate(d),d.scale(u[r].depth,d),u[r].point.vadd(d,m),g.copy(u[r].point),m.vsub(i,m),g.vsub(n,g),m.vadd(i,m),m.vsub(a.position,m),g.vadd(n,g),g.vsub(o.position,g),this.result.push(s),f++,this.enableFrictionReduction||this.createFrictionEquationsFromContact(s,this.frictionResult)}this.enableFrictionReduction&&f&&this.createFrictionFromAverage(f)}}sphereConvex(t,e,i,n,r,s,a,o,l,c,h){const u=this.v3pool;i.vsub(n,Rp);const d=e.faceNormals,p=e.faces,f=e.vertices,m=t.radius;let g=!1;for(let r=0;r!==f.length;r++){const u=f[r],d=Ip;s.vmult(u,d),n.vadd(d,d);const p=Np;if(d.vsub(i,p),p.lengthSquared()0){const r=[];for(let t=0,e=y.length;t!==e;t++){const e=u.get();s.vmult(f[y[t]],e),n.vadd(e,e),r.push(e)}if(bp(r,x,i)){if(h)return!0;g=!0;const s=this.createContactEquation(a,o,t,e,l,c);x.scale(-m,s.ri),x.negate(s.ni);const d=u.get();x.scale(-M,d);const p=u.get();x.scale(-m,p),i.vsub(n,s.rj),s.rj.vadd(p,s.rj),s.rj.vadd(d,s.rj),s.rj.vadd(n,s.rj),s.rj.vsub(o.position,s.rj),s.ri.vadd(i,s.ri),s.ri.vsub(a.position,s.ri),u.release(d),u.release(p),this.result.push(s),this.createFrictionEquationsFromContact(s,this.frictionResult);for(let t=0,e=r.length;t!==e;t++)u.release(r[t]);return}for(let d=0;d!==y.length;d++){const p=u.get(),g=u.get();s.vmult(f[y[(d+1)%y.length]],p),s.vmult(f[y[(d+2)%y.length]],g),n.vadd(p,p),n.vadd(g,g);const v=Dp;g.vsub(p,v);const x=Pp;v.unit(x);const b=u.get(),w=u.get();i.vsub(p,w);const _=w.dot(x);x.scale(_,b),b.vadd(p,b);const M=u.get();if(b.vsub(i,M),_>0&&_*_u.length||y>u[0].length)return;g<0&&(g=0),v<0&&(v=0),y<0&&(y=0),x<0&&(x=0),g>=u.length&&(g=u.length-1),v>=u.length&&(v=u.length-1),x>=u[0].length&&(x=u[0].length-1),y>=u[0].length&&(y=u[0].length-1);const b=[];e.getRectMinMax(g,y,v,x,b);const w=b[0],_=b[1];if(m.z-d>_||m.z+d2)return}}boxHeightfield(t,e,i,n,r,s,a,o,l,c,h){return t.convexPolyhedronRepresentation.material=t.material,t.convexPolyhedronRepresentation.collisionResponse=t.collisionResponse,this.convexHeightfield(t.convexPolyhedronRepresentation,e,i,n,r,s,a,o,t,e,h)}convexHeightfield(t,e,i,n,r,s,a,o,l,c,h){const u=e.data,d=e.elementSize,p=t.boundingSphereRadius,f=nf,m=rf,g=ef;Lh.pointToLocalFrame(n,s,i,g);let v=Math.floor((g.x-p)/d)-1,y=Math.ceil((g.x+p)/d)+1,x=Math.floor((g.y-p)/d)-1,b=Math.ceil((g.y+p)/d)+1;if(y<0||b<0||v>u.length||x>u[0].length)return;v<0&&(v=0),y<0&&(y=0),x<0&&(x=0),b<0&&(b=0),v>=u.length&&(v=u.length-1),y>=u.length&&(y=u.length-1),b>=u[0].length&&(b=u[0].length-1),x>=u[0].length&&(x=u[0].length-1);const w=[];e.getRectMinMax(v,x,y,b,w);const _=w[0],M=w[1];if(!(g.z-p>M||g.z+p<_))for(let l=v;l0&&y<0&&(m.vsub(u,g),f.copy(p),f.normalize(),x=g.dot(f),f.scale(x,g),g.vadd(u,g),g.distanceTo(m)0&&!0===n||h<=0&&!1===n))return!1;null===n&&(n=h>0)}return!0}const wp=new mh,_p=new mh,Mp=new mh,Sp=new mh,Ep=[new mh,new mh,new mh,new mh,new mh,new mh],Tp=new mh,Ap=new mh,Lp=new mh,Cp=new mh,Rp=new mh,Dp=new mh,Pp=new mh,Np=new mh,Ip=new mh,Bp=new mh,zp=new mh,kp=new mh,Fp=new mh,Op=new mh,Up=new mh,Hp=new mh,Vp=new mh,qp=new mh,Gp=new mh,Wp=new mh,jp=new mh,Xp=new mh,Yp=new mh,Zp=new mh,Jp=new Sh,Qp=new mh,Kp=new mh,$p=new mh,tf=new mh,ef=new mh,nf=new mh,rf=[0],sf=new mh,af=new mh;class of{constructor(){this.current=void 0,this.previous=void 0,this.current=[],this.previous=[]}getKey(t,e){if(en[r];)r++;if(i!==n[r]){for(let t=n.length-1;t>=r;t--)n[t+1]=n[t];n[r]=i}}tick(){const t=this.current;this.current=this.previous,this.previous=t,this.current.length=0}getDiff(t,e){const i=this.current,n=this.previous,r=i.length,s=n.length;let a=0;for(let e=0;en[a];)a++;r=s===n[a],r||lf(t,s)}a=0;for(let t=0;ti[a];)a++;r=i[a]===s,r||lf(e,s)}}}function lf(t,e){t.push((4294901760&e)>>16,65535&e)}class cf{constructor(){this.data={keys:[]}}get(t,e){if(t>e){const i=e;e=t,t=i}return this.data[t+"-"+e]}set(t,e,i){if(t>e){const i=e;e=t,t=i}const n=t+"-"+e;this.get(t,e)||this.data.keys.push(n),this.data[n]=i}reset(){const t=this.data,e=t.keys;for(;e.length>0;)delete t[e.pop()]}}class hf extends Mh{constructor(t={}){super(),this.dt=void 0,this.allowSleep=void 0,this.contacts=void 0,this.frictionEquations=void 0,this.quatNormalizeSkip=void 0,this.quatNormalizeFast=void 0,this.time=void 0,this.stepnumber=void 0,this.default_dt=void 0,this.nextId=void 0,this.gravity=void 0,this.broadphase=void 0,this.bodies=void 0,this.hasActiveBodies=void 0,this.solver=void 0,this.constraints=void 0,this.narrowphase=void 0,this.collisionMatrix=void 0,this.collisionMatrixPrevious=void 0,this.bodyOverlapKeeper=void 0,this.shapeOverlapKeeper=void 0,this.materials=void 0,this.contactmaterials=void 0,this.contactMaterialTable=void 0,this.defaultMaterial=void 0,this.defaultContactMaterial=void 0,this.doProfiling=void 0,this.profile=void 0,this.accumulator=void 0,this.subsystems=void 0,this.addBodyEvent=void 0,this.removeBodyEvent=void 0,this.idToBodyMap=void 0,this.dt=-1,this.allowSleep=!!t.allowSleep,this.contacts=[],this.frictionEquations=[],this.quatNormalizeSkip=void 0!==t.quatNormalizeSkip?t.quatNormalizeSkip:0,this.quatNormalizeFast=void 0!==t.quatNormalizeFast&&t.quatNormalizeFast,this.time=0,this.stepnumber=0,this.default_dt=1/60,this.nextId=0,this.gravity=new mh,t.gravity&&this.gravity.copy(t.gravity),this.broadphase=void 0!==t.broadphase?t.broadphase:new iu,this.bodies=[],this.hasActiveBodies=!1,this.solver=void 0!==t.solver?t.solver:new dd,this.constraints=[],this.narrowphase=new qd(this),this.collisionMatrix=new _h,this.collisionMatrixPrevious=new _h,this.bodyOverlapKeeper=new of,this.shapeOverlapKeeper=new of,this.materials=[],this.contactmaterials=[],this.contactMaterialTable=new cf,this.defaultMaterial=new cd("default"),this.defaultContactMaterial=new ld(this.defaultMaterial,this.defaultMaterial,{friction:.3,restitution:0}),this.doProfiling=!1,this.profile={solve:0,makeContactConstraints:0,broadphase:0,integrate:0,narrowphase:0},this.accumulator=0,this.subsystems=[],this.addBodyEvent={type:"addBody",body:null},this.removeBodyEvent={type:"removeBody",body:null},this.idToBodyMap={},this.broadphase.setWorld(this)}getContactMaterial(t,e){return this.contactMaterialTable.get(t.id,e.id)}numObjects(){return this.bodies.length}collisionMatrixTick(){const t=this.collisionMatrixPrevious;this.collisionMatrixPrevious=this.collisionMatrix,this.collisionMatrix=t,this.collisionMatrix.reset(),this.bodyOverlapKeeper.tick(),this.shapeOverlapKeeper.tick()}addConstraint(t){this.constraints.push(t)}removeConstraint(t){const e=this.constraints.indexOf(t);-1!==e&&this.constraints.splice(e,1)}rayTest(t,e,i){i instanceof nu?this.raycastClosest(t,e,{skipBackfaces:!0},i):this.raycastAll(t,e,{skipBackfaces:!0},i)}raycastAll(t,e,i={},n){return i.mode=uu.ALL,i.from=t,i.to=e,i.callback=n,uf.intersectWorld(this,i)}raycastAny(t,e,i={},n){return i.mode=uu.ANY,i.from=t,i.to=e,i.result=n,uf.intersectWorld(this,i)}raycastClosest(t,e,i={},n){return i.mode=uu.CLOSEST,i.from=t,i.to=e,i.result=n,uf.intersectWorld(this,i)}addBody(t){this.bodies.includes(t)||(t.index=this.bodies.length,this.bodies.push(t),t.world=this,t.initPosition.copy(t.position),t.initVelocity.copy(t.velocity),t.timeLastSleepy=this.time,t instanceof Fh&&(t.initAngularVelocity.copy(t.angularVelocity),t.initQuaternion.copy(t.quaternion)),this.collisionMatrix.setNumObjects(this.bodies.length),this.addBodyEvent.body=t,this.idToBodyMap[t.id]=t,this.dispatchEvent(this.addBodyEvent))}removeBody(t){t.world=null;const e=this.bodies.length-1,i=this.bodies,n=i.indexOf(t);if(-1!==n){i.splice(n,1);for(let t=0;t!==i.length;t++)i[t].index=t;this.collisionMatrix.setNumObjects(e),this.removeBodyEvent.body=t,delete this.idToBodyMap[t.id],this.dispatchEvent(this.removeBodyEvent)}}getBodyById(t){return this.idToBodyMap[t]}getShapeById(t){const e=this.bodies;for(let i=0;i=t&&r1e3*t)););this.accumulator=this.accumulator%t;const s=this.accumulator/t;for(let t=0;t!==this.bodies.length;t++){const e=this.bodies[t];e.previousPosition.lerp(e.position,s,e.interpolatedPosition),e.previousQuaternion.slerp(e.quaternion,s,e.interpolatedQuaternion),e.previousQuaternion.normalize()}this.time+=e}}internalStep(t){this.dt=t;const e=this.contacts,i=yf,n=xf,r=this.numObjects(),s=this.bodies,a=this.solver,o=this.gravity,l=this.doProfiling,c=this.profile,h=Fh.DYNAMIC;let u=-1/0;const d=this.constraints,p=vf;o.length();const f=o.x,m=o.y,g=o.z;let v=0;for(l&&(u=df.now()),v=0;v!==r;v++){const t=s[v];if(t.type===h){const e=t.force,i=t.mass;e.x+=i*f,e.y+=i*m,e.z+=i*g}}for(let t=0,e=this.subsystems.length;t!==e;t++)this.subsystems[t].update();l&&(u=df.now()),i.length=0,n.length=0,this.broadphase.collisionPairs(this,i,n),l&&(c.broadphase=df.now()-u);let y=d.length;for(v=0;v!==y;v++){const t=d[v];if(!t.collideConnected)for(let e=i.length-1;e>=0;e-=1)(t.bodyA===i[e]&&t.bodyB===n[e]||t.bodyB===i[e]&&t.bodyA===n[e])&&(i.splice(e,1),n.splice(e,1))}this.collisionMatrixTick(),l&&(u=df.now());const x=gf,b=e.length;for(v=0;v!==b;v++)x.push(e[v]);e.length=0;const w=this.frictionEquations.length;for(v=0;v!==w;v++)p.push(this.frictionEquations[v]);for(this.frictionEquations.length=0,this.narrowphase.getContacts(i,n,this,e,x,this.frictionEquations,p),l&&(c.narrowphase=df.now()-u),l&&(u=df.now()),v=0;v=0&&r.material.friction>=0&&(n.material.friction,r.material.friction),n.material.restitution>=0&&r.material.restitution>=0&&(i.restitution=n.material.restitution*r.material.restitution)),a.addEquation(i),n.allowSleep&&n.type===Fh.DYNAMIC&&n.sleepState===Fh.SLEEPING&&r.sleepState===Fh.AWAKE&&r.type!==Fh.STATIC&&r.velocity.lengthSquared()+r.angularVelocity.lengthSquared()>=2*r.sleepSpeedLimit**2&&(n.wakeUpAfterNarrowphase=!0),r.allowSleep&&r.type===Fh.DYNAMIC&&r.sleepState===Fh.SLEEPING&&n.sleepState===Fh.AWAKE&&n.type!==Fh.STATIC&&n.velocity.lengthSquared()+n.angularVelocity.lengthSquared()>=2*n.sleepSpeedLimit**2&&(r.wakeUpAfterNarrowphase=!0),this.collisionMatrix.set(n,r,!0),this.collisionMatrixPrevious.get(n,r)||(mf.body=r,mf.contact=i,n.dispatchEvent(mf),mf.body=n,r.dispatchEvent(mf)),this.bodyOverlapKeeper.set(n.id,r.id),this.shapeOverlapKeeper.set(s.id,o.id)}for(this.emitContactEvents(),l&&(c.makeContactConstraints=df.now()-u,u=df.now()),v=0;v!==r;v++){const t=s[v];t.wakeUpAfterNarrowphase&&(t.wakeUp(),t.wakeUpAfterNarrowphase=!1)}for(y=d.length,v=0;v!==y;v++){const t=d[v];t.update();for(let e=0,i=t.equations.length;e!==i;e++){const i=t.equations[e];a.addEquation(i)}}a.solve(t,this),l&&(c.solve=df.now()-u),a.removeAllEquations();const M=Math.pow;for(v=0;v!==r;v++){const e=s[v];if(e.type&h){const i=M(1-e.linearDamping,t),n=e.velocity;n.scale(i,n);const r=e.angularVelocity;if(r){const i=M(1-e.angularDamping,t);r.scale(i,r)}}}for(this.dispatchEvent(ff),v=0;v!==r;v++){const t=s[v];t.preStep&&t.preStep.call(t)}l&&(u=df.now());const S=this.stepnumber%(this.quatNormalizeSkip+1)==0,E=this.quatNormalizeFast;for(v=0;v!==r;v++)s[v].integrate(t,S,E);for(this.clearForces(),this.broadphase.dirty=!0,l&&(c.integrate=df.now()-u),this.stepnumber+=1,this.dispatchEvent(pf),v=0;v!==r;v++){const t=s[v],e=t.postStep;e&&e.call(t)}let T=!0;if(this.allowSleep)for(T=!1,v=0;v!==r;v++){const t=s[v];t.sleepTick(this.time),t.sleepState!==Fh.SLEEPING&&(T=!0)}this.hasActiveBodies=T}emitContactEvents(){const t=this.hasAnyEventListener("beginContact"),e=this.hasAnyEventListener("endContact");if((t||e)&&this.bodyOverlapKeeper.getDiff(bf,wf),t){for(let t=0,e=bf.length;tDate.now()-t}const pf={type:"postStep"},ff={type:"preStep"},mf={type:Fh.COLLIDE_EVENT_NAME,body:null,contact:null},gf=[],vf=[],yf=[],xf=[],bf=[],wf=[],_f={type:"beginContact",bodyA:null,bodyB:null},Mf={type:"endContact",bodyA:null,bodyB:null},Sf={type:"beginShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null},Ef={type:"endShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null},Tf={specular:1515554,color:15790320,shininess:60,flatShading:!0},Af={diceColor:"#202020",textColor:"#ffffff"};class Lf{constructor(t,e,i={diceColor:"#202020",textColor:"#aaaaaa"}){this.w=t,this.h=e,this.options=i,this.scale=50,this.labels=[" ","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"],this.options=Object.assign(Object.assign({},Af),i)}setColor({diceColor:t,textColor:e}){this.options.diceColor=t,this.options.textColor=e}get radius(){return this.scale*this.scaleFactor}get diceColor(){return this.options.diceColor}get textColor(){return this.options.textColor}get buffer(){return this.geometry.geometry}create(){this.geometry=new or(this.getGeometry(),this.getMaterials()),this.geometry.receiveShadow=!0,this.geometry.castShadow=!0,this.body.position.set(0+2*this.radius*Math.random(),0+2*this.radius*Math.random(),0+4*this.radius),this.body.velocity.x=500*Math.random()*2-1,this.body.velocity.y=500*Math.random()*2-1,this.body.angularVelocity.x=100*Math.random(),this.body.angularVelocity.y=100*Math.random()}getGeometry(){let t=new Array(this.vertices.length);for(let e=0;e=0&&s=0&&i!==r+1?n.unshift([t,i],[e,s]):n.push([t,i],[e,s]),r=i)}4===n.length&&i.push([i[n[0][0]][n[0][1]],i[n[1][0]][n[1][1]],i[n[3][0]][n[3][1]],i[n[2][0]][n[2][1]],-1])}for(let t=0;t=0&&n<4){-1==--n&&(n=3);let s=i[t][n];if(e.indexOf(s)>=0){r.push(s);break}}}--s}r.push(-1),i.push(r)}return{vectors:e,faces:i}}makeGeometry(t,e){let i=new qn;for(let e=0;e6&&("6"==e||"9"==e)&&n.fillText(" .",i.width/2,i.height/2);var a=new Ke(i);return a.needsUpdate=!0,a}clone(){return{body:new Fh({mass:this.mass,shape:this.shape}),geometry:this.geometry.clone()}}}class Cf extends Lf{constructor(t,e,i=Af){super(t,e,i),this.sides=20,this.tab=-.2,this.af=-Math.PI/4/2,this.chamfer=.955,this.vertices=[],this.faces=[[0,11,5,1],[0,5,1,2],[0,1,7,3],[0,7,10,4],[0,10,11,5],[1,5,9,6],[5,11,4,7],[11,10,2,8],[10,7,6,9],[7,1,8,10],[3,9,4,11],[3,4,2,12],[3,2,6,13],[3,6,8,14],[3,8,9,15],[4,9,5,16],[2,4,11,17],[6,2,10,18],[8,6,7,19],[9,8,1,20]],this.scaleFactor=1,this.values=[...Array(20).keys()],this.margin=1,this.mass=400;let n=(1+Math.sqrt(5))/2;this.vertices=[[-1,n,0],[1,n,0],[-1,-n,0],[1,-n,0],[0,-1,n],[0,1,n],[0,-1,-n],[0,1,-n],[n,0,-1],[n,0,1],[-n,0,-1],[-n,0,1]],this.create()}}class Rf extends Lf{constructor(t,e,i=Af){super(t,e,i),this.mass=350,this.sides=12,this.tab=.2,this.af=-Math.PI/4/2,this.chamfer=.968,this.vertices=[],this.faces=[[2,14,4,12,0,1],[15,9,11,19,3,2],[16,10,17,7,6,3],[6,7,19,11,18,4],[6,18,2,0,16,5],[18,11,9,14,2,6],[1,17,10,8,13,7],[1,13,5,15,3,8],[13,8,12,4,5,9],[5,4,14,9,15,10],[0,12,8,10,16,11],[3,19,7,17,1,12]],this.scaleFactor=.9,this.values=[...Array(12).keys()],this.margin=1;let n=(1+Math.sqrt(5))/2,r=1/n;this.vertices=[[0,r,n],[0,r,-n],[0,-r,n],[0,-r,-n],[n,0,r],[n,0,-r],[-n,0,r],[-n,0,-r],[r,n,0],[r,-n,0],[-r,n,0],[-r,-n,0],[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]],this.create()}}class Df extends Lf{constructor(t,e,i=Af){super(t,e,i),this.mass=350,this.sides=10,this.tab=0,this.af=6*-Math.PI/5,this.chamfer=.945,this.vertices=[],this.faces=[[5,7,11,0],[4,2,10,1],[1,3,11,2],[0,8,10,3],[7,9,11,4],[8,6,10,5],[9,1,11,6],[2,0,10,7],[3,5,11,8],[6,4,10,9],[1,0,2,-1],[1,2,3,-1],[3,2,4,-1],[3,4,5,-1],[5,4,6,-1],[5,6,7,-1],[7,6,8,-1],[7,8,9,-1],[9,8,0,-1],[9,0,1,-1]],this.scaleFactor=.9,this.values=[...Array(10).keys()],this.margin=1;for(let t=0,e=0;t<10;++t,e+=2*Math.PI/10)this.vertices.push([Math.cos(e),Math.sin(e),.105*(t%2?1:-1)]);this.vertices.push([0,0,-1]),this.vertices.push([0,0,1]),this.create()}}class Pf extends Lf{constructor(t,e,i=Af){super(t,e,i),this.labels=["","00","10","20","30","40","50","60","70","80","90"],this.sides=100,this.mass=350,this.tab=0,this.af=6*-Math.PI/5,this.chamfer=.945,this.vertices=[],this.faces=[[5,7,11,0],[4,2,10,1],[1,3,11,2],[0,8,10,3],[7,9,11,4],[8,6,10,5],[9,1,11,6],[2,0,10,7],[3,5,11,8],[6,4,10,9],[1,0,2,-1],[1,2,3,-1],[3,2,4,-1],[3,4,5,-1],[5,4,6,-1],[5,6,7,-1],[7,6,8,-1],[7,8,9,-1],[9,8,0,-1],[9,0,1,-1]],this.scaleFactor=.9,this.values=[...Array(10).keys()],this.margin=1;for(let t=0,e=0;t<10;++t,e+=2*Math.PI/10)this.vertices.push([Math.cos(e),Math.sin(e),.105*(t%2?1:-1)]);this.vertices.push([0,0,-1]),this.vertices.push([0,0,1]),this.create()}}class Nf extends Lf{constructor(t,e,i=Af){super(t,e,i),this.mass=340,this.sides=8,this.tab=0,this.af=-Math.PI/4/2,this.chamfer=.965,this.vertices=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],this.faces=[[0,2,4,1],[0,4,3,2],[0,3,5,3],[0,5,2,4],[1,3,4,5],[1,4,2,6],[1,2,5,7],[1,5,3,8]],this.scaleFactor=1,this.values=[...Array(8).keys()],this.margin=1.2,this.create()}}class If extends Lf{constructor(t,e,i=Af){super(t,e,i),this.mass=300,this.tab=.1,this.af=Math.PI/4,this.chamfer=.96,this.vertices=[[-1,-1,-1],[1,-1,-1],[1,1,-1],[-1,1,-1],[-1,-1,1],[1,-1,1],[1,1,1],[-1,1,1]],this.faces=[[0,3,2,1,1],[1,2,6,5,2],[0,1,5,4,3],[3,7,6,2,4],[0,4,7,3,5],[4,5,6,7,6]],this.scaleFactor=.9,this.sides=6,this.margin=1,this.values=[...Array(6).keys()],this.create()}}class Bf extends Lf{constructor(t,e,i=Af){super(t,e,i),this.mass=300,this.tab=-.1,this.af=7*Math.PI/6,this.chamfer=.96,this.vertices=[[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],this.faces=[[1,0,2,1],[0,1,3,2],[0,3,2,3],[1,2,3,4]],this.scaleFactor=1.2,this.sides=4,this.margin=1,this.d4FaceTexts=[[[],[0,0,0],[2,4,3],[1,3,4],[2,1,4],[1,2,3]],[[],[0,0,0],[2,3,4],[3,1,4],[2,4,1],[3,2,1]],[[],[0,0,0],[4,3,2],[3,4,1],[4,2,1],[3,1,2]],[[],[0,0,0],[4,2,3],[1,4,3],[4,1,2],[1,3,2]]],this.faceTexts=this.d4FaceTexts[0],this.values=[...Array(4).keys()],this.create()}getMaterials(){let t=[];for(let e=0;et.geometry))),this.world.add(...[...this.current.values()].flat())}onload(){this.container.empty(),this.container.style.opacity="1",document.body.appendChild(this.container),this.renderer.shadowMap.enabled=this.shadows,this.renderer.shadowMap.type=2,this.container.appendChild(this.renderer.domElement),this.renderer.setClearColor(0,0),this.scene=new fo,this.initScene(),this.registerDomEvent(window,"resize",(()=>{this.initScene()})),this.initWorld()}start(){return t(this,void 0,void 0,(function*(){return new Promise(((e,i)=>t(this,void 0,void 0,(function*(){this.current.size||i(),this.event.on("throw-finished",(t=>{e(t)})),this.event.on("error",(t=>{i(t)})),this.animating=!0,this.render()}))))}))}enableShadows(){this.shadows=!0,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}disableShadows(){this.shadows=!1,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}get mw(){return Math.max(this.WIDTH,this.HEIGHT)}setDimensions(t){this.display.currentWidth=this.container.clientWidth/2,this.display.currentHeight=this.container.clientHeight/2,t?(this.display.containerWidth=t.w,this.display.containerHeight=t.h):(this.display.containerWidth=this.display.currentWidth,this.display.containerHeight=this.display.currentHeight),this.display.aspect=Math.min(this.display.currentWidth/this.display.containerWidth,this.display.currentHeight/this.display.containerHeight),this.display.scale=Math.sqrt(this.display.containerWidth*this.display.containerWidth+this.display.containerHeight*this.display.containerHeight)/13,this.renderer.setSize(2*this.display.currentWidth,2*this.display.currentHeight),this.cameraHeight.max=this.display.currentHeight/this.display.aspect/Math.tan(10*Math.PI/180),this.factory.width=this.display.currentWidth,this.factory.height=this.display.currentHeight,this.cameraHeight.medium=this.cameraHeight.max/1.5,this.cameraHeight.far=this.cameraHeight.max,this.cameraHeight.close=this.cameraHeight.max/2}initCamera(){this.camera&&this.scene.remove(this.camera),this.camera=new mr(20,this.display.currentWidth/this.display.currentHeight,1,1.3*this.cameraHeight.max),this.camera.position.z=this.cameraHeight.far,this.camera.lookAt(new ri(0,0,0))}initLighting(){const t=Math.max(this.display.containerWidth,this.display.containerHeight);this.light&&this.scene.remove(this.light),this.ambientLight&&this.scene.remove(this.ambientLight),this.light=new zc(this.colors.spotlight,1),this.light.position.set(-t/2,t/2,3*t),this.light.target.position.set(0,0,0),this.light.distance=5*t,this.light.angle=Math.PI/4,this.light.castShadow=this.shadows,this.light.shadow.camera.near=t/10,this.light.shadow.camera.far=5*t,this.light.shadow.camera.fov=50,this.light.shadow.bias=.001,this.light.shadow.mapSize.width=1024,this.light.shadow.mapSize.height=1024,this.scene.add(this.light),this.ambientLight=new Vc(16777215,.9),this.scene.add(this.ambientLight)}initDesk(){this.desk&&this.scene.remove(this.desk);let t=new ec;t.opacity=.5,this.desk=new or(new Cr(6*this.display.containerWidth,6*this.display.containerHeight,1,1),t),this.desk.receiveShadow=this.shadows,this.scene.add(this.desk)}initScene(){this.setDimensions(),this.initCamera(),this.initLighting(),this.initDesk(),this.camera.updateProjectionMatrix(),this.renderer.render(this.scene,this.camera)}initWorld(){this.world=new kf(this.WIDTH,this.HEIGHT),this.iterations=0}returnResult(){for(const t of this.stack.dynamic){if(!this.current.has(t))continue;const e=this.current.get(t),i=e.filter((t=>t instanceof qf&&t.isPercentile)),n=[];for(let t=0;t!(t instanceof qf&&t.isPercentile))).map((t=>t.getUpsideValue())).filter((t=>t)),...n.map((([t,e])=>{let i=t.getUpsideValue();if(!e)return i;let n=e.getUpsideValue();return 10===i&&10==n?100:(10==n&&(n=0),10==i&&(i=0),10*i+n)})).filter((t=>t))];t.setResults(r)}this.event.trigger("throw-finished",this.stack)}render(){if(this.throwFinished())try{this.returnResult(),this.registerInterval(window.setTimeout((()=>{this.container.style.opacity="0",this.registerInterval(window.setTimeout((()=>{this.animating=!1,this.unload()}),1e3))}),2e3))}catch(t){this.event.trigger("error",t)}else this.animation=requestAnimationFrame((()=>this.render())),this.world.step(this.frame_rate),this.iterations++,this.current.forEach((t=>{t.map((t=>t.set()))})),this.renderer.render(this.scene,this.camera)}dispose(...t){t.forEach((t=>{"dispose"in t&&t.dispose(),t.children&&this.dispose(...t.children)}))}detach(){}onunload(){cancelAnimationFrame(this.animation),this.container.detach(),this.container.empty(),this.renderer.domElement.detach(),this.renderer.dispose(),this.factory.dispose(),this.ambientLight.dispose(),this.light.dispose(),this.scene.children.forEach((t=>this.dispose(t))),this.scene.remove(this.scene,...this.scene.children,...[...this.current.values()].flat().map((t=>t.geometry))),this.current.forEach((t=>{t.forEach((t=>{[...Array.isArray(t.geometry.material)?t.geometry.material:[t.geometry.material]].forEach((t=>t&&t.dispose())),this.world.world.removeBody(t.body)}))})),this.current=new Map}onThrowFinished(){}throwFinished(){let t=!0;if(this.iterations<10/this.frame_rate)for(const e of this.current.values())for(const i of e){if(!0===i.stopped)continue;const e=i.body.angularVelocity,n=i.body.velocity;if(Math.abs(e.x)<6&&Math.abs(e.y)<6&&Math.abs(e.z)<6&&Math.abs(n.x)<6&&Math.abs(n.y)<6&&Math.abs(n.z)<6){if(i.stopped){if(this.iterations-i.stopped>3){i.stopped=!0;continue}}else i.stopped=this.iterations;t=!1}else i.stopped=void 0,t=!1}return t}}class kf{constructor(t,e){this.WIDTH=t,this.HEIGHT=e,this.world=new hf({gravity:new mh(0,0,-3928)}),this.ground=this.getPlane(),this.diceMaterial=new cd,this.deskMaterial=new cd,this.barrierMaterial=new cd,this.world.broadphase=new iu,this.world.allowSleep=!0,this.ground.position.set(0,0,0),this.world.addBody(this.ground),this.buildWalls()}add(...t){t.forEach((t=>{this.world.addBody(t.body)}))}step(t=1/60){const e=performance.now()/1e3;if(this.lastCallTime){const i=e-this.lastCallTime;this.world.step(t,i)}else this.world.step(t);this.lastCallTime=e}buildWalls(){this.world.addContactMaterial(new ld(this.deskMaterial,this.diceMaterial,{friction:.01,restitution:.5})),this.world.addContactMaterial(new ld(this.barrierMaterial,this.diceMaterial,{friction:0,restitution:1})),this.world.addContactMaterial(new ld(this.diceMaterial,this.diceMaterial,{friction:0,restitution:.5})),this.world.addBody(new Fh({allowSleep:!1,mass:0,shape:new hd,material:this.deskMaterial}));let t=new Fh({allowSleep:!1,mass:0,shape:new hd,material:this.barrierMaterial});t.quaternion.setFromAxisAngle(new mh(1,0,0),Math.PI/2),t.position.set(0,.93*this.HEIGHT,0),this.world.addBody(t),t=new Fh({allowSleep:!1,mass:0,shape:new hd,material:this.barrierMaterial}),t.quaternion.setFromAxisAngle(new mh(1,0,0),-Math.PI/2),t.position.set(0,.93*-this.HEIGHT,0),this.world.addBody(t),t=new Fh({allowSleep:!1,mass:0,shape:new hd,material:this.barrierMaterial}),t.quaternion.setFromAxisAngle(new mh(0,1,0),-Math.PI/2),t.position.set(.93*this.WIDTH,0,0),this.world.addBody(t),t=new Fh({allowSleep:!1,mass:0,shape:new hd,material:this.barrierMaterial}),t.quaternion.setFromAxisAngle(new mh(0,1,0),Math.PI/2),t.position.set(.93*-this.WIDTH,0,0),this.world.addBody(t)}getPlane(){return new Fh({type:Fh.STATIC,shape:new hd})}}const Ff={pos:{x:0+100*Math.random(),y:0+100*Math.random(),z:100},velocity:{x:500*Math.random()*2-1,y:500*Math.random()*2-1,z:0},angular:{x:100*Math.random(),y:100*Math.random(),z:100*Math.random()},axis:{x:Math.random(),y:Math.random(),z:Math.random(),w:Math.random()}};class Of{constructor(t,e,i){this.w=t,this.h=e,this.data=i,this.scale=50,this.stopped=!1,this.iteration=0,this.vector=Object.assign({},Ff),this.geometry=i.geometry,this.body=i.body}generateVector(t){const e=Math.sqrt(t.x*t.x+t.y*t.y),i=(Math.random()+3)*e,n={x:t.x/e,y:t.y/e},r=this.makeRandomVector(n),s={x:this.w*(r.x>0?-1:1)*.9,y:this.h*(r.y>0?-1:1)*.9,z:200*Math.random()+200},a=Math.abs(r.x/r.y);a>1?s.y/=a:s.x*=a;const o=this.makeRandomVector(n);return{pos:s,velocity:{x:o.x*i,y:o.y*i,z:-10},angular:{x:-(Math.random()*r.y*5+this.inertia*r.y),y:Math.random()*r.x*5+this.inertia*r.x,z:0},axis:{x:Math.random(),y:Math.random(),z:Math.random(),w:Math.random()}}}makeRandomVector(t){const e=Math.random()*Math.PI/5-Math.PI/5/2,i={x:t.x*Math.cos(e)-t.y*Math.sin(e),y:t.x*Math.sin(e)+t.y*Math.cos(e)};return 0==i.x&&(i.x=.01),0==i.y&&(i.y=.01),i}get buffer(){return this.geometry.geometry}getUpsideValue(){let t,e=new ri(0,0,4==this.sides?-1:1),i=2*Math.PI;const n=this.buffer.getAttribute("normal").array;for(let r=0,s=this.buffer.groups.length;rthis.sides;)r-=this.sides;for(;r<1;)r+=this.sides;e.groups[n].materialIndex=r+1}}this.updateMaterialsForValue(t-i),this.geometry.geometry=e}resetBody(){this.body.vlambda=new mh,this.body.position=new mh,this.body.previousPosition=new mh,this.body.initPosition=new mh,this.body.velocity=new mh,this.body.initVelocity=new mh,this.body.force=new mh,this.body.torque=new mh,this.body.quaternion=new Sh,this.body.initQuaternion=new Sh,this.body.angularVelocity=new mh,this.body.initAngularVelocity=new mh,this.body.interpolatedPosition=new mh,this.body.interpolatedQuaternion=new Sh,this.body.inertia=new mh,this.body.invInertia=new mh,this.body.invInertiaWorld=new ph,this.body.invInertiaSolve=new mh,this.body.invInertiaWorldSolve=new ph,this.body.wlambda=new mh,this.body.updateMassProperties()}updateMaterialsForValue(t){}set(){this.geometry.position.set(this.body.position.x,this.body.position.y,this.body.position.z),this.geometry.quaternion.set(this.body.quaternion.x,this.body.quaternion.y,this.body.quaternion.z,this.body.quaternion.w)}create(){this.body.position.set(this.vector.pos.x,this.vector.pos.y,this.vector.pos.z),this.body.quaternion.setFromAxisAngle(new mh(this.vector.axis.x,this.vector.axis.y,this.vector.axis.z),this.vector.axis.w*Math.PI*2),this.body.angularVelocity.set(this.vector.angular.x,this.vector.angular.y,this.vector.angular.z),this.body.velocity.set(this.vector.velocity.x,this.vector.velocity.y,this.vector.velocity.z),this.body.linearDamping=.1,this.body.angularDamping=.1}}class Uf extends e.Component{constructor(t,e,i){super(),this.width=t,this.height=e,this.plugin=i,this.d100=new Pf(this.width,this.height,this.colors),this.d20=new Cf(this.width,this.height,this.colors),this.d12=new Rf(this.width,this.height,this.colors),this.d10=new Df(this.width,this.height,this.colors),this.d8=new Nf(this.width,this.height,this.colors),this.d6=new If(this.width,this.height,this.colors),this.d4=new Bf(this.width,this.height,this.colors)}get colors(){return{diceColor:this.plugin.data.diceColor,textColor:this.plugin.data.textColor}}updateColors(){this.dispose(),this.d100=new Pf(this.width,this.height,this.colors),this.d20=new Cf(this.width,this.height,this.colors),this.d12=new Rf(this.width,this.height,this.colors),this.d10=new Df(this.width,this.height,this.colors),this.d8=new Nf(this.width,this.height,this.colors),this.d6=new If(this.width,this.height,this.colors),this.d4=new Bf(this.width,this.height,this.colors)}onunload(){this.dispose()}disposeChildren(...t){t.forEach((t=>{"dispose"in t&&t.dispose(),t.children&&this.disposeChildren(...t.children)}))}dispose(){this.disposeChildren(this.d100.geometry.children),this.disposeChildren(this.d20.geometry.children),this.disposeChildren(this.d12.geometry.children),this.disposeChildren(this.d10.geometry.children),this.disposeChildren(this.d8.geometry.children),this.disposeChildren(this.d6.geometry.children),this.disposeChildren(this.d4.geometry.children)}getDice(t,e){const i=new Map;for(const n of t.dynamic){const t=[];switch(n.faces.max){case 4:t.push(...new Array(n.rolls).fill(0).map((t=>new jf(this.width,this.height,this.d4.clone(),e))));break;case 6:t.push(...new Array(n.rolls).fill(0).map((t=>new Wf(this.width,this.height,this.d6.clone(),e))));break;case 8:t.push(...new Array(n.rolls).fill(0).map((t=>new Gf(this.width,this.height,this.d8.clone(),e))));break;case 10:t.push(...new Array(n.rolls).fill(0).map((t=>new qf(this.width,this.height,this.d10.clone(),e))));break;case 12:t.push(...new Array(n.rolls).fill(0).map((t=>new Vf(this.width,this.height,this.d12.clone(),e))));break;case 20:t.push(...new Array(n.rolls).fill(0).map((t=>new Hf(this.width,this.height,this.d20.clone(),e))));break;case 100:t.push(...new Array(n.rolls).fill(0).map((t=>[new qf(this.width,this.height,this.d100.clone(),e,!0),new qf(this.width,this.height,this.d10.clone(),e,!0)])).flat())}t.length&&i.set(n,t)}return i}}class Hf extends Of{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=20,this.inertia=6,n&&(this.vector=this.generateVector(n)),this.create()}}class Vf extends Of{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=12,this.inertia=8,n&&(this.vector=this.generateVector(n)),this.create()}}class qf extends Of{constructor(t,e,i,n,r=!1){super(t,e,i),this.w=t,this.h=e,this.data=i,this.isPercentile=r,this.sides=10,this.inertia=9,n&&(this.vector=this.generateVector(n)),this.create()}}class Gf extends Of{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=8,this.inertia=10,n&&(this.vector=this.generateVector(n)),this.create()}}class Wf extends Of{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=6,this.inertia=13,n&&(this.vector=this.generateVector(n)),this.create()}}class jf extends Of{constructor(t,e,i,n){super(t,e,i),this.w=t,this.h=e,this.data=i,this.sides=4,this.inertia=5,n&&(this.vector=this.generateVector(n)),this.create()}}String.prototype.matchAll=String.prototype.matchAll||function*(t){const e=t.global?t.flags:t.flags+"g",i=new RegExp(t,e);let n;for(;n=i.exec(this);)yield n};const Xf={returnAllTags:!0,rollLinksForTags:!1,copyContentButton:!0,customFormulas:[],displayFormulaForMod:!0,displayResultsInline:!1,displayLookupRoll:!0,formulas:{},persistResults:!1,results:{},defaultRoll:1,defaultFace:100,renderer:!1,diceColor:"#202020",textColor:"#ffffff",showLeafOnStartup:!0,showDice:!0};class Yf extends e.Plugin{constructor(){super(...arguments),this.persistingFiles=new Set,this.fileMap=new Map,this.inline=new Map,this.operators={"+":(t,e)=>t+e,"-":(t,e)=>t-e,"*":(t,e)=>t*e,"/":(t,e)=>t/e,"^":(t,e)=>Math.pow(t,e)}}get canUseDataview(){return"dataview"in this.app.plugins.plugins}get dataview(){return this.app.plugins.plugins.dataview}dataviewReady(){return t(this,void 0,void 0,(function*(){return new Promise((t=>{this.canUseDataview||t(!1),this.dataview.api&&t(!0),this.registerEvent(this.app.metadataCache.on("dataview:api-ready",(()=>{t(!0)})))}))}))}get view(){const t=this.app.workspace.getLeavesOfType(ie),e=t.length?t[0]:null;if(e&&e.view&&e.view instanceof ne)return e.view}addDiceView(e=!1){return t(this,void 0,void 0,(function*(){e&&!this.data.showLeafOnStartup||this.app.workspace.getLeavesOfType(ie).length||(yield this.app.workspace.getRightLeaf(!1).setViewState({type:ie}))}))}registerDataviewInlineFields(){return t(this,void 0,void 0,(function*(){this.canUseDataview&&(yield this.dataviewReady(),this.dataview.index.pages.forEach((({fields:t})=>{for(const[e,i]of t)"number"!=typeof i||Number.isNaN(i)||null==i||this.inline.set(e,i)})),this.registerEvent(this.dataview.index.events.on("dataview:metadata-change",((t,e)=>{if("update"===t){const t=this.dataview.api.page(e.path);if(!t)return;for(let e in t){let i=t[e];"number"!=typeof i||Number.isNaN(i)||null==i||this.inline.set(e,i)}}}))))}))}onload(){return t(this,void 0,void 0,(function*(){console.log("DiceRoller plugin loaded"),this.data=Object.assign(Xf,yield this.loadData()),this.renderer=new zf(this),this.addSettingTab(new ee(this.app,this)),this.registerView(ie,(t=>new ne(this,t))),this.app.workspace.onLayoutReady((()=>this.addDiceView(!0))),this.registerEvent(this.app.workspace.on("dice-roller:update-colors",(()=>{this.renderer.factory.updateColors()}))),this.registerEvent(this.app.workspace.on("dice-roller:render-dice",(i=>t(this,void 0,void 0,(function*(){const t=yield this.getRoller(i,"external");if(t instanceof Xt)if(yield t.roll(),t.dice.length){try{this.addChild(this.renderer),this.renderer.setDice(t),yield this.renderer.start(),t.recalculate()}catch(t){new e.Notice("There was an error rendering the roll."),console.error(t)}this.app.workspace.trigger("dice-roller:rendered-result",t.result)}else new e.Notice("Invalid formula.");else new e.Notice("The Dice View only supports dice rolls.")}))))),this.addCommand({id:"open-view",name:"Open Dice View",checkCallback:t=>{if(!this.view)return t||this.addDiceView(),!0}}),this.addCommand({id:"reroll",name:"Re-roll Dice",checkCallback:t=>{const i=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(i&&"preview"===i.getMode()&&this.fileMap.has(i.file))return t||this.fileMap.get(i.file).forEach((t=>{t.roll()})),!0}});const i=Lt(a).html[0];(0,e.addIcon)(Ot,i);const n=Lt(o).html[0];(0,e.addIcon)(Ut,n),this.registerMarkdownPostProcessor(((i,n)=>t(this,void 0,void 0,(function*(){var r,s;let a=i.querySelectorAll("code");if(!a.length)return;const o=n.sourcePath,l=n.getSectionInfo(i),c=null===(r=n.getSectionInfo(i))||void 0===r?void 0:r.lineStart,h=this.app.vault.getAbstractFileByPath(n.sourcePath);if(!(h&&h instanceof e.TFile))return;const u={};for(let i=0;it(this,void 0,void 0,(function*(){var t,e,s,l;if(yield a.roll(),this.data.persistResults&&!/dice\-/.test(r.innerText)||/dice\+/.test(r.innerText)){this.persistingFiles.add(n.sourcePath),u[i]=a,a.save=!0;const r=null!==(l=null===(s=null===(e=null===(t=this.data.results)||void 0===t?void 0:t[o])||void 0===e?void 0:e[c])||void 0===s?void 0:s[i])&&void 0!==l?l:null;r&&(yield a.applyResult(r))}r.replaceWith(a.containerEl)}));a.loaded?yield l():a.on("loaded",(()=>t(this,void 0,void 0,(function*(){yield l()})))),this.fileMap.has(h)||this.fileMap.set(h,[]),this.fileMap.set(h,[...this.fileMap.get(h),a]);const d=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(d&&this.fileMap.has(h)&&1===this.fileMap.get(h).length){const e=this;let i=Rt(d,{onUnloadFile:function(n){return function(r){return t(this,void 0,void 0,(function*(){return r==h&&(e.fileMap.delete(h),i()),yield n.call(this,r)}))}}});d.register(i),d.register((()=>this.fileMap.delete(h)))}}catch(t){console.error(t),new e.Notice(`There was an error parsing the dice string: ${r.innerText}.\n\n${t}`,5e3);continue}}if(o in this.data.results&&(this.data.results[o][c]={}),Object.entries(u).length){const r=this.app.workspace.getActiveViewOfType(e.MarkdownView);if(r){const e=this;let s=Rt(r,{onUnloadFile:function(r){return function(a){var l,c,d,p;return t(this,void 0,void 0,(function*(){if(a=h){e.persistingFiles.has(o)&&(e.persistingFiles.delete(o),e.data.results[o]={});for(let t in u){const r=u[t],s=null===(l=n.getSectionInfo(i))||void 0===l?void 0:l.lineStart;if(null==s)continue;const a={[s]:Object.assign(Object.assign({},null!==(d=null===(c=e.data.results[o])||void 0===c?void 0:c[s])&&void 0!==d?d:{}),{[t]:r.toResult()})};e.data.results[o]=Object.assign(Object.assign({},null!==(p=e.data.results[o])&&void 0!==p?p:{}),a),yield e.saveSettings()}}return s(),yield r.call(this,a)}))}}});r.register(s),r.register((()=>t(this,void 0,void 0,(function*(){var t,e,r,s;this.persistingFiles.has(o)&&(this.persistingFiles.delete(o),this.data.results[o]={});for(let a in u){const l=u[a],c=null===(t=n.getSectionInfo(i))||void 0===t?void 0:t.lineStart;if(null==c)continue;const h={[c]:Object.assign(Object.assign({},null!==(r=null===(e=this.data.results[o])||void 0===e?void 0:e[c])&&void 0!==r?r:{}),{[a]:l.toResult()})};this.data.results[o]=Object.assign(Object.assign({},null!==(s=this.data.results[o])&&void 0!==s?s:{}),h),yield this.saveSettings()}}))))}}})))),this.lexer=new(s()),this.addLexerRules();var r={precedence:2,associativity:"left"},l={precedence:1,associativity:"left"};this.parser=new Ct({"+":l,"-":l,"*":r,"/":r,"^":{precedence:3,associativity:"right"}}),this.app.workspace.onLayoutReady((()=>t(this,void 0,void 0,(function*(){yield this.registerDataviewInlineFields()}))))}))}parseDice(e,i){return t(this,void 0,void 0,(function*(){const t=this.getRoller(e,i);return{result:yield t.roll(),roller:t}}))}clearEmpties(t){for(var e in t)t[e]&&"object"==typeof t[e]&&(this.clearEmpties(t[e]),0===Object.keys(t[e]).length&&delete t[e])}saveSettings(){return t(this,void 0,void 0,(function*(){this.clearEmpties(this.data.results),yield this.saveData(this.data)}))}get dataview_regex(){const t=Array.from(this.inline.keys());return t.length?new RegExp(`(${t.join("|")})`,"g"):null}getRoller(t,e,i=this.data.showDice){var n;let r=!t.includes("|nodice")&&i;if((t=(0,Dt.decode)(t.replace("|nodice","").replace("\\|","|")))in this.data.formulas&&(t=this.data.formulas[t]),this.dataview_regex){const e=null!==(n=t.match(this.dataview_regex))&&void 0!==n?n:[];for(const i of e)t=t.replace(i,`${this.inline.get(i)}`)}const s=this.parse(t);switch(this.getTypeFromLexemes(s)){case"dice":return new Xt(this,t,s,r);case"table":return new Kt(this,t,s[0],e,r);case"section":return new Yt(this,t,s[0],e,r);case"tag":if(!this.app.plugins.plugins.dataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new Zt(this,t,s[0],e,r);case"link":return new Jt(this,t,s[0],e,r);case"line":return new Qt(this,t,s[0],e,r)}}getTypeFromLexemes(t){return t.some((({type:t})=>"table"===t))?"table":t.some((({type:t})=>"section"===t))?"section":t.some((({type:t})=>"tag"===t))?"tag":t.some((({type:t})=>"link"===t))?"link":t.some((({type:t})=>"line"===t))?"line":"dice"}addLexerRules(){this.lexer.addRule(/\s+/,(function(){})),this.lexer.addRule(/[{}]+/,(function(){})),this.lexer.addRule(Nt,(function(t){return{type:"table",data:t,original:t,conditionals:null}})),this.lexer.addRule(It,(function(t){const{groups:e}=t.match(It);let i="section";return"line"===e.types&&(i="line"),{type:i,data:t,original:t,conditionals:null}})),this.lexer.addRule(Pt,(t=>{var e;const{groups:i}=t.match(Pt);let n="tag";return("link"===i.types||this.data.rollLinksForTags&&!(null===(e=i.types)||void 0===e?void 0:e.length))&&(n="link"),{type:n,data:t,original:t,conditionals:null}})),this.lexer.addRule(kt,(t=>{const{roll:e=this.data.defaultRoll,faces:i=this.data.defaultFace,conditional:n}=t.match(kt).groups;let r=[];if(n){let t=n.matchAll(Ft);if(t)for(let e of t){if(!e)continue;const{comparer:t,operator:i}=e.groups;r.push({comparer:Number(t),operator:i})}}return{type:"dice",data:`${e}d${i}`,original:t,conditionals:r}})),this.lexer.addRule(/\d+/,(function(t){return{type:"dice",data:t,original:t,conditionals:[]}})),this.lexer.addRule(Bt,(function(t){return{type:"math",data:t,original:t,conditionals:null}})),this.lexer.addRule(/1[Dd]S/,(function(t){var e;const[,i]=null!==(e=t.match(/1[Dd]S/))&&void 0!==e?e:[,"1"];return{type:"stunt",data:i,original:t,conditionals:[]}})),this.lexer.addRule(/kh?(?!:l)(\d*)/,(function(t){return{type:"kh",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/dl?(?!:h)\d*/,(function(t){return{type:"dl",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/kl\d*/,(function(t){return{type:"kl",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/dh\d*/,(function(t){return{type:"dh",data:t.replace(/^\D+/g,""),original:t,conditionals:null}})),this.lexer.addRule(/!!(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/,(function(t){let[,e="1"]=t.match(/!!(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/),i=[];if(/(?:(!?=|=!|>=?|<=?)(-?\d+))+/.test(t))for(const[,e,n]of t.matchAll(/(?:(!?=|=!|>=?|<=?)(-?\d+))/g))i.push({operator:e,comparer:Number(n)});return/!!i/.test(t)&&(e="100"),{type:"!!",data:e,original:t,conditionals:i}})),this.lexer.addRule(/!(i|\d+)?(?:(!?=|=!?|>=?|<=?)(-?\d+))*/,(function(t){let[,e="1"]=t.match(/!(i|\d+)?(?:(!?=|=!?|>=?|<=?)(-?\d+))*/),i=[];if(/(?:(!?=|=!|>=?|<=?)(\d+))+/.test(t))for(const[,e,n]of t.matchAll(/(?:(!?=|=!?|>=?|<=?)(-?\d+))/g))i.push({operator:e,comparer:Number(n)});return/!i/.test(t)&&(e="100"),{type:"!",data:e,original:t,conditionals:i}})),this.lexer.addRule(/r(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/,(function(t){let[,e="1"]=t.match(/r(i|\d+)?(?:(!?=|=!|>=?|<=?)(-?\d+))*/),i=[];if(/(?:(!?={1,2}|>=?|<=?)(-?\d+))+/.test(t))for(const[,e,n]of t.matchAll(/(?:(!?=|=!|>=?|<=?)(-?\d+))/g))i.push({operator:e,comparer:Number(n)});return/ri/.test(t)&&(e="100"),{type:"r",data:e,original:t,conditionals:i}}))}onunload(){console.log("DiceRoller unloaded"),this.app.workspace.getLeavesOfType(ie).forEach((t=>t.detach())),"__THREE__"in window&&delete window.__THREE__,this.renderer.unload()}parse(t){this.lexer.setInput(t);for(var e,i=[];e=this.tryLex();)i.push(e);return this.parser.parse(i)}tryLex(){try{return this.lexer.lex()}catch(t){}}}})();var r=exports;for(var s in n)r[s]=n[s];n.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})})(); \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-dice-roller/manifest.json b/.obsidian/plugins/obsidian-dice-roller/manifest.json index 55ffcbc6..d1e4ef2c 100644 --- a/.obsidian/plugins/obsidian-dice-roller/manifest.json +++ b/.obsidian/plugins/obsidian-dice-roller/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-dice-roller", "name": "Dice Roller", - "version": "7.4.2", + "version": "7.8.4", "minAppVersion": "0.12.15", "description": "Inline dice rolling for Obsidian.md", "author": "Jeremy Valentine", diff --git a/.obsidian/plugins/obsidian-dice-roller/styles.css b/.obsidian/plugins/obsidian-dice-roller/styles.css index 3f1e1edd..50fa1d11 100644 --- a/.obsidian/plugins/obsidian-dice-roller/styles.css +++ b/.obsidian/plugins/obsidian-dice-roller/styles.css @@ -11,7 +11,7 @@ display: inline-block; } .dice-roller span { - font-weight: bolder; + font-weight: 700; } .dice-roller > .dice-roller-button { display: inline-block; @@ -88,6 +88,12 @@ position: relative; } +.dice-roller-result .embedded-table-result p { + margin: 0; + display: inline-block; +} + +/** Settings */ .dice-roller-settings .coffee { width: 60%; color: var(--text-faint); @@ -97,8 +103,6 @@ .dice-roller-settings .coffee img { height: 30px; } - -/** Settings */ .dice-roller-setting-additional-container > .setting-item:not(.setting-item-heading) { border: 0px; diff --git a/.obsidian/plugins/obsidian42-brat/main.js b/.obsidian/plugins/obsidian42-brat/main.js index 648852e0..1fe6ef45 100644 --- a/.obsidian/plugins/obsidian42-brat/main.js +++ b/.obsidian/plugins/obsidian42-brat/main.js @@ -1347,7 +1347,7 @@ Plugin has been updated from version ${localManifestJSON.version} to ${primaryMa const newNotice = new import_obsidian7.Notice(`BRAT ${msg} (Click for info)`, 3e4); - newNotice.noticeEl.oncontextmenu = (e) => __async(this, null, function* () { + newNotice.noticeEl.oncontextmenu = () => __async(this, null, function* () { window.open(`https://github.com/${repositoryPath}/releases/tag/${primaryManifest.version}`); }); } @@ -1650,6 +1650,7 @@ Plugin reloading .....`, 5e3); const communityThemeList = Object.values(this.plugin.app.customCss.themes).map((t) => { return { display: t, info: t }; }); + communityThemeList.unshift({ display: "Obsidian Default Theme", info: "" }); const gfs = new GenericFuzzySuggester(this.plugin); gfs.setSuggesterData(communityThemeList); yield gfs.display((results) => __async(this, null, function* () { diff --git a/.obsidian/plugins/obsidian42-brat/manifest.json b/.obsidian/plugins/obsidian42-brat/manifest.json index b239f365..307871ac 100644 --- a/.obsidian/plugins/obsidian42-brat/manifest.json +++ b/.obsidian/plugins/obsidian42-brat/manifest.json @@ -1,10 +1,10 @@ -{ - "id": "obsidian42-brat", - "name": "Obsidian42 - BRAT", - "version": "0.6.0", - "minAppVersion": "0.9.12", - "description": "Easily install a beta version of a plugin for testing.", - "author": "TfTHacker", - "authorUrl": "https://github.com/TfTHacker/obsidian42-brat", - "isDesktopOnly": false +{ + "id": "obsidian42-brat", + "name": "Obsidian42 - BRAT", + "version": "0.6.1", + "minAppVersion": "0.9.12", + "description": "Easily install a beta version of a plugin for testing.", + "author": "TfTHacker", + "authorUrl": "https://github.com/TfTHacker/obsidian42-brat", + "isDesktopOnly": false } \ No newline at end of file diff --git a/.obsidian/plugins/rss-reader/data.json b/.obsidian/plugins/rss-reader/data.json index 4c851a02..b79465db 100644 --- a/.obsidian/plugins/rss-reader/data.json +++ b/.obsidian/plugins/rss-reader/data.json @@ -127,8 +127,8 @@ ], "saveLocation": "custom", "saveLocationFolder": "00.03 News", - "items": { - "0": { + "items": [ + { "title": "Autosport.com - All - Stories", "subtitle": "", "link": "https://www.autosport.com/all/news/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", @@ -136,29 +136,29 @@ "description": "The son of 2003 WRC champion Petter Solberg delivered one of his best showings to date in a Hyundai i20 WRC car to end Friday sitting fifth of the nine WRC runners.
Solberg, partnered with his fourth different co-driver of the season in Elliott Edmondson, finished six of the seven stages with a top-five time, and three of the tests with the fourth-quickest time.
As a result, the 20-year-old ...Keep reading", "items": [ { - "title": "Solberg surprised to be fighting for WRC top five at Rally Monza", - "description": "The son of 2003 WRC champion Petter Solberg delivered one of his best showings to date in a Hyundai i20 WRC car to end Friday sitting fifth of the nine WRC runners.
Solberg, partnered with his fourth different co-driver of the season in Elliott Edmondson, finished six of the seven stages with a top-five time, and three of the tests with the fourth-quickest time.
As a result, the 20-year-old ...Keep reading", - "content": "The son of 2003 WRC champion Petter Solberg delivered one of his best showings to date in a Hyundai i20 WRC car to end Friday sitting fifth of the nine WRC runners.
Solberg, partnered with his fourth different co-driver of the season in Elliott Edmondson, finished six of the seven stages with a top-five time, and three of the tests with the fourth-quickest time.
As a result, the 20-year-old ...Keep reading", + "title": "Podcast: Remembering WRC great Richard Burns, with Petter Solberg", + "description": "The likeable Englishman charged through the national ranks becoming the youngest-ever winner of the British Rally Championship in 1993.
Burns would progress to the WRC driving for Subaru, Mitsubishi and Peugeot, finishing twice as runner-up first to Mitsubishi’s Tommi Makinen in 1999 and then Peugeot’s Marcus Gronholm in 2000.
On this day in 2001, he finally got the title he craved after ...Keep reading", + "content": "The likeable Englishman charged through the national ranks becoming the youngest-ever winner of the British Rally Championship in 1993.
Burns would progress to the WRC driving for Subaru, Mitsubishi and Peugeot, finishing twice as runner-up first to Mitsubishi’s Tommi Makinen in 1999 and then Peugeot’s Marcus Gronholm in 2000.
On this day in 2001, he finally got the title he craved after ...Keep reading", "category": "WRC", - "link": "https://www.autosport.com/wrc/news/solberg-surprised-to-be-fighting-for-wrc-top-five-at-rally-monza/6799753/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/wrc/news/podcast-remembering-wrc-great-richard-burns-with-petter-solberg/6820015/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 20:02:19 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 17:31:33 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", - "read": true, + "read": false, "favorite": false, - "created": true, + "created": false, "tags": [] }, { - "title": "Ogier: \"Only danger\" is myself in WRC title fight on Rally Monza", - "description": "The Toyota duo have been locked in a thrilling scrap across Friday’s seven stages from which Evans has emerged with a 1.4s lead over the seven-time world champion.
Ogier won three of the four stages held on mountain roads in Italy’s Bergamo region, while Evans struck back in the afternoon stages held at the Monza grand prix circuit to turn around a 6.5s deficit.
The Frenchman ...Keep reading", - "content": "The Toyota duo have been locked in a thrilling scrap across Friday’s seven stages from which Evans has emerged with a 1.4s lead over the seven-time world champion.
Ogier won three of the four stages held on mountain roads in Italy’s Bergamo region, while Evans struck back in the afternoon stages held at the Monza grand prix circuit to turn around a 6.5s deficit.
The Frenchman ...Keep reading", - "category": "WRC", - "link": "https://www.autosport.com/wrc/news/ogier-only-danger-is-myself-in-wrc-title-fight-on-rally-monza/6799690/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "History of safety devices in Formula 1: The halo, barriers & more", + "description": "In the 1960s and 70s, it was widely accepted that racing came with a real risk of severe injury or death and it took some time before the culture of striving to protect lives set in.
Three-time world champion Jackie Stewart played an important part in the push for safety during some of F1's most dangerous years, advocating mandatory seatbelts and full-face helmets, as well as for better ...Keep reading", + "content": "In the 1960s and 70s, it was widely accepted that racing came with a real risk of severe injury or death and it took some time before the culture of striving to protect lives set in.
Three-time world champion Jackie Stewart played an important part in the push for safety during some of F1's most dangerous years, advocating mandatory seatbelts and full-face helmets, as well as for better ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/history-of-safety-devices-in-formula-1-the-halo-barriers-more-4982360/4982360/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:33:58 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 17:03:37 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -166,14 +166,14 @@ "tags": [] }, { - "title": "The Mercedes rear wing marks behind Red Bull's suspicions", - "description": "Mercedes and Red Bull continue to provoke one another both on and off the track this season, with the intensity turned up another notch at the Qatar Grand Prix, as Christian Horner threatened to protest his rival's car.
Red Bull has announced its dissatisfaction about the legality of the rear wing on the Mercedes on several occasions now, with the team convinced its bitter rival is gaining an ...Keep reading", - "content": "Mercedes and Red Bull continue to provoke one another both on and off the track this season, with the intensity turned up another notch at the Qatar Grand Prix, as Christian Horner threatened to protest his rival's car.
Red Bull has announced its dissatisfaction about the legality of the rear wing on the Mercedes on several occasions now, with the team convinced its bitter rival is gaining an ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/the-mercedes-rear-wing-marks-behind-red-bulls-suspicions/6799537/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Nato \"not frustrated\" to lose Venturi FE seat despite rookie win", + "description": "A two-time race winner in the FIA World Endurance Championship with Rebellion, Nato made his Formula E debut in 2021 as a replacement for Felipe Massa, teaming up with series regular Edoardo Mortara at Mercedes customer Venturi.
The French driver finished on the podium in only his fourth race appearance in Rome, only to be disqualified soon after for exceeding his energy allocation. Another ...Keep reading", + "content": "A two-time race winner in the FIA World Endurance Championship with Rebellion, Nato made his Formula E debut in 2021 as a replacement for Felipe Massa, teaming up with series regular Edoardo Mortara at Mercedes customer Venturi.
The French driver finished on the podium in only his fourth race appearance in Rome, only to be disqualified soon after for exceeding his energy allocation. Another ...Keep reading", + "category": "Formula E", + "link": "https://www.autosport.com/formula-e/news/nato-not-frustrated-to-lose-venturi-fe-seat-despite-rookie-win/6769191/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:55:38 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 16:00:28 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -181,14 +181,14 @@ "tags": [] }, { - "title": "WRC Monza: Evans grabs lead to increase pressure on Ogier", - "description": "Evans managed to transform a 6.5s deficit from the morning’s mountain stage loop into a 1.4s lead over Ogier after starring in the afternoon stages, held at the famous Monza grand prix circuit.
Sitting second, Ogier remains in the box seat to secure an eighth world title in his final full-time WRC event but is under more pressure should the Frenchman, who holds a 17-point lead over Evans ...Keep reading", - "content": "Evans managed to transform a 6.5s deficit from the morning’s mountain stage loop into a 1.4s lead over Ogier after starring in the afternoon stages, held at the famous Monza grand prix circuit.
Sitting second, Ogier remains in the box seat to secure an eighth world title in his final full-time WRC event but is under more pressure should the Frenchman, who holds a 17-point lead over Evans ...Keep reading", - "category": "WRC", - "link": "https://www.autosport.com/wrc/news/wrc-monza-evans-grabs-lead-to-increase-pressure-on-ogier/6799486/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "DS Techeetah FE team co-founder Preston moves to executive role", + "description": "Vastly experienced Preston, who was instrumental in the creation of the Super Aguri Formula 1 team, reignited his relationship with Aguri Suzuki to enter a team in Formula E for its inaugural 2014-15 campaign.
That morphed into Techeetah, following a takeover, for the 2016-17 term with the Renault powertrain customer concern finishing runner-up in the teams’ standings the season ...Keep reading", + "content": "Vastly experienced Preston, who was instrumental in the creation of the Super Aguri Formula 1 team, reignited his relationship with Aguri Suzuki to enter a team in Formula E for its inaugural 2014-15 campaign.
That morphed into Techeetah, following a takeover, for the 2016-17 term with the Renault powertrain customer concern finishing runner-up in the teams’ standings the season ...Keep reading", + "category": "Formula E", + "link": "https://www.autosport.com/formula-e/news/ds-techeetah-fe-race-team-co-founder-preston-moves-to-executive-role/6819718/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:14:01 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 15:32:46 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -196,14 +196,14 @@ "tags": [] }, { - "title": "F1 Qatar GP qualifying: Start time, how to watch & more", - "description": "On a busy opening day of track action at the Losail International Circuit, Bottas set the fastest lap of the day in FP2 of 1m23.148s to claim top spot ahead of AlphaTauri’s Pierre Gasly who went second fastest in both practice sessions. 
Max Verstappen ended FP1 with the quickest time, with the Red Bull driver and F1 world championship leader shuffled down to third place in the second ...Keep reading", - "content": "On a busy opening day of track action at the Losail International Circuit, Bottas set the fastest lap of the day in FP2 of 1m23.148s to claim top spot ahead of AlphaTauri’s Pierre Gasly who went second fastest in both practice sessions. 
Max Verstappen ended FP1 with the quickest time, with the Red Bull driver and F1 world championship leader shuffled down to third place in the second ...Keep reading", + "title": "Red Bull still needs fix for ‘flappy’ F1 wing problems", + "description": "The squad has faced a run of issues with its medium downforce configuration in the last few grands prix, which have given it headaches throughout practice.
TV images have shown the top element of the rear wing flapping when DRS is open, with the problem appearing to be caused by the actuator element not being able to cope with the forces being put through it.
The issues in practice in Qatar ...Keep reading", + "content": "The squad has faced a run of issues with its medium downforce configuration in the last few grands prix, which have given it headaches throughout practice.
TV images have shown the top element of the rear wing flapping when DRS is open, with the problem appearing to be caused by the actuator element not being able to cope with the forces being put through it.
The issues in practice in Qatar ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/f1-qatar-gp-qualifying-start-time-how-to-watch-more/6799309/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/red-bull-still-needs-fix-for-flappy-wing-problems/6818745/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:15:22 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 14:52:58 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -211,14 +211,14 @@ "tags": [] }, { - "title": "Bagnaia quickest on final day of 2022 MotoGP pre-season Jerez test", - "description": "Though conditions were dry for the start of the final day of MotoGP running of the year, the wind had picked up and would prove problematic for the rest of the day.
Honda’s Pol Espargaro was first out on track on the 2021 RC213V before switching to one of the two 2022 prototypes he had to evaluate.
But it would be Honda stablemate Takaaki Nakagami – who topped Thursday’s action – who ...Keep reading", - "content": "Though conditions were dry for the start of the final day of MotoGP running of the year, the wind had picked up and would prove problematic for the rest of the day.
Honda’s Pol Espargaro was first out on track on the 2021 RC213V before switching to one of the two 2022 prototypes he had to evaluate.
But it would be Honda stablemate Takaaki Nakagami – who topped Thursday’s action – who ...Keep reading", - "category": "MotoGP", - "link": "https://www.autosport.com/motogp/news/bagnaia-quickest-on-final-day-of-2022-motogp-pre-season-jerez-test/6799274/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Who’s the best Formula 1 driver? Schumacher, Hamilton, Senna & more", + "description": "The best F1 driver in history is a debate that has, and will continue to, rage as long as Formula 1 exists, but we look at who the best drivers are statistically.

Lewis Hamilton, Mercedes, 1st position, celebrates on arrival in Parc Ferme
Photo by: Jerry Andre / Motorsport Images

1. Lewis Hamilton - 102 wins

First race: 2007 Australian Grand Prix
World ...Keep reading", + "content": "The best F1 driver in history is a debate that has, and will continue to, rage as long as Formula 1 exists, but we look at who the best drivers are statistically.

Lewis Hamilton, Mercedes, 1st position, celebrates on arrival in Parc Ferme
Photo by: Jerry Andre / Motorsport Images

1. Lewis Hamilton - 102 wins

First race: 2007 Australian Grand Prix
World ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/whos-the-best-formula-1-driver-schumacher-hamilton-senna-more-4983210/4983210/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:08:02 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 14:43:27 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -226,14 +226,14 @@ "tags": [] }, { - "title": "NASCAR brings back practice and qualifying for 2022", - "description": "Due to COVID-19 pandemic protocols and for cost-saving, the vast majority of NASCAR race weekends have gone without practice or qualifying since early 2020.
In a statement, NASCAR’s senior vice president of competition Scott Miller said: “NASCAR is excited to return practice and qualifying to its race weekends.
“We missed seeing cars and trucks on track all weekend long, and ...Keep reading", - "content": "Due to COVID-19 pandemic protocols and for cost-saving, the vast majority of NASCAR race weekends have gone without practice or qualifying since early 2020.
In a statement, NASCAR’s senior vice president of competition Scott Miller said: “NASCAR is excited to return practice and qualifying to its race weekends.
“We missed seeing cars and trucks on track all weekend long, and ...Keep reading", - "category": "NASCAR", - "link": "https://www.autosport.com/nascar/news/nascar-brings-back-practice-and-qualifying-for-2022/6799150/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Masi insists F1 racing rules have been \"made clear\" to drivers", + "description": "The subject was discussed at length in the regular Friday briefing in Qatar, shortly after the Brazilian Grand Prix stewards confirmed that there would be no review of the Max Verstappen/Lewis Hamilton incident.
After the briefing, several drivers admitted that still didn't know exactly when penalties would be applied. 
However, Masi is adamant that they have been kept properly ...Keep reading", + "content": "The subject was discussed at length in the regular Friday briefing in Qatar, shortly after the Brazilian Grand Prix stewards confirmed that there would be no review of the Max Verstappen/Lewis Hamilton incident.
After the briefing, several drivers admitted that still didn't know exactly when penalties would be applied. 
However, Masi is adamant that they have been kept properly ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/masi-insists-f1-racing-rules-have-been-made-clear-to-drivers/6819562/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:07:01 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 14:33:29 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -241,14 +241,14 @@ "tags": [] }, { - "title": "Hamilton feeling ‘a little bit slow’ after Qatar F1 Friday practice", - "description": "Hamilton heads into the Qatar weekend on a high after charging from 10th on the grid to win in Brazil last Sunday, cutting Red Bull rival Max Verstappen’s championship lead down to 14 points.
Practice on Friday at the Losail International Circuit saw Verstappen and Hamilton’s Mercedes team-mate, Valtteri Bottas, lead FP1 and FP2 respectively.
Hamilton finished 0.7 seconds off Verstappen ...Keep reading", - "content": "Hamilton heads into the Qatar weekend on a high after charging from 10th on the grid to win in Brazil last Sunday, cutting Red Bull rival Max Verstappen’s championship lead down to 14 points.
Practice on Friday at the Losail International Circuit saw Verstappen and Hamilton’s Mercedes team-mate, Valtteri Bottas, lead FP1 and FP2 respectively.
Hamilton finished 0.7 seconds off Verstappen ...Keep reading", + "title": "Mazepin proposes Haas F1 staff incentive scheme for 2022", + "description": "Drivers Mick Schumacher and Nikita Mazepin have scored no points in a difficult 2021 campaign for Haas, which is set to finish last in the F1 constructors' championship this season.
The trying campaign, allied to the increasing demands of a 23-race schedule next season, has left the team with a likely challenge of keeping its best personnel delivering to the maximum.
Mazepin Sr has now put ...Keep reading", + "content": "Drivers Mick Schumacher and Nikita Mazepin have scored no points in a difficult 2021 campaign for Haas, which is set to finish last in the F1 constructors' championship this season.
The trying campaign, allied to the increasing demands of a 23-race schedule next season, has left the team with a likely challenge of keeping its best personnel delivering to the maximum.
Mazepin Sr has now put ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/hamilton-feeling-a-little-bit-slow-after-qatar-f1-friday-practice/6799130/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/mazepin-proposes-haas-f1-staff-incentive-scheme-for-2022/6819499/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:19:19 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 14:15:21 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -256,14 +256,14 @@ "tags": [] }, { - "title": "Mercedes: No score marks on F1 rear wing", - "description": "With the intensity of the F1 title battle between the top two teams ramping up with three races remaining, Red Bull is placing a growing focus on the behaviour of its rival's rear wing.
Red Bull team boss Christian Horner made it clear in Qatar on Friday that he felt Mercedes could be breaking the rules with its design – and would be ready to protest it in the final events.
In a tense ...Keep reading", - "content": "With the intensity of the F1 title battle between the top two teams ramping up with three races remaining, Red Bull is placing a growing focus on the behaviour of its rival's rear wing.
Red Bull team boss Christian Horner made it clear in Qatar on Friday that he felt Mercedes could be breaking the rules with its design – and would be ready to protest it in the final events.
In a tense ...Keep reading", + "title": "GP Racing Podcast: The star quality of Charles Leclerc", + "description": "An exclusive interview with Verstappen was the cover feature of November’s edition of GP Racing and the tensions in the world championship battle have grown even more feverish since it hit the news stands.
GP Racing editor Ben Anderson and columnist Mark Gallagher join host Stuart Codling to debate the latest developments in what is an increasingly bitter fight.
Verstappen’s on-track ...Keep reading", + "content": "An exclusive interview with Verstappen was the cover feature of November’s edition of GP Racing and the tensions in the world championship battle have grown even more feverish since it hit the news stands.
GP Racing editor Ben Anderson and columnist Mark Gallagher join host Stuart Codling to debate the latest developments in what is an increasingly bitter fight.
Verstappen’s on-track ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/mercedes-no-score-marks-on-f1-rear-wing/6799113/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/gp-racing-podcast-the-star-quality-of-charles-leclerc/6819419/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:14:43 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 13:32:06 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -271,14 +271,14 @@ "tags": [] }, { - "title": "How has F1 penalised pushing off track? Penalties, warnings and more", - "description": "Drivers and fans alike have been asking for more consistency in stewarding decisions in the wake of the Max Verstappen vs Lewis Hamilton battle in Brazil, but how have the FIA typically penalised drivers for off-track excursions?
Max Verstappen v Lewis Hamilton, Brazil 2021 – no investigation
While some incidents are controversial for the penalties handed out, there are times when debate ...Keep reading", - "content": "Drivers and fans alike have been asking for more consistency in stewarding decisions in the wake of the Max Verstappen vs Lewis Hamilton battle in Brazil, but how have the FIA typically penalised drivers for off-track excursions?
Max Verstappen v Lewis Hamilton, Brazil 2021 – no investigation
While some incidents are controversial for the penalties handed out, there are times when debate ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/how-has-f1-penalised-pushing-off-track/6799014/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Latvala “never dreamed” of “perfect\" first year as Toyota WRC boss", + "description": "The former Toyota, Volkswagen and M-Sport driver was installed as team boss of the Japanese marque’s WRC programme this year, taking over the position held by four-time WRC champion Tommi Makinen.
Latvala has overseen a successful 2021 campaign resulting in Toyota reclaiming the manufacturers’ crown from rivals Hyundai, recording nine wins from 12 rounds.
Toyota drivers finished first ...Keep reading", + "content": "The former Toyota, Volkswagen and M-Sport driver was installed as team boss of the Japanese marque’s WRC programme this year, taking over the position held by four-time WRC champion Tommi Makinen.
Latvala has overseen a successful 2021 campaign resulting in Toyota reclaiming the manufacturers’ crown from rivals Hyundai, recording nine wins from 12 rounds.
Toyota drivers finished first ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/latvala-never-dreamed-of-perfect-first-year-as-toyota-wrc-boss/6819397/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:40:24 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 13:27:36 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -286,14 +286,14 @@ "tags": [] }, { - "title": "F1 Grand Prix practice results: Bottas fastest in Qatar", - "description": "Red Bull’s Max Verstappen was fastest in FP1 but it was Bottas who set the quickest time of the day – under the floodlights in FP2 – at 1m23.148s.
Pierre Gasly was an impressive second fastest in both sessions for AlphaTauri.
Qatar Grand Prix FP1 results: Verstappen fastest from ...Keep reading", - "content": "Red Bull’s Max Verstappen was fastest in FP1 but it was Bottas who set the quickest time of the day – under the floodlights in FP2 – at 1m23.148s.
Pierre Gasly was an impressive second fastest in both sessions for AlphaTauri.
Qatar Grand Prix FP1 results: Verstappen fastest from ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/f1-grand-prix-practice-results-bottas-fastest-in-qatar/6798938/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Oliphant's Australia move leaves top BMW BTCC seat open ", + "description": "The 31-year-old got engaged during the summer, and is making the move to the Sydney area to support the career of his fiancee, whose family business has a base Down Under.
After a rookie BTCC season in 2018 with a Ciceley Motorsport Mercedes, Oliphant moved to WSR for 2019. He scored his first win in 2020 in the reversed-grid race on the Brands Hatch GP Circuit, and then claimed another in 2021 ...Keep reading", + "content": "The 31-year-old got engaged during the summer, and is making the move to the Sydney area to support the career of his fiancee, whose family business has a base Down Under.
After a rookie BTCC season in 2018 with a Ciceley Motorsport Mercedes, Oliphant moved to WSR for 2019. He scored his first win in 2020 in the reversed-grid race on the Brands Hatch GP Circuit, and then claimed another in 2021 ...Keep reading", + "category": "BTCC", + "link": "https://www.autosport.com/btcc/news/oliphants-australia-move-leaves-top-bmw-btcc-seat-open-/6819400/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:13:40 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 13:24:19 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -301,14 +301,14 @@ "tags": [] }, { - "title": "Fourmaux expects to rejoin WRC Rally Monza after roll", - "description": "Fourmaux crashed out on stage 3 when he clipped a bank on a tight left hander, sending his Ford Fiesta into a slow roll that resulted in the car landing on top of an armco barrier leaving the Frenchman perched perilously on a mountain slope.
The car has returned to the Monza service park with damage to the front, windscreen, drivers’ door and right front toe link, which is expected to be ...Keep reading", - "content": "Fourmaux crashed out on stage 3 when he clipped a bank on a tight left hander, sending his Ford Fiesta into a slow roll that resulted in the car landing on top of an armco barrier leaving the Frenchman perched perilously on a mountain slope.
The car has returned to the Monza service park with damage to the front, windscreen, drivers’ door and right front toe link, which is expected to be ...Keep reading", - "category": "WRC", - "link": "https://www.autosport.com/wrc/news/fourmaux-expects-to-rejoin-wrc-rally-monza-after-roll/6798919/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Overtaking records in F1: most overtakes in a race, by a driver and more", + "description": "Rightly or wrongly, overtaking is often used by fans as the measure of a good grand prix. More overtaking means more action and therefore more excitement, right?
Not necessarily. Who could argue that watching Daniel Ricciardo cling on to win the Monaco Grand Prix in 2018 despite losing a chunk of power wasn’t compelling? The same could be said of Lewis Hamilton’s victory in the principality ...Keep reading", + "content": "Rightly or wrongly, overtaking is often used by fans as the measure of a good grand prix. More overtaking means more action and therefore more excitement, right?
Not necessarily. Who could argue that watching Daniel Ricciardo cling on to win the Monaco Grand Prix in 2018 despite losing a chunk of power wasn’t compelling? The same could be said of Lewis Hamilton’s victory in the principality ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/overtaking-records-in-f1/6438038/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:08:34 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 12:44:42 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -316,14 +316,14 @@ "tags": [] }, { - "title": "F1 Qatar GP: Bottas tops FP2 from Gasly and Verstappen", - "description": "Just after darkness had fallen at the Losail circuit, Friday’s second session got underway, with Kimi Raikkonen leading the pack out of the pits and setting the opening time during the early running on the harder compounds.
Raikkonen’s 1m41.721s was immediately beaten by Carlos Sainz Jr’s opening time of 1m26.364s – a full effort compared on that hard tyres to the Alfa’s early ...Keep reading", - "content": "Just after darkness had fallen at the Losail circuit, Friday’s second session got underway, with Kimi Raikkonen leading the pack out of the pits and setting the opening time during the early running on the harder compounds.
Raikkonen’s 1m41.721s was immediately beaten by Carlos Sainz Jr’s opening time of 1m26.364s – a full effort compared on that hard tyres to the Alfa’s early ...Keep reading", + "title": "Ferrari \"never compromised\" 2022 F1 car in fight for third", + "description": "The Maranello outfit has been embroiled in a season-long battle for third with McLaren, but has pulled ahead of its British rival in the latter part of the campaign, especially thanks to the results in the last three races.
Ferrari is 39.5 points ahead of McLaren with just two races remaining after the Woking team managed to score just four points in the latest triple-header in Mexico, Brazil ...Keep reading", + "content": "The Maranello outfit has been embroiled in a season-long battle for third with McLaren, but has pulled ahead of its British rival in the latter part of the campaign, especially thanks to the results in the last three races.
Ferrari is 39.5 points ahead of McLaren with just two races remaining after the Woking team managed to score just four points in the latest triple-header in Mexico, Brazil ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/f1-qatar-gp-bottas-tops-fp2-from-gasly-and-verstappen/6798869/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/ferrari-never-compromised-2022-f1-car-in-fight-for-third/6818739/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:07:31 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 11:53:36 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -331,14 +331,14 @@ "tags": [] }, { - "title": "Ducati MotoGP bike “perfect already” – Bagnaia", - "description": "The 2021 championship runner-up scored four wins for Ducati across the past season and qualified on pole five times, marking himself out as a title contender for 2022.
Ducati has brought a raft of new items to the two-day Jerez test this week, including a new engine, fairing and exhaust, with Bagnaia currently topping Friday’s times as of 3pm local time with a 1m36.872s lap set on medium ...Keep reading", - "content": "The 2021 championship runner-up scored four wins for Ducati across the past season and qualified on pole five times, marking himself out as a title contender for 2022.
Ducati has brought a raft of new items to the two-day Jerez test this week, including a new engine, fairing and exhaust, with Bagnaia currently topping Friday’s times as of 3pm local time with a 1m36.872s lap set on medium ...Keep reading", + "title": "MotoGP officially announces eight-part Amazon docuseries", + "description": "Autosport reported back in March at the start of the 2021 campaign that MotoGP was working on its own version of the hugely popular Formula 1 Drive to Survive series, which has aired three seasons on Netflix and has led to a major boost in interest in F1.
It was understood at the time MotoGP owners Dorna Sports were working with MEDIAPRO to produce the new docuseries.
The series will feature ...Keep reading", + "content": "Autosport reported back in March at the start of the 2021 campaign that MotoGP was working on its own version of the hugely popular Formula 1 Drive to Survive series, which has aired three seasons on Netflix and has led to a major boost in interest in F1.
It was understood at the time MotoGP owners Dorna Sports were working with MEDIAPRO to produce the new docuseries.
The series will feature ...Keep reading", "category": "MotoGP", - "link": "https://www.autosport.com/motogp/news/ducati-motogp-bike-perfect-already-bagnaia/6798725/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/motogp/news/motogp-officially-announces-eight-part-amazon-docuseries/6819088/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:03:13 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 11:24:57 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -346,14 +346,14 @@ "tags": [] }, { - "title": "​NASCAR Heat Ultimate Edition+ officially launches on Nintendo Switch", - "description": "MIAMI, FL - November 19, 2021 - Motorsport Games Inc. (NASDAQ: MSGM) (“Motorsport Games”), a leading racing game developer, publisher, and Esports ecosystem provider of official motorsport racing series throughout the world, announces today the official launch of NASCAR Heat Ultimate Edition+ on Nintendo Switch, available to play today. The game is the first-ever NASCAR title to come to ...Keep reading", - "content": "MIAMI, FL - November 19, 2021 - Motorsport Games Inc. (NASDAQ: MSGM) (“Motorsport Games”), a leading racing game developer, publisher, and Esports ecosystem provider of official motorsport racing series throughout the world, announces today the official launch of NASCAR Heat Ultimate Edition+ on Nintendo Switch, available to play today. The game is the first-ever NASCAR title to come to ...Keep reading", - "category": "General", - "link": "https://www.autosport.com/general/news/nascar-heat-ultimate-edition-officially-launches-on-nintendo-switch/6798818/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Susie Wolff appointed CEO of Venturi Formula E team", + "description": "Wolff took on the role of team principal for the Monegasque concern in July 2018 as part of a three-year plan to raise the profile and competitive standing of the outfit, having retained the role when the team found new ownership led by chairman Scott Swid in December 2020.
Ex-Formula 1 driver D'Ambrosio joined Venturi as deputy team principal for the 2021 season upon his retirement from racing ...Keep reading", + "content": "Wolff took on the role of team principal for the Monegasque concern in July 2018 as part of a three-year plan to raise the profile and competitive standing of the outfit, having retained the role when the team found new ownership led by chairman Scott Swid in December 2020.
Ex-Formula 1 driver D'Ambrosio joined Venturi as deputy team principal for the 2021 season upon his retirement from racing ...Keep reading", + "category": "Formula E", + "link": "https://www.autosport.com/formula-e/news/susie-wolff-appointed-ceo-of-venturi-formula-e-team/6819061/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:00:00 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 11:17:37 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -361,14 +361,14 @@ "tags": [] }, { - "title": "Horner: Red Bull ready to protest Mercedes F1 rear wing", - "description": "Horner has reiterated his suspicions that Mercedes may have gained straightline performance through the use of a trick rear wing.
In a tense FIA press conference that featured Horner sitting alongside his Mercedes opposite number Toto Wolff, Horner also referenced “score marks” that Red Bull has observed on the rear wing endplate of the W12, implying that it moved illegally.
Horner ...Keep reading", - "content": "Horner has reiterated his suspicions that Mercedes may have gained straightline performance through the use of a trick rear wing.
In a tense FIA press conference that featured Horner sitting alongside his Mercedes opposite number Toto Wolff, Horner also referenced “score marks” that Red Bull has observed on the rear wing endplate of the W12, implying that it moved illegally.
Horner ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/horner-red-bull-ready-to-protest-mercedes-f1-rear-wing/6798701/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Ticktum joins NIO 333 squad for 2022 Formula E switch", + "description": "A former member of Red Bull and Williams driver development programmes, Ticktum will take the seat vacated by Tom Blomqvist following the Anglo-Swede’s move to the IMSA WeatherTech SportsCar Racing Championship with Meyer Shank Racing.
He will get his first taste of the NIO 333 001 car at the official pre-season test in Valencia on November 29-December 2, but will have to leave the track ...Keep reading", + "content": "A former member of Red Bull and Williams driver development programmes, Ticktum will take the seat vacated by Tom Blomqvist following the Anglo-Swede’s move to the IMSA WeatherTech SportsCar Racing Championship with Meyer Shank Racing.
He will get his first taste of the NIO 333 001 car at the official pre-season test in Valencia on November 29-December 2, but will have to leave the track ...Keep reading", + "category": "Formula E", + "link": "https://www.autosport.com/formula-e/news/ticktum-joins-nio-333-for-2022-formula-e-switch/6818738/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:57:28 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 10:53:43 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -376,14 +376,14 @@ "tags": [] }, { - "title": "Mercedes: right of review not about punishing Verstappen", - "description": "The world champion squad wanted the FIA to reconsider its decision not to investigate Verstappen for pushing Hamilton wide at they battled for the lead at Interlagos last weekend.
However, despite submitting fresh evidence including the forward facing on-board footage from Verstappen’s car, the FIA rejected Mercedes’s case, which means the matter is now closed.
Speaking before the final ...Keep reading", - "content": "The world champion squad wanted the FIA to reconsider its decision not to investigate Verstappen for pushing Hamilton wide at they battled for the lead at Interlagos last weekend.
However, despite submitting fresh evidence including the forward facing on-board footage from Verstappen’s car, the FIA rejected Mercedes’s case, which means the matter is now closed.
Speaking before the final ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/mercedes-right-of-review-not-about-punishing-verstappen/6798659/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Rossi: Improving Andretti Autosport's oval pace vital for 2022 IndyCar title tilt ", + "description": "Andretti Autosport has been strong on street courses for the past four seasons, and Rossi believes his quarter of the team made a breakthrough on natural road courses in the final third of this season.
But he says the team is still missing vital speed on ovals other than Indianapolis, which next year will comprise Texas Motor Speedway, Iowa Speedway and Gateway.
“In August, on our #27 car ...Keep reading", + "content": "Andretti Autosport has been strong on street courses for the past four seasons, and Rossi believes his quarter of the team made a breakthrough on natural road courses in the final third of this season.
But he says the team is still missing vital speed on ovals other than Indianapolis, which next year will comprise Texas Motor Speedway, Iowa Speedway and Gateway.
“In August, on our #27 car ...Keep reading", + "category": "IndyCar", + "link": "https://www.autosport.com/indycar/news/rossi-wants-to-be-fighting-herta-for-2022-indycar-title/6818839/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:41:28 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 10:46:03 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -391,14 +391,14 @@ "tags": [] }, { - "title": "Why Mercedes' right of review into Verstappen's Brazil F1 driving was denied", - "description": "The decision – which centred on the stewards’ insistence that the new footage would not make them question their verdict to consider the incident an example of F1’s ‘let them race’ principle – means Mercedes’ request that the ruling not to investigate Verstappen’s aggressive defensive be re-examined will go no further.
Mercedes’ decision to make an appeal to try and get the ...Keep reading", - "content": "The decision – which centred on the stewards’ insistence that the new footage would not make them question their verdict to consider the incident an example of F1’s ‘let them race’ principle – means Mercedes’ request that the ruling not to investigate Verstappen’s aggressive defensive be re-examined will go no further.
Mercedes’ decision to make an appeal to try and get the ...Keep reading", + "title": "F1 title rivals' war of words too much, says Seidl", + "description": "Horner was summoned to see the stewards after the race in Losail for having hit out at a ‘rogue marshal’ who he blamed for putting out the yellow flags in qualifying that earned Max Verstappen a grid penalty.
The FIA was clear that it could not accept its officials being criticised in such a manner, and Horner duly apologised for his words – both in private to them and later in public via ...Keep reading", + "content": "Horner was summoned to see the stewards after the race in Losail for having hit out at a ‘rogue marshal’ who he blamed for putting out the yellow flags in qualifying that earned Max Verstappen a grid penalty.
The FIA was clear that it could not accept its officials being criticised in such a manner, and Horner duly apologised for his words – both in private to them and later in public via ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/analysis-why-the-stewards-denied-mercedes-a-right-of-review-into-verstappens-brazil-f1-driving/6798618/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/f1-title-rivals-war-of-words-too-much-seidl/6818946/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:35:26 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 10:42:21 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -406,14 +406,14 @@ "tags": [] }, { - "title": "Mazepin to miss Qatar GP FP2 due to Haas F1 chassis change", - "description": "Haas revealed one hour before the start of FP2 at the Losail International Circuit that Mazepin had been ruled out of the session after the team discovered his chassis was damaged.
“Nikita Mazepin will not participate in FP2 as a result of a chassis change being required after FP1,” said a spokesman from the Haas team.
It was confirmed this was due to “damage sustained in ...Keep reading", - "content": "Haas revealed one hour before the start of FP2 at the Losail International Circuit that Mazepin had been ruled out of the session after the team discovered his chassis was damaged.
“Nikita Mazepin will not participate in FP2 as a result of a chassis change being required after FP1,” said a spokesman from the Haas team.
It was confirmed this was due to “damage sustained in ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/mazepin-to-miss-qatar-gp-fp2-due-to-haas-f1-chassis-change/6798577/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "FE and Extreme E race director Elkins appointed in same role for DTM", + "description": "FIA employee Elkins has taken charge of conducting Formula E races since the 2017-18 season before joining Extreme E for its inaugural campaign at the start of this year.
The Los Angeles resident was previously a deputy race director for Formula 1 and its F2 and F3 support series but will now lead a team of 15 to oversee proceedings in the DTM.
This move for the 51-year-old follows Niels ...Keep reading", + "content": "FIA employee Elkins has taken charge of conducting Formula E races since the 2017-18 season before joining Extreme E for its inaugural campaign at the start of this year.
The Los Angeles resident was previously a deputy race director for Formula 1 and its F2 and F3 support series but will now lead a team of 15 to oversee proceedings in the DTM.
This move for the 51-year-old follows Niels ...Keep reading", + "category": "DTM", + "link": "https://www.autosport.com/dtm/news/fe-and-extreme-e-race-director-elkins-appointed-in-same-role-dtm/6818904/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:16:37 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 10:24:26 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -421,14 +421,14 @@ "tags": [] }, { - "title": "Horner: \"No relationship\" with Wolff amid \"most political\" F1 fight", - "description": "As F1 heads towards a conclusion to its first proper title battle between two different teams in the hybrid era, tensions between Red Bull and Mercedes have been steadily building throughout a season of on-track incidents between Max Verstappen and Lewis Hamilton, and off-track bickering about the legality of the opposition's cars.
The Hamilton-Verstappen clash in last week's Sao Paulo Grand ...Keep reading", - "content": "As F1 heads towards a conclusion to its first proper title battle between two different teams in the hybrid era, tensions between Red Bull and Mercedes have been steadily building throughout a season of on-track incidents between Max Verstappen and Lewis Hamilton, and off-track bickering about the legality of the opposition's cars.
The Hamilton-Verstappen clash in last week's Sao Paulo Grand ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/horner-no-relationship-with-wolff-amid-most-political-f1-fight/6798566/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Magazine: Hamilton dominates in F1 Qatar GP", + "description": "Lewis Hamilton won the inaugural Qatar Grand Prix last weekend to reduce Max Verstappen’s lead to just eight points with two rounds to go, and Fernando Alonso scored his first Formula 1 podium for seven years. We explain how it happened as well as rating the drivers.
The battle between Mercedes and Red Bull also got controversial again, with arguments over on-track clashes, rear wings and ...Keep reading", + "content": "Lewis Hamilton won the inaugural Qatar Grand Prix last weekend to reduce Max Verstappen’s lead to just eight points with two rounds to go, and Fernando Alonso scored his first Formula 1 podium for seven years. We explain how it happened as well as rating the drivers.
The battle between Mercedes and Red Bull also got controversial again, with arguments over on-track clashes, rear wings and ...Keep reading", + "category": "General", + "link": "https://www.autosport.com/general/news/magazine-hamilton-dominates-in-f1-qatar-gp/6818850/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:14:47 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 10:05:22 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -436,14 +436,14 @@ "tags": [] }, { - "title": "Full FIA stewards' statement on Mercedes' review request", - "description": "Mercedes requested the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off the track at Interlagos as they fought for the lead of the race.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision. Mercedes submitted forward facing ...Keep reading", - "content": "Mercedes requested the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off the track at Interlagos as they fought for the lead of the race.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision. Mercedes submitted forward facing ...Keep reading", + "title": "Ferrari junior Shwartzman joins Haas F1 for Abu Dhabi rookie test", + "description": "The 22-year-old Russian was current Haas driver Mick Schumacher's team-mate at Prema Racing in F2 last season, finishing fourth in the championship with four wins, and is currently third in this year's standings.
The 2019 FIA Formula 3 champion will take the wheel of the current Haas VF-21 at the rookie test, which will take place the week after the season closing Abu Dhabi Grand Prix in ...Keep reading", + "content": "The 22-year-old Russian was current Haas driver Mick Schumacher's team-mate at Prema Racing in F2 last season, finishing fourth in the championship with four wins, and is currently third in this year's standings.
The 2019 FIA Formula 3 champion will take the wheel of the current Haas VF-21 at the rookie test, which will take place the week after the season closing Abu Dhabi Grand Prix in ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/full-fia-stewards-statement-on-mercedes-review-request/6798492/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/ferrari-junior-shwartzman-joins-haas-f1-for-abu-dhabi-rookie-test/6818792/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 12:46:19 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 09:34:30 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -451,14 +451,14 @@ "tags": [] }, { - "title": "FIA denies Mercedes right to review Verstappen/Hamilton Brazilian GP clash", - "description": "Mercedes had wanted the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off track at Interlagos as they fought for the lead of the race last weekend.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision.
Mercedes duly submitted ...Keep reading", - "content": "Mercedes had wanted the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off track at Interlagos as they fought for the lead of the race last weekend.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision.
Mercedes duly submitted ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/fia-denies-mercedes-right-to-review-verstappen-hamilton-brazilian-gp-clash/6798426/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Podcast: W Series review with Jamie Chadwick and Alice Powell", + "description": "The Veloce Racing star took four wins and finished on the podium in all but one race on her charge to victory.
But it wasn’t without challenges – primarily the one posed by title rival Alice Powell, who took the fight to Chadwick right until the last round, entering the season finale double header level on points.
But will either driver return to the all-female championship next year? ...Keep reading", + "content": "The Veloce Racing star took four wins and finished on the podium in all but one race on her charge to victory.
But it wasn’t without challenges – primarily the one posed by title rival Alice Powell, who took the fight to Chadwick right until the last round, entering the season finale double header level on points.
But will either driver return to the all-female championship next year? ...Keep reading", + "category": "W Series", + "link": "https://www.autosport.com/w-series/news/podcast-w-series-review-with-jamie-chadwick-and-alice-powell/6819413/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 12:26:38 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 09:26:25 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -466,29 +466,29 @@ "tags": [] }, { - "title": "F1 Qatar GP: Verstappen leads from Gasly as drivers get first taste of Losail track", - "description": "Drivers’ championship leader Verstappen enjoyed a decent margin over AlphaTauri’s Pierre Gasly and Mercedes’ Valtteri Bottas by the end of FP1, starting the weekend on the right foot for Red Bull.
First practice in Qatar took place in daytime, meaning it was not fully representative of either qualifying or the race, both of which will begin at dusk in cooler conditions.
Verstappen ...Keep reading", - "content": "Drivers’ championship leader Verstappen enjoyed a decent margin over AlphaTauri’s Pierre Gasly and Mercedes’ Valtteri Bottas by the end of FP1, starting the weekend on the right foot for Red Bull.
First practice in Qatar took place in daytime, meaning it was not fully representative of either qualifying or the race, both of which will begin at dusk in cooler conditions.
Verstappen ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/f1-qatar-gp-verstappen-leads-from-gasly-as-drivers-get-first-taste-of-losail-track/6798244/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Pramac MotoGP manager Guidotti set to move to KTM, Leitner to depart", + "description": "The KTM team, which will enter its sixth season in MotoGP next year, is currently seeking to take a new step forward in its project which, after a successful 2020 in which the Austrian manufacturer secured its first victories in the top tier, has stagnated this past season.
In order to get its MotoGP programme back on track, KTM has elected to bring Guidotti into the fold.
Guidotti, who has ...Keep reading", + "content": "The KTM team, which will enter its sixth season in MotoGP next year, is currently seeking to take a new step forward in its project which, after a successful 2020 in which the Austrian manufacturer secured its first victories in the top tier, has stagnated this past season.
In order to get its MotoGP programme back on track, KTM has elected to bring Guidotti into the fold.
Guidotti, who has ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/pramac-motogp-manager-guidotti-set-to-move-to-ktm-tech-chief-leitner-to-depart/6817098/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:39:13 +0000", - "folder": "00.03 News", + "pubDate": "Thu, 25 Nov 2021 08:09:01 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", - "read": false, + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "WRC Monza: Ogier leads Evans as title rivals trade times", - "description": "The WRC title contenders dominated the first loop of stages at the season finale held on damp and slippery twisty mountain side asphalt roads in northern Italy.
Despite holding a 17 point lead in the title race, Ogier came out of the blocks fast winning three of the four stages to open up 6.5s lead over Evans, who won stage 2.
Hyundai’s Thierry Neuville ended the morning in third, 27.2s ...Keep reading", - "content": "The WRC title contenders dominated the first loop of stages at the season finale held on damp and slippery twisty mountain side asphalt roads in northern Italy.
Despite holding a 17 point lead in the title race, Ogier came out of the blocks fast winning three of the four stages to open up 6.5s lead over Evans, who won stage 2.
Hyundai’s Thierry Neuville ended the morning in third, 27.2s ...Keep reading", + "title": "Toyota abandons plan for Ogier’s maiden Rally1 test", + "description": "Toyota has confirmed to Autosport that an off during a test on asphalt roads in France on Wednesday has forced the team to abandon plans for Ogier to sample the new hybrid Rally1 GR Yaris for the first time.
It is understood Elfyn Evans was at the wheel of the Yaris when the car was involved in an incident. Both Evans and co-driver Scott Martin are believed to have emerged from the incident ...Keep reading", + "content": "Toyota has confirmed to Autosport that an off during a test on asphalt roads in France on Wednesday has forced the team to abandon plans for Ogier to sample the new hybrid Rally1 GR Yaris for the first time.
It is understood Elfyn Evans was at the wheel of the Yaris when the car was involved in an incident. Both Evans and co-driver Scott Martin are believed to have emerged from the incident ...Keep reading", "category": "WRC", - "link": "https://www.autosport.com/wrc/news/wrc-monza-ogier-leads-evans-as-title-rivals-trade-times/6798253/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/wrc/news/toyota-abandons-plan-for-ogiers-maiden-rally1-test/6816895/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:26:01 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 19:16:23 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -496,14 +496,14 @@ "tags": [] }, { - "title": "McLaren: Masi's Verstappen response will set precedent for F1 drivers", - "description": "While race stewards are still deliberating over whether Mercedes should be given a right to review over Verstappen’s defensive actions at Interlagos, McLaren team principal Andreas Seidl thinks a more critical moment will come in Friday night’s drivers’ briefing.
He thinks that, amid questions about inconsistency between the FIA’s hands-off approach to the Verstappen incident and Lando ...Keep reading", - "content": "While race stewards are still deliberating over whether Mercedes should be given a right to review over Verstappen’s defensive actions at Interlagos, McLaren team principal Andreas Seidl thinks a more critical moment will come in Friday night’s drivers’ briefing.
He thinks that, amid questions about inconsistency between the FIA’s hands-off approach to the Verstappen incident and Lando ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/mclaren-masis-verstappen-response-will-set-precedent-for-f1-drivers/6798168/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "How an overcrowded workshop spawned a top historics squad", + "description": "A cramped workshop provided the catalyst for the creation of one of the UK’s leading historic sportscar operations.
When Bob Berridge and his guys at Chamberlain-Synergy Motorsport started having to shuffle cars around – like “one of those Chinese magic puzzles”, he says – to get to the one they needed to work on, it was clearly time for a change. New premises, new partners, a new ...Keep reading", + "content": "A cramped workshop provided the catalyst for the creation of one of the UK’s leading historic sportscar operations.
When Bob Berridge and his guys at Chamberlain-Synergy Motorsport started having to shuffle cars around – like “one of those Chinese magic puzzles”, he says – to get to the one they needed to work on, it was clearly time for a change. New premises, new partners, a new ...Keep reading", + "category": "General", + "link": "https://www.autosport.com/general/news/how-an-overcrowded-workshop-spawned-a-top-historics-squad/6813636/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:01:28 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 16:11:34 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -511,14 +511,14 @@ "tags": [] }, { - "title": "How to get a job in Formula 1 – Engineer, mechanic, hospitality & more", - "description": "Working in Formula 1 is a dream for many people, with the glitz, glamour and speed of the premier motorsport series being too much to resist. Luckily for those people there are a wide range of jobs available in Formula 1, with something to suit any experience and skillset.
To find out more about the jobs in Formula 1, as well as how to get them, read below.

Nikita Mazepin, Haas F1, and ...Keep reading", - "content": "Working in Formula 1 is a dream for many people, with the glitz, glamour and speed of the premier motorsport series being too much to resist. Luckily for those people there are a wide range of jobs available in Formula 1, with something to suit any experience and skillset.
To find out more about the jobs in Formula 1, as well as how to get them, read below.

Nikita Mazepin, Haas F1, and ...Keep reading", + "title": "Horner: Turn 6 deficit behind Red Bull's Qatar F1 gap to Mercedes", + "description": "Mercedes' Lewis Hamilton dominated the Qatar GP weekend to take a second consecutive win, which brought the championship gap with Red Bull's Max Verstappen down to eight points with two races left to run of a hotly contested 2021 world championship.
Verstappen was in for a weekend of \"damage limitation\" after coming up short in qualifying and being handed a five-place grid penalty, which he ...Keep reading", + "content": "Mercedes' Lewis Hamilton dominated the Qatar GP weekend to take a second consecutive win, which brought the championship gap with Red Bull's Max Verstappen down to eight points with two races left to run of a hotly contested 2021 world championship.
Verstappen was in for a weekend of \"damage limitation\" after coming up short in qualifying and being handed a five-place grid penalty, which he ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/how-to-get-a-job-in-f1-engineer-mechanic-more/6678392/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/horner-turn-6-deficit-behind-red-bulls-qatar-f1-gap-to-mercedes/6816109/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 10:40:55 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 15:59:33 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -526,14 +526,14 @@ "tags": [] }, { - "title": "Why Qatar could be a track limits nightmare for the FIA", - "description": "Losail may be a brand new venue for F1, but rather than wait to see what happens in FP1, race director Michael Masi attempted to pre-empt any problems by naming five potential trouble spots in the notes he issued to teams on Thursday.
They are the exits of Turn 4, a ninety-degree right early in the lap, the fast sequence through Turns 12, 13 and 14, and the final corner at Turn 16.
As usual ...Keep reading", - "content": "Losail may be a brand new venue for F1, but rather than wait to see what happens in FP1, race director Michael Masi attempted to pre-empt any problems by naming five potential trouble spots in the notes he issued to teams on Thursday.
They are the exits of Turn 4, a ninety-degree right early in the lap, the fast sequence through Turns 12, 13 and 14, and the final corner at Turn 16.
As usual ...Keep reading", + "title": "Who are the best British F1 drivers statistically? Hamilton, Mansell & more", + "description": "Ranking the best British drivers in Formula 1 history is no easy task as it's an argument that can generate hours of debate, but statistically the top 10 can be declared.
While statistics rarely reveal the full picture to decide any dispute, they can provide a window on the wider topic, albeit with a few ifs and buts required to provide context around the feats.
Lewis Hamilton has a strong ...Keep reading", + "content": "Ranking the best British drivers in Formula 1 history is no easy task as it's an argument that can generate hours of debate, but statistically the top 10 can be declared.
While statistics rarely reveal the full picture to decide any dispute, they can provide a window on the wider topic, albeit with a few ifs and buts required to provide context around the feats.
Lewis Hamilton has a strong ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/why-qatar-could-be-a-track-limits-nightmare-for-the-fia/6798056/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/who-are-the-best-british-f1-drivers-statistically-hamilton-mansell-more-4980742/4980742/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 10:24:51 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 15:52:38 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -541,14 +541,14 @@ "tags": [] }, { - "title": "VCO ProSIM SERIES: Reigning champions Team VRS take first race win", - "description": "On the grid were 66 Dallara P217 LMP2 cars split into two heat races, with the top 15 from each then making it into a final Bonus Race. Each car has two designated drivers, one professional racing Esports and one from real-world motorsport, with a driver swap required in each race.
Team Redline’s Maximilian Benecke and Chris Lulham won the first Bonus Race at the Red Bull Ring two ...Keep reading", - "content": "On the grid were 66 Dallara P217 LMP2 cars split into two heat races, with the top 15 from each then making it into a final Bonus Race. Each car has two designated drivers, one professional racing Esports and one from real-world motorsport, with a driver swap required in each race.
Team Redline’s Maximilian Benecke and Chris Lulham won the first Bonus Race at the Red Bull Ring two ...Keep reading", - "category": "Esports", - "link": "https://www.autosport.com/esports/news/vco-prosim-series-reigning-champions-team-vrs-take-first-race-win/6799316/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Hyundai’s 2022 WRC challenger will look “a lot” different to prototype", + "description": "The Korean marque has so far been conducting tests with a prototype Rally1 i20 while its team at Alzenau, Germany have been working on effectively an all-new i20, with only the wheels being carried over from the prototype.
In October the team put its prototype through a 1500km rally simulation in northern Italy to mimic the conditions it will face next year in order to understand the challenges ...Keep reading", + "content": "The Korean marque has so far been conducting tests with a prototype Rally1 i20 while its team at Alzenau, Germany have been working on effectively an all-new i20, with only the wheels being carried over from the prototype.
In October the team put its prototype through a 1500km rally simulation in northern Italy to mimic the conditions it will face next year in order to understand the challenges ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/hyundais-2022-wrc-challenger-will-look-a-lot-different-to-prototype/6816323/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 10:00:28 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 15:26:03 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -556,14 +556,14 @@ "tags": [] }, { - "title": "Hamilton dismisses ‘DAS 2’ theories over steering wheel movement", - "description": "Rival Red Bull has been intrigued by the way in which the rear of the Mercedes drops down at high speed, to help stall the diffuser and reduce downforce and drag.
The Milton Keynes-based outfit thinks that this behaviour has been critical to a step forward in the straightline speed of the Mercedes over the past few races.
Amid part of the extra scrutiny on Mercedes’ rear wings at the ...Keep reading", - "content": "Rival Red Bull has been intrigued by the way in which the rear of the Mercedes drops down at high speed, to help stall the diffuser and reduce downforce and drag.
The Milton Keynes-based outfit thinks that this behaviour has been critical to a step forward in the straightline speed of the Mercedes over the past few races.
Amid part of the extra scrutiny on Mercedes’ rear wings at the ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/hamilton-dismisses-das-2-theories-over-steering-wheel-movement/6797910/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Askew joins Dennis in Andretti Formula E squad", + "description": "Askew will pilot the #28 BMW iFE.021 for Andretti in Season 8, vacating the seat left by the Nissan e.dams-bound Maximilian Guenther, becoming the first American driver in FE since Scott Speed's four-round tenure for the team in 2014-15.
Despite scoring a podium in his rookie IndyCar campaign in 2020 driving for Arrow McLaren SP, he suffered a temporary loss of form due to a late-diagnosed ...Keep reading", + "content": "Askew will pilot the #28 BMW iFE.021 for Andretti in Season 8, vacating the seat left by the Nissan e.dams-bound Maximilian Guenther, becoming the first American driver in FE since Scott Speed's four-round tenure for the team in 2014-15.
Despite scoring a podium in his rookie IndyCar campaign in 2020 driving for Arrow McLaren SP, he suffered a temporary loss of form due to a late-diagnosed ...Keep reading", + "category": "Formula E", + "link": "https://www.autosport.com/formula-e/news/askew-joins-dennis-in-andretti-formula-e-squad/6815902/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:50:30 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 14:02:57 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -571,14 +571,14 @@ "tags": [] }, { - "title": "Giovinazzi vows to remain professional with Alfa Romeo in final three races", - "description": "Alfa Romeo announced earlier this week that Giovinazzi would be leaving the team at the end of the season, with Formula 2 title contender Guanyu Zhou taking his seat.
In confirming his departure from the team, Giovinazzi wrote on social media that \"when money rules it can be ruthless\", hinting at the financial backing Zhou will be bringing next year.
It led to criticism from Vasseur, who ...Keep reading", - "content": "Alfa Romeo announced earlier this week that Giovinazzi would be leaving the team at the end of the season, with Formula 2 title contender Guanyu Zhou taking his seat.
In confirming his departure from the team, Giovinazzi wrote on social media that \"when money rules it can be ruthless\", hinting at the financial backing Zhou will be bringing next year.
It led to criticism from Vasseur, who ...Keep reading", + "title": "Aston Martin headhunts Mercedes F1 aero chief ", + "description": "Blandin is still working at Brackley and is not expected to join his new team until October next year, after he has completed his gardening leave.
His appointment comes as a surprise as he is the first key player to be headhunted from Mercedes, the power unit and gearbox supplier to Aston Martin.
An Aston spokesperson told Autosport: “We can confirm that Eric Blandin will begin working for ...Keep reading", + "content": "Blandin is still working at Brackley and is not expected to join his new team until October next year, after he has completed his gardening leave.
His appointment comes as a surprise as he is the first key player to be headhunted from Mercedes, the power unit and gearbox supplier to Aston Martin.
An Aston spokesperson told Autosport: “We can confirm that Eric Blandin will begin working for ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/giovinazzi-vows-to-remain-professional-with-alfa-romeo-in-final-three-races/6797846/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/aston-martin-headhunts-mercedes-aero-chief-blandin/6815987/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:13:31 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 13:09:35 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -586,14 +586,14 @@ "tags": [] }, { - "title": "Verstappen: F1 action against Red Bull shows Mercedes' \"true nature\"", - "description": "Red Bull and Mercedes have locked horns on a number of occasions this year amid their title battle, with the latest incidents flaring up last weekend at Interlagos.
Lewis Hamilton was thrown out of qualifying due to a DRS technical breach, but fought back to score victory on Sunday after a tense battle with Verstappen for the lead.
Verstappen appeared to run Hamilton wide at Turn 4 trying to ...Keep reading", - "content": "Red Bull and Mercedes have locked horns on a number of occasions this year amid their title battle, with the latest incidents flaring up last weekend at Interlagos.
Lewis Hamilton was thrown out of qualifying due to a DRS technical breach, but fought back to score victory on Sunday after a tense battle with Verstappen for the lead.
Verstappen appeared to run Hamilton wide at Turn 4 trying to ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/verstappen-f1-action-against-red-bull-shows-mercedes-true-nature/6797827/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Vinales “needs much more” before Aprilia MotoGP bike is his", + "description": "The nine-time MotoGP race winner switch to Aprilia from Yamaha ahead of the San Marino Grand Prix, after losing his ride with the latter following an irreparable souring of relations which led to him deliberately trying to damage his M1’s engine in the Styrian GP.
Having used the final races of 2021 as extended test sessions on the Aprilia, Vinales continued that work at the post-season Jerez ...Keep reading", + "content": "The nine-time MotoGP race winner switch to Aprilia from Yamaha ahead of the San Marino Grand Prix, after losing his ride with the latter following an irreparable souring of relations which led to him deliberately trying to damage his M1’s engine in the Styrian GP.
Having used the final races of 2021 as extended test sessions on the Aprilia, Vinales continued that work at the post-season Jerez ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/vinales-needs-much-more-before-aprilia-motogp-bike-is-his/6815934/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:06:38 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 12:55:31 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -601,14 +601,14 @@ "tags": [] }, { - "title": "M-Sport announces Greensmith will retain WRC seat for 2022", - "description": "Greensmith had been expected to retain his set with the Ford operation for what will be his third full-time campaign in WRC’s top tier, with confirmation arriving during shakedown for this weekend’s Rally Monza season finale.
The 24-year-old joins new signing Craig Breen as confirmed drivers to pilot M-Sport’s all-new Ford Puma, developed to contest the WRC’s new hybrid Rally1 ...Keep reading", - "content": "Greensmith had been expected to retain his set with the Ford operation for what will be his third full-time campaign in WRC’s top tier, with confirmation arriving during shakedown for this weekend’s Rally Monza season finale.
The 24-year-old joins new signing Craig Breen as confirmed drivers to pilot M-Sport’s all-new Ford Puma, developed to contest the WRC’s new hybrid Rally1 ...Keep reading", - "category": "WRC", - "link": "https://www.autosport.com/wrc/news/m-sport-announces-greensmith-will-retain-wrc-seat-for-2022/6795935/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Edwards bags BRC hat-trick as Mitchell brothers march to IndyKa 500 success", + "description": "If Matt Edwards has taught followers of the British Rally Championship any valuable life lesson it is that you should never give up, even when the odds appear to be heavily weighted against you.
Going into last weekend’s deciding round, the Ulster Rally, Edwards had it all to do. He trailed title rival Osian Pryce by eight points, and he needed to win in a car he’s had minimal opportunities ...Keep reading", + "content": "If Matt Edwards has taught followers of the British Rally Championship any valuable life lesson it is that you should never give up, even when the odds appear to be heavily weighted against you.
Going into last weekend’s deciding round, the Ulster Rally, Edwards had it all to do. He trailed title rival Osian Pryce by eight points, and he needed to win in a car he’s had minimal opportunities ...Keep reading", + "category": "National", + "link": "https://www.autosport.com/national/news/edwards-bags-brc-hat-trick-as-mitchell-brothers-march-to-indyka-500-success/6815560/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:54:58 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 12:37:02 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -616,14 +616,14 @@ "tags": [] }, { - "title": "Mercedes' Brazilian GP appeal verdict delayed till Friday", - "description": "Following the submission of fresh video evidence by Mercedes, the team had requested that the FIA look again at whether or not Verstappen broke the rules in his defence against Lewis Hamilton at last weekend’s Brazilian Grand Prix.
The matter revolves around Verstappen’s defensive driving at Turn 4 on lap 48, when the Red Bull driver crowded out Hamilton on the exit of the corner as he too ...Keep reading", - "content": "Following the submission of fresh video evidence by Mercedes, the team had requested that the FIA look again at whether or not Verstappen broke the rules in his defence against Lewis Hamilton at last weekend’s Brazilian Grand Prix.
The matter revolves around Verstappen’s defensive driving at Turn 4 on lap 48, when the Red Bull driver crowded out Hamilton on the exit of the corner as he too ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/verstappen-brazilian-gp-verdict-/6795748/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Caldwell to make F2 debut for Campos Racing in final two rounds", + "description": "The 19-year-old F3 driver will join the team at Jeddah and Yas Marina alongside Ralph Boschung.
Caldwell did not take part in the recent F3 post-season test in Valencia and says he is targeting a seat on the F2 grid in 2022.
In 2021, he took one F3 win and three further podiums with Prema Racing, finishing eighth overall.
It was his second season in the third tier, following a rookie ...Keep reading", + "content": "The 19-year-old F3 driver will join the team at Jeddah and Yas Marina alongside Ralph Boschung.
Caldwell did not take part in the recent F3 post-season test in Valencia and says he is targeting a seat on the F2 grid in 2022.
In 2021, he took one F3 win and three further podiums with Prema Racing, finishing eighth overall.
It was his second season in the third tier, following a rookie ...Keep reading", + "category": "FIA F2", + "link": "https://www.autosport.com/formula2/news/caldwell-to-make-f2-debut-for-campos-racing-in-final-two-rounds/6815875/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:30:26 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 12:31:07 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -631,14 +631,14 @@ "tags": [] }, { - "title": "Quartararo needs to see Yamaha progress before signing 2023 MotoGP deal", - "description": "The first pre-season test of the 2022 season got underway on Thursday at Jerez, with Quartararo ending up ninth fastest and 0.707 seconds off the pace.
The world champion tested Yamaha’s 2022 bike, but sounded flat when he said the motorcycle was basically the same as the prototype he tested at Misano in September having admittedly expected more new items.
With Yamaha keen to get ...Keep reading", - "content": "The first pre-season test of the 2022 season got underway on Thursday at Jerez, with Quartararo ending up ninth fastest and 0.707 seconds off the pace.
The world champion tested Yamaha’s 2022 bike, but sounded flat when he said the motorcycle was basically the same as the prototype he tested at Misano in September having admittedly expected more new items.
With Yamaha keen to get ...Keep reading", - "category": "MotoGP", - "link": "https://www.autosport.com/motogp/news/quartararo-needs-to-see-yamaha-progress-before-signing-2023-motogp-deal/6795736/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "NIO 333 FE team unveils senior management shake-up", + "description": "Following ex-Dragon Penske Autosport driver Nico Muller landing second in the controversial Valencia E-Prix last season, NIO 333 is the only team not to have scored a podium since the start of 2018-19.
Lisheng Racing - circuit owner and promoter of the Chinese Touring Car Championship - acquired the majority stake in NIO 333 on the eve of the 2019-20 campaign.
Despite switching powertrain ...Keep reading", + "content": "Following ex-Dragon Penske Autosport driver Nico Muller landing second in the controversial Valencia E-Prix last season, NIO 333 is the only team not to have scored a podium since the start of 2018-19.
Lisheng Racing - circuit owner and promoter of the Chinese Touring Car Championship - acquired the majority stake in NIO 333 on the eve of the 2019-20 campaign.
Despite switching powertrain ...Keep reading", + "category": "Formula E", + "link": "https://www.autosport.com/formula-e/news/nio-333-fe-team-unveils-senior-management-shake-up/6815847/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 17:51:16 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 12:24:39 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -646,14 +646,14 @@ "tags": [] }, { - "title": "Nakagami tops first test of 2022 MotoGP pre-season at Jerez", - "description": "Just four days after the 2021 season concluded in Valencia, the opening two-day test of the 2022 pre-season got underway on Thursday at Jerez.
Very little running took place in the opening hour of running, with Luca Marini putting the new VR46 Ducati top of the pile with a 1m43.364s.
But by hour two the track burst into life, with Nakagami ending it fastest of all as he got to work ...Keep reading", - "content": "Just four days after the 2021 season concluded in Valencia, the opening two-day test of the 2022 pre-season got underway on Thursday at Jerez.
Very little running took place in the opening hour of running, with Luca Marini putting the new VR46 Ducati top of the pile with a 1m43.364s.
But by hour two the track burst into life, with Nakagami ending it fastest of all as he got to work ...Keep reading", + "title": "MotoGP to use fully sustainable fuel from 2027", + "description": "As part of a push towards a greener future for the world’s leading motorcycle racing series, MotoGP has announced it will work with the existing manufacturers on the grid to develop sustainable fuels this decade.
By 2024 the series is aiming to have all three classes of the world championship – including Moto2 and Moto3 – to use fuels of 40% non-fossil origin.
And by 2027, all three ...Keep reading", + "content": "As part of a push towards a greener future for the world’s leading motorcycle racing series, MotoGP has announced it will work with the existing manufacturers on the grid to develop sustainable fuels this decade.
By 2024 the series is aiming to have all three classes of the world championship – including Moto2 and Moto3 – to use fuels of 40% non-fossil origin.
And by 2027, all three ...Keep reading", "category": "MotoGP", - "link": "https://www.autosport.com/motogp/news/nakagami-tops-first-test-of-2022-motogp-pre-season-at-jerez/6795614/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/motogp/news/motogp-to-use-fully-sustainable-fuel-from-2027/6815809/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 17:07:27 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 12:07:39 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -661,14 +661,14 @@ "tags": [] }, { - "title": "Gardner thinks Fernandez's Moto2 title claims “bullshit”", - "description": "Gardner beat rookie team-mate Fernandez to this year’s Moto2 crown in a battle that went down to the wire, with the former taking the crown by four points despite winning five races to Fernandez’s eight.
In an interview with Autosport’s sister Spanish language site Motorsport.es, Fernandez says he was the “moral champion” and that the Ajo team made it harder for him to win the ...Keep reading", - "content": "Gardner beat rookie team-mate Fernandez to this year’s Moto2 crown in a battle that went down to the wire, with the former taking the crown by four points despite winning five races to Fernandez’s eight.
In an interview with Autosport’s sister Spanish language site Motorsport.es, Fernandez says he was the “moral champion” and that the Ajo team made it harder for him to win the ...Keep reading", - "category": "MotoGP", - "link": "https://www.autosport.com/motogp/news/gardner-thinks-fernandezs-moto2-title-claims-bullshit/6795568/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "What could have been: The Norris-Herta-Sutton fight that never was", + "description": "Somewhere in a parallel universe, junior single-seater cognoscenti are still raving about a 2015 MSA Formula season in which McLaren Formula 1 star Lando Norris fought it out with fellow explosive talents such as IndyCar sensation Colton Herta, Formula 2 maverick Dan Ticktum… and newly crowned three-time British Touring Car champion Ash Sutton.
Sutton had a deal in place to compete in what ...Keep reading", + "content": "Somewhere in a parallel universe, junior single-seater cognoscenti are still raving about a 2015 MSA Formula season in which McLaren Formula 1 star Lando Norris fought it out with fellow explosive talents such as IndyCar sensation Colton Herta, Formula 2 maverick Dan Ticktum… and newly crowned three-time British Touring Car champion Ash Sutton.
Sutton had a deal in place to compete in what ...Keep reading", + "category": "BTCC", + "link": "https://www.autosport.com/btcc/news/what-could-have-been-the-norris-herta-sutton-fight-that-never-was/6813316/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 16:54:22 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 11:47:00 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -676,14 +676,14 @@ "tags": [] }, { - "title": "Mercedes took \"different viewpoint\" on Brazil clash after seeing full footage", - "description": "The pair went wide at Interlagos’ Turn 4 fast left-hander, as Hamilton had moved ahead of Verstappen – attacking on the corner’s outside line early in their respective third stints.
The Red Bull driver then responded by braking deeper and sending his car rapidly inside Hamilton’s as they approached the apex, with both going wide in an incident that was not referred to the Sao Paulo ...Keep reading", - "content": "The pair went wide at Interlagos’ Turn 4 fast left-hander, as Hamilton had moved ahead of Verstappen – attacking on the corner’s outside line early in their respective third stints.
The Red Bull driver then responded by braking deeper and sending his car rapidly inside Hamilton’s as they approached the apex, with both going wide in an incident that was not referred to the Sao Paulo ...Keep reading", + "title": "Hamilton: Mercedes F1 2021 car is a ‘monster diva’", + "description": "While the Brackley-based squad remains locked in a tight fight with Red Bull for the F1 titles, it has had to battle through an intense campaign where it has sometimes been on the back foot.
This was especially true in pre-season testing, when the impact of new aero regulations in changing the balance of the Mercedes car became apparent.
Speaking to selected media, including Autosport, about ...Keep reading", + "content": "While the Brackley-based squad remains locked in a tight fight with Red Bull for the F1 titles, it has had to battle through an intense campaign where it has sometimes been on the back foot.
This was especially true in pre-season testing, when the impact of new aero regulations in changing the balance of the Mercedes car became apparent.
Speaking to selected media, including Autosport, about ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/mercedes-moved-to-different-viewpoint-on-brazil-incident-after-seeing-on-board-video/6795516/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/hamilton-mercedes-f1-2021-car-is-a-monster-diva/6815713/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 16:39:49 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 11:42:41 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -691,14 +691,14 @@ "tags": [] }, { - "title": "Hamilton: Important for F1 to create scrutiny on human rights issues", - "description": "F1 will stage its first race in Qatar this weekend ahead of a 10-year deal for the state to host a grand prix from 2023. In two weeks’ time, Saudi Arabia will host its first grand prix as part of a long-term agreement that is set to give the series four races in the Middle East.
Human rights are an ongoing issue in both countries, with Amnesty International calling their records “extremely ...Keep reading", - "content": "F1 will stage its first race in Qatar this weekend ahead of a 10-year deal for the state to host a grand prix from 2023. In two weeks’ time, Saudi Arabia will host its first grand prix as part of a long-term agreement that is set to give the series four races in the Middle East.
Human rights are an ongoing issue in both countries, with Amnesty International calling their records “extremely ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/hamilton-important-for-f1-to-create-scrutiny-on-human-rights-issues/6795506/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Rosenqvist and O'Ward to join Zak Brown for Gulf 12 Hours", + "description": "Rosenqvist and O'Ward will drive a McLaren 570S GT4 for the British United Autosports squad alongside Brown and his fellow team owner Richard Dean in the two six-hour GT races on the Yas Marina circuit that make up the fixture on 8 January.
A return to the Middle East enduro for United for the first time since 2019 follows two failed attempts by McLaren Racing boss Brown to race in the GT4 ...Keep reading", + "content": "Rosenqvist and O'Ward will drive a McLaren 570S GT4 for the British United Autosports squad alongside Brown and his fellow team owner Richard Dean in the two six-hour GT races on the Yas Marina circuit that make up the fixture on 8 January.
A return to the Middle East enduro for United for the first time since 2019 follows two failed attempts by McLaren Racing boss Brown to race in the GT4 ...Keep reading", + "category": "WEC", + "link": "https://www.autosport.com/wec/news/rosenqvist-and-oward-to-join-zak-brown-for-gulf-12-hours/6815653/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 16:29:44 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 11:42:19 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -706,14 +706,14 @@ "tags": [] }, { - "title": "NASCAR doesn't want Next Gen car to be \"easy to drive\"", - "description": "The first day of a group test at the Charlotte Motor Speedway oval on Wednesday proved eventful, with Austin Dillon crashing his Richard Childress Chevrolet, while newly-crowned 2021 champion Kyle Larson and veteran Denny Hamlin had spins.
Hendrick Motorsports driver Alex Bowman reported that the new car was “real edgy and hard to feel”, saying that he found it difficult to “know how much ...Keep reading", - "content": "The first day of a group test at the Charlotte Motor Speedway oval on Wednesday proved eventful, with Austin Dillon crashing his Richard Childress Chevrolet, while newly-crowned 2021 champion Kyle Larson and veteran Denny Hamlin had spins.
Hendrick Motorsports driver Alex Bowman reported that the new car was “real edgy and hard to feel”, saying that he found it difficult to “know how much ...Keep reading", - "category": "NASCAR", - "link": "https://www.autosport.com/nascar/news/nascar-doesnt-want-next-gen-car-to-be-easy-to-drive/6795384/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "The white lie that helped van Gisbergen win the Supercars title", + "description": "The Kiwi made a near perfect start to the 2021 season way back in February with two wins at Mount Panorama, only to have his title hopes almost dashed by a mountain bike crash just a fortnight before Round 2 at Sandown.
He underwent surgery on a broken collarbone immediately before beginning a rapid recovery process that involved daily stints in a hyperbaric chamber.
After testing a BMW ...Keep reading", + "content": "The Kiwi made a near perfect start to the 2021 season way back in February with two wins at Mount Panorama, only to have his title hopes almost dashed by a mountain bike crash just a fortnight before Round 2 at Sandown.
He underwent surgery on a broken collarbone immediately before beginning a rapid recovery process that involved daily stints in a hyperbaric chamber.
After testing a BMW ...Keep reading", + "category": "Supercars", + "link": "https://www.autosport.com/supercars/news/the-white-lie-that-helped-van-gisbergen-win-the-supercars-title/6815510/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 15:57:43 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 10:44:50 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -721,14 +721,14 @@ "tags": [] }, { - "title": "How the Aston Martin Autosport BRDC Award is judged", - "description": "It’s back. After a year in hibernation thanks to you-know-what, the Aston Martin Autosport BRDC Young Driver of the Year Award burst back into life for 2021. Four young British racers and a new guest judge helped to make this year’s contest, which kicked off last month, one of the best yet.
The details of the process get tweaked each year, but the overall structure is well established. The ...Keep reading", - "content": "It’s back. After a year in hibernation thanks to you-know-what, the Aston Martin Autosport BRDC Young Driver of the Year Award burst back into life for 2021. Four young British racers and a new guest judge helped to make this year’s contest, which kicked off last month, one of the best yet.
The details of the process get tweaked each year, but the overall structure is well established. The ...Keep reading", - "category": "General", - "link": "https://www.autosport.com/general/news/how-the-aston-martin-autosport-brdc-award-is-judged/6794286/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "How to become a Number 1 Mechanic in GT Racing – Qualifications, skills & more", + "description": "To find out what it takes to be a mechanic for a GT3 car, we spoke to Todd Pannell – a Number 1 Mechanic for Jota Sport – to find out how to become a mechanic, what qualifications it takes, and what skills you need to succeed.
What is your role?
My role as a Number 1 Mechanic is to manage the preparation and maintenance of the McLaren 720S GT3 in the workshop and at the circuit. One of ...Keep reading", + "content": "To find out what it takes to be a mechanic for a GT3 car, we spoke to Todd Pannell – a Number 1 Mechanic for Jota Sport – to find out how to become a mechanic, what qualifications it takes, and what skills you need to succeed.
What is your role?
My role as a Number 1 Mechanic is to manage the preparation and maintenance of the McLaren 720S GT3 in the workshop and at the circuit. One of ...Keep reading", + "category": "GT", + "link": "https://www.autosport.com/gt/news/how-to-become-mechanic-gt-racing/6815550/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 15:34:27 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 10:42:41 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -736,14 +736,14 @@ "tags": [] }, { - "title": "Leclerc: Verstappen's Brazil move sets F1 precedent ", - "description": "After Verstappen kept Lewis Hamilton behind by edging him off the road at Turn 4 in last week's race at Interlagos, the stewards opted not to open a formal investigation into the incident during the race, in which Verstappen eventually finished second.
However, Mercedes subsequently submitted a request of a right to appeal triggered by video evidence from Verstappen’s forward facing camera ...Keep reading", - "content": "After Verstappen kept Lewis Hamilton behind by edging him off the road at Turn 4 in last week's race at Interlagos, the stewards opted not to open a formal investigation into the incident during the race, in which Verstappen eventually finished second.
However, Mercedes subsequently submitted a request of a right to appeal triggered by video evidence from Verstappen’s forward facing camera ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/leclerc-will-adjust-f1-approach-if-verstappen-move-goes-unpunished/6795318/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Future W Series champions could get FIA F3 seat, says Mouton", + "description": "Mouton, who heads the FIA's Women in Motorsport Commission, thinks it would be “fantastic” for the title winner to secure a seat in the feeder series, and says “it is exactly what we have proposed to them.”
Mouton says she has “nothing against the W Series because it is promotion for women in motorsport but I don’t agree with the objective and to put young women only together ...Keep reading", + "content": "Mouton, who heads the FIA's Women in Motorsport Commission, thinks it would be “fantastic” for the title winner to secure a seat in the feeder series, and says “it is exactly what we have proposed to them.”
Mouton says she has “nothing against the W Series because it is promotion for women in motorsport but I don’t agree with the objective and to put young women only together ...Keep reading", + "category": "FIA F3", + "link": "https://www.autosport.com/w-series/news/future-w-series-champions-could-get-fia-f3-seat-says-mouton/6815554/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 15:31:19 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 10:39:10 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -751,14 +751,14 @@ "tags": [] }, { - "title": "Tony Dron obituary: Touring car racer and journalist dies aged 75", - "description": "At six feet five, Dron viewed the world and the cars he drove from a higher plane than most on this planet.
That he was far too tall to be a single-seater racer did not deter Dron. From 1968, when he forged a friendship with future Formula 1 world champion James Hunt in the hurly-burly of Formula Ford’s first full season, he left a lasting impression both on track and in the eloquent words he ...Keep reading", - "content": "At six feet five, Dron viewed the world and the cars he drove from a higher plane than most on this planet.
That he was far too tall to be a single-seater racer did not deter Dron. From 1968, when he forged a friendship with future Formula 1 world champion James Hunt in the hurly-burly of Formula Ford’s first full season, he left a lasting impression both on track and in the eloquent words he ...Keep reading", - "category": "BTCC", - "link": "https://www.autosport.com/btcc/news/tony-dron-obituary-touring-car-racer-and-journalist-dies-aged-75/6795276/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Solberg didn’t want Rally Monza to stop after career best WRC finish", + "description": "The 20-year-old surprised himself by matching the pace of his more experienced Hyundai teammates Thierry Neuville, Dani Sordo and Teemu Suninen at times across the three day asphalt contest in Italy on his way to fifth at the finish.
Solberg’s display was by far his most accomplished since stepping up to WRC machinery, having previously claimed da pair of seventh finishes on debut at Arctic ...Keep reading", + "content": "The 20-year-old surprised himself by matching the pace of his more experienced Hyundai teammates Thierry Neuville, Dani Sordo and Teemu Suninen at times across the three day asphalt contest in Italy on his way to fifth at the finish.
Solberg’s display was by far his most accomplished since stepping up to WRC machinery, having previously claimed da pair of seventh finishes on debut at Arctic ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/solberg-didnt-want-rally-monza-to-stop-after-career-best-wrc-finish/6815549/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 15:24:21 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 10:38:09 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -766,14 +766,14 @@ "tags": [] }, { - "title": "Verstappen defends steering inputs in Brazil F1 battle with Hamilton", - "description": "The Red Bull driver’s behaviour is under the spotlight in Qatar this weekend with Mercedes asking the FIA for a right to review its decision not to investigate the incident with Hamilton on lap 48 at Interlagos.
Mercedes' request has been prompted by the emergence earlier this week of the front-facing onboard footage from Verstappen’s car, which the FIA did not have access to during the ...Keep reading", - "content": "The Red Bull driver’s behaviour is under the spotlight in Qatar this weekend with Mercedes asking the FIA for a right to review its decision not to investigate the incident with Hamilton on lap 48 at Interlagos.
Mercedes' request has been prompted by the emergence earlier this week of the front-facing onboard footage from Verstappen’s car, which the FIA did not have access to during the ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/verstappen-defends-driving-in-brazil-f1-battle-with-hamilton/6795138/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Newgarden: 2023 downtown Detroit layout is “fantastic for racing”", + "description": "Earlier this month, Detroit City Council approved moving the Chevrolet Detroit Grand Prix from Belle Isle, where the race has been held since 2007, back to downtown, where it originated back in 1982 as a Formula 1 event, before evolving into an IndyCar race in 1989.
The new track will use some of the original course, and Team Penske-Chevrolet’s two-time champion Josef Newgarden says he ...Keep reading", + "content": "Earlier this month, Detroit City Council approved moving the Chevrolet Detroit Grand Prix from Belle Isle, where the race has been held since 2007, back to downtown, where it originated back in 1982 as a Formula 1 event, before evolving into an IndyCar race in 1989.
The new track will use some of the original course, and Team Penske-Chevrolet’s two-time champion Josef Newgarden says he ...Keep reading", + "category": "IndyCar", + "link": "https://www.autosport.com/indycar/news/newgarden-2023-downtown-detroit-layout-is-fantastic-for-racing/6815426/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 14:33:11 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 09:55:04 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -781,14 +781,14 @@ "tags": [] }, { - "title": "Vettel: \"A bit unnecessary\" to review Hamilton/Verstappen incident", - "description": "Verstappen and Hamilton went wheel-to-wheel while fighting for the win at Interlagos last Sunday, leading to both cars going off at Turn 4 as Verstappen fought to hold on to the position.
Mercedes F1 boss Toto Wolf called it \"laughable\" the stewards did not give Verstappen a penalty or even launch an investigation into the move, but it emerged that race control did not have access to the Red ...Keep reading", - "content": "Verstappen and Hamilton went wheel-to-wheel while fighting for the win at Interlagos last Sunday, leading to both cars going off at Turn 4 as Verstappen fought to hold on to the position.
Mercedes F1 boss Toto Wolf called it \"laughable\" the stewards did not give Verstappen a penalty or even launch an investigation into the move, but it emerged that race control did not have access to the Red ...Keep reading", + "title": "Russell: everyone at Williams frustrated by recent form", + "description": "Since he earned 10th place at the Russian GP, Russell has finished the last five races in 15th, 14th, 16th, 13th and 17th positions.
He’s also struggled of late to match his early season pace in qualifying, having previously been guaranteed to at least make Q2.
Despite failing to score in recent races Williams still looks set to beat Alfa Romeo to eighth in the World Championship, as it ...Keep reading", + "content": "Since he earned 10th place at the Russian GP, Russell has finished the last five races in 15th, 14th, 16th, 13th and 17th positions.
He’s also struggled of late to match his early season pace in qualifying, having previously been guaranteed to at least make Q2.
Despite failing to score in recent races Williams still looks set to beat Alfa Romeo to eighth in the World Championship, as it ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/vettel-a-bit-unnecessary-to-review-hamilton-verstappen-incident/6795053/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/russell-everyone-at-williams-frustrated-by-recent-form/6815362/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 14:00:21 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 09:28:32 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -796,14 +796,14 @@ "tags": [] }, { - "title": "Evans needs Ogier slip up to ignite WRC title hopes", - "description": "Evans heads into this weekend’s Rally Monza title decider 17 points adrift of his seven-time champion teammate Ogier, with 30 points to play for on Italy’s challenging asphalt roads.
The Welshman has conceded his title hopes are a long shot this weekend but is all too aware that those championship aspirations could turn in his favour should Ogier hit trouble.
PLUS: How confronting ...Keep reading", - "content": "Evans heads into this weekend’s Rally Monza title decider 17 points adrift of his seven-time champion teammate Ogier, with 30 points to play for on Italy’s challenging asphalt roads.
The Welshman has conceded his title hopes are a long shot this weekend but is all too aware that those championship aspirations could turn in his favour should Ogier hit trouble.
PLUS: How confronting ...Keep reading", - "category": "WRC", - "link": "https://www.autosport.com/wrc/news/evans-needs-ogier-slip-up-to-ignite-wrc-title-hopes/6794875/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Vettel, Schumacher to compete in 2022 Race of Champions", + "description": "Four-time Formula 1 world champion Vettel, now racing for Aston Martin, and Haas F1 rookie Schumacher will represent Germany in the event to be held at the seaside resort Pite Havsbad on 5-6 February, 2022.
Vettel won the individual Race of Champions at London's Olympic Stadium in 2015, beating nine-time Le Mans winner Tom Kristensen in the final.
The 34-year-old has also won the ROC Nations ...Keep reading", + "content": "Four-time Formula 1 world champion Vettel, now racing for Aston Martin, and Haas F1 rookie Schumacher will represent Germany in the event to be held at the seaside resort Pite Havsbad on 5-6 February, 2022.
Vettel won the individual Race of Champions at London's Olympic Stadium in 2015, beating nine-time Le Mans winner Tom Kristensen in the final.
The 34-year-old has also won the ROC Nations ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/vettel-schumacher-to-compete-in-2022-race-of-champions/6815261/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 13:10:12 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 08:44:27 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -811,14 +811,14 @@ "tags": [] }, { - "title": "\"Moral champion\" Fernandez feels team stood in way of his Moto2 title bid", - "description": "Fernandez stunned in his rookie Moto2 season this year, winning eight races – surpassing Marc Marquez’s haul of seven from his debut Moto2 campaign in 2011 – and narrowly missed out on the championship by four points to Ajo team-mate Remy Gardner, who won five times.
Both riders will step up to MotoGP in 2022 with Tech3 KTM, with the pair on track on Thursday and Friday at the two-day ...Keep reading", - "content": "Fernandez stunned in his rookie Moto2 season this year, winning eight races – surpassing Marc Marquez’s haul of seven from his debut Moto2 campaign in 2011 – and narrowly missed out on the championship by four points to Ajo team-mate Remy Gardner, who won five times.
Both riders will step up to MotoGP in 2022 with Tech3 KTM, with the pair on track on Thursday and Friday at the two-day ...Keep reading", - "category": "MotoGP", - "link": "https://www.autosport.com/moto2/news/moral-champion-fernandez-feels-team-stood-in-way-of-his-moto2-title-bid/6794823/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Hamilton: I want to be the \"purest\" of F1 drivers", + "description": "Amid a tight championship battle that has boiled over at times into collisions between himself and rival Max Verstappen, Hamilton is clear that how he wins is just as important as achieving his goals.
In a wide-ranging interview with selected media, including Autosport, Hamilton said that keeping it clean was something he valued strongly, even though many other greats in the sport have not ...Keep reading", + "content": "Amid a tight championship battle that has boiled over at times into collisions between himself and rival Max Verstappen, Hamilton is clear that how he wins is just as important as achieving his goals.
In a wide-ranging interview with selected media, including Autosport, Hamilton said that keeping it clean was something he valued strongly, even though many other greats in the sport have not ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-i-want-to-be-the-purest-of-f1-drivers/6813005/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 13:00:22 +0000", - "folder": "00.03 News", + "pubDate": "Wed, 24 Nov 2021 07:00:06 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -826,14 +826,14 @@ "tags": [] }, { - "title": "Montoya: Verstappen didn’t have intention of making Turn 4 in Hamilton incident", - "description": "Later today, the FIA stewards will hear new evidence over the incident between Verstappen and Hamilton on lap 48 and Turn 4 to judge if it needs to be investigated after the controversial clash wasn’t referred for an stewards’ investigation during the Brazilian Grand Prix.
Mercedes requested a right to review the incident after new evidence came to light, primarily the forward-facing camera ...Keep reading", - "content": "Later today, the FIA stewards will hear new evidence over the incident between Verstappen and Hamilton on lap 48 and Turn 4 to judge if it needs to be investigated after the controversial clash wasn’t referred for an stewards’ investigation during the Brazilian Grand Prix.
Mercedes requested a right to review the incident after new evidence came to light, primarily the forward-facing camera ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/montoya-verstappen-didnt-have-intention-of-making-turn-4-in-hamilton-incident/6794780/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "WRC Monza: The Good, The Bad and an eight-time world champion", + "description": "Top Performer - Sebastien Ogier and Julien Ingrassia 
The titanic battle waged between Toyota team-mates Sebastien Ogier and Elfyn Evans for victory at Rally Monza could have earned both drivers the top gong last weekend. 
But it would be unjust not to award Top Performer to Ogier and Ingrassia, the pair emerging from a thrilling fight with Evans and Scott Martin to lift a an ...Keep reading", + "content": "Top Performer - Sebastien Ogier and Julien Ingrassia 
The titanic battle waged between Toyota team-mates Sebastien Ogier and Elfyn Evans for victory at Rally Monza could have earned both drivers the top gong last weekend. 
But it would be unjust not to award Top Performer to Ogier and Ingrassia, the pair emerging from a thrilling fight with Evans and Scott Martin to lift a an ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/wrc-monza-the-good-the-bad-and-an-eight-time-world-champion/6813065/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 12:42:01 +0000", - "folder": "00.03 News", + "pubDate": "Tue, 23 Nov 2021 16:52:55 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -841,14 +841,14 @@ "tags": [] }, { - "title": "FIA to police F1 track limits in five corners at Qatar", - "description": "Owing to the nature of the Losail circuit, which features sizeable run-off areas around its faster corners, along with flat kerbs around the perimeter of the track, the FIA has elected to enforce limits at Turns 4, 12, 13, 14 and 16.
Turn 4 is a 90-degree right-hander leading into the similarly profiled Turn 5, which is expected to lead drivers to test the limits of the corner to open up the ...Keep reading", - "content": "Owing to the nature of the Losail circuit, which features sizeable run-off areas around its faster corners, along with flat kerbs around the perimeter of the track, the FIA has elected to enforce limits at Turns 4, 12, 13, 14 and 16.
Turn 4 is a 90-degree right-hander leading into the similarly profiled Turn 5, which is expected to lead drivers to test the limits of the corner to open up the ...Keep reading", + "title": "McLaren: F1 triple-header points haul \"painful\"", + "description": "Having been a strong contender for third place in the constructors' championship heading in to the Mexican Grand Prix, a run of incidents and bad luck has proved costly for both Daniel Ricciardo and Lando Norris.
Despite showing some good pace with its car, Ricciardo got tangled up in a first lap clash with Valtteri Bottas in Mexico, retired from the Brazilian GP thanks to a crack in the power ...Keep reading", + "content": "Having been a strong contender for third place in the constructors' championship heading in to the Mexican Grand Prix, a run of incidents and bad luck has proved costly for both Daniel Ricciardo and Lando Norris.
Despite showing some good pace with its car, Ricciardo got tangled up in a first lap clash with Valtteri Bottas in Mexico, retired from the Brazilian GP thanks to a crack in the power ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/fia-to-police-f1-track-limits-in-five-corners-at-qatar/6794726/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/mclaren-f1-triple-header-points-haul-painful/6812068/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 12:21:49 +0000", - "folder": "00.03 News", + "pubDate": "Tue, 23 Nov 2021 16:23:19 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -856,14 +856,14 @@ "tags": [] }, { - "title": "Ferrari’s momentum matters a lot for F1 2022, says Binotto", - "description": "The Italian outfit has edged clear of McLaren in the fight for third place in the constructors’ championship, with it enjoying a 31.5 points advantage with just three races remaining.
Although the pace of the current cars will have little bearing on next season, as team’s 2022 ground effect concepts will be completely new designs, Ferrari team principal Mattia Binotto says that there are a ...Keep reading", - "content": "The Italian outfit has edged clear of McLaren in the fight for third place in the constructors’ championship, with it enjoying a 31.5 points advantage with just three races remaining.
Although the pace of the current cars will have little bearing on next season, as team’s 2022 ground effect concepts will be completely new designs, Ferrari team principal Mattia Binotto says that there are a ...Keep reading", + "title": "The bold strategy behind Alonso’s F1 comeback podium", + "description": "Without the normal amount of data to analyse from previous races, drivers were unsure what to expect from the Losail International Circuit - but it ended up being a familiar result as Lewis Hamilton scored his seventh win of the season and cut down Max Verstappen’s championship lead.
But it was Fernando Alonso who completed the podium after Alpine pulled off a risky one-stop strategy to give ...Keep reading", + "content": "Without the normal amount of data to analyse from previous races, drivers were unsure what to expect from the Losail International Circuit - but it ended up being a familiar result as Lewis Hamilton scored his seventh win of the season and cut down Max Verstappen’s championship lead.
But it was Fernando Alonso who completed the podium after Alpine pulled off a risky one-stop strategy to give ...Keep reading", "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/ferraris-momentum-matters-a-lot-for-f1-2022-says-binotto/6794509/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "link": "https://www.autosport.com/f1/news/the-bold-strategy-behind-alonsos-f1-comeback-podium/6812927/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 11:50:54 +0000", - "folder": "00.03 News", + "pubDate": "Tue, 23 Nov 2021 15:02:38 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", "read": false, "favorite": false, @@ -871,9412 +871,37372 @@ "tags": [] }, { - "title": "Piastri braced for no racing in 2022 to focus on Alpine F1 reserve role", - "description": "Formula 2 championship leader Piastri was named as Alpine’s new reserve driver for next year earlier this week, ending all hopes of a potential graduation to F1.
Piastri was originally set to spend two seasons in both Formula 3 and F2, but won the F3 title at the first attempt last year with Prema, and now leads the F2 standings by 36 points with four races remaining.
Speaking to select ...Keep reading", - "content": "Formula 2 championship leader Piastri was named as Alpine’s new reserve driver for next year earlier this week, ending all hopes of a potential graduation to F1.
Piastri was originally set to spend two seasons in both Formula 3 and F2, but won the F3 title at the first attempt last year with Prema, and now leads the F2 standings by 36 points with four races remaining.
Speaking to select ...Keep reading", - "category": "Formula 1", - "link": "https://www.autosport.com/f1/news/piastri-braced-for-no-racing-in-2022-to-focus-on-alpine-f1-reserve-role/6794578/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "title": "Gardner “expected worse” from KTM MotoGP bike", + "description": "Gardner will race for the Tech3 squad next season on a factory-backed KTM having beaten team-mate Raul Fernandez to this year’s Moto2 crown – with the pair recently exchanging barbs in the press over their title tussle.
The Australian – son of 1987 MotoGP world champion Wayne Gardner – ended the two-day Jerez test 1.8s off the pace down in 22nd on the combined timesheets.
The RC16 ...Keep reading", + "content": "Gardner will race for the Tech3 squad next season on a factory-backed KTM having beaten team-mate Raul Fernandez to this year’s Moto2 crown – with the pair recently exchanging barbs in the press over their title tussle.
The Australian – son of 1987 MotoGP world champion Wayne Gardner – ended the two-day Jerez test 1.8s off the pace down in 22nd on the combined timesheets.
The RC16 ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/gardner-expected-worse-from-ktm-motogp-bike/6812618/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 11:34:43 +0000", - "folder": "00.03 News", + "pubDate": "Tue, 23 Nov 2021 14:54:38 +0000", + "folder": "00.03 News/Sport EN", "feed": "Autosport", - "read": true, + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News", - "name": "Autosport" - }, - "1": { - "title": "Jalopnik", - "subtitle": "", - "link": "https://jalopnik.com", - "image": null, - "description": "Kinja RSS", - "items": [ + }, { - "title": "Ford And Rivian Aren't Making A Car Together After All", - "description": "

Ford and Rivian already killed off whatever the Lincoln-Rivian electric SUV not long after the pandemic took hold, but the companies had also planned on making another car together beyond that, too. Except, according to a new report, that car is dead in the water, too.

Read more...

", - "content": "

Ford and Rivian already killed off whatever the Lincoln-Rivian electric SUV not long after the pandemic took hold, but the companies had also planned on making another car together beyond that, too. Except, according to a new report, that car is dead in the water, too.

Read more...

", - "category": "rivian", - "link": "https://jalopnik.com/ford-and-rivian-arent-making-a-car-together-after-all-1848093334", - "creator": "Erik Shilling", - "pubDate": "Fri, 19 Nov 2021 22:30:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", - "read": true, + "title": "Qatar F1 Q3 yellow flags were justified, says Masi", + "description": "Yellow flags were shown after Gasly ran wide on his last lap at the penultimate corner, losing his front wing and puncturing his right front tyre.
He kept going in an attempt to get out of the way and not impede cars trying to finish the lap, but he then stopped on the pit straight.
At that stage flags were waved - initially a single yellow and then a double – and both Verstappen and ...Keep reading", + "content": "Yellow flags were shown after Gasly ran wide on his last lap at the penultimate corner, losing his front wing and puncturing his right front tyre.
He kept going in an attempt to get out of the way and not impede cars trying to finish the lap, but he then stopped on the pit straight.
At that stage flags were waved - initially a single yellow and then a double – and both Verstappen and ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/qatar-q3-yellow-flags-were-justified-says-masi/6812366/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:59:21 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "This Kawasaki-Powered MG Midget Is A $4,500 Triumph Of Backyard Engineering", - "description": "

Someone has built something so absurd, yet strangely alluring. This 1976 MG Midget for sale was turned into a discount three-wheeler by way of a Kawasaki Vulcan shoved in back. It’s all sorts of nonsensical, and I can’t help but appreciate it as a triumph of backyard engineering.

Read more...

", - "content": "

Someone has built something so absurd, yet strangely alluring. This 1976 MG Midget for sale was turned into a discount three-wheeler by way of a Kawasaki Vulcan shoved in back. It’s all sorts of nonsensical, and I can’t help but appreciate it as a triumph of backyard engineering.

Read more...

", - "category": "mg midget", - "link": "https://jalopnik.com/this-kawasaki-powered-mg-midget-is-a-4-500-triumph-of-1848093086", - "creator": "Mercedes Streeter", - "pubDate": "Fri, 19 Nov 2021 22:10:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", - "read": true, + "title": "Piastri: Criticism against Alfa Romeo F1 signing Zhou is \"pretty unfair\"", + "description": "Formula 2 championship leader Piastri had been linked with a possible move to Alfa Romeo for next season, but missed out on the driver to Zhou, who was announced as Valtteri Bottas's team-mate for 2022 last week.
Zhou is known to be bringing financial backing to Alfa Romeo, with outgoing driver Antonio Giovinazzi taking to social media to say that F1 could be \"ruthless\" when \"money ...Keep reading", + "content": "Formula 2 championship leader Piastri had been linked with a possible move to Alfa Romeo for next season, but missed out on the driver to Zhou, who was announced as Valtteri Bottas's team-mate for 2022 last week.
Zhou is known to be bringing financial backing to Alfa Romeo, with outgoing driver Antonio Giovinazzi taking to social media to say that F1 could be \"ruthless\" when \"money ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/piastri-criticism-against-alfa-romeo-f1-signing-zhou-is-pretty-unfair/6812606/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:52:32 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Top 5 Things Toto Wolff And Christian Horner Said While Sitting Next To Each Other For 30 Minutes", - "description": "

I don’t have to tell you that the championship battle between Lewis Hamilton and Max Verstappen is the most captivating one Formula 1 has had in ages. The drama on track has fed political drama off it that’s reached a fever pitch in these closing races. It’s been almost as exciting to watch as the wheel-to-wheel…

Read more...

", - "content": "

I don’t have to tell you that the championship battle between Lewis Hamilton and Max Verstappen is the most captivating one Formula 1 has had in ages. The drama on track has fed political drama off it that’s reached a fever pitch in these closing races. It’s been almost as exciting to watch as the wheel-to-wheel…

Read more...

", - "category": "christian horner", - "link": "https://jalopnik.com/the-top-5-things-toto-wolff-and-christian-horner-said-w-1848091812", - "creator": "Adam Ismail", - "pubDate": "Fri, 19 Nov 2021 22:05:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Ocon \"glad\" to repay Alonso for Hungary with Qatar defence", + "description": "Before the summer break Ocon took a shock maiden win in Budapest after an incident-filled start saw him vault to the lead.
All race long Ocon defended his lead against Aston Martin's Sebastian Vettel, but it was the resurgent Mercedes of Lewis Hamilton he was more worried about.
But behind Ocon teammate Alonso managed to keep the much quicker Hamilton at bay for several laps, which gave Ocon ...Keep reading", + "content": "Before the summer break Ocon took a shock maiden win in Budapest after an incident-filled start saw him vault to the lead.
All race long Ocon defended his lead against Aston Martin's Sebastian Vettel, but it was the resurgent Mercedes of Lewis Hamilton he was more worried about.
But behind Ocon teammate Alonso managed to keep the much quicker Hamilton at bay for several laps, which gave Ocon ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/ocon-glad-to-repay-alonso-for-hungary-with-qatar-defence/6812039/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:32:49 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Mexico's JAC E10X Is A Reminder That America Needs Cheap Electric Cars", - "description": "

Chinese carmaker JAC is celebrating the debut of its new EV for the Mexican market, the 2022 JAC E10x. What’s worth celebrating here isn’t just that it’s an EV in Mexico — though I love to see EVs taking off in all the markets. The E10X is worth celebrating because it’s an EV with over 200 miles of range that costs…

Read more...

", - "content": "

Chinese carmaker JAC is celebrating the debut of its new EV for the Mexican market, the 2022 JAC E10x. What’s worth celebrating here isn’t just that it’s an EV in Mexico — though I love to see EVs taking off in all the markets. The E10X is worth celebrating because it’s an EV with over 200 miles of range that costs…

Read more...

", - "category": "cars", - "link": "https://jalopnik.com/mexicos-jac-e10x-is-a-reminder-that-america-needs-chea-1848092995", - "creator": "José Rodríguez Jr.", - "pubDate": "Fri, 19 Nov 2021 22:00:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "New all-electric Lancia Delta to contest World RX in 2022", + "description": "GCK Motorsport will revive the iconic Lancia Delta Integrale by developing an all-electric version to compete in the revamped World Rallycross Championship next year.
Plans to design and construct a new take on the famous Delta Integrale coincide with the confirmation that French squad GCK will return to the championship after sitting out this year to focus on developing the new Delta ...Keep reading", + "content": "GCK Motorsport will revive the iconic Lancia Delta Integrale by developing an all-electric version to compete in the revamped World Rallycross Championship next year.
Plans to design and construct a new take on the famous Delta Integrale coincide with the confirmation that French squad GCK will return to the championship after sitting out this year to focus on developing the new Delta ...Keep reading", + "category": "World Rallycross", + "link": "https://www.autosport.com/world-rallycross/news/new-all-electric-lancia-delta-to-contest-world-rx-in-2022/6812373/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:20:57 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Here's How Porsche Got An In On E-Bikes", - "description": "

For almost a hundred years, Porsche has made very nice gas-powered cars. But, did you know that since the 1990s it has also dabbled in bike manufacturing? Now, it’s ambitions for the bike world have taken a huge step forward as it becomes a serious investor in e-bikes.

Read more...

", - "content": "

For almost a hundred years, Porsche has made very nice gas-powered cars. But, did you know that since the 1990s it has also dabbled in bike manufacturing? Now, it’s ambitions for the bike world have taken a huge step forward as it becomes a serious investor in e-bikes.

Read more...

", - "category": "porsche", - "link": "https://jalopnik.com/heres-how-porsche-got-an-in-on-e-bikes-1848092213", - "creator": "Owen Bellwood", - "pubDate": "Fri, 19 Nov 2021 21:55:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Boschung extends F2 deal with Campos for 2022", + "description": "Swiss driver Boschung becomes the second driver to confirm their plans for 2022, after MP Motorsport announced the signing of F3 driver Clement Novalak to its 2022 line-up.
Continuing with Campos, which was rocked by the death of owner and founder Adrian Campos Sr at the start of the year, Boschung has enjoyed a strong return to the category, particularly in a stellar Monaco weekend in which he ...Keep reading", + "content": "Swiss driver Boschung becomes the second driver to confirm their plans for 2022, after MP Motorsport announced the signing of F3 driver Clement Novalak to its 2022 line-up.
Continuing with Campos, which was rocked by the death of owner and founder Adrian Campos Sr at the start of the year, Boschung has enjoyed a strong return to the category, particularly in a stellar Monaco weekend in which he ...Keep reading", + "category": "FIA F2", + "link": "https://www.autosport.com/formula2/news/boschung-extends-f2-deal-with-campos-for-2022/6812322/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:05:57 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Elon Musk And His Fans Are Losing Their Minds Over CNN's Autopilot Criticism", - "description": "

Yesterday, CNN published a video of a test in New York City of Tesla’s so-called “Full Self-Driving Beta” Level 2 driver-assist software, and it didn’t go all that great. The tester was purple-sweater-enthusiast and ex-Jalop Mike Ballaban, who did admit to being “a little skittish” about using the semi-automated…

Read more...

", - "content": "

Yesterday, CNN published a video of a test in New York City of Tesla’s so-called “Full Self-Driving Beta” Level 2 driver-assist software, and it didn’t go all that great. The tester was purple-sweater-enthusiast and ex-Jalop Mike Ballaban, who did admit to being “a little skittish” about using the semi-automated…

Read more...

", - "category": "elon musk", - "link": "https://jalopnik.com/this-take-on-cnns-teslas-fsd-beta-video-test-is-absolut-1848092277", - "creator": "Jason Torchinsky", - "pubDate": "Fri, 19 Nov 2021 21:13:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "DTM ace Jamie Green has no intention of retiring, seeking new factory deal", + "description": "The 39-year-old Briton was a mainstay of the DTM for 16 continuous seasons between 2005 and 2020, scoring 17 wins for Mercedes and Audi and finishing second in the standings in 2015.
But since his Audi factory deal concluded at the end of 2020, the 2004 Formula 3 Euroseries champion has only raced once for Audi GT customer Sainteloc in the Spa 24 Hours, while running his two sons in cadet ...Keep reading", + "content": "The 39-year-old Briton was a mainstay of the DTM for 16 continuous seasons between 2005 and 2020, scoring 17 wins for Mercedes and Audi and finishing second in the standings in 2015.
But since his Audi factory deal concluded at the end of 2020, the 2004 Formula 3 Euroseries champion has only raced once for Audi GT customer Sainteloc in the Spa 24 Hours, while running his two sons in cadet ...Keep reading", + "category": "DTM", + "link": "https://www.autosport.com/dtm/news/dtm-ace-jamie-green-has-no-intention-of-retiring-seeking-new-factory-deal/6812198/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:32:40 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Someone Explain What's Going On With This Dude At A Gas Station", - "description": "

There are really only three reasons why anyone goes to a gas station: you need gas, you need to void your bladder or bowels, or you need to buy a drink or snack or condoms or lighter or some other convenience store item. That’s pretty much it. There’s a video going around online, though, that shows someone at a gas…

Read more...

", - "content": "

There are really only three reasons why anyone goes to a gas station: you need gas, you need to void your bladder or bowels, or you need to buy a drink or snack or condoms or lighter or some other convenience store item. That’s pretty much it. There’s a video going around online, though, that shows someone at a gas…

Read more...

", - "category": "in germany", - "link": "https://jalopnik.com/someone-explain-whats-going-on-with-this-dude-at-a-gas-1848090692", - "creator": "Jason Torchinsky", - "pubDate": "Fri, 19 Nov 2021 20:48:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Van Gisbergen: Sealing Supercars title boosts Bathurst 1000 chances", + "description": "The Kiwi wrapped up the 2021 title in Sydney last weekend, the Sunday wash-out leaving his 349-point lead unassailable heading to the season-closing Bathurst 1000.
Reflecting on the ramifications of having the title sewn up early, van Gisbergen reckons it's a big boost for his hopes of a second consecutive Bathurst win together with endurance co-driver Garth Tander.
He says the pair can now ...Keep reading", + "content": "The Kiwi wrapped up the 2021 title in Sydney last weekend, the Sunday wash-out leaving his 349-point lead unassailable heading to the season-closing Bathurst 1000.
Reflecting on the ramifications of having the title sewn up early, van Gisbergen reckons it's a big boost for his hopes of a second consecutive Bathurst win together with endurance co-driver Garth Tander.
He says the pair can now ...Keep reading", + "category": "Supercars", + "link": "https://www.autosport.com/supercars/news/van-gisbergen-title-boosts-bathurst-1000-chances/6812056/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:31:23 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Someone Spent $6 Million Building A Massive Ford F-750 Motor Home", - "description": "

I recently called a military truck-turned RV Titan XD 4400 camper one of the most ridiculous ways to travel the world. I now have to take that back because this also exists on Earth: the 2008 Ford F-750 World Cruiser. It was built by one of the founders of the company that moved the Space Shuttle Endeavour to its new…

Read more...

", - "content": "

I recently called a military truck-turned RV Titan XD 4400 camper one of the most ridiculous ways to travel the world. I now have to take that back because this also exists on Earth: the 2008 Ford F-750 World Cruiser. It was built by one of the founders of the company that moved the Space Shuttle Endeavour to its new…

Read more...

", - "category": "ford f 750", - "link": "https://jalopnik.com/someone-spent-6-million-building-a-massive-ford-f-750-1848091009", - "creator": "Mercedes Streeter", - "pubDate": "Fri, 19 Nov 2021 20:45:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Hamilton, Mercedes feeling \"better than ever\" ahead of F1 title run-in", + "description": "Read Also:

Bizarre quirk of Qatar kerbs caused F1 problems, reckons Mercedes
Alpine: Alonso Qatar F1 podium \"a question of a few corners\"
Red Bull F1 boss Horner defends 'straight talking' attitude


The seven-time world champion has closed to within eight points of Max Verstappen in the drivers’ standings following his dominant victory in last weekend's Qatar Grand ...Keep reading", + "content": "Read Also:

Bizarre quirk of Qatar kerbs caused F1 problems, reckons Mercedes
Alpine: Alonso Qatar F1 podium \"a question of a few corners\"
Red Bull F1 boss Horner defends 'straight talking' attitude


The seven-time world champion has closed to within eight points of Max Verstappen in the drivers’ standings following his dominant victory in last weekend's Qatar Grand ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-mercedes-feeling-better-than-ever-ahead-of-f1-title-run-in/6812062/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:27:22 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "We Are Again Talking About Possibly Illegal Formula 1 Wings", - "description": "

It was earlier this year when Mercedes was complaining about the “bendy” rear wing of Red Bull, which appeared to bend slightly back at speed to give Red Bull a straight-line advantage, when you don’t need downforce. Now it is Red Bull’s turn to complain about Mercedes’ wings, after a race in Brazil when Mercedes had…

Read more...

", - "content": "

It was earlier this year when Mercedes was complaining about the “bendy” rear wing of Red Bull, which appeared to bend slightly back at speed to give Red Bull a straight-line advantage, when you don’t need downforce. Now it is Red Bull’s turn to complain about Mercedes’ wings, after a race in Brazil when Mercedes had…

Read more...

", - "category": "formula 1", - "link": "https://jalopnik.com/we-are-again-talking-about-possibly-illegal-formula-1-w-1848091428", - "creator": "Erik Shilling", - "pubDate": "Fri, 19 Nov 2021 20:30:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Sydney Supercars cancellation explained as fans refunded", + "description": "The four-week Sydney swing following Supercars' three-month COVID hiatus came to a controversial end on Sunday, when the final race was called off due to the poor weather.
Persistent rain all day left the track waterlogged by the time the 250-kilometre race was set to start.
After five slow laps behind the safety car, the field was called back to the pitlane where they sat for 35 minutes ...Keep reading", + "content": "The four-week Sydney swing following Supercars' three-month COVID hiatus came to a controversial end on Sunday, when the final race was called off due to the poor weather.
Persistent rain all day left the track waterlogged by the time the 250-kilometre race was set to start.
After five slow laps behind the safety car, the field was called back to the pitlane where they sat for 35 minutes ...Keep reading", + "category": "Supercars", + "link": "https://www.autosport.com/supercars/news/sydney-supercars-cancellation-explained-as-fans-refunded/6812018/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:19:12 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The 2022 Subaru BRZ Addresses The First Gen's Fatal Flaw", - "description": "

If you ask armchair enthusiasts what the worst thing is about the first-generation BRZ/86, most of them will tell you it’s horsepower — either the peak number of 205, or the infamous torque dip. But BRZ and 86 owners, who regularly take their cars to the track, will tell you something completely different: These cars…

Read more...

", - "content": "

If you ask armchair enthusiasts what the worst thing is about the first-generation BRZ/86, most of them will tell you it’s horsepower — either the peak number of 205, or the infamous torque dip. But BRZ and 86 owners, who regularly take their cars to the track, will tell you something completely different: These cars…

Read more...

", - "category": "brz", - "link": "https://jalopnik.com/the-2022-subaru-brz-addresses-the-first-gens-fatal-flaw-1848090009", - "creator": "Steve DaSilva", - "pubDate": "Fri, 19 Nov 2021 20:25:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Bizarre quirk of Qatar kerbs caused F1 problems, reckons Mercedes", + "description": "A number of drivers hit trouble over the Qatar weekend as they suffered car and tyre damage throughout the event.
Charles Leclerc and Nikita Mazepin both had to swap chassis following damage caused by kerb strikes, while Pierre Gasly smashed a front wing that triggered a puncture at the end of qualifying.
In the race, it is suspected that the repeated running over the kerbs played a part in ...Keep reading", + "content": "A number of drivers hit trouble over the Qatar weekend as they suffered car and tyre damage throughout the event.
Charles Leclerc and Nikita Mazepin both had to swap chassis following damage caused by kerb strikes, while Pierre Gasly smashed a front wing that triggered a puncture at the end of qualifying.
In the race, it is suspected that the repeated running over the kerbs played a part in ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/bizarre-quirk-of-qatar-kerbs-caused-f1-problems-reckons-mercedes/6812019/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:13:32 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Even A World Championship Win Can't Save Your Seat", - "description": "

Just weeks ago Formula E’s seventh season wrapped, crowning Mercedes EQ Formula E driver Nyck De Vries its World Champion, with Mercedes also coming out as the champion constructor. But neither will be returning to the electric racing series’ paddocks for next season.

Read more...

", - "content": "

Just weeks ago Formula E’s seventh season wrapped, crowning Mercedes EQ Formula E driver Nyck De Vries its World Champion, with Mercedes also coming out as the champion constructor. But neither will be returning to the electric racing series’ paddocks for next season.

Read more...

", - "category": "world championship", - "link": "https://jalopnik.com/even-a-world-championship-win-cant-save-your-seat-1848091497", - "creator": "Lalita Chemello", - "pubDate": "Fri, 19 Nov 2021 20:24:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", - "read": false, + "title": "GT4 Supercup champion Smalley chosen as new Porsche GB Junior", + "description": "The 20-year-old was one of four finalists who took part in a shootout at Silverstone earlier this month where a number of driving, fitness and media assessments took place.
Smalley faced strong competition from British GT4 champion Gus Burton, Porsche Sprint Challenge GB title winner Theo Edgerton and National Formula Ford 1600 frontrunner Alex Walker in the final but emerged triumphant.
He ...Keep reading", + "content": "The 20-year-old was one of four finalists who took part in a shootout at Silverstone earlier this month where a number of driving, fitness and media assessments took place.
Smalley faced strong competition from British GT4 champion Gus Burton, Porsche Sprint Challenge GB title winner Theo Edgerton and National Formula Ford 1600 frontrunner Alex Walker in the final but emerged triumphant.
He ...Keep reading", + "category": "National", + "link": "https://www.autosport.com/national/news/gt4-supercup-champion-smalley-chosen-as-new-porsche-gb-junior/6809739/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:36:51 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Ten Commercial Vehicles That Would Make Great Daily Drivers", - "description": "

Cars are mostly pretty great. But if you want to stand out from the crowd, replacing your normal runaround with a commercial vehicle might not be the worst idea.

Read more...

", - "content": "

Cars are mostly pretty great. But if you want to stand out from the crowd, replacing your normal runaround with a commercial vehicle might not be the worst idea.

Read more...

", - "category": "hearse", - "link": "https://jalopnik.com/ten-commercial-vehicles-that-would-make-great-daily-dri-1848090932", - "creator": "Owen Bellwood", - "pubDate": "Fri, 19 Nov 2021 19:51:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Darryn Binder felt no pressure in much-debated MotoGP step at Jerez", + "description": "The younger brother of double MotoGP winner Brad Binder will make his MotoGP debut next year aboard a year-old Yamaha with the new RNF Racing team, which has taken over from the departing Petronas Sepang Racing Team.
Binder’s MotoGP step has come under fire in recent weeks when he was involved in a controversial incident in Portugal which helped decide the Moto3 world championship in favour ...Keep reading", + "content": "The younger brother of double MotoGP winner Brad Binder will make his MotoGP debut next year aboard a year-old Yamaha with the new RNF Racing team, which has taken over from the departing Petronas Sepang Racing Team.
Binder’s MotoGP step has come under fire in recent weeks when he was involved in a controversial incident in Portugal which helped decide the Moto3 world championship in favour ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/darryn-binder-felt-no-pressure-in-much-debated-motogp-step-at-jerez/6809599/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 14:43:24 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "What Do You Want To Know About The Ford Mustang Mach-E GT?", - "description": "

There’s only one other car that’s done the Tesla thing of knocking my brain into the back of my skull, and it’s this Ford Mustang Mach-E GT. I laughed out loud.

Read more...

", - "content": "

There’s only one other car that’s done the Tesla thing of knocking my brain into the back of my skull, and it’s this Ford Mustang Mach-E GT. I laughed out loud.

Read more...

", - "category": "ford", - "link": "https://jalopnik.com/what-do-you-want-to-know-about-the-ford-mustang-mach-e-1848091294", - "creator": "Raphael Orlove", - "pubDate": "Fri, 19 Nov 2021 19:24:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", - "read": false, + "title": "Alpine: Alonso Qatar F1 podium \"a question of a few corners\"", + "description": "The inaugural Qatar Grand Prix proved to be a significant challenge for the Pirelli tyres due to a combination of high-speed corners and aggressive kerbs at the Losail International Circuit.
During Sunday's race, Mercedes' Valtteri Bottas, McLaren driver Lando Norris and both Williams cars of George Russell and Nicholas Latifi all suffered left-front tyre failures as they attempted what Pirelli ...Keep reading", + "content": "The inaugural Qatar Grand Prix proved to be a significant challenge for the Pirelli tyres due to a combination of high-speed corners and aggressive kerbs at the Losail International Circuit.
During Sunday's race, Mercedes' Valtteri Bottas, McLaren driver Lando Norris and both Williams cars of George Russell and Nicholas Latifi all suffered left-front tyre failures as they attempted what Pirelli ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/alpine-alonso-qatar-f1-podium-a-question-of-a-few-corners/6809463/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 13:55:08 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Tesla Isn't Technically The Least Reliable Car Company: Consumer Reports", - "description": "

If you’re in the market for a reliable electric vehicle, you should probably skip Tesla. At least according to the latest reliability report from Consumer Reports. The American automaker ranked 27th out of 28 brands, only beating out Lincoln, which scored a shockingly low 18 out of 100.

Read more...

", - "content": "

If you’re in the market for a reliable electric vehicle, you should probably skip Tesla. At least according to the latest reliability report from Consumer Reports. The American automaker ranked 27th out of 28 brands, only beating out Lincoln, which scored a shockingly low 18 out of 100.

Read more...

", - "category": "tesla", - "link": "https://jalopnik.com/tesla-isnt-technically-the-least-reliable-car-company-1848089974", - "creator": "Collin Woodard", - "pubDate": "Fri, 19 Nov 2021 16:56:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "10 things we learned from F1's 2021 Qatar Grand Prix", + "description": "Lewis Hamilton may still be trailing in the 2021 Formula 1 world championship battle, but the Mercedes driver laid down the gauntlet to Max Verstappen and Red Bull with a second dominant victory on the trot in Qatar.
After Verstappen's victory in Mexico, Hamilton has come alive and with two races to go it's still all to play for in the drivers' championship, although a DNF for Valtteri Bottas ...Keep reading", + "content": "Lewis Hamilton may still be trailing in the 2021 Formula 1 world championship battle, but the Mercedes driver laid down the gauntlet to Max Verstappen and Red Bull with a second dominant victory on the trot in Qatar.
After Verstappen's victory in Mexico, Hamilton has come alive and with two races to go it's still all to play for in the drivers' championship, although a DNF for Valtteri Bottas ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/10-things-we-learned-from-f1s-2021-qatar-grand-prix/6809213/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 13:19:51 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Cadillac Is Trying Too Hard", - "description": "

Cadillac has fully immersed itself in the EV reinvention game. Obviously it’s far from the only brand doing that, but you kind of have to respect General Motors for the strength of the commitment. The company told its entire Cadillac dealer network to get with the times or get out, and it’s clearly attempting to form…

Read more...

", - "content": "

Cadillac has fully immersed itself in the EV reinvention game. Obviously it’s far from the only brand doing that, but you kind of have to respect General Motors for the strength of the commitment. The company told its entire Cadillac dealer network to get with the times or get out, and it’s clearly attempting to form…

Read more...

", - "category": "cadillac", - "link": "https://jalopnik.com/cadillac-is-trying-too-hard-1848085361", - "creator": "Adam Ismail", - "pubDate": "Fri, 19 Nov 2021 16:45:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Red Bull F1 boss Horner defends 'straight talking' attitude", + "description": "Horner received a warning from the FIA stewards after the race in Losail on Sunday for remarks where he accused a \"rogue marshal\" of having put out double-waved yellow flags in qualifying.
It was those flags that triggered an offence for Max Verstappen, who was handed a five-place grid penalty for ignoring the warning signals.
Horner's comments about the marshal follow the behaviour of both ...Keep reading", + "content": "Horner received a warning from the FIA stewards after the race in Losail on Sunday for remarks where he accused a \"rogue marshal\" of having put out double-waved yellow flags in qualifying.
It was those flags that triggered an offence for Max Verstappen, who was handed a five-place grid penalty for ignoring the warning signals.
Horner's comments about the marshal follow the behaviour of both ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/red-bull-f1-boss-horner-defends-straight-talking-attitude/6809283/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:55:36 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Lewis Hamilton Will Have To Win This On The Track", - "description": "

It was on turn four, lap 48 last weekend in Brazil when Max Verstappen forced Lewis Hamilton off the track, an incident that stewards “noted” during the race before, shortly thereafter, deciding that no investigation was necessary. This, obviously, didn’t sit well with Mercedes, even though Hamilton still went on to…

Read more...

", - "content": "

It was on turn four, lap 48 last weekend in Brazil when Max Verstappen forced Lewis Hamilton off the track, an incident that stewards “noted” during the race before, shortly thereafter, deciding that no investigation was necessary. This, obviously, didn’t sit well with Mercedes, even though Hamilton still went on to…

Read more...

", - "category": "lewis hamilton", - "link": "https://jalopnik.com/lewis-hamilton-will-have-to-win-this-on-the-track-1848089346", - "creator": "Erik Shilling", - "pubDate": "Fri, 19 Nov 2021 16:15:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Puig: Honda “far from ready” with 2022 MotoGP bike", + "description": "Honda failed to win a race in 2020 for the first ever since it returned to the premier class full-time in 1982, and though Marc Marquez won three grands prix this year despite still recovering from a serious arm injury, the RC213V proved to be a problematic bike.
All of its riders struggled with a lack of rear grip, which had a knock-on effect of hampering them into the corners as well as ...Keep reading", + "content": "Honda failed to win a race in 2020 for the first ever since it returned to the premier class full-time in 1982, and though Marc Marquez won three grands prix this year despite still recovering from a serious arm injury, the RC213V proved to be a problematic bike.
All of its riders struggled with a lack of rear grip, which had a knock-on effect of hampering them into the corners as well as ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/puig-honda-far-from-ready-with-2022-motogp-bike/6809138/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 11:53:23 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Not To Be Left Out, Toyota Wants To Start Making Batteries Too", - "description": "

Toyota’s getting serious about buildin’ batteries, Apple’s getting serious about making a car (again), and Stellantis is getting serious about not selling Chryslers in Australia anymore. All that and more in The Morning Shift for November 19, 2021.

Read more...

", - "content": "

Toyota’s getting serious about buildin’ batteries, Apple’s getting serious about making a car (again), and Stellantis is getting serious about not selling Chryslers in Australia anymore. All that and more in The Morning Shift for November 19, 2021.

Read more...

", - "category": "toyota", - "link": "https://jalopnik.com/not-to-be-left-out-toyota-wants-to-start-making-batter-1848088455", - "creator": "Adam Ismail", - "pubDate": "Fri, 19 Nov 2021 15:45:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Why Pure ETCR champion Cupra chooses electric motorsport", + "description": "Both all-electric series have been strongly supported by Cupra, SEAT’s high-performance brand which aims to be at the forefront of a transition to more sustainable and innovative forms of motorsport.
Cupra Racing won the inaugural drivers’ and manufacturers’ crowns in Pure ETCR and Cupra was also the first automotive manufacturer to sign up for Extreme E, which it is using to promote its ...Keep reading", + "content": "Both all-electric series have been strongly supported by Cupra, SEAT’s high-performance brand which aims to be at the forefront of a transition to more sustainable and innovative forms of motorsport.
Cupra Racing won the inaugural drivers’ and manufacturers’ crowns in Pure ETCR and Cupra was also the first automotive manufacturer to sign up for Extreme E, which it is using to promote its ...Keep reading", + "category": "General", + "link": "https://www.autosport.com/general/news/why-pure-etcr-champion-cupra-chooses-electric-motorsport/6809099/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 11:40:19 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "What Commercial Vehicle Would Make The Best Daily Driver?", - "description": "

I’m a fan of a van. These commercial vehicles were designed to carry lots of stuff from A to B in the most practical manner. But, for almost as long as there have been vans on the roads, there have been people using them as their daily drivers.

Read more...

", - "content": "

I’m a fan of a van. These commercial vehicles were designed to carry lots of stuff from A to B in the most practical manner. But, for almost as long as there have been vans on the roads, there have been people using them as their daily drivers.

Read more...

", - "category": "commercial vehicle", - "link": "https://jalopnik.com/what-commercial-vehicle-would-make-the-best-daily-drive-1848088625", - "creator": "Owen Bellwood", - "pubDate": "Fri, 19 Nov 2021 14:40:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Ricciardo's Qatar GP compromised by extreme F1 fuel saving", + "description": "McLaren driver Ricciardo had qualified a disappointing 14th on Saturday and any chance of recovering was compromised by his team telling him to be very conservative during the first half of the event.
Later in the race he was given the go-ahead to run flat out again, but he had already dropped out contention and he finished out of the points in 12th place.
\"After the start we had fuel saving ...Keep reading", + "content": "McLaren driver Ricciardo had qualified a disappointing 14th on Saturday and any chance of recovering was compromised by his team telling him to be very conservative during the first half of the event.
Later in the race he was given the go-ahead to run flat out again, but he had already dropped out contention and he finished out of the points in 12th place.
\"After the start we had fuel saving ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/ricciardos-qatar-gp-compromised-by-extreme-f1-fuel-saving/6808893/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 11:20:13 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Blip: I Guess It's Not The Bean After All", - "description": "

Well, damn. I guess this proves it. Looks like Ford named the Pinto after the horse, not the bean. Huh. I could have sworn it was for the bean. Looks like I owe that guy at the car show I got into a screaming, crying, chair-throwing argument with an apology.

Read more...

", - "content": "

Well, damn. I guess this proves it. Looks like Ford named the Pinto after the horse, not the bean. Huh. I could have sworn it was for the bean. Looks like I owe that guy at the car show I got into a screaming, crying, chair-throwing argument with an apology.

Read more...

", - "category": "guess", - "link": "https://jalopnik.com/blip-i-guess-its-not-the-bean-after-all-1848088497", - "creator": "Jason Torchinsky", - "pubDate": "Fri, 19 Nov 2021 13:51:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Van Gisbergen wants to maintain McLaughlin, Whincup Supercars form", + "description": "As of next season the Kiwi will be the last of the 'big three' drivers – van Gisbergen, McLaughlin and Whincup – left in the Aussie category.
The trio split the last six titles between them in what has been an intriguing, tense, and at times explosive battle between Triple Eight and Dick Johnson Racing/DJR Team Penske.
With three-time champion McLaughlin now racing in IndyCar, and ...Keep reading", + "content": "As of next season the Kiwi will be the last of the 'big three' drivers – van Gisbergen, McLaughlin and Whincup – left in the Aussie category.
The trio split the last six titles between them in what has been an intriguing, tense, and at times explosive battle between Triple Eight and Dick Johnson Racing/DJR Team Penske.
With three-time champion McLaughlin now racing in IndyCar, and ...Keep reading", + "category": "Supercars", + "link": "https://www.autosport.com/supercars/news/van-gisbergen-wants-to-maintain-mclaughlin-whincup-form/6808884/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:18:58 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Even My Nose Knows The New Supra Isn't A Real Toyota", - "description": "

I’m pretty sure the car community got bored with the whole debate over the new Toyota Supra not being a real Supra or a real Toyota a while ago. But since I was busy doing other things at the time such as attending meetings and filling out spreadsheets, I wasn’t really able to participate. That changed last night when…

Read more...

", - "content": "

I’m pretty sure the car community got bored with the whole debate over the new Toyota Supra not being a real Supra or a real Toyota a while ago. But since I was busy doing other things at the time such as attending meetings and filling out spreadsheets, I wasn’t really able to participate. That changed last night when…

Read more...

", - "category": "supra", - "link": "https://jalopnik.com/even-my-nose-knows-the-new-supra-isnt-a-real-toyota-1848085663", - "creator": "Collin Woodard", - "pubDate": "Fri, 19 Nov 2021 13:45:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Which F1 records does Lewis Hamilton have? Most wins, poles and more", + "description": "It feels as though every race in the last year has thrust Hamilton on the path to breaking a new F1 record, largely those once-unbelievable records set by Michael Schumacher.
We have also included the records Hamilton shares with another driver, some of which he could hold alone in the next few years.
Most wins in Formula 1
Lewis Hamilton: 102Michael Schumacher: 91Sebastian Vettel ...Keep reading", + "content": "It feels as though every race in the last year has thrust Hamilton on the path to breaking a new F1 record, largely those once-unbelievable records set by Michael Schumacher.
We have also included the records Hamilton shares with another driver, some of which he could hold alone in the next few years.
Most wins in Formula 1
Lewis Hamilton: 102Michael Schumacher: 91Sebastian Vettel ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/which-f1-records-does-lewis-hamilton-have/6548878/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:59:43 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "So, I Need To Get A U.S. Driver’s License", - "description": "

When I introduced myself here at Jalopnik, a decent number of commenters took offense to the fact that I don’t yet have a U.S. license, rather just a useless UK licence. I’m currently going through the process of rectifying this.

Read more...

", - "content": "

When I introduced myself here at Jalopnik, a decent number of commenters took offense to the fact that I don’t yet have a U.S. license, rather just a useless UK licence. I’m currently going through the process of rectifying this.

Read more...

", - "category": "human activities", - "link": "https://jalopnik.com/so-i-need-to-get-a-u-s-driver-s-license-1848085184", - "creator": "Owen Bellwood", - "pubDate": "Fri, 19 Nov 2021 13:45:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Gasly frustrated by \"shocking\" AlphaTauri F1 pace in Qatar race", + "description": "Gasly lined up second for the start of the race at the Losail International Circuit after penalties for Max Verstappen and Valtteri Bottas promoted him from fourth place on the grid.
Gasly had not finished a session outside of the top four all weekend, but quickly struggled in the race, dropping back to fifth before pitting early on lap 13, with AlphaTauri committing to a two-stopper.
It ...Keep reading", + "content": "Gasly lined up second for the start of the race at the Losail International Circuit after penalties for Max Verstappen and Valtteri Bottas promoted him from fourth place on the grid.
Gasly had not finished a session outside of the top four all weekend, but quickly struggled in the race, dropping back to fifth before pitting early on lap 13, with AlphaTauri committing to a two-stopper.
It ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/gasly-frustrated-by-shocking-alphatauri-f1-pace-in-qatar-race/6808716/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:50:44 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Here's What A Gas Station Fire Suppression System Actually Looks Like", - "description": "

A video is making the rounds on social media showing the moment a gas station’s fire suppression system malfunctioned, blanketing cars and the surrounding area in powder. It’s an old video, but still a good look into something most people will hopefully never have to witness.

Read more...

", - "content": "

A video is making the rounds on social media showing the moment a gas station’s fire suppression system malfunctioned, blanketing cars and the surrounding area in powder. It’s an old video, but still a good look into something most people will hopefully never have to witness.

Read more...

", - "category": "fire suppression", - "link": "https://jalopnik.com/heres-what-a-gas-station-fire-suppression-system-actual-1848086398", - "creator": "Mercedes Streeter", - "pubDate": "Fri, 19 Nov 2021 13:40:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Hamilton to get Brazil engine back in car for F1 Saudi GP", + "description": "The British driver closed to within eight points of rival Max Verstappen at the Qatar GP last weekend after taking a dominant win from pole position.
And with the high-speed Saudi layout already expected to favour the Mercedes car, the Brackley-based squad has confirmed that it will unleash Hamilton’s best power unit for the encounter.
The engine is the new one that Hamilton used at the ...Keep reading", + "content": "The British driver closed to within eight points of rival Max Verstappen at the Qatar GP last weekend after taking a dominant win from pole position.
And with the high-speed Saudi layout already expected to favour the Mercedes car, the Brackley-based squad has confirmed that it will unleash Hamilton’s best power unit for the encounter.
The engine is the new one that Hamilton used at the ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-to-get-brazil-engine-back-in-car-for-f1-saudi-gp/6808723/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:22:15 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Lucid Is Trying To Be The Normal EV Company", - "description": "

Peter Rawlinson is the CEO of Lucid, and a former engineer at Tesla, who is said to be obsessed with beating his former boss Elon Musk in the EV game. The jury is still out on that, but, if a new interview is anything to go by, Rawlinson is already winning when it comes to who you might want to root for.

Read more...

", - "content": "

Peter Rawlinson is the CEO of Lucid, and a former engineer at Tesla, who is said to be obsessed with beating his former boss Elon Musk in the EV game. The jury is still out on that, but, if a new interview is anything to go by, Rawlinson is already winning when it comes to who you might want to root for.

Read more...

", - "category": "nikola tesla", - "link": "https://jalopnik.com/lucid-is-trying-to-be-the-normal-ev-company-1848085905", - "creator": "Erik Shilling", - "pubDate": "Fri, 19 Nov 2021 13:20:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Verstappen ‘not shocked or surprised’ by Qatar F1 yellow flags penalty", + "description": "Verstappen qualified second on the grid at the Losail International Circuit, missing out on pole position to F1 title rival Lewis Hamilton by four-tenths of a second.
But it emerged that Verstappen had set his fastest time while passing through a yellow flag zone at the end of Q3, leading to a summons for Sunday afternoon, four hours before the race.
While Red Bull argued Verstappen’s ...Keep reading", + "content": "Verstappen qualified second on the grid at the Losail International Circuit, missing out on pole position to F1 title rival Lewis Hamilton by four-tenths of a second.
But it emerged that Verstappen had set his fastest time while passing through a yellow flag zone at the end of Q3, leading to a summons for Sunday afternoon, four hours before the race.
While Red Bull argued Verstappen’s ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/verstappen-not-shocked-or-surprised-by-qatar-f1-yellow-flags-penalty/6808713/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:20:33 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "At $5,200, Would You Go For Baroque In This 1982 Maserati Quattroporte?", - "description": "

Classic luxury motoring doesn’t get much classier than today’s Nice Price or No Dice Maserati Quattroporte. Some minor repairs are all that is needed to make this big sedan a serious contender. That is if the cost of entry isn’t too high.

Read more...

", - "content": "

Classic luxury motoring doesn’t get much classier than today’s Nice Price or No Dice Maserati Quattroporte. Some minor repairs are all that is needed to make this big sedan a serious contender. That is if the cost of entry isn’t too high.

Read more...

", - "category": "maserati", - "link": "https://jalopnik.com/at-5-200-would-you-go-for-baroque-in-this-1982-masera-1848081772", - "creator": "Rob Emslie", - "pubDate": "Fri, 19 Nov 2021 13:00:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", + "title": "Extreme E leader Molly Taylor to make Dakar Rally debut in 2022", + "description": "The Australian Rally Champion will tackle the famous rally raid for the South Racing Can-Am Factory Team, paired with fellow Aussie Dale Moscatt.
The 2022 event will mark her debut in the gruelling Dakar event and will follow what has been a successful inaugural Extreme E campaign with Rosberg X Racing.
Taylor, who is currently mid-way through a flying visit back to Australia, will soon head ...Keep reading", + "content": "The Australian Rally Champion will tackle the famous rally raid for the South Racing Can-Am Factory Team, paired with fellow Aussie Dale Moscatt.
The 2022 event will mark her debut in the gruelling Dakar event and will follow what has been a successful inaugural Extreme E campaign with Rosberg X Racing.
Taylor, who is currently mid-way through a flying visit back to Australia, will soon head ...Keep reading", + "category": "Dakar", + "link": "https://www.autosport.com/dakar/news/molly-taylor-to-make-dakar-rally-debut-in-2022/6808687/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:10:52 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Barbie's New Electric Sports Car Is Totally Radical And I Want One", - "description": "

Why haven’t any mainstream automakers built an electric sports car yet? It’s a no-brainer, really. The battery sits super low in the chassis so you get a good low center of gravity. That’s the thinking behind Barbie’s new car from Mattel, and really Mattel makes more cars every year than any other automaker, so for…

Read more...

", - "content": "

Why haven’t any mainstream automakers built an electric sports car yet? It’s a no-brainer, really. The battery sits super low in the chassis so you get a good low center of gravity. That’s the thinking behind Barbie’s new car from Mattel, and really Mattel makes more cars every year than any other automaker, so for…

Read more...

", - "category": "barbie", - "link": "https://jalopnik.com/barbies-new-electric-sports-car-is-totally-radical-and-1848085925", - "creator": "Bradley Brownell", - "pubDate": "Fri, 19 Nov 2021 00:00:00 GMT", - "folder": "00.03 News", - "feed": "Jalopnik", - "read": true, + "title": "Why Supercars doesn't use a full wet tyre", + "description": "Grooved rubber was a hot topic in the Supercars paddock on Sunday after the second of two 250-kilometre races was called off due to rain.
The field did complete a number of laps behind the safety car before being called back to pitlane where they sat for 35 minutes before a decision was taken to abandon the race.
Opinion between drivers was split over whether that was the right call or not ...Keep reading", + "content": "Grooved rubber was a hot topic in the Supercars paddock on Sunday after the second of two 250-kilometre races was called off due to rain.
The field did complete a number of laps behind the safety car before being called back to pitlane where they sat for 35 minutes before a decision was taken to abandon the race.
Opinion between drivers was split over whether that was the right call or not ...Keep reading", + "category": "Supercars", + "link": "https://www.autosport.com/supercars/news/why-supercars-doesnt-use-a-full-wet-tyre/6808686/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:09:22 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News", - "name": "Jalopnik" - }, - "2": { - "title": "RotoWire.com Latest NBA News", - "subtitle": "", - "link": "https://rotowire.com", - "image": "https://content.rotowire.com/images/logo_roto_small.gif", - "description": "Fantasy Sports from RotoWire.com", - "items": [ + }, { - "title": "Tyler Herro: Upgraded to questionable", - "description": "Herro (wrist) was upgraded from out to questionable ahead of Saturday's matchup against the Wizards, Anthony Chiang of the Miami Herald reports.\n\n Visit RotoWire.com for more analysis on this update.", - "content": "Herro (wrist) was upgraded from out to questionable ahead of Saturday's matchup against the Wizards, Anthony Chiang of the Miami Herald reports.\n\n Visit RotoWire.com for more analysis on this update.", - "category": "", - "link": "https://rotowire.com/basketball/player.php?id=4780", + "title": "Masi: Horner criticism of Qatar F1 marshal “not accepted”", + "description": "Horner was called to the Qatar GP stewards after mentioning a “rogue marshal” in a TV interview when discussing the Q3 yellow flag incident that led to Max Verstappen earning a five-place grid penalty.
The marshal in question waved yellow flags at the last corner in the closing moments of Q3 after Pierre Gasly went over the kerbs, lost his front wing, and suffered a puncture.
Horner ...Keep reading", + "content": "Horner was called to the Qatar GP stewards after mentioning a “rogue marshal” in a TV interview when discussing the Q3 yellow flag incident that led to Max Verstappen earning a five-place grid penalty.
The marshal in question waved yellow flags at the last corner in the closing moments of Q3 after Pierre Gasly went over the kerbs, lost his front wing, and suffered a puncture.
Horner ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/masi-horner-criticism-of-qatar-f1-marshal-not-accepted/6808662/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 2:22:00 PM PST", - "folder": "00.03 News", - "feed": "RotoWire", - "read": true, + "pubDate": "Mon, 22 Nov 2021 09:06:45 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Bam Adebayo: Questionable vs. Washington", - "description": "Adebayo (knee) is questionable Saturday against the Wizards.\n\n Visit RotoWire.com for more analysis on this update.", - "content": "Adebayo (knee) is questionable Saturday against the Wizards.\n\n Visit RotoWire.com for more analysis on this update.", - "category": "", - "link": "https://rotowire.com/basketball/player.php?id=4153", + "title": "Pirelli to investigate Qatar F1 tyre failures", + "description": "Valtteri Bottas, Lando Norris, George Russell and Nicholas Latifi all had similar looking failures during the race.
Only Latifi was forced to retire immediately as his occurred just after the pit exit, although - after a stop - Bottas was eventually called back into the garage to retire due to the damage he’d sustained.
With this being the first time F1 had visited the Qatar track, there ...Keep reading", + "content": "Valtteri Bottas, Lando Norris, George Russell and Nicholas Latifi all had similar looking failures during the race.
Only Latifi was forced to retire immediately as his occurred just after the pit exit, although - after a stop - Bottas was eventually called back into the garage to retire due to the damage he’d sustained.
With this being the first time F1 had visited the Qatar track, there ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/pirelli-to-investigate-qatar-f1-tyre-failures/6806879/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 1:39:00 PM PST", - "folder": "00.03 News", - "feed": "RotoWire", + "pubDate": "Sun, 21 Nov 2021 19:20:00 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kevin Porter: Questionable vs. New York", - "description": "Porter (thigh) is questionable for Saturday's tilt against the Knicks.\n\n Visit RotoWire.com for more analysis on this update.", - "content": "Porter (thigh) is questionable for Saturday's tilt against the Knicks.\n\n Visit RotoWire.com for more analysis on this update.", - "category": "", - "link": "https://rotowire.com/basketball/player.php?id=4773", + "title": "Wolff: Interlagos F1 penalty brought out Hamilton's \"superhero powers\"", + "description": "Hamilton led from lights-to-flag in Sunday’s Qatar Grand Prix to cut Red Bull rival Max Verstappen’s championship lead down to eight points with two races remaining this season.
It marked Hamilton’s second straight win following his victory at Interlagos last Sunday, which came after he started the sprint race in last place following his exclusion from qualifying when his car failed a ...Keep reading", + "content": "Hamilton led from lights-to-flag in Sunday’s Qatar Grand Prix to cut Red Bull rival Max Verstappen’s championship lead down to eight points with two races remaining this season.
It marked Hamilton’s second straight win following his victory at Interlagos last Sunday, which came after he started the sprint race in last place following his exclusion from qualifying when his car failed a ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/wolff-interlagos-f1-penalty-brought-out-hamiltons-superhero-powers/6806815/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 1:37:00 PM PST", - "folder": "00.03 News", - "feed": "RotoWire", + "pubDate": "Sun, 21 Nov 2021 18:54:04 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Damian Lillard: Probable vs. Philly", - "description": "Lillard (abdomen) is probable for Saturday's matchup against the 76ers, Danny Marang of Blazers Outsiders reports.\n\n Visit RotoWire.com for more analysis on this update.", - "content": "Lillard (abdomen) is probable for Saturday's matchup against the 76ers, Danny Marang of Blazers Outsiders reports.\n\n Visit RotoWire.com for more analysis on this update.", - "category": "", - "link": "https://rotowire.com/basketball/player.php?id=3304", + "title": "Norris had no warning before \"dangerous\" Qatar F1 tyre failure", + "description": "Norris was forced to pit with eight laps remaining after his tyre “blew up”, ending the race as one of four drivers to sustain a puncture.
Valtteri Bottas, George Russell and Nicholas Latifi were also forced to pit due to front-left punctures, but Norris was the only member of the quartet to score points, finishing the race ninth. He had sat fourth prior to his late pitstop.
Speaking to ...Keep reading", + "content": "Norris was forced to pit with eight laps remaining after his tyre “blew up”, ending the race as one of four drivers to sustain a puncture.
Valtteri Bottas, George Russell and Nicholas Latifi were also forced to pit due to front-left punctures, but Norris was the only member of the quartet to score points, finishing the race ninth. He had sat fourth prior to his late pitstop.
Speaking to ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/norris-had-no-warning-before-dangerous-qatar-f1-tyre-failure/6806597/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 1:31:00 PM PST", - "folder": "00.03 News", - "feed": "RotoWire", + "pubDate": "Sun, 21 Nov 2021 17:36:05 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Tyler Herro: Out again Saturday", - "description": "Herro (wrist) won't play Saturday against the Wizards, Ira Winderman of the South Florida Sun Sentinel reports.\n\n Visit RotoWire.com for more analysis on this update.", - "content": "Herro (wrist) won't play Saturday against the Wizards, Ira Winderman of the South Florida Sun Sentinel reports.\n\n Visit RotoWire.com for more analysis on this update.", - "category": "", - "link": "https://rotowire.com/basketball/player.php?id=4780", + "title": "Evans “couldn’t have given an awful lot more” in WRC title fight", + "description": "Evans put up a valiant fight to take the championship battle into this weekend’s Rally Monza finale having reduced Ogier’s advantage from 44 to 17 points after a victory in Finland and a second in Spain.
Although admitting he needed Ogier to slip up to become the first British WRC champion since the late Richard Burns in 2001, Evans pushed Ogier all the way in an thrilling battle for the ...Keep reading", + "content": "Evans put up a valiant fight to take the championship battle into this weekend’s Rally Monza finale having reduced Ogier’s advantage from 44 to 17 points after a victory in Finland and a second in Spain.
Although admitting he needed Ogier to slip up to become the first British WRC champion since the late Richard Burns in 2001, Evans pushed Ogier all the way in an thrilling battle for the ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/evans-couldnt-have-given-an-awful-lot-more-in-wrc-title-fight/6806540/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 1:28:00 PM PST", - "folder": "00.03 News", - "feed": "RotoWire", + "pubDate": "Sun, 21 Nov 2021 17:16:05 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News", - "name": "RotoWire" - }, - "3": { - "title": "Sport360 - Latest Sports News", - "subtitle": "", - "link": "https://sport360.com/", - "image": null, - "description": "Latest sports news from aroud the globe, including breaking news, analysis and interviews.", - "items": [ + }, { - "title": "NBA teams to play in the UAE after agreeing multiyear deal with DCT Abu Dhabi", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/nba-2/346700/nba-teams-to-play-in-the-uae-after-agreeing-multiyear-deal-with-dct-abu-dhabi", + "title": "Horner apologises for F1 marshals comment in Qatar", + "description": "Horner was summoned to the stewards after the race at Losail on Sunday to face allegations that he had breached the International Sporting Code and damaged the reputation of the FIA and its officials.
The Red Bull boss received an official warning for his remarks, which he made before the race to Sky, blaming a 'rogue marshal' for having put out the double waved yellow flags in qualifying ...Keep reading", + "content": "Horner was summoned to the stewards after the race at Losail on Sunday to face allegations that he had breached the International Sporting Code and damaged the reputation of the FIA and its officials.
The Red Bull boss received an official warning for his remarks, which he made before the race to Sky, blaming a 'rogue marshal' for having put out the double waved yellow flags in qualifying ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/horner-apologises-for-f1-marshals-comment-in-qatar/6806479/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 17:03:40 +0400", + "pubDate": "Sun, 21 Nov 2021 16:57:18 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", - "read": true, + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Dani Alves undergoes Barcelona medical ahead of second stint", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/football/barcelona/346695/dani-alves-undergoes-barcelona-medical-ahead-of-second-stint", + "title": "Ogier: Hard to put emotional eighth WRC title into words", + "description": "The Toyota driver secured an emotional championship victory in style by winning the title deciding Rally Monza after a thrilling event long fight with teammate and rival Elfyn Evans.
Ogier’s victory sparked emotional scenes as the success brought the curtain down on a glittering full-time WRC career, while it was also the final event for co-driver Julien Ingrassia after a successful 16-year ...Keep reading", + "content": "The Toyota driver secured an emotional championship victory in style by winning the title deciding Rally Monza after a thrilling event long fight with teammate and rival Elfyn Evans.
Ogier’s victory sparked emotional scenes as the success brought the curtain down on a glittering full-time WRC career, while it was also the final event for co-driver Julien Ingrassia after a successful 16-year ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/ogier-hard-to-put-emotional-eighth-wrc-title-into-words/6806387/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Mon, 15 Nov 2021 17:47:57 +0400", + "pubDate": "Sun, 21 Nov 2021 16:31:39 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", - "read": true, + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Beach Run Festival 2021 attracts over 2,500 attendees", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/other/346686/beach-run-festival-2021-attracts-over-2500-attendees", + "title": "Horner summoned to F1 stewards on potential disrepute charge", + "description": "Just minutes after the chequered flag came out at Losail, Horner was ordered to visit the stewards’ office for alleged breaches of the International Sporting Code.
The two elements of the code – Article 12.2.1 f) and 12.2.1 k) relate to the standards of conduct that competitors are expected to follow.
It is understood that the action has been taken after Horner and Red Bull’s ...Keep reading", + "content": "Just minutes after the chequered flag came out at Losail, Horner was ordered to visit the stewards’ office for alleged breaches of the International Sporting Code.
The two elements of the code – Article 12.2.1 f) and 12.2.1 k) relate to the standards of conduct that competitors are expected to follow.
It is understood that the action has been taken after Horner and Red Bull’s ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/horner-summoned-to-f1-stewards-on-potential-disrepute-charge/6806358/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Mon, 15 Nov 2021 13:22:40 +0400", + "pubDate": "Sun, 21 Nov 2021 16:22:36 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", - "read": true, + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Andrey Rublev confirmed for Mubadala World Tennis Championship", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/tennis/mubadala-championship/346677/andrey-rublev-confirmed-for-mubadala-world-tennis-championship", + "title": "Alonso: F1 Qatar GP podium return felt \"unbelievable\" ", + "description": "The Alpine driver pulled off a one-stop strategy from the second row on the grid at Losail to grab third place behind Lewis Hamilton and Max Verstappen.
It was the best result of his comeback season so far and his first podium finish since he came home second for Ferrari at the 2014 Hungarian Grand Prix.
Speaking about his feelings after the race, Alonso said: “Yeah, unbelievable. Seven ...Keep reading", + "content": "The Alpine driver pulled off a one-stop strategy from the second row on the grid at Losail to grab third place behind Lewis Hamilton and Max Verstappen.
It was the best result of his comeback season so far and his first podium finish since he came home second for Ferrari at the 2014 Hungarian Grand Prix.
Speaking about his feelings after the race, Alonso said: “Yeah, unbelievable. Seven ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/alonso-f1-qatar-gp-podium-return-felt-unbelievable-/6806303/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 09 Nov 2021 20:25:01 +0400", + "pubDate": "Sun, 21 Nov 2021 16:14:16 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Early start for Xavi on first proper day of training as Barcelona boss", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/football/barcelona/346675/early-start-for-xavi-on-first-proper-day-of-training-as-barcelona-boss", + "title": "F1 Grand Prix race results: Hamilton wins Qatar GP", + "description": "Hamilton led from start to finish, while Verstappen battled back from a five-place grid penalty to finish second with fastest lap.
Fernando Alonso used a one-stop podium to finish third, braving it out despite a string of front-left tyre failures – that claimed Valtteri Bottas among others.
2021 Qatar Grand Prix race ...Keep reading", + "content": "Hamilton led from start to finish, while Verstappen battled back from a five-place grid penalty to finish second with fastest lap.
Fernando Alonso used a one-stop podium to finish third, braving it out despite a string of front-left tyre failures – that claimed Valtteri Bottas among others.
2021 Qatar Grand Prix race ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/f1-grand-prix-race-results-hamilton-wins-qatar-gp/6806241/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 09 Nov 2021 17:58:46 +0400", + "pubDate": "Sun, 21 Nov 2021 15:46:03 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Audemars Piguet launches new 43mm Royal Oak Offshore collection with free running founder Sebastien Foucan", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/other/346665/audemars-piguet-launches-new-43mm-royal-oak-offshore-collection-with-free-running-founder-sebastien-foucan", + "title": "F1 Qatar GP: Hamilton dominates ahead of Verstappen", + "description": "Fernando Alonso finished third for Alpine after there was late-race drama, with tyres letting go for cars trying to get through the race on a one-stop strategy.
At the start, Hamilton immediately moved towards the inside to cover off Pierre Gasly’s run into the first corner, swooping ahead of the AlphaTauri as Fernando Alonso closed up behind him.
By covering off Gasly’s line, Hamilton ...Keep reading", + "content": "Fernando Alonso finished third for Alpine after there was late-race drama, with tyres letting go for cars trying to get through the race on a one-stop strategy.
At the start, Hamilton immediately moved towards the inside to cover off Pierre Gasly’s run into the first corner, swooping ahead of the AlphaTauri as Fernando Alonso closed up behind him.
By covering off Gasly’s line, Hamilton ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/f1-qatar-gp-hamilton-dominates-ahead-of-verstappen/6806185/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 05 Nov 2021 10:18:37 +0400", + "pubDate": "Sun, 21 Nov 2021 15:44:36 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Dubai Exiles and Hurricanes to meet on Friday in Jon Beeton memorial fixture", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/regional-article/346660/dubai-exiles-and-hurricanes-to-meet-on-friday-in-jon-beeton-memorial-fixture", + "title": "Why the FIA punished Verstappen despite no yellow lights", + "description": "While analysis of Verstappen’s onboard footage from qualifying clearly showed that the Dutchman had passed a double waved yellow flag for Pierre Gasly’s stationary AlphaTauri before finishing his lap, the overall situation was not crystal clear because of the lack of other warnings.
In particular, as Red Bull duly argued with the stewards, the regular yellow warning light panels that are ...Keep reading", + "content": "While analysis of Verstappen’s onboard footage from qualifying clearly showed that the Dutchman had passed a double waved yellow flag for Pierre Gasly’s stationary AlphaTauri before finishing his lap, the overall situation was not crystal clear because of the lack of other warnings.
In particular, as Red Bull duly argued with the stewards, the regular yellow warning light panels that are ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/why-the-fia-punished-verstappen-despite-no-yellow-lights/6805778/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 04 Nov 2021 16:03:29 +0400", + "pubDate": "Sun, 21 Nov 2021 12:51:52 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Under Armour unveils new UA HOVR Mega 2 Clone", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/health-and-fitness/346698/under-armour-unveils-new-ua-hovr-mega-2-clone", + "title": "Verstappen given five-place grid drop for Qatar GP for yellow flag rule break", + "description": "The stewards issued a summons for Verstappen on Saturday night after footage emerged of the Red Bull driver not appearing to lift while completing his lap.
Double waved yellow flags were shown after Pierre Gasly’s AlphaTauri car stopped on the start/finish straight after he sustained damage while running wide over the kerb at Turn 15.
Onboard footage from Verstappen’s car showed a ...Keep reading", + "content": "The stewards issued a summons for Verstappen on Saturday night after footage emerged of the Red Bull driver not appearing to lift while completing his lap.
Double waved yellow flags were shown after Pierre Gasly’s AlphaTauri car stopped on the start/finish straight after he sustained damage while running wide over the kerb at Turn 15.
Onboard footage from Verstappen’s car showed a ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/verstappen-given-five-place-grid-drop-for-qatar-gp-for-yellow-flag-rule-break/6805693/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 03 Nov 2021 15:15:36 +0400", + "pubDate": "Sun, 21 Nov 2021 12:30:33 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Week 4 results: Super League Basketball Championship", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/other/346652/week-4-results-super-league-basketball-championship", + "title": "WRC Monza: Ogier seals emotional eighth world title in style", + "description": "The Toyota driver held his nerve and despite a late scare when he clipped a concrete barrier, the Frenchman completed the final three stages to beat Toyota team-mate and title rival Elfyn Evans to the rally win and the championship.
Ogier secured his fifth victory of the season with a 7.3-second margin over Evans after a titanic battle across the three days. The lead changed hands six times ...Keep reading", + "content": "The Toyota driver held his nerve and despite a late scare when he clipped a concrete barrier, the Frenchman completed the final three stages to beat Toyota team-mate and title rival Elfyn Evans to the rally win and the championship.
Ogier secured his fifth victory of the season with a 7.3-second margin over Evans after a titanic battle across the three days. The lead changed hands six times ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/wrc-monza-ogier-seals-emotional-eighth-world-title-in-style/6805727/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 02 Nov 2021 17:58:03 +0400", + "pubDate": "Sun, 21 Nov 2021 12:29:08 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "UAE Olympian joins tomorrow’s stars at Ultimate Athletics race night", - "description": "\n ", - "content": "\n ", - "category": "", - "link": "https://sport360.com/article/other/athletics/346640/uae-olympian-joins-tomorrows-stars-at-ultimate-athletics-race-night", + "title": "Bottas hit with three-place Qatar GP grid penalty for yellow flag infringement", + "description": "Bottas, Carlos Sainz Jr and title contender Max Verstappen were all summoned after qualifying for improving their lap times while yellow flags were out at the end of Q3 in Losail.
Double-waved yellow flags were shown after Pierre Gasly’s AlphaTauri car stopped on the start/finish straight after he sustained damage while running wide over the kerb at Turn 15.
Verstappen passed the ...Keep reading", + "content": "Bottas, Carlos Sainz Jr and title contender Max Verstappen were all summoned after qualifying for improving their lap times while yellow flags were out at the end of Q3 in Losail.
Double-waved yellow flags were shown after Pierre Gasly’s AlphaTauri car stopped on the start/finish straight after he sustained damage while running wide over the kerb at Turn 15.
Verstappen passed the ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/bottas-hit-with-three-place-qatar-gp-grid-penalty-for-yellow-flag-infringement/6805711/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 31 Oct 2021 15:37:58 +0400", + "pubDate": "Sun, 21 Nov 2021 12:27:46 +0000", "folder": "00.03 News/Sport EN", - "feed": "Sport360", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Sport EN", - "name": "Sport360" - }, - "4": { - "title": "L'Equipe.fr Actu Rugby", - "subtitle": "", - "link": "https://www.lequipe.fr", - "image": "https://www.lequipe.fr/rss/logo_RSS.gif", - "description": "L'Equipe.fr, Toute l'actualité du Rugby", - "items": [ + }, { - "title": "Rugby - Bleus - Antoine Dupont : « Une étape importante de notre construction »", - "description": "Le capitaine du quinze de France Antoine Dupont avoue son impatience mais ne veut pas déifier les All Blacks avant le choc de samedi soir à Saint-Denis, qu'il voit comme une bonne occasion de renforcer la cohésion des Bleus.", - "content": "Le capitaine du quinze de France Antoine Dupont avoue son impatience mais ne veut pas déifier les All Blacks avant le choc de samedi soir à Saint-Denis, qu'il voit comme une bonne occasion de renforcer la cohésion des Bleus.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Antoine-dupont-une-etape-importante-de-notre-construction/1299914#xtor=RSS-1", + "title": "Norris: FIA's Verstappen call shows F1 Austrian GP penalty unfair", + "description": "The McLaren driver was handed a five-second time penalty at the Red Bull Ring in July after the FIA felt that he had forced Sergio Perez off the track as they battled for position at Turn 4 in the race.
The scenario of that incident, with Perez attacking around the outside on the entry and trying to hold his line, has repeatedly been claimed as an example of why there seems to be inconsistency ...Keep reading", + "content": "The McLaren driver was handed a five-second time penalty at the Red Bull Ring in July after the FIA felt that he had forced Sergio Perez off the track as they battled for position at Turn 4 in the race.
The scenario of that incident, with Perez attacking around the outside on the entry and trying to hold his line, has repeatedly been claimed as an example of why there seems to be inconsistency ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/norris-fias-verstappen-call-shows-austrian-gp-penalty-unfair/6805424/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 20:00:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", - "read": true, + "pubDate": "Sun, 21 Nov 2021 12:11:48 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Les spectateurs de France - Nouvelle-Zélande invités à se rendre tôt au Stade de France samedi", - "description": "Le Stade de France fera le plein samedi soir pour le choc de la tournée de novembre entre la France et les All Blacks (21h00). La FFR invite les spectateurs à se rendre tôt au stade.", - "content": "Le Stade de France fera le plein samedi soir pour le choc de la tournée de novembre entre la France et les All Blacks (21h00). La FFR invite les spectateurs à se rendre tôt au stade.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Les-spectateurs-de-france-nouvelle-zelande-invites-a-se-rendre-tot-au-stade-de-france-samedi/1299889#xtor=RSS-1", + "title": "Latest Saudi GP F1 circuit photos revealed as work continues", + "description": "The all-new street circuit is being built on the Jeddah Corniche, and construction work looks set to roll on all the way up until the F1 circus arrives.
While some of the infrastructure around the Jeddah circuit is unlikely to be completed in time for this year’s race, the latest images suggest that the track itself is done – which should at least ensure the event can go ahead.
The new ...Keep reading", + "content": "The all-new street circuit is being built on the Jeddah Corniche, and construction work looks set to roll on all the way up until the F1 circus arrives.
While some of the infrastructure around the Jeddah circuit is unlikely to be completed in time for this year’s race, the latest images suggest that the track itself is done – which should at least ensure the event can go ahead.
The new ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/latest-saudi-gp-f1-circuit-photos-revealed-as-work-continues/6805520/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:26:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 11:30:33 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - IRL - Quatre changements côté irlandais pour le test contre l'Argentine", - "description": "Après leur exploit face à la Nouvelle-Zélande (29-20), les Irlandais se présenteront contre l'Argentine avec une ligne de trois-quarts remodelée, dimanche (15h15).", - "content": "Après leur exploit face à la Nouvelle-Zélande (29-20), les Irlandais se présenteront contre l'Argentine avec une ligne de trois-quarts remodelée, dimanche (15h15).", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Quatre-changements-cote-irlandais-pour-le-test-contre-l-argentine/1299852#xtor=RSS-1", + "title": "Hamilton to use rainbow helmet livery in Saudi Arabia and Abu Dhabi F1 races", + "description": "Hamilton unveiled the new design ahead of this weekend’s race in Qatar, where the Losail International Circuit is hosting its first F1 race.
After running the design in practice and qualifying, Hamilton said he intends to use it for the rest of the season – as F1 closes out the 2021 campaign with a trio of races in the Middle East and in countries that have records on human rights that ...Keep reading", + "content": "Hamilton unveiled the new design ahead of this weekend’s race in Qatar, where the Losail International Circuit is hosting its first F1 race.
After running the design in practice and qualifying, Hamilton said he intends to use it for the rest of the season – as F1 closes out the 2021 campaign with a trio of races in the Middle East and in countries that have records on human rights that ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-to-use-rainbow-helmet-livery-in-saudi-arabia-and-abu-dhabi-f1-races/6805331/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:18:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", - "read": true, + "pubDate": "Sun, 21 Nov 2021 10:59:05 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Transferts - Joel Kpoku quitte les Saracens pour le LOU", - "description": "Le jeune deuxième ligne anglais, Joel Kpoku, arrive dans le Top 14. Il quitte les Saracens pour rejoindre le LOU.", - "content": "Le jeune deuxième ligne anglais, Joel Kpoku, arrive dans le Top 14. Il quitte les Saracens pour rejoindre le LOU.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Joel-kpoku-rejoint-le-top-14-et-le-lou/1299831#xtor=RSS-1", + "title": "WRC Monza: Ogier survives scare as disaster strikes Evans", + "description": "The Toyota title contenders were separated by 0.5s before the final day’s action in Italy, but after an eventful morning loop, Ogier’s rally lead has extended to 7.6s and he remains on course to secure an eighth world title in his final full-time outing.
Ogier clipped a concrete barrier (pictured below) that marked out a chicane on Monza’s historic grand prix circuit banking in stage 14 ...Keep reading", + "content": "The Toyota title contenders were separated by 0.5s before the final day’s action in Italy, but after an eventful morning loop, Ogier’s rally lead has extended to 7.6s and he remains on course to secure an eighth world title in his final full-time outing.
Ogier clipped a concrete barrier (pictured below) that marked out a chicane on Monza’s historic grand prix circuit banking in stage 14 ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/wrc-monza-ogier-survives-scare-as-disaster-strikes-evans/6805361/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:56:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 10:32:25 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Premiership - George Ford va quitter Leicester pour les Sale Sharks", - "description": "L'ouvreur international George Ford va quitter son club de Leicester à l'issue de la saison pour une autre formation de Premiership, les Sale Sharks.", - "content": "L'ouvreur international George Ford va quitter son club de Leicester à l'issue de la saison pour une autre formation de Premiership, les Sale Sharks.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/George-ford-va-quitter-leicester-pour-les-sale-sharks/1299823#xtor=RSS-1", + "title": "Alonso: Alpine needs to understand why it's strong in Qatar", + "description": "The Spaniard earned fifth on the grid in Q3, while his teammate Esteban Ocon took ninth.
Both drivers will start immediately behind a car from AlphaTauri, the team Alpine is battling for fifth in the constructors' championship, adding an extra dimension to Sunday's race.
\"I've been positive all weekend about the car,\" said Alonso. \"It felt very nice in FP1. The track is lovely to drive, and ...Keep reading", + "content": "The Spaniard earned fifth on the grid in Q3, while his teammate Esteban Ocon took ninth.
Both drivers will start immediately behind a car from AlphaTauri, the team Alpine is battling for fifth in the constructors' championship, adding an extra dimension to Sunday's race.
\"I've been positive all weekend about the car,\" said Alonso. \"It felt very nice in FP1. The track is lovely to drive, and ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/alonso-alpine-needs-to-understand-why-its-strong-in-qatar/6805210/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:22:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 10:12:29 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - Dans l'ère professionnelle, les All Blacks ont à huit reprises perdu au moins deux matches d'affilée", - "description": "Il est rare que la Nouvelle-Zélande, battue en Irlande le week-end dernier et qui affronte la France ce samedi, perde deux matches de rang. Mais ça arrive...", - "content": "Il est rare que la Nouvelle-Zélande, battue en Irlande le week-end dernier et qui affronte la France ce samedi, perde deux matches de rang. Mais ça arrive...", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Dans-l-ere-professionnelle-les-all-blacks-ont-a-huit-reprises-perdu-au-moins-deux-matches-d-affilee/1299812#xtor=RSS-1", + "title": "Wolff: Mercedes F1 rear wing images show \"a ghost\"", + "description": "Red Bull raised concerns about the legality of Mercedes' rear wing design last weekend in Brazil after noting Lewis Hamilton's straightline speed advantage over the rest of the field, leading to growing tensions between the title-fighting teams.
Red Bull F1 boss Christian Horner claimed on Friday that marks next to the main plane on the Mercedes rear wing were \"from wings that have been ...Keep reading", + "content": "Red Bull raised concerns about the legality of Mercedes' rear wing design last weekend in Brazil after noting Lewis Hamilton's straightline speed advantage over the rest of the field, leading to growing tensions between the title-fighting teams.
Red Bull F1 boss Christian Horner claimed on Friday that marks next to the main plane on the Mercedes rear wing were \"from wings that have been ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/wolff-mercedes-f1-rear-wing-images-show-a-ghost/6805170/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:56:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 09:31:33 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Pro D2 - Oyonnax domine Bayonne en Pro D2", - "description": "Dans le choc de haut de tableau, Oyonnax l'a emporté sur l'Aviron Bayonnais 30-21 en ouverture de la onzième journée de Pro D2.", - "content": "Dans le choc de haut de tableau, Oyonnax l'a emporté sur l'Aviron Bayonnais 30-21 en ouverture de la onzième journée de Pro D2.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Oyonnax-domine-bayonne-en-pro-d2/1299716#xtor=RSS-1", + "title": "Leong storms to second Macau Grand Prix victory", + "description": "For a second year running the Macau driver was unstoppable on home soil, executing a perfect lights-to-flag win.
The only time he looked under pressure was right at the start, rival Andy Chang drawing alongside on the run into Lisboa on the first lap - as the two had battled in Saturday's eight-lap qualifying race for pole.
Leong cleverly held the inside line to ensure he retained the lead ...Keep reading", + "content": "For a second year running the Macau driver was unstoppable on home soil, executing a perfect lights-to-flag win.
The only time he looked under pressure was right at the start, rival Andy Chang drawing alongside on the run into Lisboa on the first lap - as the two had battled in Saturday's eight-lap qualifying race for pole.
Leong cleverly held the inside line to ensure he retained the lead ...Keep reading", + "category": "General", + "link": "https://www.autosport.com/general/news/leong-storms-to-second-macau-grand-prix-victory/6805144/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 00:06:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 09:19:23 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - ANG - Owen Farrell absent trois mois", - "description": "Le demi d'ouverture ou centre de l'équipe d'Angleterre de rugby, Owen Farrell, va être opéré de la cheville et devrait manquer jusqu'à trois mois de compétition. C'est son club des Saracens qui a annoncé la nouvelle.", - "content": "Le demi d'ouverture ou centre de l'équipe d'Angleterre de rugby, Owen Farrell, va être opéré de la cheville et devrait manquer jusqu'à trois mois de compétition. C'est son club des Saracens qui a annoncé la nouvelle.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Owen-farrell-absent-trois-mois/1299653#xtor=RSS-1", + "title": "Gasly: Qatar kerb damage was “shocking”", + "description": "The Frenchman went over the kerbs at the penultimate corner, breaking the front wing off his car, puncturing the right front tyre, and damaging the floor.
At the time he was up on Valtteri Bottas, who claimed third on the grid, but despite not getting his final lap in he still qualified an impressive fourth.
“Quali has been amazing, the whole weekend so far has been really really good,\" he ...Keep reading", + "content": "The Frenchman went over the kerbs at the penultimate corner, breaking the front wing off his car, puncturing the right front tyre, and damaging the floor.
At the time he was up on Valtteri Bottas, who claimed third on the grid, but despite not getting his final lap in he still qualified an impressive fourth.
“Quali has been amazing, the whole weekend so far has been really really good,\" he ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/gasly-qatar-kerb-damage-was-shocking/6805130/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 19:07:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 09:11:39 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - La Nouvelle-Zélande avec Aaron Smith et Richie Mo'unga face à la France", - "description": "En l'absence de Beauden Barrett, le sélectionneur Ian Foster a choisi d'aligner Aaron Smith et Richie Mo'unga pour débuter le match face aux Bleus, samedi (21 h) au Stade de France. Same Cane fait également son retour comme titulaire.", - "content": "En l'absence de Beauden Barrett, le sélectionneur Ian Foster a choisi d'aligner Aaron Smith et Richie Mo'unga pour débuter le match face aux Bleus, samedi (21 h) au Stade de France. Same Cane fait également son retour comme titulaire.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/La-nouvelle-zelande-avec-aaron-smith-et-richie-mo-unga-face-a-la-france/1299631#xtor=RSS-1", + "title": "Why F1 drivers are still confused over racing rules", + "description": "Often these occasions are a matter of routine and they are over fairly quickly, but this one ran on for a while as the discussion quickly turned to the racing rules, and specifically the fallout of the Max Verstappen/Lewis Hamilton incident in the Sao Paulo Grand Prix.
That matter had been discussed earlier in the day by the original FIA stewards of the Interlagos event. They rejected the ...Keep reading", + "content": "Often these occasions are a matter of routine and they are over fairly quickly, but this one ran on for a while as the discussion quickly turned to the racing rules, and specifically the fallout of the Max Verstappen/Lewis Hamilton incident in the Sao Paulo Grand Prix.
That matter had been discussed earlier in the day by the original FIA stewards of the Interlagos event. They rejected the ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/why-f1-drivers-are-still-confused-over-racing-rules/6805063/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 17:26:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 09:04:50 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - ANG - L'Angleterre avec Manu Tuilagi au centre pour le choc face à l'Afrique du Sud", - "description": "Le sélectionneur anglais Eddie Jones a procédé à plusieurs changements pour le choc contre l'Afrique du Sud ce samedi (16h15). Manu Tuilagi effectue son retour au centre, quand Joe Marchant sera titulaire à l'aile. Courtney Lawes sera capitaine en l'absence d'Owen Farrell.", - "content": "Le sélectionneur anglais Eddie Jones a procédé à plusieurs changements pour le choc contre l'Afrique du Sud ce samedi (16h15). Manu Tuilagi effectue son retour au centre, quand Joe Marchant sera titulaire à l'aile. Courtney Lawes sera capitaine en l'absence d'Owen Farrell.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/L-angleterre-avec-manu-tuilagi-au-centre-pour-le-choc-face-a-l-afrique-du-sud/1299613#xtor=RSS-1", + "title": "Supercars Sydney: Finale declared, van Gisbergen crowned 2021 champion", + "description": "The Triple Eight driver just needed to finish within 49 points of teammate Jamie Whincup in today's 250-kilometre race to claim the 2021 crown.
That proved to be easier than expected, Supercars officials calling off the race after just a handful of laps behind the safety car due to bad weather.
The non-result means van Gisbergen will head to Bathurst next week with an unassailable points ...Keep reading", + "content": "The Triple Eight driver just needed to finish within 49 points of teammate Jamie Whincup in today's 250-kilometre race to claim the 2021 crown.
That proved to be easier than expected, Supercars officials calling off the race after just a handful of laps behind the safety car due to bad weather.
The non-result means van Gisbergen will head to Bathurst next week with an unassailable points ...Keep reading", + "category": "Supercars", + "link": "https://www.autosport.com/supercars/news/sydney-supercars-finale-declared-van-gisbergen-crowned-2021-champion/6805067/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 16:07:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sun, 21 Nov 2021 09:03:53 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleues - Deux changements dans le quinze de France contre les Black Ferns", - "description": "Chloé Jacquet et Marie-Aurélie Castel débuteront à l'arrière et sur l'aile gauche le test des Bleues contre la Nouvelle-Zélande samedi (15 heures) à Castres.", - "content": "Chloé Jacquet et Marie-Aurélie Castel débuteront à l'arrière et sur l'aile gauche le test des Bleues contre la Nouvelle-Zélande samedi (15 heures) à Castres.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Deux-changements-dans-le-quinze-de-france-contre-les-black-ferns/1299596#xtor=RSS-1", + "title": "Ogier keeping WRC title thoughts in check after “crazy” fight with Evans", + "description": "The Frenchman holds a slender 0.5s lead over Toyota teammate Evans heading into the final day of the 2021 season after a relentless rally long battle.
Despite coming under severe pressure from Evans, Ogier remains firmly on the box seat to win the title in what will be an emotional finish to his full-time WRC career.
Ogier holds a 17 point lead over Evans, meaning he could drop to sixth ...Keep reading", + "content": "The Frenchman holds a slender 0.5s lead over Toyota teammate Evans heading into the final day of the 2021 season after a relentless rally long battle.
Despite coming under severe pressure from Evans, Ogier remains firmly on the box seat to win the title in what will be an emotional finish to his full-time WRC career.
Ogier holds a 17 point lead over Evans, meaning he could drop to sixth ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/ogier-keeping-wrc-title-thoughts-in-check-after-crazy-fight-with-evans/6803327/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 15:14:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 20:04:41 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - ÉCO - Hamish Watson de retour pour l'Écosse face au Japon, Finn Russell titulaire à l'ouverture", - "description": "L'Écosse accueillera le Japon à Édimbourg pour le dernier match de sa tournée d'automne ce samedi (14 heures), avec Finn Russell à l'ouverture. Les coéquipiers du joueur du Racing 92 enregistrent par ailleurs le retour d'Hamish Watson.", - "content": "L'Écosse accueillera le Japon à Édimbourg pour le dernier match de sa tournée d'automne ce samedi (14 heures), avec Finn Russell à l'ouverture. Les coéquipiers du joueur du Racing 92 enregistrent par ailleurs le retour d'Hamish Watson.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Hamish-watson-de-retour-pour-l-ecosse-face-au-japon-finn-russell-titulaire-a-l-ouverture/1299593#xtor=RSS-1", + "title": "Bottas, Sainz also summoned for Qatar qualifying yellow flag infringement", + "description": "Like Max Verstappen, who is also under investigation, both drivers were on their final runs in Q3 when Pierre Gasly had stopped on the start-finish straight.
Having struck a kerb that ripped off the AlphaTauri's front wing and gave him a right front puncture, Gasly had driven slowly around the final corner before stopping near the pit wall.
Verstappen passed a set of double waved yellow ...Keep reading", + "content": "Like Max Verstappen, who is also under investigation, both drivers were on their final runs in Q3 when Pierre Gasly had stopped on the start-finish straight.
Having struck a kerb that ripped off the AlphaTauri's front wing and gave him a right front puncture, Gasly had driven slowly around the final corner before stopping near the pit wall.
Verstappen passed a set of double waved yellow ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/bottas-sainz-also-summoned-for-qatar-qualifying-yellow-flag-infringement/6803332/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 15:06:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 19:34:38 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - AUS - Rory Arnold et Kurtley Beale titulaires avec l'Australie contre le pays de Galles", - "description": "Le Toulousain Rory Arnold et le joueur du Racing 92 Kurtley Beale seront dans le XV de départ de l'Australie, pour la rencontre au pays de Galles ce samedi (18h30). Côté gallois, Josh Adams revient à l'aile, Halaholo au centre, et Williams à la mêlée.", - "content": "Le Toulousain Rory Arnold et le joueur du Racing 92 Kurtley Beale seront dans le XV de départ de l'Australie, pour la rencontre au pays de Galles ce samedi (18h30). Côté gallois, Josh Adams revient à l'aile, Halaholo au centre, et Williams à la mêlée.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Rory-arnold-et-kurtley-beale-titulaires-avec-l-australie-contre-le-pays-de-galles/1299590#xtor=RSS-1", + "title": "F1 Qatar Grand Prix: Start time, how to watch, & more", + "description": "The F1 drama continues to crank up as the season approaches its conclusion, with Hamilton taking his 102nd career F1 pole position in a dominant display in qualifying.
Title rival Max Verstappen secured second place in his Red Bull, but he has been summoned to an FIA stewards hearing for allegedly ignoring double waved yellow flags during his final Q3 lap. The incident occurred when Pierre ...Keep reading", + "content": "The F1 drama continues to crank up as the season approaches its conclusion, with Hamilton taking his 102nd career F1 pole position in a dominant display in qualifying.
Title rival Max Verstappen secured second place in his Red Bull, but he has been summoned to an FIA stewards hearing for allegedly ignoring double waved yellow flags during his final Q3 lap. The incident occurred when Pierre ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/f1-qatar-grand-prix-start-time-how-to-watch-more/6803282/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 14:55:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 19:10:42 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Quinze de France : Fabien Galthié explique ses choix pour affronter la Nouvelle-Zélande", - "description": "La fin de l'association entre Jalibert et Ntamack, la titularisation de Woki en deuxième ligne, une troisième ligne densifiée, la titularisation de Danty au centre... Fabien Galthié est revenu en conférence de presse sur ses choix pour affronter la Nouvelle-Zélande samedi soir (21h00).", - "content": "La fin de l'association entre Jalibert et Ntamack, la titularisation de Woki en deuxième ligne, une troisième ligne densifiée, la titularisation de Danty au centre... Fabien Galthié est revenu en conférence de presse sur ses choix pour affronter la Nouvelle-Zélande samedi soir (21h00).", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Quinze-de-france-fabien-galthie-explique-ses-choix-pour-affronter-la-nouvelle-zelande/1299573#xtor=RSS-1", + "title": "WRC Monza: Ogier edges Evans to close in on eighth world title", + "description": "The Toyota title rivals have been involved in a thrilling victory battle with the lead changing hands on five occasions across six stages that comprised the longest day of the season finale in Italy.
Evans initially held a 1.4s lead heading into Saturday’s action but promptly lost the advantage in the morning’s first stage on the Bergamo mountain roads to Ogier.
The Welshman responded ...Keep reading", + "content": "The Toyota title rivals have been involved in a thrilling victory battle with the lead changing hands on five occasions across six stages that comprised the longest day of the season finale in Italy.
Evans initially held a 1.4s lead heading into Saturday’s action but promptly lost the advantage in the morning’s first stage on the Bergamo mountain roads to Ogier.
The Welshman responded ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/wrc-monza-ogier-edges-evans-to-close-in-on-eighth-world-title/6803213/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 13:15:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 18:48:36 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Composition du XV de France face à la Nouvelle-Zélande : Ntamack de retour à l'ouverture, Jalibert remplaçant", - "description": "Pour affronter la Nouvelle-Zélande (samedi, 21 heures), le staff des Bleus a choisi de titulariser Romain Ntamack à l'ouverture, à la place de Matthieu Jalibert.", - "content": "Pour affronter la Nouvelle-Zélande (samedi, 21 heures), le staff des Bleus a choisi de titulariser Romain Ntamack à l'ouverture, à la place de Matthieu Jalibert.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Composition-du-xv-de-france-face-a-la-nouvelle-zelande-romain-ntamack-de-retour-a-l-ouverture/1299563#xtor=RSS-1", + "title": "Ferrari changes Leclerc's F1 chassis after discovering crack", + "description": "Leclerc suffered an unusually poor qualifying display at the Losail International Circuit, getting no further than 13th in Q2 while team-mate Carlos Sainz Jr progressed to line up seventh for tomorrow's grand prix.
Afterwards Leclerc was at a loss to explain for his struggles, saying he was \"very confused\" when he saw the gap to the top 10 runners and assumed it was \"something quite big ...Keep reading", + "content": "Leclerc suffered an unusually poor qualifying display at the Losail International Circuit, getting no further than 13th in Q2 while team-mate Carlos Sainz Jr progressed to line up seventh for tomorrow's grand prix.
Afterwards Leclerc was at a loss to explain for his struggles, saying he was \"very confused\" when he saw the gap to the top 10 runners and assumed it was \"something quite big ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/ferrari-changes-leclercs-f1-chassis-after-discovering-crack/6803118/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 12:11:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 18:09:54 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Le Top 5 des France - Nouvelle-Zélande", - "description": "Retour en images sur cinq rencontres marquantes entre la France et la Nouvelle-Zélande.", - "content": "Retour en images sur cinq rencontres marquantes entre la France et la Nouvelle-Zélande.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Le-top-5-des-france-nouvelle-zelande/1299191#xtor=RSS-1", + "title": "Verstappen summoned to stewards for yellow flags infringement in Qatar qualifying", + "description": "The Red Bull driver was on his second run in Q3 and attempting to try to knock Lewis Hamilton off the pole spot when Pierre Gasly had stopped on the start-finish straight.
Having struck a kerb that ripped off the AlphaTauri's front wing and gave him a right-front puncture, Gasly had driven slowly around the final corner before stopping near the pitwall.
Verstappen passed a set of double ...Keep reading", + "content": "The Red Bull driver was on his second run in Q3 and attempting to try to knock Lewis Hamilton off the pole spot when Pierre Gasly had stopped on the start-finish straight.
Having struck a kerb that ripped off the AlphaTauri's front wing and gave him a right-front puncture, Gasly had driven slowly around the final corner before stopping near the pitwall.
Verstappen passed a set of double ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/verstappen-summoned-to-stewards-for-double-waved-yellow-flags-infringement/6802833/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Thu, 18 Nov 2021 09:45:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 17:45:19 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - France - Nouvelle-Zélande, 10 ans après la finale de la Coupe du monde 2011", - "description": "Le XV de France affronte les Blacks ce samedi (21 heures), dix ans après la finale de Coupe du monde perdue en 2011 à l'Eden Park (8-7). Une défaite sur le fil pour la bande à Dimitri Yachvili et un souvenir éternel pour les Tricolores.", - "content": "Le XV de France affronte les Blacks ce samedi (21 heures), dix ans après la finale de Coupe du monde perdue en 2011 à l'Eden Park (8-7). Une défaite sur le fil pour la bande à Dimitri Yachvili et un souvenir éternel pour les Tricolores.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/France-nouvelle-zelande-10-ans-apres-la-finale-de-la-coupe-du-monde-2011/1299502#xtor=RSS-1", + "title": "FIA conducts extra rear wing checks after Qatar F1 qualifying", + "description": "Red Bull enquired with the FIA about Mercedes’ rear wing design over the Sao Paulo Grand Prix weekend after team boss Christian Horner noted Lewis Hamilton’s “mind-boggling” top speed at Interlagos.
Horner said on Friday in Qatar that Red Bull was prepared to protest Mercedes as it questions the legality of its design, noting alleged score marks on the main plane of the W12’s rear ...Keep reading", + "content": "Red Bull enquired with the FIA about Mercedes’ rear wing design over the Sao Paulo Grand Prix weekend after team boss Christian Horner noted Lewis Hamilton’s “mind-boggling” top speed at Interlagos.
Horner said on Friday in Qatar that Red Bull was prepared to protest Mercedes as it questions the legality of its design, noting alleged score marks on the main plane of the W12’s rear ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/fia-conducts-extra-rear-wing-checks-after-qatar-f1-qualifying/6802961/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 23:20:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 17:22:38 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Jean Dujardin présent à Marcoussis avant le match des Bleus face aux All Blacks", - "description": "L'acteur Jean Dujardin était présent au CNR de Marcoussis ce mercredi pour discuter avec les Bleus et assister à l'entraînement avant le match face aux All Blacks samedi au Stade de France (21 heures).", - "content": "L'acteur Jean Dujardin était présent au CNR de Marcoussis ce mercredi pour discuter avec les Bleus et assister à l'entraînement avant le match face aux All Blacks samedi au Stade de France (21 heures).", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Jean-dujardin-present-a-marcoussis-avant-le-match-des-bleus-face-aux-all-blacks/1299497#xtor=RSS-1", + "title": "Hamilton: F1 racing rules \"not clear\" after FIA briefing post-Brazil clash", + "description": "But Verstappen disagrees, saying that after the drivers’ briefing in Qatar ahead of this weekend’s inaugural F1 race at the Losail track, which is understood to have lasted over an hour, that the situation “was in the end pretty clear”.
After the Sao Paulo event stewards ruled that Mercedes’ request for a right of review into the decision that meant Verstappen’s initial defence at ...Keep reading", + "content": "But Verstappen disagrees, saying that after the drivers’ briefing in Qatar ahead of this weekend’s inaugural F1 race at the Losail track, which is understood to have lasted over an hour, that the situation “was in the end pretty clear”.
After the Sao Paulo event stewards ruled that Mercedes’ request for a right of review into the decision that meant Verstappen’s initial defence at ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-f1-racing-rules-not-clear-after-fia-briefing-post-brazil-clash/6802878/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 22:56:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 16:54:34 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Thomas Ramos et 13 autres Bleus laissés à disposition de leur club", - "description": "Le staff des Bleus a libéré 14 joueurs avant le match face aux All Blacks samedi (21 heures), dont Thomas Ramos mais aussi les blessés Julien Marchand et Sekou Macalou.", - "content": "Le staff des Bleus a libéré 14 joueurs avant le match face aux All Blacks samedi (21 heures), dont Thomas Ramos mais aussi les blessés Julien Marchand et Sekou Macalou.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Thomas-ramos-et-13-autres-bleus-laisses-a-disposition-de-leur-club/1299490#xtor=RSS-1", + "title": "Leclerc \"very confused\" by Qatar GP qualifying struggles after Q2 exit", + "description": "Leclerc dropped out in Q2 at the Losail International Circuit on Saturday evening, finishing nine-tenths of a second off pace-setter Lewis Hamilton’s time and over three-tenths behind Ferrari team-mate Carlos Sainz Jr.
Leclerc sat last in the order after his first run in Q2, but told Ferrari over the radio that he had “no idea” where the time was being lost as he felt his car was “quite ...Keep reading", + "content": "Leclerc dropped out in Q2 at the Losail International Circuit on Saturday evening, finishing nine-tenths of a second off pace-setter Lewis Hamilton’s time and over three-tenths behind Ferrari team-mate Carlos Sainz Jr.
Leclerc sat last in the order after his first run in Q2, but told Ferrari over the radio that he had “no idea” where the time was being lost as he felt his car was “quite ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/leclerc-very-confused-by-qatar-gp-qualifying-struggles-after-q2-exit/6802826/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 22:17:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 16:36:39 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - AFS - Rassie Erasmus suspendu deux mois pour avoir critiqué des arbitres", - "description": "Pour avoir critiqué des arbitres lors de la tournée des Lions britanniques et irlandais, Rassie Erasmus, le directeur du rugby sud-africain, a été suspendu deux mois, mercredi.", - "content": "Pour avoir critiqué des arbitres lors de la tournée des Lions britanniques et irlandais, Rassie Erasmus, le directeur du rugby sud-africain, a été suspendu deux mois, mercredi.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Rassie-erasmus-suspendu-deux-mois-pour-avoir-critique-des-arbitres/1299458#xtor=RSS-1", + "title": "Wolff fears F1 has opened door for \"dirtier driving\" over Verstappen call", + "description": "Verstappen's defensive tactics at Interlagos last weekend, when he crowded title rival Lewis Hamilton off track as they battled for the lead, has been the subject of intense debate over recent days.
At the time, F1 race director Michael Masi and the FIA stewards decided not to investigate Verstappen's actions, and an attempt by Mercedes to seek right of review on that call was rejected in ...Keep reading", + "content": "Verstappen's defensive tactics at Interlagos last weekend, when he crowded title rival Lewis Hamilton off track as they battled for the lead, has been the subject of intense debate over recent days.
At the time, F1 race director Michael Masi and the FIA stewards decided not to investigate Verstappen's actions, and an attempt by Mercedes to seek right of review on that call was rejected in ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/wolff-fears-f1-has-opened-door-for-dirtier-driving-over-verstappen-call/6802750/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 20:59:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Sat, 20 Nov 2021 16:19:36 +0000", + "folder": "00.03 News/Sport EN", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - World Rugby lance une campagne de sensibilisation à la santé cérébrale pour les joueurs de haut niveau", - "description": "World Rugby a annoncé mercredi la mise en place d'une campagne de sensibilisation pour les joueurs de haut niveau à propos de la santé cérébrale.", - "content": "World Rugby a annoncé mercredi la mise en place d'une campagne de sensibilisation pour les joueurs de haut niveau à propos de la santé cérébrale.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/World-rugby-lance-une-campagne-de-sensibilisation-a-la-sante-cerebrale-pour-les-joueurs-de-haut-niveau/1299448#xtor=RSS-1", + "title": "Solberg surprised to be fighting for WRC top five at Rally Monza", + "description": "The son of 2003 WRC champion Petter Solberg delivered one of his best showings to date in a Hyundai i20 WRC car to end Friday sitting fifth of the nine WRC runners.
Solberg, partnered with his fourth different co-driver of the season in Elliott Edmondson, finished six of the seven stages with a top-five time, and three of the tests with the fourth-quickest time.
As a result, the 20-year-old ...Keep reading", + "content": "The son of 2003 WRC champion Petter Solberg delivered one of his best showings to date in a Hyundai i20 WRC car to end Friday sitting fifth of the nine WRC runners.
Solberg, partnered with his fourth different co-driver of the season in Elliott Edmondson, finished six of the seven stages with a top-five time, and three of the tests with the fourth-quickest time.
As a result, the 20-year-old ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/solberg-surprised-to-be-fighting-for-wrc-top-five-at-rally-monza/6799753/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 20:15:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", - "read": false, + "pubDate": "Fri, 19 Nov 2021 20:02:19 +0000", + "folder": "00.03 News", + "feed": "Autosport", + "read": true, "favorite": false, - "created": false, + "created": true, "tags": [] }, { - "title": "Rugby - Bleus - Paul Willemse, avant d'affronter les All Blacks : « Pas un match comme les autres »", - "description": "Le deuxième-ligne du quinze de France Paul Willemse reconnaît que le choc face aux All Blacks, samedi soir au Stade de France (21 heures), tient une place à part dans l'esprit des joueurs tricolores.", - "content": "Le deuxième-ligne du quinze de France Paul Willemse reconnaît que le choc face aux All Blacks, samedi soir au Stade de France (21 heures), tient une place à part dans l'esprit des joueurs tricolores.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Paul-willemse-avant-d-affronter-les-all-blacks-pas-un-match-comme-les-autres/1299437#xtor=RSS-1", + "title": "Ogier: \"Only danger\" is myself in WRC title fight on Rally Monza", + "description": "The Toyota duo have been locked in a thrilling scrap across Friday’s seven stages from which Evans has emerged with a 1.4s lead over the seven-time world champion.
Ogier won three of the four stages held on mountain roads in Italy’s Bergamo region, while Evans struck back in the afternoon stages held at the Monza grand prix circuit to turn around a 6.5s deficit.
The Frenchman ...Keep reading", + "content": "The Toyota duo have been locked in a thrilling scrap across Friday’s seven stages from which Evans has emerged with a 1.4s lead over the seven-time world champion.
Ogier won three of the four stages held on mountain roads in Italy’s Bergamo region, while Evans struck back in the afternoon stages held at the Monza grand prix circuit to turn around a 6.5s deficit.
The Frenchman ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/ogier-only-danger-is-myself-in-wrc-title-fight-on-rally-monza/6799690/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 18:51:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 19:33:58 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Romain Ntamack ouvreur à l'entraînement avant les All Blacks, Matthieu Jalibert remplaçant", - "description": "Lors de l'entraînement des Bleus ouvert à la presse et au public ce mercredi, Romain Ntamack occupait le poste d'ouvreur, tandis que Matthieu Jalibert avait la chasuble de remplaçant.", - "content": "Lors de l'entraînement des Bleus ouvert à la presse et au public ce mercredi, Romain Ntamack occupait le poste d'ouvreur, tandis que Matthieu Jalibert avait la chasuble de remplaçant.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Romain-ntamack-ouvreur-a-l-entrainement-avant-les-all-blacks/1299422#xtor=RSS-1", + "title": "The Mercedes rear wing marks behind Red Bull's suspicions", + "description": "Mercedes and Red Bull continue to provoke one another both on and off the track this season, with the intensity turned up another notch at the Qatar Grand Prix, as Christian Horner threatened to protest his rival's car.
Red Bull has announced its dissatisfaction about the legality of the rear wing on the Mercedes on several occasions now, with the team convinced its bitter rival is gaining an ...Keep reading", + "content": "Mercedes and Red Bull continue to provoke one another both on and off the track this season, with the intensity turned up another notch at the Qatar Grand Prix, as Christian Horner threatened to protest his rival's car.
Red Bull has announced its dissatisfaction about the legality of the rear wing on the Mercedes on several occasions now, with the team convinced its bitter rival is gaining an ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/the-mercedes-rear-wing-marks-behind-red-bulls-suspicions/6799537/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 17:59:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 18:55:38 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Elite 1 (F) - L'AS Bayonne forfait pour le reste de la saison en Élite 1", - "description": "Le conseil d'administration de l'AS Bayonne a décidé de déclarer forfait son équipe féminine pour le reste de la saison d'Élite 1. Les dirigeants n'ont pas apprécié la fronde des joueuses qui ont dénoncé un manque de moyens.", - "content": "Le conseil d'administration de l'AS Bayonne a décidé de déclarer forfait son équipe féminine pour le reste de la saison d'Élite 1. Les dirigeants n'ont pas apprécié la fronde des joueuses qui ont dénoncé un manque de moyens.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/L-as-bayonne-forfait-pour-le-reste-de-la-saison-en-elite-1/1299376#xtor=RSS-1", + "title": "WRC Monza: Evans grabs lead to increase pressure on Ogier", + "description": "Evans managed to transform a 6.5s deficit from the morning’s mountain stage loop into a 1.4s lead over Ogier after starring in the afternoon stages, held at the famous Monza grand prix circuit.
Sitting second, Ogier remains in the box seat to secure an eighth world title in his final full-time WRC event but is under more pressure should the Frenchman, who holds a 17-point lead over Evans ...Keep reading", + "content": "Evans managed to transform a 6.5s deficit from the morning’s mountain stage loop into a 1.4s lead over Ogier after starring in the afternoon stages, held at the famous Monza grand prix circuit.
Sitting second, Ogier remains in the box seat to secure an eighth world title in his final full-time WRC event but is under more pressure should the Frenchman, who holds a 17-point lead over Evans ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/wrc-monza-evans-grabs-lead-to-increase-pressure-on-ogier/6799486/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 15:19:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 18:14:01 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Disparition - Mort accidentelle du fils de Jannie Du Plessis", - "description": "Le fils de l'ancien pilier sud-africain de Montpellier, âgé d'un an, s'est noyé mardi dans la piscine familiale.", - "content": "Le fils de l'ancien pilier sud-africain de Montpellier, âgé d'un an, s'est noyé mardi dans la piscine familiale.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Mort-accidentelle-du-fils-de-jannie-du-plessis/1299375#xtor=RSS-1", + "title": "F1 Qatar GP qualifying: Start time, how to watch & more", + "description": "On a busy opening day of track action at the Losail International Circuit, Bottas set the fastest lap of the day in FP2 of 1m23.148s to claim top spot ahead of AlphaTauri’s Pierre Gasly who went second fastest in both practice sessions. 
Max Verstappen ended FP1 with the quickest time, with the Red Bull driver and F1 world championship leader shuffled down to third place in the second ...Keep reading", + "content": "On a busy opening day of track action at the Losail International Circuit, Bottas set the fastest lap of the day in FP2 of 1m23.148s to claim top spot ahead of AlphaTauri’s Pierre Gasly who went second fastest in both practice sessions. 
Max Verstappen ended FP1 with the quickest time, with the Red Bull driver and F1 world championship leader shuffled down to third place in the second ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/f1-qatar-gp-qualifying-start-time-how-to-watch-more/6799309/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 15:18:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 17:15:22 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - NZL - Beauden Barrett (Nouvelle-Zélande) vers un forfait face à la France", - "description": "Selon John Plumtree, l'entraîneur adjoint des All Blacks, l'ouvreur aux 101 sélections n'est pas encore remis de sa commotion et semble très incertain face aux Bleus, samedi (21h00).", - "content": "Selon John Plumtree, l'entraîneur adjoint des All Blacks, l'ouvreur aux 101 sélections n'est pas encore remis de sa commotion et semble très incertain face aux Bleus, samedi (21h00).", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Beauden-barrett-nouvelle-zelande-vers-un-forfait-face-a-la-france/1299335#xtor=RSS-1", + "title": "Bagnaia quickest on final day of 2022 MotoGP pre-season Jerez test", + "description": "Though conditions were dry for the start of the final day of MotoGP running of the year, the wind had picked up and would prove problematic for the rest of the day.
Honda’s Pol Espargaro was first out on track on the 2021 RC213V before switching to one of the two 2022 prototypes he had to evaluate.
But it would be Honda stablemate Takaaki Nakagami – who topped Thursday’s action – who ...Keep reading", + "content": "Though conditions were dry for the start of the final day of MotoGP running of the year, the wind had picked up and would prove problematic for the rest of the day.
Honda’s Pol Espargaro was first out on track on the 2021 RC213V before switching to one of the two 2022 prototypes he had to evaluate.
But it would be Honda stablemate Takaaki Nakagami – who topped Thursday’s action – who ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/bagnaia-quickest-on-final-day-of-2022-motogp-pre-season-jerez-test/6799274/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 13:09:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 17:08:02 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Question du jour - Approuvez-vous le retour probable à l'ouverture de Romain Ntamack contre les All Blacks ?", - "description": "La question du jour.", - "content": "La question du jour.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Approuvez-vous-le-retour-probable-a-l-ouverture-de-romain-ntamack-contre-les-all-blacks/1299252#xtor=RSS-1", + "title": "NASCAR brings back practice and qualifying for 2022", + "description": "Due to COVID-19 pandemic protocols and for cost-saving, the vast majority of NASCAR race weekends have gone without practice or qualifying since early 2020.
In a statement, NASCAR’s senior vice president of competition Scott Miller said: “NASCAR is excited to return practice and qualifying to its race weekends.
“We missed seeing cars and trucks on track all weekend long, and ...Keep reading", + "content": "Due to COVID-19 pandemic protocols and for cost-saving, the vast majority of NASCAR race weekends have gone without practice or qualifying since early 2020.
In a statement, NASCAR’s senior vice president of competition Scott Miller said: “NASCAR is excited to return practice and qualifying to its race weekends.
“We missed seeing cars and trucks on track all weekend long, and ...Keep reading", + "category": "NASCAR", + "link": "https://www.autosport.com/nascar/news/nascar-brings-back-practice-and-qualifying-for-2022/6799150/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Wed, 17 Nov 2021 00:05:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 17:07:01 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Bleus : Romain Ntamack en 10 face aux All Blacks ?", - "description": "Comme annoncé par RMC Sport et confirmé par L'Equipe, Romain Ntamack devrait retrouver le poste de demi d'ouverture face à la Nouvelle-Zélande samedi au Stade de France (21 heures).", - "content": "Comme annoncé par RMC Sport et confirmé par L'Equipe, Romain Ntamack devrait retrouver le poste de demi d'ouverture face à la Nouvelle-Zélande samedi au Stade de France (21 heures).", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Bleus-romain-ntamack-en-10-face-aux-all-blacks/1299222#xtor=RSS-1", + "title": "Hamilton feeling ‘a little bit slow’ after Qatar F1 Friday practice", + "description": "Hamilton heads into the Qatar weekend on a high after charging from 10th on the grid to win in Brazil last Sunday, cutting Red Bull rival Max Verstappen’s championship lead down to 14 points.
Practice on Friday at the Losail International Circuit saw Verstappen and Hamilton’s Mercedes team-mate, Valtteri Bottas, lead FP1 and FP2 respectively.
Hamilton finished 0.7 seconds off Verstappen ...Keep reading", + "content": "Hamilton heads into the Qatar weekend on a high after charging from 10th on the grid to win in Brazil last Sunday, cutting Red Bull rival Max Verstappen’s championship lead down to 14 points.
Practice on Friday at the Losail International Circuit saw Verstappen and Hamilton’s Mercedes team-mate, Valtteri Bottas, lead FP1 and FP2 respectively.
Hamilton finished 0.7 seconds off Verstappen ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-feeling-a-little-bit-slow-after-qatar-f1-friday-practice/6799130/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 20:49:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 16:19:19 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Podcast - Crunch, le podcast rugby de L'Équipe : autopsie d'All Blacks", - "description": "À quelques jours du choc entre la France et la Nouvelle-Zélande, revue de troupes côté All Blacks dans Crunch : comment expliquer leur défaite en Irlande ? En quoi les Bleus peuvent-ils s'en inspirer ?", - "content": "À quelques jours du choc entre la France et la Nouvelle-Zélande, revue de troupes côté All Blacks dans Crunch : comment expliquer leur défaite en Irlande ? En quoi les Bleus peuvent-ils s'en inspirer ?", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Crunch-le-podcast-rugby-de-l-equipe-autopsie-d-all-blacks/1299199#xtor=RSS-1", + "title": "Mercedes: No score marks on F1 rear wing", + "description": "With the intensity of the F1 title battle between the top two teams ramping up with three races remaining, Red Bull is placing a growing focus on the behaviour of its rival's rear wing.
Red Bull team boss Christian Horner made it clear in Qatar on Friday that he felt Mercedes could be breaking the rules with its design – and would be ready to protest it in the final events.
In a tense ...Keep reading", + "content": "With the intensity of the F1 title battle between the top two teams ramping up with three races remaining, Red Bull is placing a growing focus on the behaviour of its rival's rear wing.
Red Bull team boss Christian Horner made it clear in Qatar on Friday that he felt Mercedes could be breaking the rules with its design – and would be ready to protest it in the final events.
In a tense ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/mercedes-no-score-marks-on-f1-rear-wing/6799113/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 18:41:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 16:14:43 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - Tonga, une équipe de rugby pas comme les autres", - "description": "Le photographe de L'Équipe, Alain Mounic, a accompagné les Tonga dans leur préparation, avant leur match face aux Barbarians français à Lyon (défaite 42-17).", - "content": "Le photographe de L'Équipe, Alain Mounic, a accompagné les Tonga dans leur préparation, avant leur match face aux Barbarians français à Lyon (défaite 42-17).", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Tonga-une-equipe-de-rugby-pas-comme-les-autres/1299170#xtor=RSS-1", + "title": "How has F1 penalised pushing off track? Penalties, warnings and more", + "description": "Drivers and fans alike have been asking for more consistency in stewarding decisions in the wake of the Max Verstappen vs Lewis Hamilton battle in Brazil, but how have the FIA typically penalised drivers for off-track excursions?
Max Verstappen v Lewis Hamilton, Brazil 2021 – no investigation
While some incidents are controversial for the penalties handed out, there are times when debate ...Keep reading", + "content": "Drivers and fans alike have been asking for more consistency in stewarding decisions in the wake of the Max Verstappen vs Lewis Hamilton battle in Brazil, but how have the FIA typically penalised drivers for off-track excursions?
Max Verstappen v Lewis Hamilton, Brazil 2021 – no investigation
While some incidents are controversial for the penalties handed out, there are times when debate ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/how-has-f1-penalised-pushing-off-track/6799014/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 16:10:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 15:40:24 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Mondial 2023 - Land Rover, cinquième partenaire majeur du Mondial 2023", - "description": "Le constructeur automobile britannique Land Rover est devenu, ce mardi, le cinquième partenaire majeur de la prochaine Coupe du monde masculine (8 septembre-28 octobre 2023) en France.", - "content": "Le constructeur automobile britannique Land Rover est devenu, ce mardi, le cinquième partenaire majeur de la prochaine Coupe du monde masculine (8 septembre-28 octobre 2023) en France.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Land-rover-cinquieme-partenaire-majeur-du-mondial-2023/1299165#xtor=RSS-1", + "title": "F1 Grand Prix practice results: Bottas fastest in Qatar", + "description": "Red Bull’s Max Verstappen was fastest in FP1 but it was Bottas who set the quickest time of the day – under the floodlights in FP2 – at 1m23.148s.
Pierre Gasly was an impressive second fastest in both sessions for AlphaTauri.
Qatar Grand Prix FP1 results: Verstappen fastest from ...Keep reading", + "content": "Red Bull’s Max Verstappen was fastest in FP1 but it was Bottas who set the quickest time of the day – under the floodlights in FP2 – at 1m23.148s.
Pierre Gasly was an impressive second fastest in both sessions for AlphaTauri.
Qatar Grand Prix FP1 results: Verstappen fastest from ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/f1-grand-prix-practice-results-bottas-fastest-in-qatar/6798938/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 15:41:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 15:13:40 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - AFS - Cobus Reinach et Handré Pollard, la charnière sud-africaine de Montpellier, titulaire face à l'Angleterre", - "description": "Pour le dernier test de sa tournée d'automne, l'Afrique du Sud procède à trois changements. Contre l'Angleterre (ce samedi, 16h15), la charnière de Montpellier Cobus Reinach-Handré Pollard sera titulaire.", - "content": "Pour le dernier test de sa tournée d'automne, l'Afrique du Sud procède à trois changements. Contre l'Angleterre (ce samedi, 16h15), la charnière de Montpellier Cobus Reinach-Handré Pollard sera titulaire.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Cobus-reinach-et-handre-pollard-la-charniere-sud-africaine-de-montpellier-titulaire-samedi-face-a-l-angleterre/1299149#xtor=RSS-1", + "title": "Fourmaux expects to rejoin WRC Rally Monza after roll", + "description": "Fourmaux crashed out on stage 3 when he clipped a bank on a tight left hander, sending his Ford Fiesta into a slow roll that resulted in the car landing on top of an armco barrier leaving the Frenchman perched perilously on a mountain slope.
The car has returned to the Monza service park with damage to the front, windscreen, drivers’ door and right front toe link, which is expected to be ...Keep reading", + "content": "Fourmaux crashed out on stage 3 when he clipped a bank on a tight left hander, sending his Ford Fiesta into a slow roll that resulted in the car landing on top of an armco barrier leaving the Frenchman perched perilously on a mountain slope.
The car has returned to the Monza service park with damage to the front, windscreen, drivers’ door and right front toe link, which is expected to be ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/fourmaux-expects-to-rejoin-wrc-rally-monza-after-roll/6798919/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 14:51:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 15:08:34 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Justice - Mohamed Haouas finalement jugé le 4 février 2022 pour une affaire de cambriolages", - "description": "Alors que son procès avait été renvoyé à plusieurs reprises et qu'il devait se tenir en début d'année, Mohamed Haouas sera finalement jugé le 4 février 2022.", - "content": "Alors que son procès avait été renvoyé à plusieurs reprises et qu'il devait se tenir en début d'année, Mohamed Haouas sera finalement jugé le 4 février 2022.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Mohamed-haouas-finalement-juge-le-4-fevrier-2022-pour-une-affaire-de-cambriolages/1299133#xtor=RSS-1", + "title": "F1 Qatar GP: Bottas tops FP2 from Gasly and Verstappen", + "description": "Just after darkness had fallen at the Losail circuit, Friday’s second session got underway, with Kimi Raikkonen leading the pack out of the pits and setting the opening time during the early running on the harder compounds.
Raikkonen’s 1m41.721s was immediately beaten by Carlos Sainz Jr’s opening time of 1m26.364s – a full effort compared on that hard tyres to the Alfa’s early ...Keep reading", + "content": "Just after darkness had fallen at the Losail circuit, Friday’s second session got underway, with Kimi Raikkonen leading the pack out of the pits and setting the opening time during the early running on the harder compounds.
Raikkonen’s 1m41.721s was immediately beaten by Carlos Sainz Jr’s opening time of 1m26.364s – a full effort compared on that hard tyres to the Alfa’s early ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/f1-qatar-gp-bottas-tops-fp2-from-gasly-and-verstappen/6798869/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 12:56:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 15:07:31 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby à 7 - Hongkong - Le tournoi de Hongkong reporté à novembre 2022", - "description": "Le tournoi de rugby à 7 de Hongkong, comptant pour le circuit mondial, a été décalé d'avril à novembre 2022, ont annoncé ce mardi les organisateurs.", - "content": "Le tournoi de rugby à 7 de Hongkong, comptant pour le circuit mondial, a été décalé d'avril à novembre 2022, ont annoncé ce mardi les organisateurs.", - "category": "", - "link": "https://www.lequipe.fr/Rugby-a-7/Actualites/Le-tournoi-de-hongkong-reporte-a-novembre-2022/1299120#xtor=RSS-1", + "title": "Ducati MotoGP bike “perfect already” – Bagnaia", + "description": "The 2021 championship runner-up scored four wins for Ducati across the past season and qualified on pole five times, marking himself out as a title contender for 2022.
Ducati has brought a raft of new items to the two-day Jerez test this week, including a new engine, fairing and exhaust, with Bagnaia currently topping Friday’s times as of 3pm local time with a 1m36.872s lap set on medium ...Keep reading", + "content": "The 2021 championship runner-up scored four wins for Ducati across the past season and qualified on pole five times, marking himself out as a title contender for 2022.
Ducati has brought a raft of new items to the two-day Jerez test this week, including a new engine, fairing and exhaust, with Bagnaia currently topping Friday’s times as of 3pm local time with a 1m36.872s lap set on medium ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/ducati-motogp-bike-perfect-already-bagnaia/6798725/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 12:22:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 14:03:13 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - James Slipper capitaine des Wallabies face au pays de Galles", - "description": "James Slipper sera capitaine de l'équipe d'Australie pour le test contre le pays de Galles samedi.", - "content": "James Slipper sera capitaine de l'équipe d'Australie pour le test contre le pays de Galles samedi.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/James-slipper-capitaine-des-wallabies-face-au-pays-de-galles/1299111#xtor=RSS-1", + "title": "​NASCAR Heat Ultimate Edition+ officially launches on Nintendo Switch", + "description": "MIAMI, FL - November 19, 2021 - Motorsport Games Inc. (NASDAQ: MSGM) (“Motorsport Games”), a leading racing game developer, publisher, and Esports ecosystem provider of official motorsport racing series throughout the world, announces today the official launch of NASCAR Heat Ultimate Edition+ on Nintendo Switch, available to play today. The game is the first-ever NASCAR title to come to ...Keep reading", + "content": "MIAMI, FL - November 19, 2021 - Motorsport Games Inc. (NASDAQ: MSGM) (“Motorsport Games”), a leading racing game developer, publisher, and Esports ecosystem provider of official motorsport racing series throughout the world, announces today the official launch of NASCAR Heat Ultimate Edition+ on Nintendo Switch, available to play today. The game is the first-ever NASCAR title to come to ...Keep reading", + "category": "General", + "link": "https://www.autosport.com/general/news/nascar-heat-ultimate-edition-officially-launches-on-nintendo-switch/6798818/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 11:42:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 14:00:00 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Mondial 2023 - La GMF s'engage avec la Coupe du monde de rugby 2023", - "description": "La GMF s'est engagée en tant que sponsor de la Coupe du monde 2023 qui aura lieu en France du 8 septembre au 28 octobre.", - "content": "La GMF s'est engagée en tant que sponsor de la Coupe du monde 2023 qui aura lieu en France du 8 septembre au 28 octobre.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/La-gmf-s-engage-avec-la-coupe-du-monde-de-rugby-2023/1299094#xtor=RSS-1", + "title": "Horner: Red Bull ready to protest Mercedes F1 rear wing", + "description": "Horner has reiterated his suspicions that Mercedes may have gained straightline performance through the use of a trick rear wing.
In a tense FIA press conference that featured Horner sitting alongside his Mercedes opposite number Toto Wolff, Horner also referenced “score marks” that Red Bull has observed on the rear wing endplate of the W12, implying that it moved illegally.
Horner ...Keep reading", + "content": "Horner has reiterated his suspicions that Mercedes may have gained straightline performance through the use of a trick rear wing.
In a tense FIA press conference that featured Horner sitting alongside his Mercedes opposite number Toto Wolff, Horner also referenced “score marks” that Red Bull has observed on the rear wing endplate of the W12, implying that it moved illegally.
Horner ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/horner-red-bull-ready-to-protest-mercedes-f1-rear-wing/6798701/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Tue, 16 Nov 2021 10:00:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 13:57:28 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - ANG - Tests - Owen Farrell et Jamie George forfaits contre l'Afrique du Sud", - "description": "Le capitaine et le talonneur du XV anglais, blessés face à l'Australie, manqueront la revanche de la finale de la dernière coupe du Monde face aux Springboks samedi prochain.", - "content": "Le capitaine et le talonneur du XV anglais, blessés face à l'Australie, manqueront la revanche de la finale de la dernière coupe du Monde face aux Springboks samedi prochain.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Owen-farrell-et-jamie-george-forfaits-contre-l-afrique-du-sud/1299009#xtor=RSS-1", + "title": "Mercedes: right of review not about punishing Verstappen", + "description": "The world champion squad wanted the FIA to reconsider its decision not to investigate Verstappen for pushing Hamilton wide at they battled for the lead at Interlagos last weekend.
However, despite submitting fresh evidence including the forward facing on-board footage from Verstappen’s car, the FIA rejected Mercedes’s case, which means the matter is now closed.
Speaking before the final ...Keep reading", + "content": "The world champion squad wanted the FIA to reconsider its decision not to investigate Verstappen for pushing Hamilton wide at they battled for the lead at Interlagos last weekend.
However, despite submitting fresh evidence including the forward facing on-board footage from Verstappen’s car, the FIA rejected Mercedes’s case, which means the matter is now closed.
Speaking before the final ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/mercedes-right-of-review-not-about-punishing-verstappen/6798659/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Mon, 15 Nov 2021 19:25:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 13:41:28 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Antoine Dupont nommé pour le titre de meilleur joueur du monde", - "description": "Le demi de mêlée des Bleus Antoine Dupont figure parmi les quatre joueurs retenus par World Rugby pour le titre de meilleur joueur de l'année 2021.", - "content": "Le demi de mêlée des Bleus Antoine Dupont figure parmi les quatre joueurs retenus par World Rugby pour le titre de meilleur joueur de l'année 2021.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Antoine-dupont-nomme-pour-le-titre-de-meilleur-joueur-du-monde/1298973#xtor=RSS-1", + "title": "Why Mercedes' right of review into Verstappen's Brazil F1 driving was denied", + "description": "The decision – which centred on the stewards’ insistence that the new footage would not make them question their verdict to consider the incident an example of F1’s ‘let them race’ principle – means Mercedes’ request that the ruling not to investigate Verstappen’s aggressive defensive be re-examined will go no further.
Mercedes’ decision to make an appeal to try and get the ...Keep reading", + "content": "The decision – which centred on the stewards’ insistence that the new footage would not make them question their verdict to consider the incident an example of F1’s ‘let them race’ principle – means Mercedes’ request that the ruling not to investigate Verstappen’s aggressive defensive be re-examined will go no further.
Mercedes’ decision to make an appeal to try and get the ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/analysis-why-the-stewards-denied-mercedes-a-right-of-review-into-verstappens-brazil-f1-driving/6798618/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Mon, 15 Nov 2021 15:26:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 13:35:26 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - XV de France : Julien Marchand forfait pour la Nouvelle-Zélande", - "description": "Touché aux côtes face à la Géorgie dimanche, le talonneur des Bleus Julien Marchand ne pourra pas jouer contre les All Blacks samedi soir au Stade de France.", - "content": "Touché aux côtes face à la Géorgie dimanche, le talonneur des Bleus Julien Marchand ne pourra pas jouer contre les All Blacks samedi soir au Stade de France.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Xv-de-france-julien-marchand-forfait-pour-la-nouvelle-zelande/1298946#xtor=RSS-1", + "title": "Mazepin to miss Qatar GP FP2 due to Haas F1 chassis change", + "description": "Haas revealed one hour before the start of FP2 at the Losail International Circuit that Mazepin had been ruled out of the session after the team discovered his chassis was damaged.
“Nikita Mazepin will not participate in FP2 as a result of a chassis change being required after FP1,” said a spokesman from the Haas team.
It was confirmed this was due to “damage sustained in ...Keep reading", + "content": "Haas revealed one hour before the start of FP2 at the Losail International Circuit that Mazepin had been ruled out of the session after the team discovered his chassis was damaged.
“Nikita Mazepin will not participate in FP2 as a result of a chassis change being required after FP1,” said a spokesman from the Haas team.
It was confirmed this was due to “damage sustained in ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/mazepin-to-miss-qatar-gp-fp2-due-to-haas-f1-chassis-change/6798577/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Mon, 15 Nov 2021 13:08:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 13:16:37 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Médias - 3,5 millions de téléspectateurs devant France-Géorgie sur France 2", - "description": "Diffusé dimanche après-midi sur France 2, le test-match France-Géorgie (41-15) a réalisé une bonne audience.", - "content": "Diffusé dimanche après-midi sur France 2, le test-match France-Géorgie (41-15) a réalisé une bonne audience.", - "category": "", - "link": "https://www.lequipe.fr/Medias/Actualites/3-5-millions-de-telespectateurs-devant-france-georgie-sur-france-2/1298910#xtor=RSS-1", + "title": "Horner: \"No relationship\" with Wolff amid \"most political\" F1 fight", + "description": "As F1 heads towards a conclusion to its first proper title battle between two different teams in the hybrid era, tensions between Red Bull and Mercedes have been steadily building throughout a season of on-track incidents between Max Verstappen and Lewis Hamilton, and off-track bickering about the legality of the opposition's cars.
The Hamilton-Verstappen clash in last week's Sao Paulo Grand ...Keep reading", + "content": "As F1 heads towards a conclusion to its first proper title battle between two different teams in the hybrid era, tensions between Red Bull and Mercedes have been steadily building throughout a season of on-track incidents between Max Verstappen and Lewis Hamilton, and off-track bickering about the legality of the opposition's cars.
The Hamilton-Verstappen clash in last week's Sao Paulo Grand ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/horner-no-relationship-with-wolff-amid-most-political-f1-fight/6798566/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Mon, 15 Nov 2021 10:04:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 13:14:47 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - Joe Biden félicite le XV d'Irlande, victorieux des All Blacks", - "description": "Joe Biden, le président des États-Unis, qui a des origines irlandaises, a félicité dimanche le XV d'Irlande, vainqueur la veille des All Blacks (29-20).", - "content": "Joe Biden, le président des États-Unis, qui a des origines irlandaises, a félicité dimanche le XV d'Irlande, vainqueur la veille des All Blacks (29-20).", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Joe-biden-felicite-le-xv-d-irlande-victorieux-des-all-blacks/1298872#xtor=RSS-1", + "title": "Full FIA stewards' statement on Mercedes' review request", + "description": "Mercedes requested the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off the track at Interlagos as they fought for the lead of the race.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision. Mercedes submitted forward facing ...Keep reading", + "content": "Mercedes requested the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off the track at Interlagos as they fought for the lead of the race.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision. Mercedes submitted forward facing ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/full-fia-stewards-statement-on-mercedes-review-request/6798492/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 23:42:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 12:46:19 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Pierre Bourgarit parmi les 14 joueurs appelés chez les Bleus pour préparer les All Blacks", - "description": "Le talonneur rochelais Pierre Bourgarit, qui n'avait pas encore été appelé cet automne, a été convoqué dimanche parmi les 14 joueurs supplémentaires pour préparer le dernier test de la tournée face à la Nouvelle-Zélande.", - "content": "Le talonneur rochelais Pierre Bourgarit, qui n'avait pas encore été appelé cet automne, a été convoqué dimanche parmi les 14 joueurs supplémentaires pour préparer le dernier test de la tournée face à la Nouvelle-Zélande.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Pierre-bourgarit-parmi-les-14-joueurs-appeles-chez-les-bleus-pour-preparer-les-all-blacks/1298848#xtor=RSS-1", + "title": "FIA denies Mercedes right to review Verstappen/Hamilton Brazilian GP clash", + "description": "Mercedes had wanted the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off track at Interlagos as they fought for the lead of the race last weekend.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision.
Mercedes duly submitted ...Keep reading", + "content": "Mercedes had wanted the FIA to look again at its call not to evaluate whether or not Verstappen broke the rules in pushing Lewis Hamilton off track at Interlagos as they fought for the lead of the race last weekend.
To do so, it needed to show the FIA that there was new, significant and relevant new evidence that had not been available at the time of the decision.
Mercedes duly submitted ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/fia-denies-mercedes-right-to-review-verstappen-hamilton-brazilian-gp-clash/6798426/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 22:04:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 12:26:38 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - NZL - Le centre all black Lienert-Brown forfait face à la France, Beauden Barrett en observation", - "description": "Le centre néo-zélandais Anton Lienert-Brown, blessé à une épaule, ne jouera pas face aux Bleus samedi soir prochain. L'ouvreur Beauden Barrett est lui suivi par le corps médical all black après une commotion.", - "content": "Le centre néo-zélandais Anton Lienert-Brown, blessé à une épaule, ne jouera pas face aux Bleus samedi soir prochain. L'ouvreur Beauden Barrett est lui suivi par le corps médical all black après une commotion.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Le-centre-all-black-lienert-brown-forfait-face-a-la-france-beauden-barrett-en-observation/1298834#xtor=RSS-1", + "title": "F1 Qatar GP: Verstappen leads from Gasly as drivers get first taste of Losail track", + "description": "Drivers’ championship leader Verstappen enjoyed a decent margin over AlphaTauri’s Pierre Gasly and Mercedes’ Valtteri Bottas by the end of FP1, starting the weekend on the right foot for Red Bull.
First practice in Qatar took place in daytime, meaning it was not fully representative of either qualifying or the race, both of which will begin at dusk in cooler conditions.
Verstappen ...Keep reading", + "content": "Drivers’ championship leader Verstappen enjoyed a decent margin over AlphaTauri’s Pierre Gasly and Mercedes’ Valtteri Bottas by the end of FP1, starting the weekend on the right foot for Red Bull.
First practice in Qatar took place in daytime, meaning it was not fully representative of either qualifying or the race, both of which will begin at dusk in cooler conditions.
Verstappen ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/f1-qatar-gp-verstappen-leads-from-gasly-as-drivers-get-first-taste-of-losail-track/6798244/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 21:11:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 11:39:13 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Maxime Lucu, joyeuse première en Bleu face à la Géorgie", - "description": "Le demi de mêlée de l'UBB, Maxime Lucu, a fêté sa première sélection ce dimanche face à la Géorgie (41-15). Qui plus est chez lui, à Bordeaux.", - "content": "Le demi de mêlée de l'UBB, Maxime Lucu, a fêté sa première sélection ce dimanche face à la Géorgie (41-15). Qui plus est chez lui, à Bordeaux.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Maxime-lucu-joyeuse-premiere-en-bleu-face-a-la-georgie/1298810#xtor=RSS-1", + "title": "WRC Monza: Ogier leads Evans as title rivals trade times", + "description": "The WRC title contenders dominated the first loop of stages at the season finale held on damp and slippery twisty mountain side asphalt roads in northern Italy.
Despite holding a 17 point lead in the title race, Ogier came out of the blocks fast winning three of the four stages to open up 6.5s lead over Evans, who won stage 2.
Hyundai’s Thierry Neuville ended the morning in third, 27.2s ...Keep reading", + "content": "The WRC title contenders dominated the first loop of stages at the season finale held on damp and slippery twisty mountain side asphalt roads in northern Italy.
Despite holding a 17 point lead in the title race, Ogier came out of the blocks fast winning three of the four stages to open up 6.5s lead over Evans, who won stage 2.
Hyundai’s Thierry Neuville ended the morning in third, 27.2s ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/wrc-monza-ogier-leads-evans-as-title-rivals-trade-times/6798253/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 19:11:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 11:26:01 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Gaël Fickou préfère retenir le « positif » après la victoire des Bleus face à la Géorgie", - "description": "Le trois-quarts centre du quinze de France Gaël Fickou a conscience que tout n'a pas été parfait dans la victoire des Bleus face à la Géorgie ce dimanche à Bordeaux (41-15). Mais il a apprécié le répondant de l'équipe.", - "content": "Le trois-quarts centre du quinze de France Gaël Fickou a conscience que tout n'a pas été parfait dans la victoire des Bleus face à la Géorgie ce dimanche à Bordeaux (41-15). Mais il a apprécié le répondant de l'équipe.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Gael-fickou-prefere-retenir-le-positif-apres-la-victoire-des-bleus-face-a-la-georgie/1298795#xtor=RSS-1", + "title": "McLaren: Masi's Verstappen response will set precedent for F1 drivers", + "description": "While race stewards are still deliberating over whether Mercedes should be given a right to review over Verstappen’s defensive actions at Interlagos, McLaren team principal Andreas Seidl thinks a more critical moment will come in Friday night’s drivers’ briefing.
He thinks that, amid questions about inconsistency between the FIA’s hands-off approach to the Verstappen incident and Lando ...Keep reading", + "content": "While race stewards are still deliberating over whether Mercedes should be given a right to review over Verstappen’s defensive actions at Interlagos, McLaren team principal Andreas Seidl thinks a more critical moment will come in Friday night’s drivers’ briefing.
He thinks that, amid questions about inconsistency between the FIA’s hands-off approach to the Verstappen incident and Lando ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/mclaren-masis-verstappen-response-will-set-precedent-for-f1-drivers/6798168/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 18:32:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 11:01:28 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - Le pays de Galles se défait des Fidji", - "description": "Les Gallois ont souffert pour l'emporter (38-23) dimanche soir à Cardiff face aux Fidjiens, profitant de vingt minutes en double supériorité numérique, quinze contre treize.", - "content": "Les Gallois ont souffert pour l'emporter (38-23) dimanche soir à Cardiff face aux Fidjiens, profitant de vingt minutes en double supériorité numérique, quinze contre treize.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Le-pays-de-galles-se-defait-des-fidji/1298793#xtor=RSS-1", + "title": "How to get a job in Formula 1 – Engineer, mechanic, hospitality & more", + "description": "Working in Formula 1 is a dream for many people, with the glitz, glamour and speed of the premier motorsport series being too much to resist. Luckily for those people there are a wide range of jobs available in Formula 1, with something to suit any experience and skillset.
To find out more about the jobs in Formula 1, as well as how to get them, read below.

Nikita Mazepin, Haas F1, and ...Keep reading", + "content": "Working in Formula 1 is a dream for many people, with the glitz, glamour and speed of the premier motorsport series being too much to resist. Luckily for those people there are a wide range of jobs available in Formula 1, with something to suit any experience and skillset.
To find out more about the jobs in Formula 1, as well as how to get them, read below.

Nikita Mazepin, Haas F1, and ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/how-to-get-a-job-in-f1-engineer-mechanic-more/6678392/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 18:23:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 10:40:55 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Fabien Galthié, sélectionneur du XV de France : « Ne pas copier les Irlandais contre les All Blacks »", - "description": "Après la large victoire contre la Géorgie (41-15) ce dimanche, le sélectionneur des Bleus Fabien Galthié a reconnu des imperfections dans ce match et s'est projeté sur le choc du week-end prochain face à la Nouvelle-Zélande, battue par l'Irlande samedi.", - "content": "Après la large victoire contre la Géorgie (41-15) ce dimanche, le sélectionneur des Bleus Fabien Galthié a reconnu des imperfections dans ce match et s'est projeté sur le choc du week-end prochain face à la Nouvelle-Zélande, battue par l'Irlande samedi.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Fabien-galthie-selectionneur-du-xv-de-france-ne-pas-copier-les-irlandais-contre-les-all-blacks/1298788#xtor=RSS-1", + "title": "Why Qatar could be a track limits nightmare for the FIA", + "description": "Losail may be a brand new venue for F1, but rather than wait to see what happens in FP1, race director Michael Masi attempted to pre-empt any problems by naming five potential trouble spots in the notes he issued to teams on Thursday.
They are the exits of Turn 4, a ninety-degree right early in the lap, the fast sequence through Turns 12, 13 and 14, and the final corner at Turn 16.
As usual ...Keep reading", + "content": "Losail may be a brand new venue for F1, but rather than wait to see what happens in FP1, race director Michael Masi attempted to pre-empt any problems by naming five potential trouble spots in the notes he issued to teams on Thursday.
They are the exits of Turn 4, a ninety-degree right early in the lap, the fast sequence through Turns 12, 13 and 14, and the final corner at Turn 16.
As usual ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/why-qatar-could-be-a-track-limits-nightmare-for-the-fia/6798056/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 17:39:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 10:24:51 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Julien Marchand touché aux côtes face à la Géorgie", - "description": "Fabien Galthié, le sélectionneur de l'équipe de France, a indiqué que le talonneur Julien Marchand avait été touché aux côtes dimanche contre la Géorgie (41-15). Il est incertain pour la Nouvelle-Zélande samedi soir.", - "content": "Fabien Galthié, le sélectionneur de l'équipe de France, a indiqué que le talonneur Julien Marchand avait été touché aux côtes dimanche contre la Géorgie (41-15). Il est incertain pour la Nouvelle-Zélande samedi soir.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Julien-marchand-touche-aux-cotes-face-a-la-georgie-selon-fabien-galthie/1298780#xtor=RSS-1", + "title": "VCO ProSIM SERIES: Reigning champions Team VRS take first race win", + "description": "On the grid were 66 Dallara P217 LMP2 cars split into two heat races, with the top 15 from each then making it into a final Bonus Race. Each car has two designated drivers, one professional racing Esports and one from real-world motorsport, with a driver swap required in each race.
Team Redline’s Maximilian Benecke and Chris Lulham won the first Bonus Race at the Red Bull Ring two ...Keep reading", + "content": "On the grid were 66 Dallara P217 LMP2 cars split into two heat races, with the top 15 from each then making it into a final Bonus Race. Each car has two designated drivers, one professional racing Esports and one from real-world motorsport, with a driver swap required in each race.
Team Redline’s Maximilian Benecke and Chris Lulham won the first Bonus Race at the Red Bull Ring two ...Keep reading", + "category": "Esports", + "link": "https://www.autosport.com/esports/news/vco-prosim-series-reigning-champions-team-vrs-take-first-race-win/6799316/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 17:05:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 10:00:28 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Bleus - Antoine Dupont après la victoire face à la Géorgie : « Les All Blacks, c'est un grand défi »", - "description": "Le capitaine et demi de mêlée des Bleus, qui a mené son équipe à la victoire ce dimanche face à la Géorgie (41-15), se projette désormais vers le dernier match de la tournée face à la redoutable équipe néo-zélandaise, samedi prochain, au Stade de France.", - "content": "Le capitaine et demi de mêlée des Bleus, qui a mené son équipe à la victoire ce dimanche face à la Géorgie (41-15), se projette désormais vers le dernier match de la tournée face à la redoutable équipe néo-zélandaise, samedi prochain, au Stade de France.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/Antoine-dupont-apres-la-victoire-des-bleus-contre-la-georgie-la-copie-n-est-pas-parfaite/1298770#xtor=RSS-1", + "title": "Hamilton dismisses ‘DAS 2’ theories over steering wheel movement", + "description": "Rival Red Bull has been intrigued by the way in which the rear of the Mercedes drops down at high speed, to help stall the diffuser and reduce downforce and drag.
The Milton Keynes-based outfit thinks that this behaviour has been critical to a step forward in the straightline speed of the Mercedes over the past few races.
Amid part of the extra scrutiny on Mercedes’ rear wings at the ...Keep reading", + "content": "Rival Red Bull has been intrigued by the way in which the rear of the Mercedes drops down at high speed, to help stall the diffuser and reduce downforce and drag.
The Milton Keynes-based outfit thinks that this behaviour has been critical to a step forward in the straightline speed of the Mercedes over the past few races.
Amid part of the extra scrutiny on Mercedes’ rear wings at the ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-dismisses-das-2-theories-over-steering-wheel-movement/6797910/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 16:23:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 09:50:30 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby - Tests - La France s'impose face à la Géorgie", - "description": "Sans surprise, les Bleus ont battu (41-15) la Géorgie, six essais à deux, dimanche à Bordeaux. Répétition générale avant d'affronter les All Blacks, samedi prochain au Stade de France.", - "content": "Sans surprise, les Bleus ont battu (41-15) la Géorgie, six essais à deux, dimanche à Bordeaux. Répétition générale avant d'affronter les All Blacks, samedi prochain au Stade de France.", - "category": "", - "link": "https://www.lequipe.fr/Rugby/Actualites/La-france-s-impose-face-a-la-georgie/1298767#xtor=RSS-1", + "title": "Giovinazzi vows to remain professional with Alfa Romeo in final three races", + "description": "Alfa Romeo announced earlier this week that Giovinazzi would be leaving the team at the end of the season, with Formula 2 title contender Guanyu Zhou taking his seat.
In confirming his departure from the team, Giovinazzi wrote on social media that \"when money rules it can be ruthless\", hinting at the financial backing Zhou will be bringing next year.
It led to criticism from Vasseur, who ...Keep reading", + "content": "Alfa Romeo announced earlier this week that Giovinazzi would be leaving the team at the end of the season, with Formula 2 title contender Guanyu Zhou taking his seat.
In confirming his departure from the team, Giovinazzi wrote on social media that \"when money rules it can be ruthless\", hinting at the financial backing Zhou will be bringing next year.
It led to criticism from Vasseur, who ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/giovinazzi-vows-to-remain-professional-with-alfa-romeo-in-final-three-races/6797846/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Sun, 14 Nov 2021 15:53:00 +0100", - "folder": "00.03 News/Sport - FR", - "feed": "L'Equipe - Rugby", + "pubDate": "Fri, 19 Nov 2021 09:13:31 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Sport - FR", - "name": "L'Equipe - Rugby" - }, - "5": { - "title": "Le Rugbynistère", - "subtitle": "", - "link": "https://www.lerugbynistere.fr/rss.php", - "image": "https://www.lerugbynistere.fr/imgs/design/logo-rugbynistere-default.png", - "description": "Retrouvez ici nos derniers articles", - "items": [ + }, { - "title": "RUGBY. Équipe de France. Face aux All Blacks, les Bleus ont un cruel déficit d'expérience", - "description": "Le 15 de France affronte ce samedi à 21h les All Blacks sur la pelouse du Stade France. Combien de joueurs de chaque camp ont déjà croisé le fer ?", - "content": "Rugby. France-All Blacks. Woki vs Retallick : l'élève face au maître !Plus que quelques heures avant LE choc tant attendu de la fin de la tournée de novembre du XV de France. Une affiche qui fait rêver face à des Blacks revanchards. La tension autour de cette rencontre ne cesse de monter, Ian Foster avait lancé les hostilités en conférence de presse cette semaine : « nous avons tous à cœur de finir cette tournée, très, très fort », avant de rajouter : « Un match, face à la France, au Stade de France, face à une jeune équipe excitante et qui se développe bien, c’est le match idéal pour donner l’occasion de répondre à ce qui s’est passé samedi dernier. » Une sortie médiatique qui n’est pas passé inaperçu dans le camp français. Fabien Galthié, n’a pas manqué de répondre à son homologue néo-zélandais : « On a bien entendu et reçu le message des Néo-Zélandais et de leur entraîneur. » Une rencontre qui a son pesant d’or des deux côtés. La France pourrait mettre fin à 48 années de disette face aux Blacks au Stade de France. Quant aux hommes de Sam Whitelock, l’idée de subir pour la deuxième fois deux revers de rang n’est certainement pas inenvisageable. Un match qui s’annonce très disputé et explosif. Aussi, l’expérience de ces grands rendez-vous aura très certainement son importance. À ce petit jeu-là, seulement six Français ont déjà rencontré les Blacks. Quant aux Néo-zélandais qui fouleront la pelouse de Saint-Denis ce samedi, ils semblent avoir bien plus d’expérience que leurs confrères de l’Hexagone. Allons voir ça de plus près.\nDes Français très peu expérimentés\nOn le sait, la nouvelle équipe de France sous l’ère Galthié a la particularité d’être assez jeune. Une fierté pour le sélectionneur des Bleus, qui ne cesse de rappeler que ces compositions se rapproche très souvent des 25 ans de moyenne d’âge. Preuve de l’efficacité des nouvelles générations. En revanche, si cette statistique glorifie la formation française, elle peut avoir son inconvénient dans les grands rendez-vous. Et le match de samedi en sera un. Les rencontres face aux All Blacks ont toujours une saveur particulière et mettent une pression supplémentaire. Une pression que cette jeune équipe de France va devoir gérer si elle veut exister face aux triples champions du monde. Sur les 23 Bleus de samedi, seulement 6 ont déjà fait face au haka : Uini Atonio, Antoine Dupont, Damian Penaud, Cyril Baille, Anthony Jelonch et Gaël Fickou. Le troisième ligne et le demi de mêlée toulousain ainsi que l’ailier clermontois ont eu cet honneur qu’à une seule reprise. Baille et Atonio sont à peine plus expérimentés. Ils ont croisé par 4 fois la route des hommes en noir. Le plus capé de ce groupe France, Gaël Fickou, a joué pour la première fois face aux Blacks en 2013. Depuis il les a affrontés à 5 autres occasions. Le point commun pour ces six Tricolores, aucun n’a jamais battu les Néo-zélandais. Néanmoins, pas un seul des 26 joueurs français de ce week-end ne faisaient partie de la déroute des Bleus lors de la coupe du monde 2015. Le sélectionneur français aurait pu apporter de l’expérience en plus, puisque dans la liste des 42 joueurs, Pierre Bourgarit, Dany Priso et Brice Dulin avaient, eux aussi, déjà affronté les Kiwis par le passé.VIDEO. En 2000, les Bleus de Galthié et Lamaison s'offraient les All Blacks d'Umaga à Marseille\nUn rendez-vous bien connu pour ces Blacks\nSi du côté tricolore l’expérience lors des chocs franco-néo-zélandais n’est pas des plus présente, du côté des Kiwis ce n’est pas ce qui manque. À noter pour commencer qu'Ian Foster peut se permettre d’aligner un double champion du monde dans sa composition. Oui, un des hommes qui a tant fait de mal à la France en 2011 sera sur la pelouse ce samedi. Cet homme, ce n’est autre que l’infatigable deuxième ligne et capitaine de cette équipe néo-zélandaise, Sam Withelock. Le joueur de 33 ans est le seul rescapé de la finale de 2011. En tout, il a affronté à 11 reprises le XV de France pour autant de victoires. Il n’est certainement pas le seul à déjà avoir puni les Bleus : 14 des 26 Blacks de ce samedi ont déjà croisé la route des Tricolores. À l’inverse des Français, ces joueurs ont tous un point commun : aucun n’a jamais perdu face à la France. Chez les titulaires, ils ne seront que 4 à connaître leur premier choc face aux Français : Will Jordan, George Bridge, Akira Ioane et enfin le jeune centre Quinn Tupaea. Sam Cane et Aaron Smith quant à eux, seront les plus expérimentés derrière leur capitaine avec respectivement 8 et 9 chocs face aux Bleus. Sans sa blessure, Bauden Barrett aurait apporté encore un peu plus d’expérience contrairement à son homologue Richie Mo’unga qui a seulement disputé quelques minutes en tant que remplaçant face aux Bleus.All Blacks. Qui est Quinn Tupaea, ce ''rookie'' qui pourrait faire des misères aux Bleus ?À comparaison, les Bleus manquent cruellement d’expérience dans ces chocs franco- néo-zélandais. Si l’on cumule les sélections lors de ces duels de chaque côté, on obtient 16 petites sélections françaises contre 66 néo-zélandaises. Un sacré écart. Si vous voulez savoir qui l’emportera entre la fougue de la jeunesse française ou bien l’expérience néo- zélandaise, rendez-vous samedi 21h.", - "category": "", - "link": "https://www.lerugbynistere.fr/news/rugby-equipe-de-france-face-aux-all-blacks-les-bleus-ont-un-cruel-deficit-dexperience-1911211817.php", + "title": "Verstappen: F1 action against Red Bull shows Mercedes' \"true nature\"", + "description": "Red Bull and Mercedes have locked horns on a number of occasions this year amid their title battle, with the latest incidents flaring up last weekend at Interlagos.
Lewis Hamilton was thrown out of qualifying due to a DRS technical breach, but fought back to score victory on Sunday after a tense battle with Verstappen for the lead.
Verstappen appeared to run Hamilton wide at Turn 4 trying to ...Keep reading", + "content": "Red Bull and Mercedes have locked horns on a number of occasions this year amid their title battle, with the latest incidents flaring up last weekend at Interlagos.
Lewis Hamilton was thrown out of qualifying due to a DRS technical breach, but fought back to score victory on Sunday after a tense battle with Verstappen for the lead.
Verstappen appeared to run Hamilton wide at Turn 4 trying to ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/verstappen-f1-action-against-red-bull-shows-mercedes-true-nature/6797827/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 18:20:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Fri, 19 Nov 2021 09:06:38 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le duel Antoine Dupont - Aaron Smith : un match pour nous dire qui est (vraiment) le meilleur 9 du monde", - "description": "Ce France/Nouvelle-Zélande est aussi l'occasion de nous offrir LE duel que tout le monde attend depuis maintenant plus de 18 mois : Dupont face à Smith !", - "content": "Durant les 18 derniers mois, on ne compte plus les fois où l'on entendit les uns arguer qu'Aaron Smith était toujours le meilleur demi de mêlée de la planète, les autres qu'Antoine Dupont avait enfin dépassé le maître. Pendant ce temps et comme pour toujours plus nous faire saliver, voilà que le All Black aux 101 sélections adoubait le tricolore sur ses réseaux sociaux dès avril 2020, avant de récidiver ici et là, à chaque prestation 5 étoiles sortie par le prodige du Stade Toulousain. \nWTF - Le bel hommage d'Aaron Smith à Antoine Dupont... qui lui rend bien !\nSi l'enfant de Castelnau-Magnoac lui répondait avec classe, on n'attendait qu'une seule chose : que les deux meilleurs numéro 9 de la planète s'affrontent ! Cette fois ça y est, Bon Dieu, on va enfin l'avoir ce duel tant convoité ! Samedi à 21h, \"Nugget\" et \"Toto\" vont croiser le fer, ou plutôt leurs passes. En juin dernier, Smith et Dupont l'avait d'ailleurs déjà fait par vidéos interposées, pour la chaîne Youtube de World Rugby. Avec malice, c'est le Néo-Zélandais qui l'avait emporté, le Français prouvant lui qu'il était le plus fort sur les qualités intrinsèques.\nVIDÉO. Antoine Dupont vs Aaron Smith : qui a la passe la plus rapide au monde ?\nAu nom du vice, du physique et du saint-esprit \nMais à ce jeu comme ailleurs, le vice compte. Et au Stade de France, en plus de son talent que tout le monde sait unique, Dupont devra également faire marcher un certain esprit roublard. Sinon quoi Smithy pourrait bien se faire un malin plaisir à tenter de prendre un avantage psychologique sur son cadet... Malgré ses tout juste 25 ans (il les a fêtés ce lundi), croyez-nous : il en est (déjà) capable. Car s'ils font jeu égal sur cet aspect du jeu, l'on sait que le Français, intouchable dans la dimension physique et dans la forme de sa vie, aura alors toutes les cartes en main pour montrer à son glorieux aîné (33 ans dimanche) qu'il est - définitivement - temps de passer le flambeau...\nRUGBY. Owen Farrell encense Antoine Dupont suite à l'annonce de son capitanat\nLe reste ? Probablement une relative opposition de styles entre le NZ, de retour après 4 mois pour rassurer ses partenaires et désormais un peu moins peu moins \"foufou\", et Dupont, que les hommes en noir craignent tout particulièrement pour sa faculté à trouver des failles dans un mur que l'on croyait pourtant en béton armé. Aussi, le danger permanent qu'il cause sur les défenses pourrait ouvrir des espaces pour les Tricolores, comme on le voit de plus en plus chaque week-end. Jerome Kaino l'a dit : \"viser Dupont ne sera pas la solution pour les Blacks.\"\nVIDÉO. WTF 😱. Le sniper Aaron Smith fait le show avec des passes d'une précision chirurgicaleEn face, les puristes ont déjà hâte de (re)voir la plus belle fluidité de passe de la planète à l'oeuvre... Quoiqu'il en soit, cet affrontement sera clairement digne du mythique Joshua/Klitschko de 2017 chez nos voisins du sport pugilistique. Avec en ligne de mire, non pas une ceinture IBF et WBA, mais plutôt l'idée de sceller d'un cachet de cire qui d'Antoine Dupont ou d'Aaron Smith est aujourd'hui le meilleur numéro 9 du monde...RUGBY. France/All Blacks. Sam Cane se méfie d'Antoine Dupont : ''C'est une menace constante''", - "category": "", - "link": "https://www.lerugbynistere.fr/news/le-duel-antoine-dupont-aaron-smith-un-match-pour-nous-dire-qui-est-vraiment-le-meilleur-9-du-monde-1911211715.php", + "title": "M-Sport announces Greensmith will retain WRC seat for 2022", + "description": "Greensmith had been expected to retain his set with the Ford operation for what will be his third full-time campaign in WRC’s top tier, with confirmation arriving during shakedown for this weekend’s Rally Monza season finale.
The 24-year-old joins new signing Craig Breen as confirmed drivers to pilot M-Sport’s all-new Ford Puma, developed to contest the WRC’s new hybrid Rally1 ...Keep reading", + "content": "Greensmith had been expected to retain his set with the Ford operation for what will be his third full-time campaign in WRC’s top tier, with confirmation arriving during shakedown for this weekend’s Rally Monza season finale.
The 24-year-old joins new signing Craig Breen as confirmed drivers to pilot M-Sport’s all-new Ford Puma, developed to contest the WRC’s new hybrid Rally1 ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/m-sport-announces-greensmith-will-retain-wrc-seat-for-2022/6795935/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 17:25:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 18:54:58 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "RUGBY. PRONOSTICS. L'équipe de France va-t-elle faire tomber l'ogre néo-zélandais ?", - "description": "Place aux pronostics avec notre partenaire Winamax avec France/Nouvelle-Zélande, Angleterre vs Afrique du Sud et Pays de Galles/Australie.", - "content": "Rugby. Calendrier de l'Autumn Nations Series - Test Matchs de NovembrePlace aux pronostics avec notre partenaire Winamax. Ce week-end, tout le monde aura les yeux rivés sur le Stade de France où les Bleus reçoivent les All Blacks. Mais il y aura aussi de très belles affiches en Europe avec notamment Angleterre vs Afrique du Sud ou encore Pays de Galles Australie.\nAngleterre/Afrique du Sud (samedi à 16h15)\nCe remake de la dernière finale de la Coupe du monde va-t-il sourire aux Anglais ? Le XV d'Angleterre ne se ressemble plus vraiment à celui qui avait battu les All Blacks en demie pour se hisser en finale au Japon. Mais il n'en reste pas moins très solide. En face, les Sud-Africains ont peu évolué mais sont tout de même privés de certains éléments importants. Une chose est sûre, ça va taper très fort samedi à Twickenham.Le pari sûr : succès des Boks coté à 1,80.\nLe pari audacieux : J. May et B. Mbonambi manque un essai chacun, cote à 8.\nPour parier sur ce match, c'est par ici\nPays de Galles/Australie (samedi à 18h30)\nVainqueurs du dernier Tournoi des 6 Nations, les Gallois ont été battus par la Nouvelle-Zélande et l'Afrique du Sud. Et ce n'est pas le succès poussif contre les Fidji qui va satisfaire les supporters. Ils ont besoin d'une victoire probante face à l'une des trois nations majeures de l'hémisphère sud. Il ne leur reste qu'une occasion face à des Wallabies qui ont aussi vécu une tournée compliquée avec des revers en Écosse puis en Angleterre. \nLe pari sûr : succès du Pays de Galles ou match nul, cote à 1,48.\nLe pari audacieux : Match nul et moins de 45,5 points inscrits, cote à 27.\nPour parier sur ce match, c'est par ici\nFrance/Nouvelle-Zélande (samedi à 21h)\nDeux ans avant le match d'ouverture de la Coupe du monde, les Bleus ont l'occasion de se tester face à leur prochain adversaire au Mondial. Ils n'auront plus cette opportunité avant 2023. L'équipe de France comme la Nouvelle-Zélande compte des absents dans ses rangs. Mais le gros des troupes est bien là pour ce choc au sommet. Les Tricolores ont l'occasion de remporter une première victoire à Paris qui échappe à la France depuis 1973 ! Ils n'ont plus battu les Blacks dans l'Hexagone depuis 21 ans ! Le pari sûr : triple marqueur d'essais : G. Bridge ou W. Jordan ou D. Penaud, cote à 1,33.\nLe pari audacieux : succès de la France coté à 3.\nPour parier sur ce match, c'est par ici \nN'oubliez pas les copains : votre 1er pari remboursé jusqu’à 100 € avec l'offre Winamax ! De quoi se tenter un pari audacieux ?\nEn partenariat avec Winamax.", - "category": "", - "link": "https://www.lerugbynistere.fr/news/rugby-pronostics-lequipe-de-france-va-t-elle-faire-tomber-lorgre-neo-zelandais-1911211602.php", + "title": "Mercedes' Brazilian GP appeal verdict delayed till Friday", + "description": "Following the submission of fresh video evidence by Mercedes, the team had requested that the FIA look again at whether or not Verstappen broke the rules in his defence against Lewis Hamilton at last weekend’s Brazilian Grand Prix.
The matter revolves around Verstappen’s defensive driving at Turn 4 on lap 48, when the Red Bull driver crowded out Hamilton on the exit of the corner as he too ...Keep reading", + "content": "Following the submission of fresh video evidence by Mercedes, the team had requested that the FIA look again at whether or not Verstappen broke the rules in his defence against Lewis Hamilton at last weekend’s Brazilian Grand Prix.
The matter revolves around Verstappen’s defensive driving at Turn 4 on lap 48, when the Red Bull driver crowded out Hamilton on the exit of the corner as he too ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/verstappen-brazilian-gp-verdict-/6795748/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 16:05:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 18:30:26 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Équipe de France de Rugby. Enfin l’heure de Peato Mauvaka ?", - "description": "Souvent barré par son partenaire de club Julien Marchand, Peato Mauvaka aura l’occasion ce samedi de montrer toute l’étendue de son talent.", - "content": "Arrivé au Stade Toulousain à 15 ans, loin de sa ville natale de Nouméa, Peato Mauvaka est un surdoué du rugby. Passé par l'équipe de France des moins de 20 ans, il débute sa carrière professionnelle à Toulouse, à seulement 19 ans. Malgré la rude concurrence au poste, Peato s'impose petit à petit dans la rotation, jusqu'à être aujourd'hui, l'un des cadres du club double champion de France en titre. Et alors que son concurrent Julien Marchand est indisponible pour le match face aux Blacks, ne serait-ce pas l'heure pour Mauvaka d'enfin s'imposer comme le titulaire indiscutable ?\nRESUME VIDEO. Deux gestes justes de Jalibert envoient Flament et Mauvaka en Terre promise pour la victoire\nUne forme incroyable\nToujours derrière son compère du Stade Julien Marchand dans la hiérarchie, Mauvaka ne cesse d'impressionner ces derniers mois. Tout d'abord en club, où il se partage désormais de manière assez équitable le temps de jeu avec Marchand. Depuis le début de l'année, Mauvaka a débuté 4 rencontres, tout comme son concurrent direct. De plus, ses rentrées sont souvent décisives, ce qui poussent beaucoup de personnes à le voir de plus en plus comme le numéro 1 au poste. Très précis en touche, son explosivité et ses qualités balle en main le font se démarquer des autres talonneurs français. Très bon également en défense, Peato est une valeur sûre du pack français. Il a d'ailleurs dépassé assez facilement Bourgarit et Chat dans la hiérarchie chez les Bleus, malgré les bonnes performances de ces derniers en club. Auteur de trois essais depuis le début de la tournée, nul doute que Mauvaka fera parfaitement l'affaire, face aux Blacks samedi soir.\nXV de France - Peato Mauvaka, de numéro 3 à Toulouse à la Coupe du monde en neuf mois !\nUn départ pour s'imposer ?\nQuand on voit les performances de ce joueur, difficile de croire que Peato Mauvaka n'est pas un titulaire indiscutable dans son club ! Véritable joker de luxe, il semble néanmoins compliqué de voir le natif de Nouméa passé définitivement Julien Marchand pour le moment, lui qui est toujours aussi bon. Ce dernier acceptera-t-il de partager son temps de jeu ? Des envies d'ailleurs pourraient apparaître dans l'esprit de Peato, surtout lorsque l'on sait que le RCT était très intéressé. Sébastien Bézy avait notamment quitté le Stade Toulousain pour une raison similaire, lui qui était derrière l'indéboulonnable Antoine Dupont. Mais que les supporters du Stade soient rassurés, Mauvaka ne semble pas vouloir quitter la Ville rose pour le moment. Mieux, une prolongation de contrat serait d'actualité ! S'il reste, à lui de continuer sur cette lancée, qui lui a permis d'obtenir une place de titulaire, face à la Nouvelle-Zélande.\n\nRUGBY. La composition de la France avec Woki en 4, Ntamack en 10 et Jaminet en 15 face aux All Blacks", - "category": "", - "link": "https://www.lerugbynistere.fr/news/equipe-de-france-de-rugby-enfin-lheure-de-peato-mauvaka-1911211236.php", + "title": "Quartararo needs to see Yamaha progress before signing 2023 MotoGP deal", + "description": "The first pre-season test of the 2022 season got underway on Thursday at Jerez, with Quartararo ending up ninth fastest and 0.707 seconds off the pace.
The world champion tested Yamaha’s 2022 bike, but sounded flat when he said the motorcycle was basically the same as the prototype he tested at Misano in September having admittedly expected more new items.
With Yamaha keen to get ...Keep reading", + "content": "The first pre-season test of the 2022 season got underway on Thursday at Jerez, with Quartararo ending up ninth fastest and 0.707 seconds off the pace.
The world champion tested Yamaha’s 2022 bike, but sounded flat when he said the motorcycle was basically the same as the prototype he tested at Misano in September having admittedly expected more new items.
With Yamaha keen to get ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/quartararo-needs-to-see-yamaha-progress-before-signing-2023-motogp-deal/6795736/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 15:00:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 17:51:16 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "All Blacks. Qui est Quinn Tupaea, ce ''rookie'' qui pourrait faire des misères aux Bleus ?", - "description": "Très peu connu du grand public, Quinn Tupaea prend de plus en plus de place au sein des All Blacks, symbole de cette nouvelle génération néo-zélandaise.Titulaire face à la France, qui est-il ?", - "content": "COMPOSITION. Les All Blacks sans Beauden Barrett contre les Bleus, Aaron Smith face à Dupont !En observant d'un œil soucieux la composition de la Nouvelle-Zélande, bon nombre de spectateurs avisés de la balle ovale ont dû se demander qui était ce numéro 12, au milieu de cette pléiade de stars. Car on l'avoue, malgré son indéniable talent, il est le All Black du XV de départ le moins connu. Alors ce samedi, la France va découvrir Quinn Tupaea, 22 ans, 1m86 pour 97kg. Le solide joueur évoluera au centre du terrain aux côtés d'un Rieko Ioane plus habitués aux joutes internationales. Face à lui, Jonathan Danty, titularisé pour la première fois de la tournée chez les Tricolores. Un affrontement entre ''rookie'' qui promet de faire des étincelles. Alors certes, on vous l'accorde, en l'absence d'Anton Lienert-Brown on s'attendait logiquement à voir David Havili toucher le jackpot. À savoir hériter du numéro 12 pour l'épilogue de cette Autumn Nations Series. Certains pourront se montrer déçus de ne pas voir l'élégant joueur à la coupe mulet démarrer sur la pelouse du Stade de France. Impérial depuis le début de saison, le joueur des Crusaders s'est enfin révélé sous le maillot frappé de la fougère à un poste qu'on ne lui connaissait pas. Oui, mais voilà, Foster a tranché. Havili sera sur le banc et c'est donc Tupaea qui débutera la partie. Ce dernier a su saisir sa chance cet été, avec notamment les absences de Goodhue, touché aux ligaments croisés et Ngani Laumape, exilé en France. Alors qui est le nouveau (et énième) phénomène néo-zélandais ? \nRUGBY. Pourquoi Ardie Savea, fer de lance des All Blacks, est-il le meilleur numéro 8 du monde ?Né à Hamilton, Tupaea se fait rapidement connaître dans les équipes de jeunes. Titulaire avec la sélection des moins de 20 ans, de la partie avec les Maoris All Blacks contre les Moana Pasifika, ses qualités de vitesses, d'appuis alliées à une grande puissance, une technique individuelle au-dessus de la moyenne et un bon sens du jeu lui permettent de gravir rapidement les échelons. Le prototype même du trois-quarts centre néo-zélandais. Après s'être étalonné en NPC avec Waikato où il brille, il démarre en 2020 sa carrière au plus haut niveau avec les Chiefs lors du Super Rugby puis Super Rugby Aoteaoroa. Cette saison encore, il joue 7 rencontres avec sa franchise. Ses performances tapent dans l'œil d'Ian Foster qui le sélectionne pour les tests de juillet. L'occasion pour lui de souffler sa première bougie lors de l'écrasante victoire face aux Tonga. Une performance remarquée, mais malheureusement sans essai pour le jeune joueur. Mais qu'importe, ce dernier a pris rendez-vous avec l'avenir.\n\nThat moment when you’re named in the All Blacks for the first time. Congrats Quinn Tupaea 🙌 pic.twitter.com/uXtFeeiiLX\n— All Blacks (@AllBlacks) June 21, 2021\n\nRugby Championship et titularisation contre la France\nCar ses 63 minutes jouées contre les Tonga seront tous sauf un feu de paille. Ian Foster affirme sa confiance en son jeune centre et le sélectionne dans le groupe pour participer au Rugby Championship. Et s'il reste derrière des Havili ou Lienert-Brown, Tupaea grignote quelques minutes en entrant en jeu contre l'Argentine ou lors de la victoire en Afrique du Sud. Face à ces mêmes Pumas, il disputera l'intégralité de la rencontre, le 18 septembre dernier. Une marque de confiance. Par la même occasion, il remportera le Rugby Championship, le premier trophée d'une carrière internationale naissante. Car oui, c'est ça être un All Black. Remplir l'armoire à trophées dès son plus jeune âge et ne laisser que des miettes à ses adversaires. Son premier essai interviendra le 23 octobre dernier lors d'une nouvelle rouste infligée aux USA (14-104). Dans tous les bons coups, Quinn Tupaea sera titularisé une nouvelle fois contre l'Italie, une quinzaine de jours plus tard. Alors on vous voit venir. Vous allez nous dire que Foster l'a aligné seulement lors des matchs estimés plus ''aisés''. Allez, on acquiesce. Pourtant, pour jouer ce samedi, il a été préféré à l'une des pointures au poste, David Havili. Et face à une grosse nation de ce sport. Comment l'expliquer ? \n\n''Je suis ravi de la profondeur d'effectif, mais je pense que, pour ce match-ci, nous avons vraiment senti que l'équipe avait l'air un peu en dedans la semaine dernière et apporter des nouveaux joueurs est exactement ce dont nous avons besoin''. Ça ? Ce sont des propos d'Ian Foster en conférence de presse relayés par Rugby Pass. Et à vrai dire, qui de mieux que Quinn Tuapea, peu utilisé jusqu'à présent lors des rencontres importantes, pour apporter du sang neuf ? Les Blacks arrivent en bout de course, l'état de fraîcheur sera donc primordial pour l'emporter face aux Français. Ce qui peut expliquer cette titularisation, tout comme celle de Sam Cane blessé durant une bonne partie de la saison ou même d'Aaron Smith. Foster se justifiait d'ailleurs, au sujet de l'association choisie au centre du terrain : ''Évidemment, Anton est de toute façon absent avec une blessure à l'épaule [...] Nous avons envisagé d'utiliser Davie et Quinn''. Associer les deux joueurs et décaler Tupaea en 13 ? Finalement Foster a décidé de maintenir Ioane à ce poste. Havili sera dès lors utilisé comme un impact player idéal : ''David a montré de belles choses dans la dernière partie du match (en Irlande NDLR), donc nous travaillons là-dessus et nous pensons que Quinn sera idéal pour entrer dans un rôle de titulaire et l'amener à jouer le type de jeu pour lequel il est bon.'' La puissance de Tupaea pour épuiser la défense des Bleus avant de lâcher la cavalerie avec Havili ? Cela semble être une des stratégies. Toujours est-il, que le jeune centre vivra ce samedi dans la froide nuit parisienne, le plus grand match de son début de carrière, le tout à seulement six sélections (bientôt 7). À Quinn d'être l'un des rois des All Blacks. \nVIDEO. RUGBY. 1973, la dernière victoire à Paris des Bleus de Spanghero face aux All Blacks", - "category": "", - "link": "https://www.lerugbynistere.fr/news/all-blacks-qui-est-quinn-tupaea-le-rookie-de-la-nouvelle-zelande-1911211455.php", + "title": "Nakagami tops first test of 2022 MotoGP pre-season at Jerez", + "description": "Just four days after the 2021 season concluded in Valencia, the opening two-day test of the 2022 pre-season got underway on Thursday at Jerez.
Very little running took place in the opening hour of running, with Luca Marini putting the new VR46 Ducati top of the pile with a 1m43.364s.
But by hour two the track burst into life, with Nakagami ending it fastest of all as he got to work ...Keep reading", + "content": "Just four days after the 2021 season concluded in Valencia, the opening two-day test of the 2022 pre-season got underway on Thursday at Jerez.
Very little running took place in the opening hour of running, with Luca Marini putting the new VR46 Ducati top of the pile with a 1m43.364s.
But by hour two the track burst into life, with Nakagami ending it fastest of all as he got to work ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/nakagami-tops-first-test-of-2022-motogp-pre-season-at-jerez/6795614/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 14:56:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 17:07:27 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "RUGBY. Deux ans après la finale, cet Angleterre/Afrique du Sud sera-t-il vraiment une revanche ?", - "description": "Ce samedi après-midi, l'Afrique du Sud termine sa face aux finalistes anglais, à Twickenham. 2 ans après la finale. Décryptage des compositions.", - "content": "Sur fond d'affaire Rassie Erasmus (suspendu de toute activité rugbystique cette semaine, suite à ses critiques de l'arbitrage lors de la tournée des Lions en Afrique du Sud cet été), les Springboks viennent défier l'Angleterre pour la revanche de la dernière finale de la coupe du monde, dans ce qui s'annonce comme un choc au sommet. Alors que l'Afrique du Sud et son sélectionneur Jacques Nienaber ont gardé la même ossature qui les avait assuré du titre mondial au Japon, les hommes d'Eddie Jones ont eux, après un Tournoi 2021 médiocre, largement été renouvelés.\nExit l'association Ford-Farrell, qui avait eu raison des All Blacks en demi-finale. Place désormais à Marcus Smith en numéro 10, pendant qu'Owen Farrell est forfait pour blessure pendant plusieurs semaines. Exit également le contingent important de Sarries dans le XV de la Rose : les frères Vunipola, Jamie George, Ben Spencer, George Kruis et consorts. Ils ne seront plus que 3 sur la feuille de match, en la personne de Maro Itoje, Charlie Ewels et Max Mallins. Ces absences ont su être bénéfiques aux jeunes talents prometteurs tels que Stward, Marchant, Sam Simmonds (dont la sélection en Angleterre était très attendue outre-Manche), Bevan Rood ou Blamire. Les \"kamikazes kid\", eux, sont toujours présents deux ans après, et ont encore de belles années à vivre sous le maillot anglais. De même pour Kyle Sinckler, qui était sorti suite à un KO après seulement quelques minutes, et qui ne se souvient plus du tout de la rencontre aujourd'hui.\n\n🇿🇦 Minor rotational changes to the Springbok team➡️ Starts for De Jager, Reinach and Pollard at Twickenham🗣️ “England have made it clear that they’ll come hard at us in this match”🔗 Team announcement: https://t.co/978wrrvKfi#StrongerTogether #StrongerForever #ENGvRSA pic.twitter.com/Lzn7ewszf0\n— Springboks (@Springboks) November 16, 2021\n\n\nCôté Boks, l'ossature n'a presque pas changé. D'abord seulement deux changements dans le banc des remplaçants, où Wiese et Elton Jantjies remplacent numériquement François Louw (retraite) et RG Snyman (blessé). Et 5 changements dans le XV de départ. Les retraités Mtawarira et Malherbe ont été relayés par Nché et Nyakane. Du Toit, meilleur joueur du monde 2019, est blessé et c'est Kwagga Smith qui assurera avec le numéro 7 dans le dos. De Klerck également blessé, ainsi que la star Cheslin Kolbe, sont remplacés par Cobus Reinach et Jesse Kriel. Mais les Etzebeth, Kolisi, Vermeulen, Pollard, De Allende et Leroux porteront bien le maillot de la nation arc-en-ciel à Twickenham dans l'une des affiches au sommet de ce samedi de tests.", - "category": "", - "link": "https://www.lerugbynistere.fr/news/rugby-deux-ans-apres-la-finale-cet-angleteterreafrique-du-sud-sera-t-il-vraiment-une-revanche-1911211343.php", + "title": "Gardner thinks Fernandez's Moto2 title claims “bullshit”", + "description": "Gardner beat rookie team-mate Fernandez to this year’s Moto2 crown in a battle that went down to the wire, with the former taking the crown by four points despite winning five races to Fernandez’s eight.
In an interview with Autosport’s sister Spanish language site Motorsport.es, Fernandez says he was the “moral champion” and that the Ajo team made it harder for him to win the ...Keep reading", + "content": "Gardner beat rookie team-mate Fernandez to this year’s Moto2 crown in a battle that went down to the wire, with the former taking the crown by four points despite winning five races to Fernandez’s eight.
In an interview with Autosport’s sister Spanish language site Motorsport.es, Fernandez says he was the “moral champion” and that the Ajo team made it harder for him to win the ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/motogp/news/gardner-thinks-fernandezs-moto2-title-claims-bullshit/6795568/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 14:45:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 16:54:22 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "VIDEO. RUGBY. 1973, la dernière victoire à Paris des Bleus de Spanghero face aux All Blacks", - "description": "Le Stade de France accueillera ce samedi le choc tant attendu entre la France et la Nouvelle-Zélande. Un stade qui ne réussit pas vraiment aux Tricolores.", - "content": "RESUME VIDEO. 1986. Le fameux match face aux All Blacks où les Français se seraient dopés aux amphétaminesC’est la petite stat qui fait grincer des dents. La France peine à mettre à mal les Néo-Zélandais sur son sol et encore plus à Paris. Le dernier succès français face aux Blacks dans la capitale remonte à 1973. Les Bleus s’étaient imposés 13-6 dans un match assez cadenassé. Cette rencontre étant d’ailleurs la deuxième victoire des Bleus de l’histoire face aux All Blacks. Mais les Tricolores ne reste pas sur 48 années de disette en France. Par quatre fois les Bleus ont fait rompre les triples champions du monde dans l’Hexagone : 1977, 1986, 1995 et en 2000. Mais ces quatre succès ont tous eu lieu en province et non dans la capitale. Notamment le magnifique succès à Marseille en 2000, dans un Stade Vélodrome plein à craquer, les Français avaient étrillé les Blacks 42-33. Un match marqué par l’arrivée très tardive des Bleus au stade, le bus des joueurs ayant multiplié les erreurs d’aiguillage. Strap dans le bus, échauffement écourté, Galthié, alors demi de mêlée de cette équipe de France avait eu une merveilleuse idée pour faire monter la température malgré tous ces petits incidents. Avant la rentrée au vestiaire, les Bleus feront un tour d’honneur dans le stade. Chauffé à blanc par un public en folie. L’équipe de France réalisera une des plus belles prestations de son histoire face aux Blacks. Depuis, la France n’a plus jamais réalisé à nouveau cet exploit devant son public. Au Stade de France, c’est 48 années à vide pour les Bleus. En termes de match, c’est 10 revers depuis la victoire en 1973. Un seul petit nul en 2002 vient « égayer » cette triste série. Alors, le choc de samedi viendra confirmer cette malédiction ou bien la France mettra enfin un terme à cette triste série ?\n\nLes compositions :\nFrance 15 Jack Cantoni ; 14 Roland Bertranne - 13 Claude Dourthe - 12 Jean-Pierre - Lux 11 Andre Campaes ; 10 Jean-Pierre Romeu ; 9 Max Barrau 7 Pierre Biemouret -  8 Walter Spanghero (c) - 6 Olivier Saisset 5 Alain Esteve - 4 Elie Cester 3 Jean Iracabal - 2 Rene Benesis - 1 Jean-Louis Azarete \nRemplaçants : 16 Michel Droitecourt, 17 Armand Clerc, 18 Andre Darrieussecq, 19 Jean-Claude Skrela, 20 Michel Pebeyre, 21 Jean-Louis Berot\n\nNouvelle-Zélande : 15 Joe Karam ; 14 Bryan Williams -  13 Bruce Robertson - 12 Ian Hurst - 11 Grant Batty ; 10 Bob Burgess 9 Sid Going  ; 1 Graham Whiting -  2 Tane Norton - 3 Kent Lambert ;  4 Pole Whiting - 5 Hamish Macdonald ; 6 Ian Kirkpatrick (c) - 7 Grizz Wyllie - 8 Alan Sutherland", - "category": "", - "link": "https://www.lerugbynistere.fr/videos/video-rugby-1973-la-derniere-victoire-a-paris-des-bleus-de-spanghero-face-aux-all-blacks-1911211433.php", + "title": "Mercedes took \"different viewpoint\" on Brazil clash after seeing full footage", + "description": "The pair went wide at Interlagos’ Turn 4 fast left-hander, as Hamilton had moved ahead of Verstappen – attacking on the corner’s outside line early in their respective third stints.
The Red Bull driver then responded by braking deeper and sending his car rapidly inside Hamilton’s as they approached the apex, with both going wide in an incident that was not referred to the Sao Paulo ...Keep reading", + "content": "The pair went wide at Interlagos’ Turn 4 fast left-hander, as Hamilton had moved ahead of Verstappen – attacking on the corner’s outside line early in their respective third stints.
The Red Bull driver then responded by braking deeper and sending his car rapidly inside Hamilton’s as they approached the apex, with both going wide in an incident that was not referred to the Sao Paulo ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/mercedes-moved-to-different-viewpoint-on-brazil-incident-after-seeing-on-board-video/6795516/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 14:35:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 16:39:49 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "POINT TRANSFERTS. Le Racing 92 fait son marché à Brive, Seuteni vers la Rochelle, deux Toulousains sur le départ ?", - "description": "On fait le point sur les rumeurs et les annonces officielles qui ont agité le marché des transferts cette semaine en Top 14 et en Pro D2.", - "content": "Top 14\nToulouse\nAntoine Miquel (27 ans) et Arthur Bonneval (26 ans) pourrait quitter le champion de France. Le premier est sur les tablettes du LOU tandis que le second intéresserait le Stade Français et l'UBB selon le Midol.\nBrive\nLe Midi olympique avance que le talonneur Peniami Nasali Narisia (24 ans) et le 3e ligne Kitione Kamikamica (25 ans) ont donné leur accord au Racing 92. L'ailier Setareki Bituniyata serait aussi dans le viseur de la formation francilienne mais il est sous contrat jusqu'en 2024.\nLa Rochelle\nRMC avance que le 3/4 de l'UBB Ulupano Seuteni jouera au Stade Rochelais l'an prochain et ce jusqu'en 2025.\nMontpellier\nCourtisé par le MHR, l'ouvreur anglais George Ford a signé à Sale.\nUSAP\nGeorge Tilsley reste une saison de plus à Perpignan. Piula Fa’asalélé pourrait également continuer l'aventure.\nLOU\nLe Tricolore Baptiste Couilloud aurait prolongé jusqu'en 2025 selon RMC.\nPro D2\nGrenoble\nAnge Capuozzo intéresse plusieurs clubs de Top 14 dont le Racing 92.\nBayonne\nLe pilier Ugo Boniface serait en partance pour l'UBB qui cherchait un joueur suite au départ de Thierry Paiva pour la Rochelle. Notez que le 3e ligne Pierre Huguet devrait débarquer en provenance de Carcassonne.\nMont-de-Marsan\nLe demi de mêlée Léo Coly pourrait rejoindre le Top 14 sans se soucier des phases finales. Toulon et le LOU sont intéressés. La formation lyonnaise lui aurait même fait une offre selon le Midol.\nAgen\nFormé à Oyonnax, l'Anglais Zak Farrance (2e ligne) débarque au SUA.\nAurillac\nProlongation du pilier Alexandre Plantier pour deux saisons supplémentaires (+ 1 en option).\nPremiership\nSale\nL'Irlandais Conor Murray serait dans le viseur des Sharks pour remplacer Faf de Klerk en cas de départ.", - "category": "", - "link": "https://www.lerugbynistere.fr/news/point-transferts-le-racing-92-fait-son-marche-a-brive-seuteni-vers-la-rochelle-deux-toulousains-sur-le-depart-1911211146.php", + "title": "Hamilton: Important for F1 to create scrutiny on human rights issues", + "description": "F1 will stage its first race in Qatar this weekend ahead of a 10-year deal for the state to host a grand prix from 2023. In two weeks’ time, Saudi Arabia will host its first grand prix as part of a long-term agreement that is set to give the series four races in the Middle East.
Human rights are an ongoing issue in both countries, with Amnesty International calling their records “extremely ...Keep reading", + "content": "F1 will stage its first race in Qatar this weekend ahead of a 10-year deal for the state to host a grand prix from 2023. In two weeks’ time, Saudi Arabia will host its first grand prix as part of a long-term agreement that is set to give the series four races in the Middle East.
Human rights are an ongoing issue in both countries, with Amnesty International calling their records “extremely ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/hamilton-important-for-f1-to-create-scrutiny-on-human-rights-issues/6795506/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 11:50:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 16:29:44 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rugby. France-All Blacks. Woki vs Retallick : l'élève face au maître !", - "description": "À l'aube de la confrontation entre la France et la Nouvelle-Zélande, focus sur l'un des duels de ce match : Brodie Retallick, face à Cameron Woki.", - "content": "Plus qu'une journée ! Samedi soir, la France et la Nouvelle-Zélande s'apprêtent à s'affronter dans un match qui s'annonce palpitant. D'un côté, les All Blacks, quasiment imbattables et dieux du rugby, et de l'autre, la France, emmenée par une génération dorée qui voudra certainement prouver au monde entier de quoi elle est capable. Si le duel Smith/Dupont fait déjà saliver tous les fans de ce sport, une autre confrontation va avoir lieu, entre une légende vivante du rugby, et un jeune pétri de talent : Brodie Retallick vs Cameron Woki.\nRUGBY. La composition de la France avec Woki en 4, Ntamack en 10 et Jaminet en 15 face aux All Blacks\nLe grand écart\nOn ne va pas se cacher, ce duel paraît bien déséquilibré sur le papier. En même temps, peu de deuxième ligne sur la planète rugby peuvent rivaliser face au meilleur joueur du monde 2014 ! Brodie, c'est 204 centimètres de talent, jumelés à 122 kg de puissance. Rien que ça ! Aussi habile balle en main qu'en défense, Retallick est l'une des pièces maîtresses du jeu des Blacks, avec son pote de la seconde ligne, Sam Whitelock. Titulaire indiscutable depuis 2013, le joueur de 30 ans est aujourd'hui l'une des références à son poste.\nVIDÉO. Avec cet essai, Brodie Retallick prouve encore une fois qu'il est le meilleur soutien du monde\nAutant vous dire que la tâche ne sera pas aisée pour le Bordelais, Cameron Woki ! Bien plus jeune que le Néo-Zélandais, Woki souffre également d'un déficit énorme d'expérience au niveau international : seulement 10 sélections chez les Bleus pour l'ancien joueur de Massy, contre 86 pour le géant all blacks. De plus, Woki évoluera samedi à un poste inhabituel pour lui ! Troisième ligne aile de métier, le match de samedi ne sera que son deuxième à ce poste chez les Bleus, après celui disputé il y a une semaine face à la Géorgie. Un manque d'automatisme qui peut faire défaut au joueur de l'UBB, mais qui n'enlève en rien ses qualités rugbystiques, et notamment en touche, où il livrera une bataille sans merci à l'alignement des Blacks.\n\nUne vraie carte à jouer pour Woki ?\nLe repositionnement de Woki dans la cage a surpris beaucoup de monde, qui aurait préféré voir un spécialiste du poste, surtout pour un match de cette intensité. On pense particulièrement au Toulousain Flament, ou encore au Lyonnais Taofifenua. Et pourtant, le staff des Bleus a choisi Cameron Woki pour accompagner Willemse en deuxième ligne. Si l’on se doute bien que ce choix est, en premier lieu, fait pour la touche, la présence de Woki dans le pack permettra également d’apporter une touche technique. En effet, le Bordelais est un joueur très habile, capable de jouer facilement avant, et après contact. Son activité en défense est aussi à louer, et sera primordiale face à des Blacks qui auront sûrement la possession du ballon. \nVIDEO. POW POW POW ! Cameron Woki claque un énorme dunk sur le visage des Australiens !Le véritable point noir de ce repositionnement, c’est le manque de puissance de Woki, face à deux monstres physiques. Attention, Cameron Woki est plus que solide (1 mètre 97 pour 108 kg), mais son profil correspond plus à celui d’un troisième ligne ! Face à une deuxième ligne néo-zélandaise qui culmine à plus de 245 kg, la question peut donc se poser ici. Néanmoins, Galthié a certainement prévu le coup, en densifiant sa troisième ligne (avec notamment l’association Jelonch-Cros-Alldritt). À voir donc si cela suffira à repousser la puissance des avants Blacks, qui voudront se racheter après s’être fait concasser la semaine passée par les Irlandais.\n\nÉquipe de France. Copier l'Irlande et les Boks, l'erreur fatale face aux Blacks ?\nToujours est-il que ce match dans le match sera intéressant à suivre, avec un Cameron Woki qui ne cesse de nous surprendre.", - "category": "", - "link": "https://www.lerugbynistere.fr/news/rugby-france-all-blacks-woki-vs-retallick-leleve-face-au-maitre-1911211048.php", - "creator": "", - "pubDate": "2021-11-19 11:45:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "title": "NASCAR doesn't want Next Gen car to be \"easy to drive\"", + "description": "The first day of a group test at the Charlotte Motor Speedway oval on Wednesday proved eventful, with Austin Dillon crashing his Richard Childress Chevrolet, while newly-crowned 2021 champion Kyle Larson and veteran Denny Hamlin had spins.
Hendrick Motorsports driver Alex Bowman reported that the new car was “real edgy and hard to feel”, saying that he found it difficult to “know how much ...Keep reading", + "content": "The first day of a group test at the Charlotte Motor Speedway oval on Wednesday proved eventful, with Austin Dillon crashing his Richard Childress Chevrolet, while newly-crowned 2021 champion Kyle Larson and veteran Denny Hamlin had spins.
Hendrick Motorsports driver Alex Bowman reported that the new car was “real edgy and hard to feel”, saying that he found it difficult to “know how much ...Keep reading", + "category": "NASCAR", + "link": "https://www.autosport.com/nascar/news/nascar-doesnt-want-next-gen-car-to-be-easy-to-drive/6795384/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 15:57:43 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "VIDEO. A Brens, Mathieu, autiste, vit sa passion pour le rugby grâce au respect de ses coéquipiers", - "description": "Le Brens Olympique compte dans ses rangs un joueur très particulier. Mathieu a la particularité d'être autiste mais cela ne l'empêche pas de vivre sa passion.", - "content": "VIDEO. AMATEUR. Ils ajoutent 5 minutes au match pour permettre à Mathieu, autiste, de marquer un essaiIl y a quelques semaines, nous avions raconté une belle histoire qui avait eu lieu lors du match entre le club de Brens et de Gondrin. Pour rappel, les deux équipes avaient convenu d'ajouter quelques minutes à la rencontre pour permettre à Mathieu, autiste, de porter le ballon jusqu'en Terre promise. Un beau geste de la part de tous les acteurs du match envers ce rugbyman. \"Il fait partie intégrante de l'équipe\", confie l'entraîneur du Brens Olympique Régis Sacarrère. Le rugby l'a aidé à aller vers les autres, à s'ouvrir alors qu'il n'aimait pas trop qu'on le touche. Cela fait dix ans que Matthieu fait partie du groupe et quand il n'est pas là, il manque au collectif comme n'importe quel autre élément. Et notamment après les entraînements où il joue parfois les animateurs grâce à son excellente mémoire. Quand il n'est pas sur le pré avec ses coéquipiers, qu'il ne pratique pas le tai-chi-chuan ou qu'il ne s'occupe pas de chevaux, il est le premier supporter de son équipe et fait profiter à la main courante de ses commentaires. À la fin du match, place à la tradition : laisser Mathieu, alias le foudroyeur, marquer un essai et le transformer. De belles images à découvrir à travers ce reportage de France TV.\n", - "category": "", - "link": "https://www.lerugbynistere.fr/videos/video-a-brens-mathieu-autiste-vit-sa-passion-pour-le-rugby-grace-au-respect-de-ses-coequipiers-1911211047.php", + "title": "How the Aston Martin Autosport BRDC Award is judged", + "description": "It’s back. After a year in hibernation thanks to you-know-what, the Aston Martin Autosport BRDC Young Driver of the Year Award burst back into life for 2021. Four young British racers and a new guest judge helped to make this year’s contest, which kicked off last month, one of the best yet.
The details of the process get tweaked each year, but the overall structure is well established. The ...Keep reading", + "content": "It’s back. After a year in hibernation thanks to you-know-what, the Aston Martin Autosport BRDC Young Driver of the Year Award burst back into life for 2021. Four young British racers and a new guest judge helped to make this year’s contest, which kicked off last month, one of the best yet.
The details of the process get tweaked each year, but the overall structure is well established. The ...Keep reading", + "category": "General", + "link": "https://www.autosport.com/general/news/how-the-aston-martin-autosport-brdc-award-is-judged/6794286/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "2021-11-19 10:50:00", - "folder": "00.03 News/Sport - FR", - "feed": "Le Rugbynistere", + "pubDate": "Thu, 18 Nov 2021 15:34:27 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Sport - FR", - "name": "Le Rugbynistere" - }, - "6": { - "title": "Fil Sport - actualités", - "subtitle": "", - "link": "https://rmcsport.bfmtv.com/fil-sport/", - "image": "https://rmcsport.bfmtv.com/assets/images/RMCSPORT_default_16x9.jpg", - "description": "Retrouvez sur RMC Sport toute l'actualité sportive en continu et en direct: football, mercato, rugby, basket, tennis, formule 1…", - "items": [ + }, { - "title": "Monaco-Lille: l'ASM arrache un point, de gros regrets pour le LOSC", - "description": "Jonathan David a eu beau marqué un doublé ce vendredi en ouverture de la 14e journée de Ligue 1, son équipe de Lille s'est contentée d'un nul à Monaco (2-2). En infériorité numérique, les Monégasques ont égalisé grâce à Krépin Diatta et Wissam Ben Yedder.

", - "content": "Jonathan David a eu beau marqué un doublé ce vendredi en ouverture de la 14e journée de Ligue 1, son équipe de Lille s'est contentée d'un nul à Monaco (2-2). En infériorité numérique, les Monégasques ont égalisé grâce à Krépin Diatta et Wissam Ben Yedder.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/monaco-lille-l-asm-arrache-un-point-de-gros-regrets-pour-le-losc_AV-202111190501.html", + "title": "Leclerc: Verstappen's Brazil move sets F1 precedent ", + "description": "After Verstappen kept Lewis Hamilton behind by edging him off the road at Turn 4 in last week's race at Interlagos, the stewards opted not to open a formal investigation into the incident during the race, in which Verstappen eventually finished second.
However, Mercedes subsequently submitted a request of a right to appeal triggered by video evidence from Verstappen’s forward facing camera ...Keep reading", + "content": "After Verstappen kept Lewis Hamilton behind by edging him off the road at Turn 4 in last week's race at Interlagos, the stewards opted not to open a formal investigation into the incident during the race, in which Verstappen eventually finished second.
However, Mercedes subsequently submitted a request of a right to appeal triggered by video evidence from Verstappen’s forward facing camera ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/leclerc-will-adjust-f1-approach-if-verstappen-move-goes-unpunished/6795318/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 22:09:20 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", - "read": true, + "pubDate": "Thu, 18 Nov 2021 15:31:19 +0000", + "folder": "00.03 News", + "feed": "Autosport", + "read": false, "favorite": false, - "created": true, + "created": false, "tags": [] }, { - "title": "Monaco-Lille en direct: mené 2-0, l'ASM arrache le nul, les Lillois peuvent s'en vouloir", - "description": "La 14e journée de Ligue 1 débute par un scénario renversant ce vendredi: mené 2-0, Monaco arrache le nul face à des Lillois qui ont arrêté de jouer après la pause.

", - "content": "La 14e journée de Ligue 1 débute par un scénario renversant ce vendredi: mené 2-0, Monaco arrache le nul face à des Lillois qui ont arrêté de jouer après la pause.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-suivez-le-match-monaco-lille-en-direct_LS-202111190455.html", + "title": "Tony Dron obituary: Touring car racer and journalist dies aged 75", + "description": "At six feet five, Dron viewed the world and the cars he drove from a higher plane than most on this planet.
That he was far too tall to be a single-seater racer did not deter Dron. From 1968, when he forged a friendship with future Formula 1 world champion James Hunt in the hurly-burly of Formula Ford’s first full season, he left a lasting impression both on track and in the eloquent words he ...Keep reading", + "content": "At six feet five, Dron viewed the world and the cars he drove from a higher plane than most on this planet.
That he was far too tall to be a single-seater racer did not deter Dron. From 1968, when he forged a friendship with future Formula 1 world champion James Hunt in the hurly-burly of Formula Ford’s first full season, he left a lasting impression both on track and in the eloquent words he ...Keep reading", + "category": "BTCC", + "link": "https://www.autosport.com/btcc/news/tony-dron-obituary-touring-car-racer-and-journalist-dies-aged-75/6795276/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:06:54 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "pubDate": "Thu, 18 Nov 2021 15:24:21 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Bundesliga: deuxième défaite pour le Bayern, le championnat relancé", - "description": "Sans Coman mais avec Hernandez, Upamecano et Pavard, le Bayern Munich a concédé sa deuxième défaite de la saison en Bundesliga face à Augsbourg 2-1 ce vendredi soir, en ouverture de la 12e journée du championnat allemand.

", - "content": "Sans Coman mais avec Hernandez, Upamecano et Pavard, le Bayern Munich a concédé sa deuxième défaite de la saison en Bundesliga face à Augsbourg 2-1 ce vendredi soir, en ouverture de la 12e journée du championnat allemand.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/bundesliga/bundesliga-deuxieme-defaite-pour-le-bayern-le-championnat-relance_AD-202111190493.html", + "title": "Verstappen defends steering inputs in Brazil F1 battle with Hamilton", + "description": "The Red Bull driver’s behaviour is under the spotlight in Qatar this weekend with Mercedes asking the FIA for a right to review its decision not to investigate the incident with Hamilton on lap 48 at Interlagos.
Mercedes' request has been prompted by the emergence earlier this week of the front-facing onboard footage from Verstappen’s car, which the FIA did not have access to during the ...Keep reading", + "content": "The Red Bull driver’s behaviour is under the spotlight in Qatar this weekend with Mercedes asking the FIA for a right to review its decision not to investigate the incident with Hamilton on lap 48 at Interlagos.
Mercedes' request has been prompted by the emergence earlier this week of the front-facing onboard footage from Verstappen’s car, which the FIA did not have access to during the ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/verstappen-defends-driving-in-brazil-f1-battle-with-hamilton/6795138/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 21:50:00 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "pubDate": "Thu, 18 Nov 2021 14:33:11 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Disparition de Peng Shuai: des photos de la joueuse postées sur les réseaux sociaux chinois", - "description": "Disparue depuis le 2 novembre après avoir accusé un ancien haut dirigeant chinois de l’avoir violée, la joueuse de tennis Peng Shuai est apparue sur des photos qu’elle aurait envoyées à une amie via le réseau social chinois WeChat. Mais le doute demeure quant à la date de ces clichés. Et sa disparition reste inquiétante.

", - "content": "Disparue depuis le 2 novembre après avoir accusé un ancien haut dirigeant chinois de l’avoir violée, la joueuse de tennis Peng Shuai est apparue sur des photos qu’elle aurait envoyées à une amie via le réseau social chinois WeChat. Mais le doute demeure quant à la date de ces clichés. Et sa disparition reste inquiétante.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/tennis/disparition-de-peng-shuai-des-photos-de-la-joueuse-postees-sur-les-reseaux-sociaux-chinois_AV-202111190490.html", + "title": "Vettel: \"A bit unnecessary\" to review Hamilton/Verstappen incident", + "description": "Verstappen and Hamilton went wheel-to-wheel while fighting for the win at Interlagos last Sunday, leading to both cars going off at Turn 4 as Verstappen fought to hold on to the position.
Mercedes F1 boss Toto Wolf called it \"laughable\" the stewards did not give Verstappen a penalty or even launch an investigation into the move, but it emerged that race control did not have access to the Red ...Keep reading", + "content": "Verstappen and Hamilton went wheel-to-wheel while fighting for the win at Interlagos last Sunday, leading to both cars going off at Turn 4 as Verstappen fought to hold on to the position.
Mercedes F1 boss Toto Wolf called it \"laughable\" the stewards did not give Verstappen a penalty or even launch an investigation into the move, but it emerged that race control did not have access to the Red ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/vettel-a-bit-unnecessary-to-review-hamilton-verstappen-incident/6795053/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 21:30:59 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "pubDate": "Thu, 18 Nov 2021 14:00:21 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Disparition de Peng Shuai: prêt à boycotter la Chine, Mahut dénonce le silence de l'ITF et du CIO", - "description": "Nicolas Mahut a réaffirmé ce vendredi sa volonté de boycotter les tournois en Chine si aucune nouvelle rassurante n’est publiée autour de Peng Shuai. Associé à Pierre-Hugues Herbert, le spécialiste du double a taclé la Fédération internationale de tennis et le CIO pour leur inaction.

", - "content": "Nicolas Mahut a réaffirmé ce vendredi sa volonté de boycotter les tournois en Chine si aucune nouvelle rassurante n’est publiée autour de Peng Shuai. Associé à Pierre-Hugues Herbert, le spécialiste du double a taclé la Fédération internationale de tennis et le CIO pour leur inaction.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/tennis/disparition-de-peng-shuai-mahut-denonce-le-silence-de-l-itf-et-du-cio-avant-les-jo-en-chine_AV-202111190488.html", + "title": "Evans needs Ogier slip up to ignite WRC title hopes", + "description": "Evans heads into this weekend’s Rally Monza title decider 17 points adrift of his seven-time champion teammate Ogier, with 30 points to play for on Italy’s challenging asphalt roads.
The Welshman has conceded his title hopes are a long shot this weekend but is all too aware that those championship aspirations could turn in his favour should Ogier hit trouble.
PLUS: How confronting ...Keep reading", + "content": "Evans heads into this weekend’s Rally Monza title decider 17 points adrift of his seven-time champion teammate Ogier, with 30 points to play for on Italy’s challenging asphalt roads.
The Welshman has conceded his title hopes are a long shot this weekend but is all too aware that those championship aspirations could turn in his favour should Ogier hit trouble.
PLUS: How confronting ...Keep reading", + "category": "WRC", + "link": "https://www.autosport.com/wrc/news/evans-needs-ogier-slip-up-to-ignite-wrc-title-hopes/6794875/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 21:19:55 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "pubDate": "Thu, 18 Nov 2021 13:10:12 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Premier League: Howe va rater son premier match avec Newcastle", - "description": "Eddie Howe ne sera pas sur le banc de Newcastle samedi face à Brentford, pour son premier match en tant qu'entraîneur des Magpies. Fraîchement nommé, l'ancien coach de Bournemouth est positif au Covid-19.

", - "content": "Eddie Howe ne sera pas sur le banc de Newcastle samedi face à Brentford, pour son premier match en tant qu'entraîneur des Magpies. Fraîchement nommé, l'ancien coach de Bournemouth est positif au Covid-19.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/premier-league/premier-league-howe-va-rater-son-premier-match-avec-newcastle_AD-202111190486.html", + "title": "\"Moral champion\" Fernandez feels team stood in way of his Moto2 title bid", + "description": "Fernandez stunned in his rookie Moto2 season this year, winning eight races – surpassing Marc Marquez’s haul of seven from his debut Moto2 campaign in 2011 – and narrowly missed out on the championship by four points to Ajo team-mate Remy Gardner, who won five times.
Both riders will step up to MotoGP in 2022 with Tech3 KTM, with the pair on track on Thursday and Friday at the two-day ...Keep reading", + "content": "Fernandez stunned in his rookie Moto2 season this year, winning eight races – surpassing Marc Marquez’s haul of seven from his debut Moto2 campaign in 2011 – and narrowly missed out on the championship by four points to Ajo team-mate Remy Gardner, who won five times.
Both riders will step up to MotoGP in 2022 with Tech3 KTM, with the pair on track on Thursday and Friday at the two-day ...Keep reading", + "category": "MotoGP", + "link": "https://www.autosport.com/moto2/news/moral-champion-fernandez-feels-team-stood-in-way-of-his-moto2-title-bid/6794823/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 21:05:12 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", - "read": true, + "pubDate": "Thu, 18 Nov 2021 13:00:22 +0000", + "folder": "00.03 News", + "feed": "Autosport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Comment l’image de la Ligue 1 s’est bonifiée selon Thierry Henry", - "description": "Le meilleur buteur de l’histoire de l’équipe de France, et actuel consultant pour Amazon Prime Vidéo, Thierry Henry a expliqué pourquoi la Ligue 1 suscite davantage d’intérêt depuis quelques années.

", - "content": "Le meilleur buteur de l’histoire de l’équipe de France, et actuel consultant pour Amazon Prime Vidéo, Thierry Henry a expliqué pourquoi la Ligue 1 suscite davantage d’intérêt depuis quelques années.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/comment-l-image-de-la-ligue-1-s-est-bonifiee-selon-thierry-henry_AV-202111190481.html", + "title": "Montoya: Verstappen didn’t have intention of making Turn 4 in Hamilton incident", + "description": "Later today, the FIA stewards will hear new evidence over the incident between Verstappen and Hamilton on lap 48 and Turn 4 to judge if it needs to be investigated after the controversial clash wasn’t referred for an stewards’ investigation during the Brazilian Grand Prix.
Mercedes requested a right to review the incident after new evidence came to light, primarily the forward-facing camera ...Keep reading", + "content": "Later today, the FIA stewards will hear new evidence over the incident between Verstappen and Hamilton on lap 48 and Turn 4 to judge if it needs to be investigated after the controversial clash wasn’t referred for an stewards’ investigation during the Brazilian Grand Prix.
Mercedes requested a right to review the incident after new evidence came to light, primarily the forward-facing camera ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/montoya-verstappen-didnt-have-intention-of-making-turn-4-in-hamilton-incident/6794780/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 20:50:25 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "pubDate": "Thu, 18 Nov 2021 12:42:01 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Uruguay: le sélectionneur Tabarez viré après une mauvaise série", - "description": "L’Uruguay a officialisé ce vendredi la fin du contrat d’Oscar Tabarez. Sélectionneur depuis 2006, le technicien de 74 ans paie une série de quatre défaites consécutives et la septième place de la Celeste lors des éliminatoires sud-américains pour le Mondial 2022.

", - "content": "L’Uruguay a officialisé ce vendredi la fin du contrat d’Oscar Tabarez. Sélectionneur depuis 2006, le technicien de 74 ans paie une série de quatre défaites consécutives et la septième place de la Celeste lors des éliminatoires sud-américains pour le Mondial 2022.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/coupe-du-monde/qualifications/uruguay-le-selectionneur-tabarez-vire-apres-une-mauvaise-serie_AV-202111190476.html", + "title": "FIA to police F1 track limits in five corners at Qatar", + "description": "Owing to the nature of the Losail circuit, which features sizeable run-off areas around its faster corners, along with flat kerbs around the perimeter of the track, the FIA has elected to enforce limits at Turns 4, 12, 13, 14 and 16.
Turn 4 is a 90-degree right-hander leading into the similarly profiled Turn 5, which is expected to lead drivers to test the limits of the corner to open up the ...Keep reading", + "content": "Owing to the nature of the Losail circuit, which features sizeable run-off areas around its faster corners, along with flat kerbs around the perimeter of the track, the FIA has elected to enforce limits at Turns 4, 12, 13, 14 and 16.
Turn 4 is a 90-degree right-hander leading into the similarly profiled Turn 5, which is expected to lead drivers to test the limits of the corner to open up the ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/fia-to-police-f1-track-limits-in-five-corners-at-qatar/6794726/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 20:14:39 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "pubDate": "Thu, 18 Nov 2021 12:21:49 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Euroleague: nouvelle défaite pour Monaco, surclassé par l'Efes", - "description": "L’AS Monaco a été largement dominée par les Turcs d’Efes Anadolu Istanbul 98-77 ce vendredi lors de la 11e journée d'Euroleague.

", - "content": "L’AS Monaco a été largement dominée par les Turcs d’Efes Anadolu Istanbul 98-77 ce vendredi lors de la 11e journée d'Euroleague.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/basket/euroligue/euroleague-nouvelle-defaite-pour-monaco-surclasse-par-anadolu_AD-202111190471.html", + "title": "Ferrari’s momentum matters a lot for F1 2022, says Binotto", + "description": "The Italian outfit has edged clear of McLaren in the fight for third place in the constructors’ championship, with it enjoying a 31.5 points advantage with just three races remaining.
Although the pace of the current cars will have little bearing on next season, as team’s 2022 ground effect concepts will be completely new designs, Ferrari team principal Mattia Binotto says that there are a ...Keep reading", + "content": "The Italian outfit has edged clear of McLaren in the fight for third place in the constructors’ championship, with it enjoying a 31.5 points advantage with just three races remaining.
Although the pace of the current cars will have little bearing on next season, as team’s 2022 ground effect concepts will be completely new designs, Ferrari team principal Mattia Binotto says that there are a ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/ferraris-momentum-matters-a-lot-for-f1-2022-says-binotto/6794509/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:54:26 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "pubDate": "Thu, 18 Nov 2021 11:50:54 +0000", + "folder": "00.03 News", + "feed": "Autosport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "France-Nouvelle-Zélande: comment les Bleus abordent \"le grand défi\" face aux Blacks", - "description": "A l’image de leur capitaine Antoine Dupont, les joueurs du XV de France ont déjà la tête au Stade de France où ils défieront la Nouvelle-Zélande samedi soir pour leur troisième test-match d’automne. Le défi est immense mais les Bleus veulent croire en un exploit.

", - "content": "A l’image de leur capitaine Antoine Dupont, les joueurs du XV de France ont déjà la tête au Stade de France où ils défieront la Nouvelle-Zélande samedi soir pour leur troisième test-match d’automne. Le défi est immense mais les Bleus veulent croire en un exploit.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/rugby/tests-matchs/france-nouvelle-zelande-comment-les-bleus-abordent-le-grand-defi-face-aux-blacks_AV-202111190463.html", + "title": "Piastri braced for no racing in 2022 to focus on Alpine F1 reserve role", + "description": "Formula 2 championship leader Piastri was named as Alpine’s new reserve driver for next year earlier this week, ending all hopes of a potential graduation to F1.
Piastri was originally set to spend two seasons in both Formula 3 and F2, but won the F3 title at the first attempt last year with Prema, and now leads the F2 standings by 36 points with four races remaining.
Speaking to select ...Keep reading", + "content": "Formula 2 championship leader Piastri was named as Alpine’s new reserve driver for next year earlier this week, ending all hopes of a potential graduation to F1.
Piastri was originally set to spend two seasons in both Formula 3 and F2, but won the F3 title at the first attempt last year with Prema, and now leads the F2 standings by 36 points with four races remaining.
Speaking to select ...Keep reading", + "category": "Formula 1", + "link": "https://www.autosport.com/f1/news/piastri-braced-for-no-racing-in-2022-to-focus-on-alpine-f1-reserve-role/6794578/?utm_source=RSS&utm_medium=referral&utm_campaign=RSS-ALL&utm_term=News&utm_content=uk", "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:08:00 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", - "read": false, + "pubDate": "Thu, 18 Nov 2021 11:34:43 +0000", + "folder": "00.03 News", + "feed": "Autosport", + "read": true, "favorite": false, "created": false, "tags": [] - }, + } + ], + "folder": "00.03 News", + "name": "Autosport" + }, + { + "title": "Jalopnik", + "subtitle": "", + "link": "https://jalopnik.com", + "image": null, + "description": "Kinja RSS", + "items": [ { - "title": "Tennis: \"très préoccupés\" par le sort de Peng Shuai, les Etats-Unis réclament une \"preuve vérifiable\"", - "description": "La disparition de Peng Shuai, joueuse de tennis chinoise qui a accusé publiquement un ancien haut dirigeant de son pays de viol, inquiète fortement la Maison Blanche. Washington réclame une \"preuve vérifiable\" concernant la sécurité de la joueuse et se dit \"très préoccupé\".

", - "content": "La disparition de Peng Shuai, joueuse de tennis chinoise qui a accusé publiquement un ancien haut dirigeant de son pays de viol, inquiète fortement la Maison Blanche. Washington réclame une \"preuve vérifiable\" concernant la sécurité de la joueuse et se dit \"très préoccupé\".

", - "category": "", - "link": "https://rmcsport.bfmtv.com/tennis/tennis-tres-preoccupes-par-le-sort-de-peng-shuai-les-etats-unis-reclament-une-preuve-verifiable_AV-202111190446.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:53:06 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Jeep Recalls Nearly 100,000 New Models Over Airbag Software Issue", + "description": "

New Jeep owners are going to have to bring their new vehicles back to dealers already for a recall involving a software issue that can disable the vehicle’s airbags. According to Autoblog, it affects nearly 100,000 2021 Jeep Grand Cherokee L, Wagoneer and Grand Wagoneer models. The bulk of that number belongs to Grand…

Read more...

", + "content": "

New Jeep owners are going to have to bring their new vehicles back to dealers already for a recall involving a software issue that can disable the vehicle’s airbags. According to Autoblog, it affects nearly 100,000 2021 Jeep Grand Cherokee L, Wagoneer and Grand Wagoneer models. The bulk of that number belongs to Grand…

Read more...

", + "category": "jeep", + "link": "https://jalopnik.com/jeep-recalls-nearly-100-000-new-models-over-airbag-soft-1848117740", + "creator": "Lawrence Hodge", + "pubDate": "Thu, 25 Nov 2021 16:30:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Prix de Bretagne : Première étape sur la route du Prix d'Amérique", - "description": "Première course qualificative pour le Prix d'Amérique, le Prix de Bretagne est programmé ce dimanche 21 novembre sur l'hippodrome de Vincennes avec notamment au départ Face Time Bourbon, le vainqueur des deux dernières éditions du Championnat du Monde de Trot attelé.

", - "content": "Première course qualificative pour le Prix d'Amérique, le Prix de Bretagne est programmé ce dimanche 21 novembre sur l'hippodrome de Vincennes avec notamment au départ Face Time Bourbon, le vainqueur des deux dernières éditions du Championnat du Monde de Trot attelé.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/paris-hippique/prix-de-bretagne-premiere-etape-sur-la-route-du-prix-d-amerique_AN-202111190443.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:38:00 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "NASA Is Going To Try To Re-Direct The Path Of An Asteroid By Crashing A Spacecraft Into It", + "description": "

If you’re a fan, like I am, of not being crushed to death by a rock that falls from the sky, then you should be interested in the mission NASA launched today with a SpaceX Falcon 9 rocket. The spacecraft in the nose of that rocket is called DART (Double Asteroid Redirection Test), and that spacecraft is going to smack…

Read more...

", + "content": "

If you’re a fan, like I am, of not being crushed to death by a rock that falls from the sky, then you should be interested in the mission NASA launched today with a SpaceX Falcon 9 rocket. The spacecraft in the nose of that rocket is called DART (Double Asteroid Redirection Test), and that spacecraft is going to smack…

Read more...

", + "category": "nasa", + "link": "https://jalopnik.com/nasa-is-going-to-try-to-re-direct-the-path-of-an-astero-1848117986", + "creator": "Jason Torchinsky", + "pubDate": "Thu, 25 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Mercato en direct: Angers a son nouveau coordinateur sportif", - "description": "Le mercato d'hiver va ouvrir ses portes le 1er janvier, une date qui permettra aussi aux joueurs en fin de contrat en juin de négocier librement avec le club de leurs choix. Suivez toutes les informations et rumeurs en direct.

", - "content": "Le mercato d'hiver va ouvrir ses portes le 1er janvier, une date qui permettra aussi aux joueurs en fin de contrat en juin de négocier librement avec le club de leurs choix. Suivez toutes les informations et rumeurs en direct.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/transferts/mercato-en-direct-les-infos-et-les-rumeurs-du-18-novembre-2021_LN-202111180054.html", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 06:27:23 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Off-Roading In The '20s Called For Camouflage Blankets, Fireworks And A Gun", + "description": "

When a new mode of transport bursts onto the scene, its launch is followed by a flurry of legislation to manage its use. This isn’t something that we’re seeing for the first time as self-driving cars begin populating our streets. In fact, it also hit regular, human-controlled cars when they first appeared.

Read more...

", + "content": "

When a new mode of transport bursts onto the scene, its launch is followed by a flurry of legislation to manage its use. This isn’t something that we’re seeing for the first time as self-driving cars begin populating our streets. In fact, it also hit regular, human-controlled cars when they first appeared.

Read more...

", + "category": "automation", + "link": "https://jalopnik.com/off-roading-in-the-20s-called-for-camouflage-blankets-1848105998", + "creator": "Owen Bellwood", + "pubDate": "Thu, 25 Nov 2021 15:30:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "PSG: Donnarumma-Navas, une concurrence saine… jusqu’à quand?", - "description": "Gianluigi Donnarumma malade et forfait, c'est Keylor Navas qui sera titulaire au poste de gardien du PSG, samedi soir face à Nantes (17h). Les deux hommes sont en concurrence depuis le début de la saison, sans hiérarchie établie. Une concurrence saine pour l'instant.

", - "content": "Gianluigi Donnarumma malade et forfait, c'est Keylor Navas qui sera titulaire au poste de gardien du PSG, samedi soir face à Nantes (17h). Les deux hommes sont en concurrence depuis le début de la saison, sans hiérarchie établie. Une concurrence saine pour l'instant.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-donnarumma-navas-une-concurrence-saine-jusqu-a-quand_AV-202111190432.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:08:56 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Mazda's Instagram Account Has Been Hacked", + "description": "

I suspect that Mazda’s social media team isn’t feeling all that thankful this Thanksgiving, because it either appears that Mazda’s Instagram account has been hacked, or that the company has expanded into the lucrative business of, um, some kind of online stock trading scam? Personally, I’d rather they stick to…

Read more...

", + "content": "

I suspect that Mazda’s social media team isn’t feeling all that thankful this Thanksgiving, because it either appears that Mazda’s Instagram account has been hacked, or that the company has expanded into the lucrative business of, um, some kind of online stock trading scam? Personally, I’d rather they stick to…

Read more...

", + "category": "instagram", + "link": "https://jalopnik.com/mazdas-instagram-account-has-been-hacked-1848122229", + "creator": "Jason Torchinsky", + "pubDate": "Thu, 25 Nov 2021 15:13:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ligue 1: la DNCG maintient ses sanctions contre l’OM", - "description": "Comme au mois de juillet, la DNCG, le gendarme financier du football français, a décidé de maintenir l’encadrement de la masse salariale et des indemnités de transferts de l’Olympique de Marseille.

", - "content": "Comme au mois de juillet, la DNCG, le gendarme financier du football français, a décidé de maintenir l’encadrement de la masse salariale et des indemnités de transferts de l’Olympique de Marseille.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-la-dncg-maintient-ses-sanctions-contre-l-om_AV-202111190419.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:49:01 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Welcome To The Obnoxious Holiday Airline Passenger Challenge", + "description": "

The holiday season inevitably means a lot of people are flying to see family in disparate parts of the country, and many of those people are probably flying for the first time in a long time, or for the first time ever. These are often the people who simply do not understand the unspoken rules of flight — though I…

Read more...

", + "content": "

The holiday season inevitably means a lot of people are flying to see family in disparate parts of the country, and many of those people are probably flying for the first time in a long time, or for the first time ever. These are often the people who simply do not understand the unspoken rules of flight — though I…

Read more...

", + "category": "boarding", + "link": "https://jalopnik.com/welcome-to-the-obnoxious-holiday-airline-passenger-chal-1848109282", + "creator": "Elizabeth Blackstock", + "pubDate": "Thu, 25 Nov 2021 15:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Manchester United: Solskjaer veut voir la trêve internationale comme un coup de boost", - "description": "Toujours très menacé à la tête de Manchester United, l’entraîneur des Red Devils Ole Gunnar Solskjaer estime que la trêve internationale a été bénéfique pour ses joueurs sur le plan mental. Confirmation attendue samedi après-midi sur la pelouse de Watford en Premier League.

", - "content": "Toujours très menacé à la tête de Manchester United, l’entraîneur des Red Devils Ole Gunnar Solskjaer estime que la trêve internationale a été bénéfique pour ses joueurs sur le plan mental. Confirmation attendue samedi après-midi sur la pelouse de Watford en Premier League.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/premier-league/manchester-united-solskjaer-veut-voir-la-treve-internationale-comme-un-coup-de-boost_AV-202111190406.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:32:49 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Treadmill Racing Is The Best Racing You Can Watch On Thanksgiving", + "description": "

Well, it’s Thanksgiving. You’re gonna see your beloved relatives, you’re gonna eat a meal that’s fine but not really good enough to be served more than once a year. You’re gonna steep in a hot room with a bunch of snoozing uncles while the bleak spectacle of a nationally televised Detroit Lions game drones on the TV.…

Read more...

", + "content": "

Well, it’s Thanksgiving. You’re gonna see your beloved relatives, you’re gonna eat a meal that’s fine but not really good enough to be served more than once a year. You’re gonna steep in a hot room with a bunch of snoozing uncles while the bleak spectacle of a nationally televised Detroit Lions game drones on the TV.…

Read more...

", + "category": "treadmill", + "link": "https://jalopnik.com/treadmill-racing-is-the-best-racing-you-can-watch-on-th-1848118844", + "creator": "Rory Carroll", + "pubDate": "Thu, 25 Nov 2021 14:45:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ligue 1 en direct: masse salariale et transferts encadrés pour l'OM", - "description": "Fin de la trêve internationale et reprise de la Ligue 1 ce week-end, avec une 14e journée de championnat qui débute vendredi par Monaco-Lille. Retrouvez toutes les informations et déclarations à ne pas manquer avant les matchs.

", - "content": "Fin de la trêve internationale et reprise de la Ligue 1 ce week-end, avec une 14e journée de championnat qui débute vendredi par Monaco-Lille. Retrouvez toutes les informations et déclarations à ne pas manquer avant les matchs.

", + "title": "Escape Your Family This Thanksgiving With A Radwood SoCal Gallery", + "description": "

Holidays can be stressful. Visiting family, preparing food, dealing with the one weird uncle who never quite knows when to stop talking. I get it, sometimes you just need a break. Something else to draw your attention, to keep you occupied for a few minutes. Maybe even some comfortable nostalgia to drown out the…

Read more...

", + "content": "

Holidays can be stressful. Visiting family, preparing food, dealing with the one weird uncle who never quite knows when to stop talking. I get it, sometimes you just need a break. Something else to draw your attention, to keep you occupied for a few minutes. Maybe even some comfortable nostalgia to drown out the…

Read more...

", "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-en-direct-toutes-les-infos-avant-la-14e-journee_LN-202111170121.html", - "creator": "", - "pubDate": "Wed, 17 Nov 2021 08:10:21 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "link": "https://jalopnik.com/escape-your-family-this-thanksgiving-with-a-radwood-soc-1848118150", + "creator": "Steve DaSilva", + "pubDate": "Thu, 25 Nov 2021 14:10:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Barça: la mise en garde de Xavi à De Jong, dont il attend beaucoup plus", - "description": "Loin de son meilleur niveau en ce début de saison, Frenkie de Jong a été invité par son nouvel entraîneur Xavi à se montrer plus décisif. Le nouvel homme fort du FC Barcelone estime que le jeune milieu néerlandais a le potentiel pour passer un cap.

", - "content": "Loin de son meilleur niveau en ce début de saison, Frenkie de Jong a été invité par son nouvel entraîneur Xavi à se montrer plus décisif. Le nouvel homme fort du FC Barcelone estime que le jeune milieu néerlandais a le potentiel pour passer un cap.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/liga/barca-la-mise-en-garde-de-xavi-a-de-jong-dont-il-attend-beaucoup-plus_AV-202111190387.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:03:12 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Shut Up And Be Thankful The Toyota Supra Is Back At All", + "description": "

A few days ago, I, and I alone, broke the story that the new Toyota Supra I had been driving didn’t actually smell like a new Toyota. It might be the most important story of my near-decade-long career in automotive journalism, and no, I did not get the idea after taking one of the brightly colored pills that Jason…

Read more...

", + "content": "

A few days ago, I, and I alone, broke the story that the new Toyota Supra I had been driving didn’t actually smell like a new Toyota. It might be the most important story of my near-decade-long career in automotive journalism, and no, I did not get the idea after taking one of the brightly colored pills that Jason…

Read more...

", + "category": "toyota", + "link": "https://jalopnik.com/shut-up-and-be-thankful-the-toyota-supra-is-back-at-all-1848117805", + "creator": "Collin Woodard", + "pubDate": "Thu, 25 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "NBA: Kanter clashe LeBron James sur la Chine", - "description": "Le Turc Enes Kanter a taclé la position de LeBron James concernant la Chine. Le pivot turc regrette l’hypocrisie supposée de la star entre sa défense des luttes sociales et son goût pour l’argent.

", - "content": "Le Turc Enes Kanter a taclé la position de LeBron James concernant la Chine. Le pivot turc regrette l’hypocrisie supposée de la star entre sa défense des luttes sociales et son goût pour l’argent.

", + "title": "The Cosworth Is Fast", + "description": "

Carmine Tancredi is the Italian hillclimb champion this year in the E1 class, and while driving ability has a lot to do with that, this ridiculously fast Ford is how he got there. Powered by a 2-liter Cosworth YB turbo engine making nearly 600 horsepower with a wide powerband, this Escort Cossie boasts all-wheel drive…

Read more...

", + "content": "

Carmine Tancredi is the Italian hillclimb champion this year in the E1 class, and while driving ability has a lot to do with that, this ridiculously fast Ford is how he got there. Powered by a 2-liter Cosworth YB turbo engine making nearly 600 horsepower with a wide powerband, this Escort Cossie boasts all-wheel drive…

Read more...

", "category": "", - "link": "https://rmcsport.bfmtv.com/basket/nba/nba-kanter-clashe-le-bron-james-sur-la-chine_AV-202111190381.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:54:34 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "link": "https://jalopnik.com/the-cosworth-is-fast-1848120244", + "creator": "Bradley Brownell", + "pubDate": "Thu, 25 Nov 2021 00:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Bayern: non vacciné, Kimmich absent face au Dynamo Kiev", - "description": "Cas contact, le milieu de terrain du Bayern Munich Joshua Kimmich, non vacciné, sera absent vendredi face à Augsbourg en Bundesliga et mardi face au Dynamo Kiev en Ligue des champions.

", - "content": "Cas contact, le milieu de terrain du Bayern Munich Joshua Kimmich, non vacciné, sera absent vendredi face à Augsbourg en Bundesliga et mardi face au Dynamo Kiev en Ligue des champions.

", + "title": "What Would You Put This Rolls-Royce Meteor Engine In?", + "description": "

Okay, forget about crate engines from car manufacturers for a minute, even the new 1000 horsepower big block from Chevrolet. If you thought ten liters was impressive, wait until you rock up to Bob’s Big Boy with this 27-liter behemoth under your hood. Everybody at the cruise in is going to turn away from the…

Read more...

", + "content": "

Okay, forget about crate engines from car manufacturers for a minute, even the new 1000 horsepower big block from Chevrolet. If you thought ten liters was impressive, wait until you rock up to Bob’s Big Boy with this 27-liter behemoth under your hood. Everybody at the cruise in is going to turn away from the…

Read more...

", "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/bayern-non-vaccine-kimmich-absent-face-au-dynamo-kiev_AD-202111190347.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:11:57 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "link": "https://jalopnik.com/what-would-you-put-this-rolls-royce-meteor-engine-in-1848120040", + "creator": "Bradley Brownell", + "pubDate": "Wed, 24 Nov 2021 23:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "PSG: Neymar dans le groupe contre Nantes, pas Marquinhos, ni Ramos", - "description": "Outre le forfait de Gianluigi Donnarumma, malade, le PSG devra aussi composer sans son capitaine Marquinhos pour affronter le FC Nantes ce samedi pour le compte de la 14e journée de Ligue 1. Neymar, qui était revenu blessé de la sélection brésilienne, est dans le groupe de Mauricio Pochettino.

", - "content": "Outre le forfait de Gianluigi Donnarumma, malade, le PSG devra aussi composer sans son capitaine Marquinhos pour affronter le FC Nantes ce samedi pour le compte de la 14e journée de Ligue 1. Neymar, qui était revenu blessé de la sélection brésilienne, est dans le groupe de Mauricio Pochettino.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-neymar-dans-le-groupe-contre-nantes-pas-marquinhos_AV-202111190328.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:45:12 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Prepare For Thanksgiving With This List Of Good Car Arguments You Can Start With Family", + "description": "

One unchanging complaint about Thanksgiving in America is that it’s a time that forces many people to have to interact with relatives that have wildly differing opinions, whether politically, ethically, religiously, and so on. And while a variety of points of view and challenging one’s own ideas is undeniably healthy,…

Read more...

", + "content": "

One unchanging complaint about Thanksgiving in America is that it’s a time that forces many people to have to interact with relatives that have wildly differing opinions, whether politically, ethically, religiously, and so on. And while a variety of points of view and challenging one’s own ideas is undeniably healthy,…

Read more...

", + "category": "thanksgiving", + "link": "https://jalopnik.com/prepare-for-thanksgiving-with-this-list-of-good-car-arg-1848117659", + "creator": "Jason Torchinsky", + "pubDate": "Wed, 24 Nov 2021 17:45:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "F1: privé de baquet en 2022, le Français Théo Pourchaire va rester en Formule 2", - "description": "Barré par la nomination du Chinois Guanyu Zhou chez Alfa Romeo lors de la saison 2022 de Formule 1, le pilote français Théo Pourchaire (18 ans) n’effectuera pas ses grands débuts en F1 l’année prochaine. Frédéric Vasseur, patron de l'écurie suisse, a annoncé ce vendredi qu'il restera encore en F2 la saison prochaine.

", - "content": "Barré par la nomination du Chinois Guanyu Zhou chez Alfa Romeo lors de la saison 2022 de Formule 1, le pilote français Théo Pourchaire (18 ans) n’effectuera pas ses grands débuts en F1 l’année prochaine. Frédéric Vasseur, patron de l'écurie suisse, a annoncé ce vendredi qu'il restera encore en F2 la saison prochaine.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/auto-moto/f1/f1-prive-de-baquet-en-2022-le-francais-theo-pourchaire-va-rester-en-formule-2_AV-202111190325.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:42:40 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "The 2022 Alpine A110 Is The Only Car", + "description": "

There are some objects in this universe that seem to have come from a virgin birth, and the Alpine A110 is one such object: A gas car that is the last good car. Alpine debuted a new A110 Wednesday with some subtle refinements, but not really anything substantially different, because it’s impossible to improve on…

Read more...

", + "content": "

There are some objects in this universe that seem to have come from a virgin birth, and the Alpine A110 is one such object: A gas car that is the last good car. Alpine debuted a new A110 Wednesday with some subtle refinements, but not really anything substantially different, because it’s impossible to improve on…

Read more...

", + "category": "a110", + "link": "https://jalopnik.com/the-2022-alpine-a110-is-the-only-car-1848117332", + "creator": "Erik Shilling", + "pubDate": "Wed, 24 Nov 2021 17:35:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Transat Jacques-Vabre: l'idée pleine d'humour de Beyou pour une arrivée groupée", - "description": "Troisième de la Transat Jacques-Vabre, avec Christopher Pratt sur Charal, Jérémie Beyou a envoyé un petit message amusant à la direction de course ce vendredi matin, pour essayer de préserver l’arrivée groupée des différentes classes de bateaux en Martinique.

", - "content": "Troisième de la Transat Jacques-Vabre, avec Christopher Pratt sur Charal, Jérémie Beyou a envoyé un petit message amusant à la direction de course ce vendredi matin, pour essayer de préserver l’arrivée groupée des différentes classes de bateaux en Martinique.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/voile/transat-jacques-vabre-le-message-ironique-de-beyou-pour-esperer-l-arrivee-groupee_AV-202111190324.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:38:55 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Hear Me Out: Take Your Fun Car On The Holiday Road Trip", + "description": "

It’s Thanksgiving Eve, one of the busiest travel days of the busiest travel week of the year. It seems like everyone’s either buying a plane ticket out to see relatives, or loading up the Family Truckster to eat through the miles on four wheels. But as you’re packing your things, ask yourself a question: Which car…

Read more...

", + "content": "

It’s Thanksgiving Eve, one of the busiest travel days of the busiest travel week of the year. It seems like everyone’s either buying a plane ticket out to see relatives, or loading up the Family Truckster to eat through the miles on four wheels. But as you’re packing your things, ask yourself a question: Which car…

Read more...

", + "category": "colin mcrae", + "link": "https://jalopnik.com/hear-me-out-take-your-fun-car-on-the-holiday-road-trip-1848117300", + "creator": "Steve DaSilva", + "pubDate": "Wed, 24 Nov 2021 17:30:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "OM: Ünder vers un forfait contre l’OL", - "description": "Cengiz Ünder s’est entraîné à part ce vendredi, avant le match de l’OM contre l'OL dimanche. Forfait avec la sélection turque, l’ailier marseillais sera probablement absent pour le choc de la 14e journée de Ligue 1.

", - "content": "Cengiz Ünder s’est entraîné à part ce vendredi, avant le match de l’OM contre l'OL dimanche. Forfait avec la sélection turque, l’ailier marseillais sera probablement absent pour le choc de la 14e journée de Ligue 1.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/om-under-vers-un-forfait-contre-l-ol_AV-202111190317.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:24:49 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Remind Me Not To Get Driving Advice From This Guy", + "description": "

I’m almost ready to sit my driving test here in the U.S. I’ve got the learner permit, passed my pre-licensing exam and nearly used to driving on the wrong side of the road. So naturally, any advice on driving tests is now welcome.

Read more...

", + "content": "

I’m almost ready to sit my driving test here in the U.S. I’ve got the learner permit, passed my pre-licensing exam and nearly used to driving on the wrong side of the road. So naturally, any advice on driving tests is now welcome.

Read more...

", + "category": "driving", + "link": "https://jalopnik.com/remind-me-not-to-get-driving-advice-from-this-guy-1848117202", + "creator": "Owen Bellwood", + "pubDate": "Wed, 24 Nov 2021 17:05:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Atlético: finalement, Griezmann pourra affronter l'AC Milan", - "description": "Diego Simeone pourra compter sur Antoine Griezmann pour le choc de Ligue des champions mercredi entre l'Atlético de Madrid et l'AC Milan. L'UEFA a décidé de réduire la suspension du Français après son rouge reçu contre Liverpool.

", - "content": "Diego Simeone pourra compter sur Antoine Griezmann pour le choc de Ligue des champions mercredi entre l'Atlético de Madrid et l'AC Milan. L'UEFA a décidé de réduire la suspension du Français après son rouge reçu contre Liverpool.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/atletico-finalement-griezmann-pourra-affronter-l-ac-milan_AV-202111190314.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:16:01 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Watch A Couple Of Best Bud Tires Just Having A Great Time", + "description": "

This is just a video of a pair of tires, co-mounted on a tractor-trailer-style wheel, bouncing down a highway with the gleeful abandon of a cardboard box full of puppies. Why is it so much fun to watch? Why does the driver of the car filming the tires’ jaunt giggling to himself, in simple glee? Why is it so easy to…

Read more...

", + "content": "

This is just a video of a pair of tires, co-mounted on a tractor-trailer-style wheel, bouncing down a highway with the gleeful abandon of a cardboard box full of puppies. Why is it so much fun to watch? Why does the driver of the car filming the tires’ jaunt giggling to himself, in simple glee? Why is it so easy to…

Read more...

", + "category": "tires", + "link": "https://jalopnik.com/watch-a-couple-of-best-bud-tires-just-having-a-great-ti-1848117244", + "creator": "Jason Torchinsky", + "pubDate": "Wed, 24 Nov 2021 16:35:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "OM: Payet n'a pas tiré un trait sur l'équipe de France", - "description": "Performant et régulier avec l'OM depuis plusieurs mois, Dimitri Payet est l'un des meilleurs joueurs de Ligue 1 cette saison. De quoi envisager un retour chez les Bleus, trois ans après sa dernière sélection? Le Réunionnais ne s'interdit rien, mais n'en fait pas une fixette non plus.

", - "content": "Performant et régulier avec l'OM depuis plusieurs mois, Dimitri Payet est l'un des meilleurs joueurs de Ligue 1 cette saison. De quoi envisager un retour chez les Bleus, trois ans après sa dernière sélection? Le Réunionnais ne s'interdit rien, mais n'en fait pas une fixette non plus.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/om-payet-n-a-pas-tire-un-trait-sur-l-equipe-de-france_AV-202111190298.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:47:46 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "NASA Has Officially Started Launching Missiles Into Asteroids", + "description": "

NASA’s DART program — the Double Asteroid Redirection Test — has officially taken to the skies, and it has one mission in mind: To absolutely destroy any asteroids that might threaten to turn the human race into our extinct dinosaur brethren.

Read more...

", + "content": "

NASA’s DART program — the Double Asteroid Redirection Test — has officially taken to the skies, and it has one mission in mind: To absolutely destroy any asteroids that might threaten to turn the human race into our extinct dinosaur brethren.

Read more...

", + "category": "nasa", + "link": "https://jalopnik.com/nasa-has-officially-started-launching-missiles-into-ast-1848117236", + "creator": "Elizabeth Blackstock", + "pubDate": "Wed, 24 Nov 2021 16:30:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Manchester City-PSG: positif au coronavirus, De Bruyne manquera le choc", - "description": "Testé positif au Covid-19 à son retour de sélection, Kevin De Bruyne est contraint de respecter dix jours d'isolement. Le Belge est donc forfait pour le duel Manchester City-PSG programmé mercredi en Ligue des champions.

", - "content": "Testé positif au Covid-19 à son retour de sélection, Kevin De Bruyne est contraint de respecter dix jours d'isolement. Le Belge est donc forfait pour le duel Manchester City-PSG programmé mercredi en Ligue des champions.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-positif-au-coronavirus-de-bruyne-manquera-le-choc_AV-202111190297.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:43:43 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "The Can-Am Ryker Is A Hoot, Even On A Punishing 600-Mile Road Trip", + "description": "

Three-wheelers hold a controversial standing with enthusiasts. Many people see them as pointless; being too compromised to replace either a motorcycle or a car. I too, wondered about a three-wheeler’s place in the world. Then, I got to live with one as my only transportation.

Read more...

", + "content": "

Three-wheelers hold a controversial standing with enthusiasts. Many people see them as pointless; being too compromised to replace either a motorcycle or a car. I too, wondered about a three-wheeler’s place in the world. Then, I got to live with one as my only transportation.

Read more...

", + "category": "ryker", + "link": "https://jalopnik.com/a-ride-on-the-can-am-ryker-600-miles-down-the-best-road-1848115064", + "creator": "Mercedes Streeter", + "pubDate": "Wed, 24 Nov 2021 16:15:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "PSG: Pochettino optimiste pour Neymar et Ramos avant Nantes", - "description": "Sergio Ramos et Neymar ont des chances d'être convoqués pour le match de la 14e journée de Ligue 1 entre le PSG et le FC Nantes, ce samedi (17h). Mauricio Pochettino a donné des nouvelles positives des deux joueurs en conférence de presse.

", - "content": "Sergio Ramos et Neymar ont des chances d'être convoqués pour le match de la 14e journée de Ligue 1 entre le PSG et le FC Nantes, ce samedi (17h). Mauricio Pochettino a donné des nouvelles positives des deux joueurs en conférence de presse.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-pochettino-optimiste-pour-neymar-et-ramos-avant-nantes_AV-202111190281.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:54:13 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", + "title": "Something Funny Is Happening To The World’s Biggest Truck Manufacturer", + "description": "

The fastest way to profit in the car business these days is to say you’re transitioning to all-electric drive and then go public. But it doesn’t always work out like you’d think, as Daimler is figuring out. That and more in The Morning Shift for November 24, 2021.

Read more...

", + "content": "

The fastest way to profit in the car business these days is to say you’re transitioning to all-electric drive and then go public. But it doesn’t always work out like you’d think, as Daimler is figuring out. That and more in The Morning Shift for November 24, 2021.

Read more...

", + "category": "daimler", + "link": "https://jalopnik.com/something-funny-is-happening-to-the-world-s-biggest-tru-1848116989", + "creator": "Raphael Orlove", + "pubDate": "Wed, 24 Nov 2021 15:55:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "F1: Mercedes débouté, pas de réexamen de l'incident Hamilton-Verstappen au Brésil", - "description": "La défense de Max Verstappen (Red Bull) contre la tentative de dépassement de Lewis Hamilton (Mercedes) au GP du Brésil de Formule 1 ne sera pas réexaminée. Le recours de Mercedes a été rejeté, ont indiqué vendredi les commissaires de la FIA.

", - "content": "La défense de Max Verstappen (Red Bull) contre la tentative de dépassement de Lewis Hamilton (Mercedes) au GP du Brésil de Formule 1 ne sera pas réexaminée. Le recours de Mercedes a été rejeté, ont indiqué vendredi les commissaires de la FIA.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/auto-moto/f1/f1-mercedes-deboute-pas-de-reexamen-de-l-incident-hamilton-verstappen-au-bresil_AV-202111190280.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:53:29 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", - "read": true, + "title": "FIA May Promote W Series Winners To Formula 3 So They Can Actually Move Forward With Their Careers", + "description": "

As it stands, the winner of the W Series championship gets $500,000 in prize money, the privilege to do it all again next year and, well — that’s pretty much it. The format has certainly provided women in single-seater racing some visibility as a support race on Formula 1 weekends, and it helps significantly that…

Read more...

", + "content": "

As it stands, the winner of the W Series championship gets $500,000 in prize money, the privilege to do it all again next year and, well — that’s pretty much it. The format has certainly provided women in single-seater racing some visibility as a support race on Formula 1 weekends, and it helps significantly that…

Read more...

", + "category": "w series", + "link": "https://jalopnik.com/fia-may-promote-w-series-winners-to-formula-3-so-they-c-1848116334", + "creator": "Adam Ismail", + "pubDate": "Wed, 24 Nov 2021 15:55:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "OM: Sampaoli aimerait des joueurs confirmés au mercato", - "description": "Interrogé ce vendredi sur d'éventuels besoins lors du mercato hivernal, l'entraîneur de l'OM Jorge Sampaoli a fait passer un message à ses dirigeants en expliquant qu'il n'avait pas assez de joueurs confirmés à disposition. En reconnaissant toutefois qu'il n'est pas toujours possible d'obtenir ce que l'on désire.

", - "content": "Interrogé ce vendredi sur d'éventuels besoins lors du mercato hivernal, l'entraîneur de l'OM Jorge Sampaoli a fait passer un message à ses dirigeants en expliquant qu'il n'avait pas assez de joueurs confirmés à disposition. En reconnaissant toutefois qu'il n'est pas toujours possible d'obtenir ce que l'on désire.

", - "category": "", - "link": "https://rmcsport.bfmtv.com/football/transferts/om-sampaoli-aimerait-des-joueurs-confirmes-au-mercato_AV-202111190279.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 13:50:56 GMT", - "folder": "00.03 News/Sport - FR", - "feed": "RMC Sport", - "read": true, + "title": "Waukesha Parade Crash Death Toll Rises To 6, Suspect Held On $5 Million Bail", + "description": "

Last weekend, the driver of a red Ford Escape drove into a crowd of parade-goers during a holiday event in Waukesha, Wisc. Now, the death toll has risen to six after an eight-year-old succumbed to his injuries, and the main suspect is being held on a $5 million bond.

Read more...

", + "content": "

Last weekend, the driver of a red Ford Escape drove into a crowd of parade-goers during a holiday event in Waukesha, Wisc. Now, the death toll has risen to six after an eight-year-old succumbed to his injuries, and the main suspect is being held on a $5 million bond.

Read more...

", + "category": "waukesha", + "link": "https://jalopnik.com/waukesha-parade-crash-death-toll-rises-to-6-suspect-he-1848116579", + "creator": "Elizabeth Blackstock", + "pubDate": "Wed, 24 Nov 2021 15:05:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Sport - FR", - "name": "RMC Sport" - }, - "7": { - "title": "SO FOOT.com", - "subtitle": "", - "link": "https://www.sofoot.com/", - "image": "", - "description": "Le site de l'actualité football, vue autrement. Un contenu original et décalé, un suivi pas à pas de l'actu foot en France, en Europe, dans le monde entier et ailleurs.", - "items": [ + }, { - "title": "Monaco et Lille font du surplace", - "description": "Menée du fait d'un doublé éclair de Jonathan David et réduite à 10 en seconde période, l'ASM est pourtant parvenue à tenir en échec Lille au stade Louis-II (2-2). Une bonne dose de frustration pour les deux formations qui font du surplace en milieu de tableau. Une nouvelle fois, le LOSC a eu les occasions de sceller un précieux succès et ne les a pas saisies.

", - "content": "

", - "category": "", - "link": "https://www.sofoot.com/monaco-et-lille-font-du-surplace-507197.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T22:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", - "read": true, + "title": "TSA Says Vaccine Mandate Won't Keep Them From Harassing Holiday Travelers", + "description": "

Just last month, we reported your holiday travel plans could be a mess with even more delays due to vaccine hesitancy among TSA agents. At the time, just 60 percent of agents had been reported as fully vaccinated, putting them at a major risk of missing a November 22 vaccination deadline for federal employees.

Read more...

", + "content": "

Just last month, we reported your holiday travel plans could be a mess with even more delays due to vaccine hesitancy among TSA agents. At the time, just 60 percent of agents had been reported as fully vaccinated, putting them at a major risk of missing a November 22 vaccination deadline for federal employees.

Read more...

", + "category": "tsa", + "link": "https://jalopnik.com/tsa-says-vaccine-mandate-wont-keep-them-from-harassing-1848113253", + "creator": "Lalita Chemello", + "pubDate": "Wed, 24 Nov 2021 14:55:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Angers Lorient : Analyse, cotes et prono du match de Ligue 1", - "description": "

Un Angers – Lorient avec des buts de chaque côté

\n
\nAprès 13 journées de Ligue 1, Angers se trouve dans la première partie de tableau à la…
", - "content": "

Un Angers – Lorient avec des buts de chaque côté

\n
\nAprès 13 journées de Ligue 1, Angers se trouve dans la première partie de tableau à la…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-angers-lorient-analyse-cotes-et-prono-du-match-de-ligue-1-507185.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T21:36:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "What Car Offers The Best Escape From Your Family During The Holidays?", + "description": "

Tomorrow is Thanksgiving, in case you hadn’t heard, and I’m told that in America this means it’s time to gather with friends and family. It’s also a time to discuss what you’re thankful for and catch up over copious amounts of food. Sounds nice.

Read more...

", + "content": "

Tomorrow is Thanksgiving, in case you hadn’t heard, and I’m told that in America this means it’s time to gather with friends and family. It’s also a time to discuss what you’re thankful for and catch up over copious amounts of food. Sounds nice.

Read more...

", + "category": "branches of philosophy", + "link": "https://jalopnik.com/what-car-offers-the-best-escape-from-your-family-during-1848116225", + "creator": "Owen Bellwood", + "pubDate": "Wed, 24 Nov 2021 14:45:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Augsbourg surprend le Bayern", - "description": "

", - "content": "

", - "category": "", - "link": "https://www.sofoot.com/augsbourg-surprend-le-bayern-507196.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T21:32:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", - "read": true, + "title": "This Bizarre Crash Ends With An SUV Landing Casually Onto Another SUV", + "description": "

Several drivers (and one pedestrian) are extremely lucky to be alive after this crash captured on a dashcam video in Indianapolis, Indiana.

Read more...

", + "content": "

Several drivers (and one pedestrian) are extremely lucky to be alive after this crash captured on a dashcam video in Indianapolis, Indiana.

Read more...

", + "category": "disaster accident", + "link": "https://jalopnik.com/this-bizarre-crash-ends-with-an-suv-landing-casually-on-1848115023", + "creator": "Lawrence Hodge", + "pubDate": "Wed, 24 Nov 2021 14:05:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Brest Lens : Analyse, cotes et prono du match de Ligue 1", - "description": "

Lens sur sa lancée à Brest

\n
\nL'an passé, le Stade Brestois a difficilement fini la saison se sauvant lors des dernières journées. Lors du mercato,…
", - "content": "

Lens sur sa lancée à Brest

\n
\nL'an passé, le Stade Brestois a difficilement fini la saison se sauvant lors des dernières journées. Lors du mercato,…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-brest-lens-analyse-cotes-et-prono-du-match-de-ligue-1-507183.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T21:25:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Cower In Your Homes, The GMC Hummer EV Comes Out In December", + "description": "

The GMC Hummer EV has spent two years in development, biding its time until it was ready to face down the U.S. highway system. Now it’s on the precipice of release: Starting in next month, the 9,000-lb behemoth will begin making three-second 0-to-60 runs on roads near you. Look on General Motors’ works, ye mighty, and…

Read more...

", + "content": "

The GMC Hummer EV has spent two years in development, biding its time until it was ready to face down the U.S. highway system. Now it’s on the precipice of release: Starting in next month, the 9,000-lb behemoth will begin making three-second 0-to-60 runs on roads near you. Look on General Motors’ works, ye mighty, and…

Read more...

", + "category": "hummer", + "link": "https://jalopnik.com/cower-in-your-homes-the-gmc-hummer-ev-comes-out-in-dec-1848113300", + "creator": "Steve DaSilva", + "pubDate": "Wed, 24 Nov 2021 13:44:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Strasbourg Reims : Analyse, cotes et prono du match de Ligue 1", - "description": "

Strasbourg – Reims : le Crémant prend le dessus sur le Champagne

\n
\nDepuis son retour en Ligue 1, le Racing Club Strasbourg a connu de bons moments avec…
", - "content": "

Strasbourg – Reims : le Crémant prend le dessus sur le Champagne

\n
\nDepuis son retour en Ligue 1, le Racing Club Strasbourg a connu de bons moments avec…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-strasbourg-reims-analyse-cotes-et-prono-du-match-de-ligue-1-507182.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T21:14:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Blip: Behold The Mayflower", + "description": "

Thanksgiving is tomorrow, so with that in mind I’d like to present to you this handy cutaway of a 1950 Triumph Mayflower, smaller than the 1600s Mayflower, but not a hell of a lot quicker, though Triumph’s Mayflower did boast such exciting features as windows that “give full field of vision to passengers,” and a…

Read more...

", + "content": "

Thanksgiving is tomorrow, so with that in mind I’d like to present to you this handy cutaway of a 1950 Triumph Mayflower, smaller than the 1600s Mayflower, but not a hell of a lot quicker, though Triumph’s Mayflower did boast such exciting features as windows that “give full field of vision to passengers,” and a…

Read more...

", + "category": "mayflower", + "link": "https://jalopnik.com/blip-behold-the-mayflower-1848116128", + "creator": "Jason Torchinsky", + "pubDate": "Wed, 24 Nov 2021 13:44:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Troyes Saint-Etienne : Analyse, cotes et prono du match de Ligue 1", - "description": "

Un Troyes – Saint-Etienne avec des buts de chaque côté

\n
\nChampion de Ligue 2 en titre, Troyes a retrouvé l'élite du football français.…
", - "content": "

Un Troyes – Saint-Etienne avec des buts de chaque côté

\n
\nChampion de Ligue 2 en titre, Troyes a retrouvé l'élite du football français.…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-troyes-saint-etienne-analyse-cotes-et-prono-du-match-de-ligue-1-507181.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T20:56:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "This Mint Dustbuster Pontiac Trans Sport Is A Time Machine To Your Childhood", + "description": "

If you’re like me, you spent much of your childhood watching the world roll by from the windows of a minivan. They offered a sort of magic you can’t find in today’s crossovers. And while the minivan may struggle for relevance today, there’s a van out there ready for you to relive your memories. This near-perfect…

Read more...

", + "content": "

If you’re like me, you spent much of your childhood watching the world roll by from the windows of a minivan. They offered a sort of magic you can’t find in today’s crossovers. And while the minivan may struggle for relevance today, there’s a van out there ready for you to relive your memories. This near-perfect…

Read more...

", + "category": "pontiac trans sport", + "link": "https://jalopnik.com/this-mint-dustbuster-pontiac-trans-sport-is-a-time-mach-1848113613", + "creator": "Mercedes Streeter", + "pubDate": "Wed, 24 Nov 2021 13:25:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Clermont Nice : Analyse, cotes et prono du match de Ligue 1", - "description": "

Nice se relance à Clermont

\n
\nBien parti dans cette saison de Ligue 1, Clermont avait remporté ses deux premiers matchs face à Bordeaux et Troyes avant…
", - "content": "

Nice se relance à Clermont

\n
\nBien parti dans cette saison de Ligue 1, Clermont avait remporté ses deux premiers matchs face à Bordeaux et Troyes avant…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-clermont-nice-analyse-cotes-et-prono-du-match-de-ligue-1-507179.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T20:31:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "At $12,900, Does This 1966 Ford Mustang Wagon Deliver?", + "description": "

Plenty of people took issue with Ford’s side-glance branding of its four-door electric car as a Mustang. If you’re among those naysayers, then turn away from today’s Nice Price or No Dice custom Mustang panel wagon. If, however, you’re ok with all things Mustang, then read on.

Read more...

", + "content": "

Plenty of people took issue with Ford’s side-glance branding of its four-door electric car as a Mustang. If you’re among those naysayers, then turn away from today’s Nice Price or No Dice custom Mustang panel wagon. If, however, you’re ok with all things Mustang, then read on.

Read more...

", + "category": "mustang", + "link": "https://jalopnik.com/at-12-900-does-this-1966-ford-mustang-wagon-deliver-1848109307", + "creator": "Rob Emslie", + "pubDate": "Wed, 24 Nov 2021 13:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "En direct : Monaco - Lille", - "description": "96' : THE END !
\n
\nVite mené 0-2, l'ASM arrache finalement un nul mérité au regard des 60 ...", - "content": "96' : THE END !
\n
\nVite mené 0-2, l'ASM arrache finalement un nul mérité au regard des 60 ...", - "category": "", - "link": "https://www.sofoot.com/en-direct-monaco-lille-507191.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T19:45:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "The 2023 Ford Ranger: This Is It", + "description": "

Kicked off in 1982, the Ranger has long been a staple of American farming and rural life. It was originally a compact pickup to compete with Chevrolet’s S10, and grew over the years as Americans and their perceived needs grew. The current/outgoing Ranger was actually launched internationally in 2011, but was not made…

Read more...

", + "content": "

Kicked off in 1982, the Ranger has long been a staple of American farming and rural life. It was originally a compact pickup to compete with Chevrolet’s S10, and grew over the years as Americans and their perceived needs grew. The current/outgoing Ranger was actually launched internationally in 2011, but was not made…

Read more...

", + "category": "ranger", + "link": "https://jalopnik.com/the-2022-ford-ranger-this-is-it-1848115424", + "creator": "Bradley Brownell", + "pubDate": "Wed, 24 Nov 2021 07:20:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Griezmann pourra finalement jouer contre l'AC Milan", - "description": "Emoji Samba. Emoji Samba. Smiley cœur. Smiley cœur. Typiquement le genre d'enchaînement qui indique qu'Antoine Griezmann vient d'apprendre une bonne nouvelle. Pour le champion du monde,…", - "content": "Emoji Samba. Emoji Samba. Smiley cœur. Smiley cœur. Typiquement le genre d'enchaînement qui indique qu'Antoine Griezmann vient d'apprendre une bonne nouvelle. Pour le champion du monde,…", - "category": "", - "link": "https://www.sofoot.com/griezmann-pourra-finalement-jouer-contre-l-ac-milan-507190.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T16:53:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Here's Those Terrible Shift Knob Decals You Didn't Want", + "description": "

I feel like many times when I meet someone new, after a few moments of talking to me, their most lasting impression is amazement that I’m permitted to use implements like forks without a colossal amount of supervision. This could be related to why I find certain things funny, like the improper use of ordinal numbers…

Read more...

", + "content": "

I feel like many times when I meet someone new, after a few moments of talking to me, their most lasting impression is amazement that I’m permitted to use implements like forks without a colossal amount of supervision. This could be related to why I find certain things funny, like the improper use of ordinal numbers…

Read more...

", + "category": "gear stick", + "link": "https://jalopnik.com/heres-those-terrible-shift-knob-decals-you-didnt-want-1848113626", + "creator": "Jason Torchinsky", + "pubDate": "Wed, 24 Nov 2021 00:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Affaire Hamraoui : Hayet Abidal demande le divorce", - "description": "Hayet Abidal a annoncé par l'intermédiaire de son avocate matrimoniale à Barcelone, Maître Jennifer Losada, entamer une procédure de divorce contre son époux, Éric Abidal. Sur la

Let’s play an automotive edition of spot the differences. Take a look at the two images above. Both are images promoting the Toyota Corolla hatchback. For over a month, details on the Toyota Corolla GR have been out in the open for everyone to see in one of these images. The brilliance of this is that we are all only…

Read more...

", + "content": "

Let’s play an automotive edition of spot the differences. Take a look at the two images above. Both are images promoting the Toyota Corolla hatchback. For over a month, details on the Toyota Corolla GR have been out in the open for everyone to see in one of these images. The brilliance of this is that we are all only…

Read more...

", + "category": "toyota", + "link": "https://jalopnik.com/blink-and-you-miss-it-toyota-teased-the-gr-corolla-in-1848112599", + "creator": "Lawrence Hodge", + "pubDate": "Tue, 23 Nov 2021 23:14:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La FFF annonce des mesures supplémentaires pour la protection des mineurs", - "description": "Alors que cette journée de Ligue 1 est placée sous le signe de la protection de…", - "content": "Alors que cette journée de Ligue 1 est placée sous le signe de la protection de…", - "category": "", - "link": "https://www.sofoot.com/la-fff-annonce-des-mesures-supplementaires-pour-la-protection-des-mineurs-507186.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T16:34:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Honda Is Bringing The Hornet Back", + "description": "

Hornet is a storied nameplate in the motorcycle landscape. Well, it is everywhere but here, anyway. Back when the Hornet originally launched back in 1998 Chrysler still held the Hornet name in the U.S. market thanks to a long dead AMC product, so here it was known as the CB600F. Maybe it would have done better with a…

Read more...

", + "content": "

Hornet is a storied nameplate in the motorcycle landscape. Well, it is everywhere but here, anyway. Back when the Hornet originally launched back in 1998 Chrysler still held the Hornet name in the U.S. market thanks to a long dead AMC product, so here it was known as the CB600F. Maybe it would have done better with a…

Read more...

", + "category": "honda", + "link": "https://jalopnik.com/honda-is-bringing-the-hornet-back-1848113703", + "creator": "Bradley Brownell", + "pubDate": "Tue, 23 Nov 2021 23:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La police abat un jeune joueur en Argentine ", - "description": "L'Argentine est sous tension après la mort de Lucas Gonzalez (17 ans), joueur de Barracas Central (D2 argentine). Le quotidien espagnol Marca rapporte que l'Argentin a succombé après avoir…", - "content": "L'Argentine est sous tension après la mort de Lucas Gonzalez (17 ans), joueur de Barracas Central (D2 argentine). Le quotidien espagnol Marca rapporte que l'Argentin a succombé après avoir…", - "category": "", - "link": "https://www.sofoot.com/la-police-abat-un-jeune-joueur-en-argentine-507189.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T16:33:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "The EV Boat Company That GM Just Bought Into Looks Pretty Promising", + "description": "

General Motors is dipping a toe back into the marine power business. The announcement of GM taking a $150 million stake in a boat startup on Monday may come as surprising to some, but buying into a company that’s making electric boats is just another part of the company’s transition to electric vehicles.

Read more...

", + "content": "

General Motors is dipping a toe back into the marine power business. The announcement of GM taking a $150 million stake in a boat startup on Monday may come as surprising to some, but buying into a company that’s making electric boats is just another part of the company’s transition to electric vehicles.

Read more...

", + "category": "sustainable transport", + "link": "https://jalopnik.com/the-ev-boat-company-that-gm-just-bought-into-looks-pret-1848111265", + "creator": "Lawrence Hodge", + "pubDate": "Tue, 23 Nov 2021 21:26:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Metz Bordeaux : Analyse, cotes et prono du match de Ligue 1", - "description": "

Bordeaux va chercher un résultat à Metz

\n
\nA pareille époque l'an passé, le FC Metz réalisait un exercice intéressant, pointant dans la première…
", - "content": "

Bordeaux va chercher un résultat à Metz

\n
\nA pareille époque l'an passé, le FC Metz réalisait un exercice intéressant, pointant dans la première…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-metz-bordeaux-analyse-cotes-et-prono-du-match-de-ligue-1-507165.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T16:13:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Outdoorsy Wants Drivers To Tow Its Rental Campers With Electric Trucks", + "description": "

Austin-based rental company Outdoorsy is planning to build a fully-electric fleet of trucks to tow its rental trailers, and it’s approached Rivian with an order for 1,000 EVs. This is just another recent report of a rental company showing interest in fully-electric vehicles, which can only bode well for these…

Read more...

", + "content": "

Austin-based rental company Outdoorsy is planning to build a fully-electric fleet of trucks to tow its rental trailers, and it’s approached Rivian with an order for 1,000 EVs. This is just another recent report of a rental company showing interest in fully-electric vehicles, which can only bode well for these…

Read more...

", + "category": "outdoorsy", + "link": "https://jalopnik.com/outdoorsy-wants-drivers-to-tow-its-rental-campers-with-1848112376", + "creator": "José Rodríguez Jr.", + "pubDate": "Tue, 23 Nov 2021 20:35:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Inter Milan Naples : Analyse, cotes et prono du match de Serie A", - "description": "

L'Inter ne veut pas laisser s'échapper Naples

\n
\nCe dimanche, l'Inter champion en titre reçoit l'actuel leader de Serie A, le Napoli. Actuellement,…
", - "content": "

L'Inter ne veut pas laisser s'échapper Naples

\n
\nCe dimanche, l'Inter champion en titre reçoit l'actuel leader de Serie A, le Napoli. Actuellement,…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-inter-milan-naples-analyse-cotes-et-prono-du-match-de-serie-a-507163.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T15:56:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "A Stolen BMW Hit This Ten Ton School Bus Hard Enough To Roll It", + "description": "

A school bus in Washington ended up on its side after a violent crash involving an allegedly stolen car. The resulting crash practically crushed the car while ejecting the front axle from the bus.

Read more...

", + "content": "

A school bus in Washington ended up on its side after a violent crash involving an allegedly stolen car. The resulting crash practically crushed the car while ejecting the front axle from the bus.

Read more...

", + "category": "school bus", + "link": "https://jalopnik.com/school-bus-rolls-over-after-being-shredded-by-alleged-s-1848112538", + "creator": "Mercedes Streeter", + "pubDate": "Tue, 23 Nov 2021 20:32:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Clermont va collaborer avec un musée d'art", - "description": "Dans un communiqué publié sur son site, le Clermont Foot a annoncé allier ses forces avec le musée d'art Roger-Quilliot (MARQ) afin de promouvoir les liens entre culture et football. L'exposition…", - "content": "Dans un communiqué publié sur son site, le Clermont Foot a annoncé allier ses forces avec le musée d'art Roger-Quilliot (MARQ) afin de promouvoir les liens entre culture et football. L'exposition…", - "category": "", - "link": "https://www.sofoot.com/clermont-va-collaborer-avec-un-musee-d-art-507184.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T15:18:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "You Could Carry And Present Your Driver's License In Your iPhone Early Next Year", + "description": "

When Apple first announced the iOS 15 update for iPhones earlier this year, one of the smaller but more noteworthy feature inclusions — especially to us Jalops — was the ability to scan and keep your driver’s license in your device’s Wallet app. Apple said it was working with states, as well as airports and the…

Read more...

", + "content": "

When Apple first announced the iOS 15 update for iPhones earlier this year, one of the smaller but more noteworthy feature inclusions — especially to us Jalops — was the ability to scan and keep your driver’s license in your device’s Wallet app. Apple said it was working with states, as well as airports and the…

Read more...

", + "category": "iphone", + "link": "https://jalopnik.com/you-could-carry-and-present-your-drivers-license-in-you-1848111260", + "creator": "Adam Ismail", + "pubDate": "Tue, 23 Nov 2021 20:07:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pour Conte, Ndombele doit \"travailler beaucoup plus dur que les autres\"", - "description": "Commencée en juillet 2019, l'histoire entre Tanguy Ndombele et Tottenham n'a jamais vraiment été au beau fixe. Si le Français montre par moments toute l'étendue de son potentiel, il n'a…", - "content": "Commencée en juillet 2019, l'histoire entre Tanguy Ndombele et Tottenham n'a jamais vraiment été au beau fixe. Si le Français montre par moments toute l'étendue de son potentiel, il n'a…", - "category": "", - "link": "https://www.sofoot.com/pour-conte-ndombele-doit-travailler-beaucoup-plus-dur-que-les-autres-507173.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T15:04:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Nissan’s Buy From Home Program Is A Joke", + "description": "

Buying a car from a dealer sucks, and it especially sucks right now given the low inventory and lack of deals. Some automakers are attempting to take the pain out of the process by introducing a “Shop From Home” model where you can supposedly buy your new car online. The reality, of course, is very different.

Read more...

", + "content": "

Buying a car from a dealer sucks, and it especially sucks right now given the low inventory and lack of deals. Some automakers are attempting to take the pain out of the process by introducing a “Shop From Home” model where you can supposedly buy your new car online. The reality, of course, is very different.

Read more...

", + "category": "nissan", + "link": "https://jalopnik.com/nissan-s-buy-from-home-program-is-a-joke-1848109813", + "creator": "Tom McParland", + "pubDate": "Tue, 23 Nov 2021 19:55:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "De Bruyne positif au coronavirus", - "description": "Mauvaise nouvelle pour City.
\n
\nLors de la traditionnelle conférence de presse d'avant-match pour le compte de la 12e journée de Premier League opposant Manchester City à…

", - "content": "Mauvaise nouvelle pour City.
\n
\nLors de la traditionnelle conférence de presse d'avant-match pour le compte de la 12e journée de Premier League opposant Manchester City à…

", - "category": "", - "link": "https://www.sofoot.com/de-bruyne-positif-au-coronavirus-507178.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T14:42:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Ten Terrible Tales of Thanksgiving Travel Troubles", + "description": "

The holidays are a marvelous time filled with friends, family and food. But before you can enjoy the best that Thanksgiving and Christmas have to offer, you might need to endure a little travel chaos.

Read more...

", + "content": "

The holidays are a marvelous time filled with friends, family and food. But before you can enjoy the best that Thanksgiving and Christmas have to offer, you might need to endure a little travel chaos.

Read more...

", + "category": "thanksgiving", + "link": "https://jalopnik.com/ten-terrible-tales-of-thanksgiving-travel-troubles-1848111663", + "creator": "Owen Bellwood", + "pubDate": "Tue, 23 Nov 2021 19:50:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Payet n'a pas dit adieu aux Bleus", - "description": "1135 jours. Il faut remonter au 11 octobre 2018 pour retrouver trace d'un match de Dimitri Payet en équipe de France. Plus de trois ans après sa dernière sélection (un 2-2 à Guingamp contre…", - "content": "1135 jours. Il faut remonter au 11 octobre 2018 pour retrouver trace d'un match de Dimitri Payet en équipe de France. Plus de trois ans après sa dernière sélection (un 2-2 à Guingamp contre…", - "category": "", - "link": "https://www.sofoot.com/payet-n-a-pas-dit-adieu-aux-bleus-507177.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T14:39:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "The All-Electric Polestar 5 Already Looks Incredible", + "description": "

The Polestar 5, a four-door sedan grand touring all-electric performance car, is coming in 2024, or so Polestar says. It is also the production version of that stunning Precept car we saw from Polestar last year.

Read more...

", + "content": "

The Polestar 5, a four-door sedan grand touring all-electric performance car, is coming in 2024, or so Polestar says. It is also the production version of that stunning Precept car we saw from Polestar last year.

Read more...

", + "category": "polestar", + "link": "https://jalopnik.com/the-all-electric-polestar-5-already-looks-incredible-1848111374", + "creator": "Erik Shilling", + "pubDate": "Tue, 23 Nov 2021 19:35:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Lyon OM : Analyse, cotes et prono du match de Ligue 1 + 150€ direct offerts chez Winamax", - "description": "Après le carton plein sur le dernier match des Bleus, retour des championnats ce week-end avec un Olympico qui promet. Retrouvez notre pronostic sur Lyon - OM avec le nouveau bonus Winamax : 150€ offerts direct !

Déposez 150€ et misez direct avec 300€ sur Lyon - OM

\n
\n
\nNOUVEAU :

", - "content": "

Déposez 150€ et misez direct avec 300€ sur Lyon - OM

\n
\n
\nNOUVEAU :


", - "category": "", - "link": "https://www.sofoot.com/pronostic-lyon-om-analyse-cotes-et-prono-du-match-de-ligue-1-150e-direct-offerts-chez-winamax-507172.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T14:21:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "I Didn't Know Who Would Buy The 2022 Toyota Corolla Cross, Until I Got In It", + "description": "

I’m a pretty firm believer in the concept that there is someone in this world who will love every car. You might have totally hated the 2013 Mazda2, whereas I adored it because it was totally perfect for my needs at the time. But when I got behind the wheel of the 2022 Toyota Corolla Cross for a brief test drive, it…

Read more...

", + "content": "

I’m a pretty firm believer in the concept that there is someone in this world who will love every car. You might have totally hated the 2013 Mazda2, whereas I adored it because it was totally perfect for my needs at the time. But when I got behind the wheel of the 2022 Toyota Corolla Cross for a brief test drive, it…

Read more...

", + "category": "toyota", + "link": "https://jalopnik.com/i-didnt-know-who-would-buy-the-2022-toyota-corolla-cros-1848111359", + "creator": "Elizabeth Blackstock", + "pubDate": "Tue, 23 Nov 2021 19:25:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Orelsan se verrait bien ambassadeur du Stade Malherbe de Caen ", - "description": "\"J'rejoins mon père au stade, on prend deux buts, on prend deux bières. J'rentre chez moi, j'allume FIFA, j'reprends Malherbe, j'continue d'perdre.\" Sur les 57 minutes et 43…", - "content": "\"J'rejoins mon père au stade, on prend deux buts, on prend deux bières. J'rentre chez moi, j'allume FIFA, j'reprends Malherbe, j'continue d'perdre.\" Sur les 57 minutes et 43…", - "category": "", - "link": "https://www.sofoot.com/orelsan-se-verrait-bien-ambassadeur-du-stade-malherbe-de-caen-507174.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T14:05:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "The 2022 Honda Navi Is The Bargain Beginner Bike High Gas Prices Will Have You Begging For", + "description": "

If the Honda Grom designers set out to build something that was cheap, efficient, and fun, the design brief for the Navi must have been ‘Cheaper! More efficient!’ and in tiny font at the bottom of the page ‘Not quite as fun.’ The Navi was built as a go-between, with a whole lot of scooter DNA, but the muscular urban…

Read more...

", + "content": "

If the Honda Grom designers set out to build something that was cheap, efficient, and fun, the design brief for the Navi must have been ‘Cheaper! More efficient!’ and in tiny font at the bottom of the page ‘Not quite as fun.’ The Navi was built as a go-between, with a whole lot of scooter DNA, but the muscular urban…

Read more...

", + "category": "honda", + "link": "https://jalopnik.com/the-2022-honda-navi-is-the-bargain-beginner-bike-high-g-1848107702", + "creator": "Bradley Brownell", + "pubDate": "Tue, 23 Nov 2021 19:15:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Peter Bosz a encore \"mal à la tête\" depuis la claque infligée par Rennes", - "description": "Hamari Traoré, plus grand livreur de migraine de la Ligue 1.
\n
\n\"Oui, j'ai revisionné le match contre Rennes et ça fait mal à la tête. Je ne comprends pas la route qu'on a…

", - "content": "Hamari Traoré, plus grand livreur de migraine de la Ligue 1.
\n
\n\"Oui, j'ai revisionné le match contre Rennes et ça fait mal à la tête. Je ne comprends pas la route qu'on a…

", - "category": "", - "link": "https://www.sofoot.com/peter-bosz-a-encore-mal-a-la-tete-depuis-la-claque-infligee-par-rennes-507175.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T14:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Nissan Ocean, Fisker Z, Porsche EV9 Wagon, Taycan Model S: I Flew All The Way To LA For These Pictures Please Look At Them So Rory Will Approve My Expenses", + "description": "

Last week, while out in Los Angeles to drive the new Civic Si, I got my first ever chance to visit the LA Auto Show. Auto shows are always an interesting mix of things to see, from priceless one-off concepts to e-bikes you could ride home from the show for a couple grand. One thing they all have in common: They’re all…

Read more...

", + "content": "

Last week, while out in Los Angeles to drive the new Civic Si, I got my first ever chance to visit the LA Auto Show. Auto shows are always an interesting mix of things to see, from priceless one-off concepts to e-bikes you could ride home from the show for a couple grand. One thing they all have in common: They’re all…

Read more...

", + "category": "porsche", + "link": "https://jalopnik.com/missives-and-musings-from-the-los-angeles-auto-show-1848109979", + "creator": "Steve DaSilva", + "pubDate": "Tue, 23 Nov 2021 18:28:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Markus Anfang (Werder Brême) soupçonné d'avoir utilisé un faux certificat de vaccination", - "description": "Depuis les prémices de l'émancipation malheureuse du coronavirus, les plus grands championnats d'Europe ne laissent plus rien au hasard en matière de mesures sanitaires. Présenter un pass…", - "content": "Depuis les prémices de l'émancipation malheureuse du coronavirus, les plus grands championnats d'Europe ne laissent plus rien au hasard en matière de mesures sanitaires. Présenter un pass…", - "category": "", - "link": "https://www.sofoot.com/markus-anfang-werder-breme-soupconne-d-avoir-utilise-un-faux-certificat-de-vaccination-507171.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T13:13:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Drunk Airline Passengers Are Causing Some Mind-Numbing Chaos In The Skies", + "description": "

The Federal Aviation Administration announced its latest round of civil fines against passengers who can’t keep their cool. Eight people face a combined $161,823 in penalties in actions from assaulting a flight attendant to urinating on a floor, all while allegedly intoxicated.

Read more...

", + "content": "

The Federal Aviation Administration announced its latest round of civil fines against passengers who can’t keep their cool. Eight people face a combined $161,823 in penalties in actions from assaulting a flight attendant to urinating on a floor, all while allegedly intoxicated.

Read more...

", + "category": "southwest airlines", + "link": "https://jalopnik.com/drunk-airline-passengers-are-causing-some-mind-numbing-1848111234", + "creator": "Mercedes Streeter", + "pubDate": "Tue, 23 Nov 2021 18:22:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La voie royale du FC Versailles", - "description": "Seule équipe encore invaincue sur les quatre premières divisions françaises, le FC Versailles 78 vit un début de saison de rêve sur le plan sportif en tête du groupe A de National 2. En coulisses pourtant, les dernières semaines ont été mouvementées : le président historique, Daniel Voisin, a claqué la porte après 25 ans au club, tandis que Jean-Luc Arribart est arrivé en tant que directeur général de la récente SAS créée par les nouveaux actionnaires. Le début d'une nouvelle ère ?À l'instar des géants que sont le SSC Naples, l'AC Milan, Porto ou le Sporting Portugal, le FC Versailles 78 n'a lui non plus toujours pas connu la défaite en championnat depuis le début de…", - "content": "À l'instar des géants que sont le SSC Naples, l'AC Milan, Porto ou le Sporting Portugal, le FC Versailles 78 n'a lui non plus toujours pas connu la défaite en championnat depuis le début de…", - "category": "", - "link": "https://www.sofoot.com/la-voie-royale-du-fc-versailles-507145.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T13:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Here's Everything Wrong With My 13 Cars", + "description": "

I’m not entirely sure how this happened, but I own 13 cars. And what’s strange is that I just sold a bunch, meaning the vehicle flow rate into my yard must be higher than the vehicle flow rate out of it. This means continuity (the conservation of vehicular mass) does not apply to my abode. This concerns me.

Read more...

", + "content": "

I’m not entirely sure how this happened, but I own 13 cars. And what’s strange is that I just sold a bunch, meaning the vehicle flow rate into my yard must be higher than the vehicle flow rate out of it. This means continuity (the conservation of vehicular mass) does not apply to my abode. This concerns me.

Read more...

", + "category": "cars", + "link": "https://jalopnik.com/heres-everything-wrong-with-my-13-cars-1848029759", + "creator": "David Tracy", + "pubDate": "Tue, 23 Nov 2021 18:07:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Konrad de la Fuente, redécollage imminent ", - "description": "Sensation de l'été à Marseille, Konrad de la Fuente a légèrement disparu des radars au début de l'automne, un peu à l'image de l'OM de Sampaoli. Sauf qu'aujourd'hui, l'ailier américain revient peu à peu sur le devant de la scène. Avant de faire du soccer un sport reconnu de tous aux States ?
\t\t\t\t\t
", - "content": "
\t\t\t\t\t
", - "category": "", - "link": "https://www.sofoot.com/konrad-de-la-fuente-redecollage-imminent-507137.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T13:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Maxed Out, Cake’s Latest E-Bike Is A $23K Two-Wheeled Tow Truck", + "description": "

Swedish bike maker Cake makes some pretty sweet rides. The Makka Flex is a sleek, electric moped perfect for commuters, while the Kalk model is an electrically-charged off-road racer. Now, the company has released a range of utilitarian bikes for workers looking to cut their carbon emissions.

Read more...

", + "content": "

Swedish bike maker Cake makes some pretty sweet rides. The Makka Flex is a sleek, electric moped perfect for commuters, while the Kalk model is an electrically-charged off-road racer. Now, the company has released a range of utilitarian bikes for workers looking to cut their carbon emissions.

Read more...

", + "category": "kalk", + "link": "https://jalopnik.com/maxed-out-cake-s-latest-e-bike-is-a-23k-two-wheeled-t-1848110581", + "creator": "Owen Bellwood", + "pubDate": "Tue, 23 Nov 2021 18:02:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Looking for Momo", - "description": "Il s'appelle Momo, il joue attaquant de pointe, en Ardèche, dans l'équipe des vétérans du Foot Loisirs 1994. Jusque-là, rien de bien étonnant. Oui, mais voilà : Momo a 80 ans. Pas de quoi empêcher ce retraité encore bien fringuant de tâter le cuir, tous les jeudis, de marquer quelques buts et d'imiter le King Cantona lorsqu'il fait trembler les filets. Pas un hasard pour un homme qui, au fond, n'a jamais vécu bien loin des terrains.\"Lorsque je parle du club autour de moi, la première chose que j'évoque, c'est Momo.\" Quand il évoque le Foot Loisirs 1994, l'association de foot dont il gère la communication en…", - "content": "\"Lorsque je parle du club autour de moi, la première chose que j'évoque, c'est Momo.\" Quand il évoque le Foot Loisirs 1994, l'association de foot dont il gère la communication en…", - "category": "", - "link": "https://www.sofoot.com/looking-for-momo-506890.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T13:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "BMW's Gesture Controls Will Have You Feeling Like A Mediocre Wizard", + "description": "

Twirl your finger, and the volume changes. Stick your thumb out like a hitchhiker and watch your BMW switch to the next song. Throw two fingers at the screen like you’re about to poke someone in the eye, and the volume mutes or unmutes. This is using gesture control in the new BMW X4, and it’ll probably have you…

Read more...

", + "content": "

Twirl your finger, and the volume changes. Stick your thumb out like a hitchhiker and watch your BMW switch to the next song. Throw two fingers at the screen like you’re about to poke someone in the eye, and the volume mutes or unmutes. This is using gesture control in the new BMW X4, and it’ll probably have you…

Read more...

", + "category": "gesture", + "link": "https://jalopnik.com/bmws-gesture-controls-will-have-you-feeling-like-a-medi-1848110683", + "creator": "Elizabeth Blackstock", + "pubDate": "Tue, 23 Nov 2021 17:45:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La collection de tirages photo So Foot de novembre 2021 est arrivée !", - "description": "En collaboration avec l'agence photographique Icon Sport, So Foot vous propose, chaque mois, une sélection renouvelée de photographies exclusives de football en édition ultra limitée, onze tirages par taille, sur la nouvelle boutique maison : boutique.so. Brouillard en novembre, l'hiver sera tendre. La preuve avec quatre nouveaux tirages en édition limitée : la bicyclette de Rooney contre City, Zinédine période Juventus, le Parc des princes by night et l'arrêt de Dudek face à Shevchenko en 2005.
\n
\n


", - "content": "
\n
\n


", - "category": "", - "link": "https://www.sofoot.com/la-collection-de-tirages-photo-so-foot-de-novembre-2021-est-arrivee-506666.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T12:36:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Australian Cops Pulled Over A Dude On A Motorized Cooler And Impounded It", + "description": "

I’m not sure if you’re aware of this, but motorized, ridable coolers are very much A Thing. There’s multiple companies building and selling plastic coolers mounted on a frame with wheels and a lawnmower-type engine that you can sit on and drive around, a fact that will sure swing the balance in our favor when humanity…

Read more...

", + "content": "

I’m not sure if you’re aware of this, but motorized, ridable coolers are very much A Thing. There’s multiple companies building and selling plastic coolers mounted on a frame with wheels and a lawnmower-type engine that you can sit on and drive around, a fact that will sure swing the balance in our favor when humanity…

Read more...

", + "category": "cooler", + "link": "https://jalopnik.com/australian-cops-pulled-over-a-dude-on-a-motorized-coole-1848110624", + "creator": "Jason Torchinsky", + "pubDate": "Tue, 23 Nov 2021 17:35:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Podcast Alternative Football (épisode 13) avec Paul de Saint-Sernin comme invité sur le sujet \"l'humour et le football\"", - "description": "Le football est un jeu simple, dont beaucoup parlent, mais un univers complexe, que peu connaissent vraiment. Dans Alternative Football, le podcast hors terrain de So Foot, vous en découvrirez les rouages, avec ses principaux acteurs. Dans chaque épisode, Édouard Cissé, ancien milieu de terrain du PSG, de l'OM ou de Monaco désormais entrepreneur en plus d'être consultant pour Prime Video, et Matthieu Lille-Palette, vice-président d'Opta, s'entretiendront avec un invité sur un thème précis. Pendant une mi-temps, temps nécessaire pour redéfinir totalement votre grille de compréhension.Si on peut rire de tout, mais pas avec tout le monde, peut-on rire avec les footballeurs ? Si oui, comment ? Vaste question à laquelle ils ne sont que peu à s'être frottés. Dernier…", - "content": "Si on peut rire de tout, mais pas avec tout le monde, peut-on rire avec les footballeurs ? Si oui, comment ? Vaste question à laquelle ils ne sont que peu à s'être frottés. Dernier…", - "category": "", - "link": "https://www.sofoot.com/podcast-alternative-football-episode-13-avec-paul-de-saint-sernin-comme-invite-sur-le-sujet-l-humour-et-le-football-507168.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T12:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "U.S. To Release 50 Million Barrels Of Oil From Emergency Reserve", + "description": "

In an effort to reduce oil prices and force gasoline prices to lower, the United States has teamed up with several other countries — China, India, South Korea, Japan, and Britain — to release crude oil into the market, Reuters reports. America will be releasing 50 million barrels of oil from the U.S. Strategic…

Read more...

", + "content": "

In an effort to reduce oil prices and force gasoline prices to lower, the United States has teamed up with several other countries — China, India, South Korea, Japan, and Britain — to release crude oil into the market, Reuters reports. America will be releasing 50 million barrels of oil from the U.S. Strategic…

Read more...

", + "category": "opec", + "link": "https://jalopnik.com/u-s-to-release-50-million-barrels-of-oil-from-emergenc-1848110026", + "creator": "Elizabeth Blackstock", + "pubDate": "Tue, 23 Nov 2021 16:30:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La Premier League conclut un nouvel accord de diffusion aux USA ", - "description": "Business is business.
\n
\nPourtant frappé par une crise institutionnelle avec en…

", - "content": "Business is business.
\n
\nPourtant frappé par une crise institutionnelle avec en…

", - "category": "", - "link": "https://www.sofoot.com/la-premier-league-conclut-un-nouvel-accord-de-diffusion-aux-usa-507167.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T11:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "An All-Electric Lancia Delta Restomod Will Take The World Rallycross Circuit Next Year", + "description": "

One fun side effect of EV fever is the sudden urge to revive every beloved enthusiast car of yore with electric power. Sure, it’s getting a little predictable, but you’ll never hear me complain about smart people doing cool shit with an old Opel Manta chassis, or making the Quattro spiritual successor Audi refuses to.

Read more...

", + "content": "

One fun side effect of EV fever is the sudden urge to revive every beloved enthusiast car of yore with electric power. Sure, it’s getting a little predictable, but you’ll never hear me complain about smart people doing cool shit with an old Opel Manta chassis, or making the Quattro spiritual successor Audi refuses to.

Read more...

", + "category": "lancia delta", + "link": "https://jalopnik.com/an-all-electric-lancia-delta-restomod-will-take-the-wor-1848109071", + "creator": "Adam Ismail", + "pubDate": "Tue, 23 Nov 2021 16:15:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pochettino : \"On veut tous faire du beau jeu et gagner 5-0\"", - "description": "Troyes (2-1), Metz (1-2), Angers (2-1), Lille (2-1), Troyes (2-1) et plus récemment Bordeaux (2-3), les copies rendues par les joueurs du Paris Saint-Germain cette saison se suivent et se…", - "content": "Troyes (2-1), Metz (1-2), Angers (2-1), Lille (2-1), Troyes (2-1) et plus récemment Bordeaux (2-3), les copies rendues par les joueurs du Paris Saint-Germain cette saison se suivent et se…", - "category": "", - "link": "https://www.sofoot.com/pochettino-on-veut-tous-faire-du-beau-jeu-et-gagner-5-0-507166.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T10:36:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "A Bigger Porsche Crossover Is Coming", + "description": "

Get ready for a full-size Porsche crossover, Elon Musk is beefing with another rich guy, and GM. All that and more in The Morning Shift for November 23, 2021.

Read more...

", + "content": "

Get ready for a full-size Porsche crossover, Elon Musk is beefing with another rich guy, and GM. All that and more in The Morning Shift for November 23, 2021.

Read more...

", + "category": "porsche", + "link": "https://jalopnik.com/a-bigger-porsche-crossover-is-coming-1848109428", + "creator": "Erik Shilling", + "pubDate": "Tue, 23 Nov 2021 15:26:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Khalida Popal et Kim Kardashian ont aidé à l'évacuation de joueuses afghanes", - "description": "Les opérations de sauvetage continuent en Afghanistan.
\n
\nKhalida Popal, ancienne capitaine de l'équipe d'Afghanistan de football, a organisé une grande opération d'évacuation ce jeudi…

", - "content": "Les opérations de sauvetage continuent en Afghanistan.
\n
\nKhalida Popal, ancienne capitaine de l'équipe d'Afghanistan de football, a organisé une grande opération d'évacuation ce jeudi…

", - "category": "", - "link": "https://www.sofoot.com/khalida-popal-et-kim-kardashian-ont-aide-a-l-evacuation-de-joueuses-afghanes-507164.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T10:12:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Boomer Car Dealer Kicks Off His Doomed Governor Bid With A Cheap Shot At This Excellent Yugo", + "description": "

I know lots of people don’t want politics in their car blogs, and I get that. So I’m going to try to keep this about the cars as much as I can. But I think this needs to be addressed, because there’s a candidate for governor of the Great State of Michigan that’s basing his initial campaign ad on shitting on a Yugo,…

Read more...

", + "content": "

I know lots of people don’t want politics in their car blogs, and I get that. So I’m going to try to keep this about the cars as much as I can. But I think this needs to be addressed, because there’s a candidate for governor of the Great State of Michigan that’s basing his initial campaign ad on shitting on a Yugo,…

Read more...

", + "category": "yugo", + "link": "https://jalopnik.com/boomer-car-dealer-kicks-off-his-doomed-governor-bid-wit-1848106124", + "creator": "Jason Torchinsky", + "pubDate": "Tue, 23 Nov 2021 15:13:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Giovanni van Bronckhorst nommé aux Rangers ", - "description": "Laissé vacant depuis le départ de Steven Gerrard vers Aston Villa, le banc des Rangers vient de trouver un nouvel occupant. En effet, les Gers ont décidé ce jeudi de nommer Giovanni van…", - "content": "Laissé vacant depuis le départ de Steven Gerrard vers Aston Villa, le banc des Rangers vient de trouver un nouvel occupant. En effet, les Gers ont décidé ce jeudi de nommer Giovanni van…", - "category": "", - "link": "https://www.sofoot.com/giovanni-van-bronckhorst-nomme-aux-rangers-507162.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T10:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Looking For A Toyota RAV4 Prime? It'll Cost You Nearly $97,000.", + "description": "

We’ve already done a lot on dealer markups this year, but the thing is they just keep coming. This markup at Downtown Toyota of Oakland, in California, has made its rounds online over the weekend via Reddit and sent our way via reader tip. The dealer, like many others, has one RAV4 Prime in its inventory, but unlike…

Read more...

", + "content": "

We’ve already done a lot on dealer markups this year, but the thing is they just keep coming. This markup at Downtown Toyota of Oakland, in California, has made its rounds online over the weekend via Reddit and sent our way via reader tip. The dealer, like many others, has one RAV4 Prime in its inventory, but unlike…

Read more...

", + "category": "toyota", + "link": "https://jalopnik.com/looking-for-a-toyota-rav4-prime-itll-cost-you-nearly-1848105508", + "creator": "Lawrence Hodge", + "pubDate": "Tue, 23 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "50 ouvriers sont morts accidentellement au Qatar en 2020", - "description": "6500 : c'est le nombre de morts provoquées en dix ans par les chantiers de la Coupe du monde 2022 au Qatar

Simca was Chrysler’s French subsidiary, but they were very much doing their own thing. In the late ‘60s and ‘70s they were making these really appealing small, tidy, boxy rear-engined cars, sort of like Frenchier NSU Prinzes or equally French but smaller Renault R8s or R10s. Anyway, I just like how crisp this one…

Read more...

", + "content": "

Simca was Chrysler’s French subsidiary, but they were very much doing their own thing. In the late ‘60s and ‘70s they were making these really appealing small, tidy, boxy rear-engined cars, sort of like Frenchier NSU Prinzes or equally French but smaller Renault R8s or R10s. Anyway, I just like how crisp this one…

Read more...

", + "category": "simca", + "link": "https://jalopnik.com/blip-just-a-tidy-simca-1848108952", + "creator": "Jason Torchinsky", + "pubDate": "Tue, 23 Nov 2021 13:56:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "EuroMillions vendredi 19 novembre 2021 : 131 millions d'€ à gagner !", - "description": "L'EuroMillions de ce vendredi 19 novembre est à 131 millions d'euros. Une somme qui vous permettrait d'acheter quasiment le club de Ligue 1 de votre choix, ou plus simplement de devenir l'une des 500 plus grosses richesses de France

EuroMillions du vendredi 19 novembre 2021 : 131M d'€

\n
\nLe jackpot de l'EuroMillions affiche 131 millions d'euros ce vendredi 19 novembre…
", - "content": "

EuroMillions du vendredi 19 novembre 2021 : 131M d'€

\n
\nLe jackpot de l'EuroMillions affiche 131 millions d'euros ce vendredi 19 novembre…
", - "category": "", - "link": "https://www.sofoot.com/euromillions-vendredi-19-novembre-2021-131-millions-d-e-a-gagner-507117.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T09:10:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "At $5,500, Could You See Blazing Some New Trails In This 2004 Chevy Blazer?", + "description": "

You can blaze trails and wear a blazer. You could do both — or neither — in today’s Nice Price or No Dice Chevy Blazer, seeing as the model has a rep for being pretty good both off-road and on. What might all that flexibility be worth?

Read more...

", + "content": "

You can blaze trails and wear a blazer. You could do both — or neither — in today’s Nice Price or No Dice Chevy Blazer, seeing as the model has a rep for being pretty good both off-road and on. What might all that flexibility be worth?

Read more...

", + "category": "toyota", + "link": "https://jalopnik.com/at-5-500-could-you-see-blazing-some-new-trails-in-thi-1848101992", + "creator": "Rob Emslie", + "pubDate": "Tue, 23 Nov 2021 13:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "LOTO du samedi 20 novembre 2021 : 24 millions d'€ à gagner !", - "description": "Gros week-end de foot mais aussi gros week-end FDJ avec un gros EuroMillions et un énorme LOTO avec 24 millions d'euros à gagner ce samedi 20 novembre 2021

LOTO du samedi 20 novembre 2021 : 24 Millions d'€

\n
\nLe LOTO de ce samedi 20 novembre 2021 est de 24 millions d'euros.
\nSi quelqu'un…

", - "content": "

LOTO du samedi 20 novembre 2021 : 24 Millions d'€

\n
\nLe LOTO de ce samedi 20 novembre 2021 est de 24 millions d'euros.
\nSi quelqu'un…

", - "category": "", - "link": "https://www.sofoot.com/loto-du-samedi-20-novembre-2021-24-millions-d-e-a-gagner-507160.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T09:06:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "2022 Hyundai Elantra N & Kona N: First Drive", + "description": "

Back in 2018, when Hyundai first released the Veloster N, it was a big deal. The Korean automaker had done a lot to make its cars more competitive, but it still wasn’t a company that was known for building cars that were fun to drive. Once the Veloster N showed up, that all changed. It quickly became a Jalopnik staff…

Read more...

", + "content": "

Back in 2018, when Hyundai first released the Veloster N, it was a big deal. The Korean automaker had done a lot to make its cars more competitive, but it still wasn’t a company that was known for building cars that were fun to drive. Once the Veloster N showed up, that all changed. It quickly became a Jalopnik staff…

Read more...

", + "category": "hyundai", + "link": "https://jalopnik.com/2022-hyundai-elantra-n-kona-n-first-drive-1848106336", + "creator": "Collin Woodard", + "pubDate": "Tue, 23 Nov 2021 05:01:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Bob Bradley quitte le Los Angeles FC", - "description": "Dream of Californication.
\n
\nBob Bradley restera comme le premier entraîneur de l'histoire du Los Angeles FC. Une franchise née en 2018 et intégrée cette même saison en MLS.…

", - "content": "Dream of Californication.
\n
\nBob Bradley restera comme le premier entraîneur de l'histoire du Los Angeles FC. Une franchise née en 2018 et intégrée cette même saison en MLS.…

", - "category": "", - "link": "https://www.sofoot.com/bob-bradley-quitte-le-los-angeles-fc-507159.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T09:06:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Rolls-Royce's Electric Plane Goes 387 MPH To Become Fastest Electric Vehicle", + "description": "

Last week Rolls-Royce took the all-electric ‘Spirit of Innovation’ plane out for a run and set what is tentatively the record for fastest electric-propelled vehicle on planet earth. The company says it submitted three new world record attempts for verification to the World Air Sports Federation. On November 16th the…

Read more...

", + "content": "

Last week Rolls-Royce took the all-electric ‘Spirit of Innovation’ plane out for a run and set what is tentatively the record for fastest electric-propelled vehicle on planet earth. The company says it submitted three new world record attempts for verification to the World Air Sports Federation. On November 16th the…

Read more...

", + "category": "rolls royce", + "link": "https://jalopnik.com/rolls-royces-electric-plane-goes-387-mph-to-become-fast-1848106642", + "creator": "Bradley Brownell", + "pubDate": "Tue, 23 Nov 2021 00:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Lucas Paquetá joueur du mois d'octobre en Ligue 1", - "description": "Incontournable au milieu de terrain à Lyon, Lucas Paquetá a marché sur la Ligue 1 au mois d'octobre. Aussi élégant sur la pelouse que son cuir chevelu, le Brésilien succède à Kylian Mbappé…", - "content": "Incontournable au milieu de terrain à Lyon, Lucas Paquetá a marché sur la Ligue 1 au mois d'octobre. Aussi élégant sur la pelouse que son cuir chevelu, le Brésilien succède à Kylian Mbappé…", - "category": "", - "link": "https://www.sofoot.com/lucas-paqueta-joueur-du-mois-d-octobre-en-ligue-1-507158.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T08:52:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "These Two Riders Take A Pair Of Zero Dual Sports On A 1,000 Mile Off-Road Journey", + "description": "

One of my favorite parts of the human condition is pushing yourself beyond your comfort zone. Not everyone has that drive, but I’d venture that most people who ride motorcycles or enjoy off-roading adventures does. And particularly those people who enjoy off-roading motorcycle adventures. When life throws an…

Read more...

", + "content": "

One of my favorite parts of the human condition is pushing yourself beyond your comfort zone. Not everyone has that drive, but I’d venture that most people who ride motorcycles or enjoy off-roading adventures does. And particularly those people who enjoy off-roading motorcycle adventures. When life throws an…

Read more...

", + "category": "human activities", + "link": "https://jalopnik.com/these-two-riders-take-a-pair-of-zero-dual-sports-on-a-1-1848105923", + "creator": "Bradley Brownell", + "pubDate": "Mon, 22 Nov 2021 23:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "225 millions de plus pour le Real dans la rénovation de son stade", - "description": "La rénovation de Santiago Bernabéu commence à réellement devenir un casse-tête pour le Real Madrid. Le projet avait été initié en 2019 avec une jolie enveloppe de 575 millions d'euros pour…", - "content": "La rénovation de Santiago Bernabéu commence à réellement devenir un casse-tête pour le Real Madrid. Le projet avait été initié en 2019 avec une jolie enveloppe de 575 millions d'euros pour…", - "category": "", - "link": "https://www.sofoot.com/225-millions-de-plus-pour-le-real-dans-la-renovation-de-son-stade-507157.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T08:22:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", - "read": false, + "title": "Honda Cars Could Politely Text Pedestrians To Get The Hell Out Of The Way", + "description": "

Honda and Softbank are working together to try to reduce the number of accidents involving pedestrians and cars, as the Japanese carmaker tries to make good on its promise of a collision-free society. Honda has been developing its suite of ADAS to that end, but the carmaker is turning to the other half of the…

Read more...

", + "content": "

Honda and Softbank are working together to try to reduce the number of accidents involving pedestrians and cars, as the Japanese carmaker tries to make good on its promise of a collision-free society. Honda has been developing its suite of ADAS to that end, but the carmaker is turning to the other half of the…

Read more...

", + "category": "honda", + "link": "https://jalopnik.com/honda-cars-could-politely-text-pedestrians-to-get-the-h-1848104882", + "creator": "José Rodríguez Jr.", + "pubDate": "Mon, 22 Nov 2021 20:50:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Sanction réduite pour un club brésilien dans une affaire de racisme", - "description": "Le club de Brusque au Brésil a pu voir ce jeudi sa sanction réduite dans une affaire de racisme qui concerne son ancien président Antonio Petermann. Ce dernier a avoué avoir émis des propos…", - "content": "Le club de Brusque au Brésil a pu voir ce jeudi sa sanction réduite dans une affaire de racisme qui concerne son ancien président Antonio Petermann. Ce dernier a avoué avoir émis des propos…", - "category": "", - "link": "https://www.sofoot.com/sanction-reduite-pour-un-club-bresilien-dans-une-affaire-de-racisme-507156.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T07:50:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Here Are The Worst Cars You Recommended That Someone Actually Bought", + "description": "

Some cars may feel like a decently good idea at the time of recommendation. Fast-forward a few years though and one may come to regret ever mentioning a model when it turns out to be, you know, crap.

Read more...

", + "content": "

Some cars may feel like a decently good idea at the time of recommendation. Fast-forward a few years though and one may come to regret ever mentioning a model when it turns out to be, you know, crap.

Read more...

", + "category": "cars", + "link": "https://jalopnik.com/here-are-the-worst-cars-you-recommended-that-someone-ac-1848104797", + "creator": "Lawrence Hodge", + "pubDate": "Mon, 22 Nov 2021 20:40:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Jimmy Cabot, ça brûle", - "description": "Arrivé à Angers en septembre 2020, Jimmy Cabot, 27 ans, a vécu une première saison difficile dans le Maine-et-Loire avant de changer de look pour une autre vie à la suite de l'arrivée de Gérald Baticle. Repositionné piston droit par le coach arrivé cet été sur le banc du SCO, le Savoyard donne aujourd'hui la leçon aux habitués des couloirs et fonce dans tout le pays avec un statut improbable de meilleur tacleur de Ligue 1. Entre vieilles pannes de réveil, amour de la pétanque et développement personnel, portrait d'un homme complet.Un jour de juin, alors que le monde du foot a la tête à l'Euro et que ceux qui se fichent du foot tentent de comprendre quelque chose aux changements d'humeur du ciel, des hommes suent. Ils sont…", - "content": "Un jour de juin, alors que le monde du foot a la tête à l'Euro et que ceux qui se fichent du foot tentent de comprendre quelque chose aux changements d'humeur du ciel, des hommes suent. Ils sont…", - "category": "", - "link": "https://www.sofoot.com/jimmy-cabot-ca-brule-507127.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T05:05:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Finally A Chart That Shows When Porsche 911s Were Most And Least Expensive", + "description": "

We’ve been writing a lot about the 2022 Porsche 911 because, well, it’s the new Porsche 911. Of course we’re going to write about it. One thing that caught my attention about this rear-engined mainstay is that the price for the car now starts at $101,200. The 2021 started at $99,200, which means this year is the first…

Read more...

", + "content": "

We’ve been writing a lot about the 2022 Porsche 911 because, well, it’s the new Porsche 911. Of course we’re going to write about it. One thing that caught my attention about this rear-engined mainstay is that the price for the car now starts at $101,200. The 2021 started at $99,200, which means this year is the first…

Read more...

", + "category": "porsche", + "link": "https://jalopnik.com/finally-a-chart-that-shows-when-porsche-911s-were-most-1848104737", + "creator": "Jason Torchinsky", + "pubDate": "Mon, 22 Nov 2021 20:05:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le nouveau défi de Samuel Eto'o", - "description": "Samuel Eto'o a officiellement déposé sa candidature à l'élection à la présidence de la Fédération camerounaise de football (FECAFOOT) le mercredi 17 novembre, en vue du scrutin du 11 décembre. L'ancien capitaine des Lions indomptables, qui bénéficie d'un important soutien populaire et médiatique, est déterminé à aller jusqu'au bout, malgré les tentatives de l'actuel président pour l'inciter à se retirer.Kinshasa était le dimanche 14 novembre \"the place to be\" du football africain, à l'occasion du match décisif entre la RD Congo et le Bénin, comptant pour la 6e journée de…", - "content": "Kinshasa était le dimanche 14 novembre \"the place to be\" du football africain, à l'occasion du match décisif entre la RD Congo et le Bénin, comptant pour la 6e journée de…", - "category": "", - "link": "https://www.sofoot.com/le-nouveau-defi-de-samuel-eto-o-507133.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T05:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "The Jalopnik Holiday \"GIF Guide\"", + "description": "

The holidays are finally here: Just 33 days to go until Christmas and we’re only two full days away from Thanksgiving. Stores are packed to the brim with stocking-stuffers, Christmas lights are illuminating the streets, and some of your favorite websites are publishing a new gift guide almost every week.

Read more...

", + "content": "

The holidays are finally here: Just 33 days to go until Christmas and we’re only two full days away from Thanksgiving. Stores are packed to the brim with stocking-stuffers, Christmas lights are illuminating the streets, and some of your favorite websites are publishing a new gift guide almost every week.

Read more...

", + "category": "miata", + "link": "https://jalopnik.com/the-jalopnik-holiday-gif-guide-1848103848", + "creator": "Owen Bellwood", + "pubDate": "Mon, 22 Nov 2021 20:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ces activistes strasbourgeois ont un plan pour faire annuler la Coupe du monde 2022", - "description": "Ils ne voulaient pas rester indifférents aux milliers de morts recensés depuis l'attribution de la compétition au Qatar. Le collectif Maquis Alsace-Lorraine se lance dans un projet fou : faire annuler le prochain Mondial, en incitant personnellement les joueurs à boycotter l'événement.\" Depuis que je suis enfant, les footballeurs sont mes idoles. C'est pour ça que j'y crois, ils m'ont toujours fait rêver, ils ne peuvent pas me décevoir\", confie Ariel*, qui est à…", - "content": "\" Depuis que je suis enfant, les footballeurs sont mes idoles. C'est pour ça que j'y crois, ils m'ont toujours fait rêver, ils ne peuvent pas me décevoir\", confie Ariel*, qui est à…", - "category": "", - "link": "https://www.sofoot.com/ces-activistes-strasbourgeois-ont-un-plan-pour-faire-annuler-la-coupe-du-monde-2022-507132.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T05:00:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Get Your Racing Fix With A New Set Of Dinner With Racers Podcasts", + "description": "

If you’re a racing fan and aren’t listening to Dinner With Racers, I’m going to need you to rectify that immediately. The podcast, hosted by racer Ryan Eversley and PR guru Sean Heckman, is free to listen to, and a whole host of episodes just dropped as a little early holiday gift to all of us.

Read more...

", + "content": "

If you’re a racing fan and aren’t listening to Dinner With Racers, I’m going to need you to rectify that immediately. The podcast, hosted by racer Ryan Eversley and PR guru Sean Heckman, is free to listen to, and a whole host of episodes just dropped as a little early holiday gift to all of us.

Read more...

", + "category": "dinner with racers", + "link": "https://jalopnik.com/get-your-racing-fix-with-a-new-set-of-dinner-with-racer-1848103895", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 19:15:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Nancy Rodez : Analyse, cotes et prono du match de Ligue 2", - "description": "

Nancy en regain de forme avant Rodez

\n
\nLanterne rouge de Ligue 2, Nancy a connu une entame de championnat très compliquée avec notamment 5 défaites…
", - "content": "

Nancy en regain de forme avant Rodez

\n
\nLanterne rouge de Ligue 2, Nancy a connu une entame de championnat très compliquée avec notamment 5 défaites…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-nancy-rodez-analyse-cotes-et-prono-du-match-de-ligue-2-507155.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T02:48:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "Dodge Sets 2024 Death Date For Charger And Challenger To Make Way For The Brand's \"eMuscle\"", + "description": "

It’s finally happening: The Dodge Charger and Challenger muscle machines will be no more by 2024. Motor Trend spoke with Dodge CEO Tim Kuniskis about the brand’s plans for the next two years as the company tries to appease muscle fans and appeal to EV buyers.

Read more...

", + "content": "

It’s finally happening: The Dodge Charger and Challenger muscle machines will be no more by 2024. Motor Trend spoke with Dodge CEO Tim Kuniskis about the brand’s plans for the next two years as the company tries to appease muscle fans and appeal to EV buyers.

Read more...

", + "category": "dodge", + "link": "https://jalopnik.com/dodge-sets-2024-death-date-for-charger-and-challenger-t-1848103833", + "creator": "Lawrence Hodge", + "pubDate": "Mon, 22 Nov 2021 19:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Nîmes Quevilly Rouen : Analyse, cotes et prono du match de Ligue 2", - "description": "

Nîmes enchaine face à Quevilly Rouen

\n
\nRelégué de Ligue 1 après avoir vécu un exercice difficile, Nîmes a vu plusieurs cadres quitter le navire…
", - "content": "

Nîmes enchaine face à Quevilly Rouen

\n
\nRelégué de Ligue 1 après avoir vécu un exercice difficile, Nîmes a vu plusieurs cadres quitter le navire…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-nimes-quevilly-rouen-analyse-cotes-et-prono-du-match-de-ligue-2-507154.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T02:43:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "What Do You Want To Know About The 2022 Genesis GV70?", + "description": "

This past week, I had a chance to drive the gorgeous 2022 Genesis GV70, a vehicle I have been absolutely dying to see in person. Folks: I was not disappointed. But before I sit down to write my review and get lost waxing poetic, what do you want to know?

Read more...

", + "content": "

This past week, I had a chance to drive the gorgeous 2022 Genesis GV70, a vehicle I have been absolutely dying to see in person. Folks: I was not disappointed. But before I sit down to write my review and get lost waxing poetic, what do you want to know?

Read more...

", + "category": "genesis gv70", + "link": "https://jalopnik.com/what-do-you-want-to-know-about-the-2022-genesis-gv70-1848103679", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 18:25:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Le Havre Amiens : Analyse, cotes et prono du match de Ligue 2", - "description": "

Le Havre ambitieux face à Amiens

\n
\nDécevant ces dernières saisons, Le Havre se monte nettement plus intéressant lors de ce nouvel exercice alors que…
", - "content": "

Le Havre ambitieux face à Amiens

\n
\nDécevant ces dernières saisons, Le Havre se monte nettement plus intéressant lors de ce nouvel exercice alors que…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-le-havre-amiens-analyse-cotes-et-prono-du-match-de-ligue-2-507153.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T02:37:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "GM Now Says Heated Seats Might Be Retrofitted In 2022 And Forget About That $500 Discount: Report", + "description": "

Automotive News reported days ago that GM would not be offering heated seats on many of its highest-selling models and trims, including Chevy Silverados, GMC Sierras, and several SUVs because of the chip shortage, with a discount of up to $500 in exchange. Now, apparently, there is some hope that that feature might be…

Read more...

", + "content": "

Automotive News reported days ago that GM would not be offering heated seats on many of its highest-selling models and trims, including Chevy Silverados, GMC Sierras, and several SUVs because of the chip shortage, with a discount of up to $500 in exchange. Now, apparently, there is some hope that that feature might be…

Read more...

", + "category": "gm", + "link": "https://jalopnik.com/gm-now-says-heated-seats-might-be-retrofitted-in-2022-a-1848103540", + "creator": "Erik Shilling", + "pubDate": "Mon, 22 Nov 2021 18:15:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Caen Paris FC : Analyse, cotes et prono du match de Ligue 2", - "description": "

Le Paris FC enfonce Caen

\n
\nSauvé lors de la dernière journée l'an passé, le Stade Malherbe de Caen avait en revanche parfaitement lancé ce nouvel…
", - "content": "

Le Paris FC enfonce Caen

\n
\nSauvé lors de la dernière journée l'an passé, le Stade Malherbe de Caen avait en revanche parfaitement lancé ce nouvel…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-caen-paris-fc-analyse-cotes-et-prono-du-match-de-ligue-2-507152.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T02:26:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "England Will Require All New Buildings To Have EV Chargers", + "description": "

England, the world’s most cartographically confusing nation, has been making major strides toward broad EV adoption. They’ve set a date to ban gas cars, launched an app to show drivers how much they could save by going electric, and are working with power companies to figure out how people can charge for cheap. Their…

Read more...

", + "content": "

England, the world’s most cartographically confusing nation, has been making major strides toward broad EV adoption. They’ve set a date to ban gas cars, launched an app to show drivers how much they could save by going electric, and are working with power companies to figure out how people can charge for cheap. Their…

Read more...

", + "category": "boris johnson", + "link": "https://jalopnik.com/england-will-require-all-new-buildings-to-have-ev-charg-1848103579", + "creator": "Steve DaSilva", + "pubDate": "Mon, 22 Nov 2021 18:05:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Pau Guingamp : Analyse, cotes et prono du match de Ligue 2", - "description": "

Pau - Guingamp : L'En Avant tombe dans le piège palois

\n
\nPromu en Ligue 2 l'an passé, Pau a souffert pour se maintenir et est resté en L2 grâce à…
", - "content": "

Pau - Guingamp : L'En Avant tombe dans le piège palois

\n
\nPromu en Ligue 2 l'an passé, Pau a souffert pour se maintenir et est resté en L2 grâce à…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-pau-guingamp-analyse-cotes-et-prono-du-match-de-ligue-2-507151.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T02:12:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "NASCAR Is Really Set On This Whole Flying Car Thing", + "description": "

Flying cars, which don’t actually exist, have been a hot topic in the automotive world lately, largely due to companies like Airspeeder, which claims to have a flying car ready to race. And now, even NASCAR is buying into the hype, Adam Stern of the Sports Business Journal reports.

Read more...

", + "content": "

Flying cars, which don’t actually exist, have been a hot topic in the automotive world lately, largely due to companies like Airspeeder, which claims to have a flying car ready to race. And now, even NASCAR is buying into the hype, Adam Stern of the Sports Business Journal reports.

Read more...

", + "category": "flying car", + "link": "https://jalopnik.com/nascar-is-really-set-on-this-whole-flying-car-thing-1848103485", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 17:55:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Rennes Montpellier : Analyse, cotes et prono du match de Ligue 1", - "description": "

Rennes enchaîne face à Montpellier

\n
\nLe Stade Rennais s'est installé ces dernières saisons comme l'un des candidats aux places européennes. Il y…
", - "content": "

Rennes enchaîne face à Montpellier

\n
\nLe Stade Rennais s'est installé ces dernières saisons comme l'un des candidats aux places européennes. Il y…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-rennes-montpellier-analyse-cotes-et-prono-du-match-de-ligue-1-507150.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T02:02:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "The Chevrolet Bolt's No-Good, Very-Bad Year Is Going From Bad To Worse", + "description": "

2021 was far from a banner year for the Chevrolet Bolt. General Motors recalled every single example on the road — an estimated 141,000 vehicles from model years 2017 to 2022 — after 16 of them caught fire. In a few of those cases, the fires happened after “permanent” software updates had been installed on the…

Read more...

", + "content": "

2021 was far from a banner year for the Chevrolet Bolt. General Motors recalled every single example on the road — an estimated 141,000 vehicles from model years 2017 to 2022 — after 16 of them caught fire. In a few of those cases, the fires happened after “permanent” software updates had been installed on the…

Read more...

", + "category": "chevrolet", + "link": "https://jalopnik.com/the-chevrolet-bolts-no-good-very-bad-year-is-going-fro-1848102194", + "creator": "Adam Ismail", + "pubDate": "Mon, 22 Nov 2021 17:33:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Bastia Niort : Analyse, cotes et prono du match de Ligue 2", - "description": "

Bastia solide à domicile face à Niort

\n
\nChampion de National l'an passé, Bastia a donc été promu en Ligue 2. Le club corse connaît un retour…
", - "content": "

Bastia solide à domicile face à Niort

\n
\nChampion de National l'an passé, Bastia a donc été promu en Ligue 2. Le club corse connaît un retour…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-bastia-niort-analyse-cotes-et-prono-du-match-de-ligue-2-507149.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T00:52:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "What Do You Want To Know About The 2022 Mercedes-Benz EQS 450+?", + "description": "

Because my husband used to work for a Mercedes-Benz dealership, I’ve done my best to avoid driving a Mercedes because my favorite response to him waxing poetic about all the automaker’s great, luxury features is to say, “I don’t know. Sounds fake.” Unfortunately for my longstanding bit, I have now driven a Mercedes,…

Read more...

", + "content": "

Because my husband used to work for a Mercedes-Benz dealership, I’ve done my best to avoid driving a Mercedes because my favorite response to him waxing poetic about all the automaker’s great, luxury features is to say, “I don’t know. Sounds fake.” Unfortunately for my longstanding bit, I have now driven a Mercedes,…

Read more...

", + "category": "eqs", + "link": "https://jalopnik.com/what-do-you-want-to-know-about-the-2022-mercedes-benz-e-1848103023", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 17:05:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Valenciennes Grenoble : Analyse, cotes et prono du match de Ligue 2", - "description": "

Valenciennes, la mal-être avant Grenoble

\n
\nAprès avoir connu de fortes tensions entre supporters et dirigeants la saison dernière, Valenciennes vit des…
", - "content": "

Valenciennes, la mal-être avant Grenoble

\n
\nAprès avoir connu de fortes tensions entre supporters et dirigeants la saison dernière, Valenciennes vit des…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-valenciennes-grenoble-analyse-cotes-et-prono-du-match-de-ligue-2-507148.html", - "creator": "SO FOOT", - "pubDate": "2021-11-19T00:45:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "More Modern Cars Need Armrests", + "description": "

When I’m behind the wheel of my 1996 Suburban, I feel like the king of the world, and I credit that to one key inclusion: arm rests.

Read more...

", + "content": "

When I’m behind the wheel of my 1996 Suburban, I feel like the king of the world, and I credit that to one key inclusion: arm rests.

Read more...

", + "category": "cars", + "link": "https://jalopnik.com/more-modern-cars-need-armrests-1848102613", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 17:03:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pronostic Lazio Juventus : Analyse, cotes et prono du match de Serie A", - "description": "

La Lazio résiste à la Juve

\n
\nCe samedi dans le cadre de la 13e journée de Premier League, la Lazio reçoit la Juventus Turin. Les hommes de…
", - "content": "

La Lazio résiste à la Juve

\n
\nCe samedi dans le cadre de la 13e journée de Premier League, la Lazio reçoit la Juventus Turin. Les hommes de…
", - "category": "", - "link": "https://www.sofoot.com/pronostic-lazio-juventus-analyse-cotes-et-prono-du-match-de-serie-a-507147.html", - "creator": "SO FOOT", - "pubDate": "2021-11-18T23:44:00Z", - "folder": "00.03 News/Sport - FR", - "feed": "SoFoot", + "title": "The 2021 Volkswagen ID.4 Is The Perfect EV For Technophobes", + "description": "

It sounds strange to point to a brand-new, all-electric vehicle as being a great vehicle for the drivers in this world that hate all this superfluous tech that jams into our cars these days, but I want you to hear me out. The 2021 Volkswagen ID.4 serves a niche that definitely exists, and it serves that niche well.

Read more...

", + "content": "

It sounds strange to point to a brand-new, all-electric vehicle as being a great vehicle for the drivers in this world that hate all this superfluous tech that jams into our cars these days, but I want you to hear me out. The 2021 Volkswagen ID.4 serves a niche that definitely exists, and it serves that niche well.

Read more...

", + "category": "volkswagen", + "link": "https://jalopnik.com/the-2021-volkswagen-id-4-is-the-perfect-ev-for-technoph-1848102583", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 17:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Sport - FR", - "name": "SoFoot" - }, - "8": { - "title": "BBC News - World", - "subtitle": "", - "link": "https://www.bbc.co.uk/news/", - "image": "https://news.bbcimg.co.uk/nol/shared/img/bbc_news_120x60.gif", - "description": "BBC News - World", - "items": [ + }, { - "title": "Kyle Rittenhouse: US teenager cleared over Kenosha killings", - "description": "Kyle Rittenhouse killed two men and injured a third at racial justice protests in Kenosha, Wisconsin.", - "content": "Kyle Rittenhouse killed two men and injured a third at racial justice protests in Kenosha, Wisconsin.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-us-canada-59352228?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 21:46:02 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", - "read": true, + "title": "Are Electric Cars As Fun As Gasoline Cars? I Drove A Porsche 911 And Audi E-Tron GT To Find Out", + "description": "

“Electric cars are boring” is a refrain I hear often from old-school car enthusiasts, and I understand why. With EVs, the sound that we associate with speed is gone. The “jerks” associated with gear shifts are gone. Engine vibrations are gone. Unique torque curves are gone. The stick shift is gone. But are EVs really

Read more...

", + "content": "

“Electric cars are boring” is a refrain I hear often from old-school car enthusiasts, and I understand why. With EVs, the sound that we associate with speed is gone. The “jerks” associated with gear shifts are gone. Engine vibrations are gone. Unique torque curves are gone. The stick shift is gone. But are EVs really

Read more...

", + "category": "cars", + "link": "https://jalopnik.com/are-electric-cars-as-fun-as-gasoline-cars-i-drove-a-po-1848089011", + "creator": "David Tracy", + "pubDate": "Mon, 22 Nov 2021 16:59:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kyle Rittenhouse: Who is US teen cleared of protest killings?", - "description": "The suspect shot three men, two of whom were armed, during racial unrest in Wisconsin.", - "content": "The suspect shot three men, two of whom were armed, during racial unrest in Wisconsin.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-us-canada-53934109?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 22:43:21 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "E-Bikes And Electric Motorcycles Could Get A Major Tax Credit", + "description": "

E-bikes, as it turns out, are a great way to get around. Electric motorcycles, when they aren’t forcing you to buy software upgrades, can be equally fantastic. Those benefits come at a cost, however, with electric components driving MSRPs far above the gas or pedal-powered competition. Luckily for prospective buyers,…

Read more...

", + "content": "

E-bikes, as it turns out, are a great way to get around. Electric motorcycles, when they aren’t forcing you to buy software upgrades, can be equally fantastic. Those benefits come at a cost, however, with electric components driving MSRPs far above the gas or pedal-powered competition. Luckily for prospective buyers,…

Read more...

", + "category": "tax credit", + "link": "https://jalopnik.com/e-bikes-and-electric-motorcycles-could-get-a-major-tax-1848102182", + "creator": "Steve DaSilva", + "pubDate": "Mon, 22 Nov 2021 16:17:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Belarus's Lukashenko tells BBC: We may have helped migrants into EU", - "description": "In an exclusive interview, Alexander Lukashenko says it was \"absolutely possible\" migrants had help.", - "content": "In an exclusive interview, Alexander Lukashenko says it was \"absolutely possible\" migrants had help.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-europe-59343815?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 22:24:03 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Volkswagen Leads Industry In Boasting How Many Electric Cars It Will Build", + "description": "

Building electric cars is only a small component of running a successful EV company in this day and age. Getting people to believe that you will be soon building many more EVs is critical, and in that field, it’s all Tesla versus VW. All that and more in The Morning Shift for November 22, 2021.

Read more...

", + "content": "

Building electric cars is only a small component of running a successful EV company in this day and age. Getting people to believe that you will be soon building many more EVs is critical, and in that field, it’s all Tesla versus VW. All that and more in The Morning Shift for November 22, 2021.

Read more...

", + "category": "cars", + "link": "https://jalopnik.com/volkswagen-leads-industry-in-boasting-how-many-electric-1848102539", + "creator": "Raphael Orlove", + "pubDate": "Mon, 22 Nov 2021 15:55:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Austria to go into full lockdown as Covid surges", - "description": "As well as Monday's lockdown, the chancellor says vaccinations will be compulsory from February.", - "content": "As well as Monday's lockdown, the chancellor says vaccinations will be compulsory from February.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-europe-59343650?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:49:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "I Read The Men Because Of Its Hilarious Name And Walked Away With A Whole New Take On Vintage F1", + "description": "

There’s something about motorsport that makes it a difficult thing to capture in words, and that’s especially true when it comes to nonfiction books written by motorsport journalists. Sometimes, you strike gold, but most of the time, a broadcasting voice or recap-ready wit just aren’t cut out for a book. But Barrie…

Read more...

", + "content": "

There’s something about motorsport that makes it a difficult thing to capture in words, and that’s especially true when it comes to nonfiction books written by motorsport journalists. Sometimes, you strike gold, but most of the time, a broadcasting voice or recap-ready wit just aren’t cut out for a book. But Barrie…

Read more...

", + "category": "lee stokes", + "link": "https://jalopnik.com/i-read-the-men-because-of-its-hilarious-name-and-walked-1848071200", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 15:21:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Peng Shuai: US 'deeply concerned' over Chinese tennis star", - "description": "Peng Shuai, 35, has not been heard from since she accused a top Chinese official of sexual assault.", - "content": "Peng Shuai, 35, has not been heard from since she accused a top Chinese official of sexual assault.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-asia-china-59327679?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 21:31:12 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "What’s The Worst Car You’ve Recommended That Someone Actually Bought?", + "description": "

Here at Jalopnik, we love dishing out advice and tips to anyone that will listen, from lessons on how to avoid becoming a car hoarder to pointers on the best car to replace a Porsche with.

Read more...

", + "content": "

Here at Jalopnik, we love dishing out advice and tips to anyone that will listen, from lessons on how to avoid becoming a car hoarder to pointers on the best car to replace a Porsche with.

Read more...

", + "category": "ford fiesta", + "link": "https://jalopnik.com/what-s-the-worst-car-you-ve-recommended-that-someone-ac-1848102012", + "creator": "Owen Bellwood", + "pubDate": "Mon, 22 Nov 2021 14:59:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "DR Congo data leak: Millions transferred to Joseph Kabila allies", - "description": "Family and friends of former DR Congo President Joseph Kabila are named by Africa's biggest data leak.", - "content": "Family and friends of former DR Congo President Joseph Kabila are named by Africa's biggest data leak.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-africa-59343922?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:57:59 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "5 Dead, 40 Injured After SUV Drives Into Wisconsin Parade [UPDATED]", + "description": "

The city of Waukesha, Wisc. has confirmed that five people have died and at least another 40 have been injured after a red Ford Escape broke down barriers to drive into a holiday parade on Sunday, Nov. 21, NPR reports. Many of those struck by the vehicle were children.

Read more...

", + "content": "

The city of Waukesha, Wisc. has confirmed that five people have died and at least another 40 have been injured after a red Ford Escape broke down barriers to drive into a holiday parade on Sunday, Nov. 21, NPR reports. Many of those struck by the vehicle were children.

Read more...

", + "category": "medrano", + "link": "https://jalopnik.com/5-dead-40-injured-after-suv-drives-into-wisconsin-para-1848101962", + "creator": "Elizabeth Blackstock", + "pubDate": "Mon, 22 Nov 2021 14:34:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kamala Harris: First woman to get US presidential powers (briefly)", - "description": "Vice-President Kamala Harris briefly took control during Joe Biden's routine health check.", - "content": "Vice-President Kamala Harris briefly took control during Joe Biden's routine health check.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-us-canada-59352170?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:44:18 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", - "read": true, + "title": "Blip: Seems Like A Mess", + "description": "

Welcome to a new week! A short, Thanksgiving week, even. Let’s start it by wondering about weird decisions made nearly 50 years ago, by whomever staged this photo of a Dodge Dart for a brochure. It seems the trunk is too short to accomodate grocery bags sitting up, so they were placed inside in what I think is the…

Read more...

", + "content": "

Welcome to a new week! A short, Thanksgiving week, even. Let’s start it by wondering about weird decisions made nearly 50 years ago, by whomever staged this photo of a Dodge Dart for a brochure. It seems the trunk is too short to accomodate grocery bags sitting up, so they were placed inside in what I think is the…

Read more...

", + "category": "dart", + "link": "https://jalopnik.com/blip-seems-like-a-mess-1848101808", + "creator": "Jason Torchinsky", + "pubDate": "Mon, 22 Nov 2021 13:45:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "US House votes to pass $1.9tn social spending plan", - "description": "The Build Back Better Act now heads to the Senate, where it faces significant hurdles.", - "content": "The Build Back Better Act now heads to the Senate, where it faces significant hurdles.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-us-canada-59351261?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:03:01 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "At $7,800, Could This 1993 Lexus SC400 Be A Coupe To Covet?", + "description": "

Most of the classified ads offering Lexus SCs tout the model’s Supra heritage since those are so hot right now. The ad for today’s Nice Price or No Dice SC400 is a notable exception to that practice. Let’s see if the price is equally notable.

Read more...

", + "content": "

Most of the classified ads offering Lexus SCs tout the model’s Supra heritage since those are so hot right now. The ad for today’s Nice Price or No Dice SC400 is a notable exception to that practice. Let’s see if the price is equally notable.

Read more...

", + "category": "lexus", + "link": "https://jalopnik.com/at-7-800-could-this-1993-lexus-sc400-be-a-coupe-to-co-1848099195", + "creator": "Rob Emslie", + "pubDate": "Mon, 22 Nov 2021 13:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Elijah McClain family to receive $15m settlement from Colorado", - "description": "Elijah McClain was put in a chokehold and injected with ketamine after being stopped by police.", - "content": "Elijah McClain was put in a chokehold and injected with ketamine after being stopped by police.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-us-canada-59351260?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:05:58 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Ogier Wins Eighth WRC Title To End Full-Time Career", + "description": "

This weekend, Rally Monza served as the season finale for the FIA World Rally Championship for the second consecutive year. This event will be remembered as the end of an era for a few reasons. One reason is that new cars utilizing hybrid powertrains will contest the WRC season next year. Another reason is this rally…

Read more...

", + "content": "

This weekend, Rally Monza served as the season finale for the FIA World Rally Championship for the second consecutive year. This event will be remembered as the end of an era for a few reasons. One reason is that new cars utilizing hybrid powertrains will contest the WRC season next year. Another reason is this rally…

Read more...

", + "category": "ogier", + "link": "https://jalopnik.com/ogier-wins-eighth-wrc-title-to-end-full-time-career-1848099506", + "creator": "Ryan Erik King", + "pubDate": "Sun, 21 Nov 2021 21:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Brazil: Amazon sees worst deforestation levels in 15 years", - "description": "The figures come after Brazil promised to end the practice by 2030 during the COP climate summit.", - "content": "The figures come after Brazil promised to end the practice by 2030 during the COP climate summit.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-latin-america-59341770?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:47:31 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Hamilton Wins Qatar Grand Prix, Alonso Secures First Podium Since 2014", + "description": "

Today, the FIA Formula One World Championship visited Qatar for the first time. MotoGP stalwart Losail International Circuit hosted the race precisely one year before the country hosts the FIFA World Cup in 2022. Mercedes’ Lewis Hamilton beat Red Bull’s Max Verstappen to pole in qualifying by four-tenths of a second.…

Read more...

", + "content": "

Today, the FIA Formula One World Championship visited Qatar for the first time. MotoGP stalwart Losail International Circuit hosted the race precisely one year before the country hosts the FIFA World Cup in 2022. Mercedes’ Lewis Hamilton beat Red Bull’s Max Verstappen to pole in qualifying by four-tenths of a second.…

Read more...

", + "category": "qatar grand prix", + "link": "https://jalopnik.com/hamilton-wins-qatar-grand-prix-alonso-secures-first-po-1848099057", + "creator": "Ryan Erik King", + "pubDate": "Sun, 21 Nov 2021 17:05:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Farm laws: India PM Narendra Modi repeals controversial reforms", - "description": "Indian PM Narendra Modi has announced the repeal of controversial farm laws.", - "content": "Indian PM Narendra Modi has announced the repeal of controversial farm laws.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-asia-india-59342627?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 07:09:18 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "How The FIA Will Choose Its Next President", + "description": "

In 26 days, the Fédération Internationale de l’Automobile will elect its next president. The international governing body for motorsport will convene in Paris for its annual General Assembly meeting on December 17th, where the election will take place. And yesterday, I broke how to get on the election ballot. No time…

Read more...

", + "content": "

In 26 days, the Fédération Internationale de l’Automobile will elect its next president. The international governing body for motorsport will convene in Paris for its annual General Assembly meeting on December 17th, where the election will take place. And yesterday, I broke how to get on the election ballot. No time…

Read more...

", + "category": "sports", + "link": "https://jalopnik.com/how-the-fia-will-choose-its-next-president-1848097806", + "creator": "Ryan Erik King", + "pubDate": "Sun, 21 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/Sport EN", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The doctor fleeing Tennessee over Covid", - "description": "The former head of the US state's vaccine rollout has been forced out after threats and taunts.", - "content": "The former head of the US state's vaccine rollout has been forced out after threats and taunts.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-us-canada-59335010?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 21:34:49 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", - "read": false, + "title": "Ford And Rivian Aren't Making A Car Together After All", + "description": "

Ford and Rivian already killed off whatever the Lincoln-Rivian electric SUV not long after the pandemic took hold, but the companies had also planned on making another car together beyond that, too. Except, according to a new report, that car is dead in the water, too.

Read more...

", + "content": "

Ford and Rivian already killed off whatever the Lincoln-Rivian electric SUV not long after the pandemic took hold, but the companies had also planned on making another car together beyond that, too. Except, according to a new report, that car is dead in the water, too.

Read more...

", + "category": "rivian", + "link": "https://jalopnik.com/ford-and-rivian-arent-making-a-car-together-after-all-1848093334", + "creator": "Erik Shilling", + "pubDate": "Fri, 19 Nov 2021 22:30:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "In pictures: British Columbia devastated by catastrophic floods", - "description": "The flooding in Canada's west may be the most expensive natural disaster in the country's history.", - "content": "The flooding in Canada's west may be the most expensive natural disaster in the country's history.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-us-canada-59352803?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 21:24:22 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", - "read": false, + "title": "This Kawasaki-Powered MG Midget Is A $4,500 Triumph Of Backyard Engineering", + "description": "

Someone has built something so absurd, yet strangely alluring. This 1976 MG Midget for sale was turned into a discount three-wheeler by way of a Kawasaki Vulcan shoved in back. It’s all sorts of nonsensical, and I can’t help but appreciate it as a triumph of backyard engineering.

Read more...

", + "content": "

Someone has built something so absurd, yet strangely alluring. This 1976 MG Midget for sale was turned into a discount three-wheeler by way of a Kawasaki Vulcan shoved in back. It’s all sorts of nonsensical, and I can’t help but appreciate it as a triumph of backyard engineering.

Read more...

", + "category": "mg midget", + "link": "https://jalopnik.com/this-kawasaki-powered-mg-midget-is-a-4-500-triumph-of-1848093086", + "creator": "Mercedes Streeter", + "pubDate": "Fri, 19 Nov 2021 22:10:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Why France's Zemmour is dredging up World War Two", - "description": "The TV pundit is a likely presidential candidate but his views on wartime history are controversial.", - "content": "The TV pundit is a likely presidential candidate but his views on wartime history are controversial.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-europe-59329974?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 01:09:48 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "The Top 5 Things Toto Wolff And Christian Horner Said While Sitting Next To Each Other For 30 Minutes", + "description": "

I don’t have to tell you that the championship battle between Lewis Hamilton and Max Verstappen is the most captivating one Formula 1 has had in ages. The drama on track has fed political drama off it that’s reached a fever pitch in these closing races. It’s been almost as exciting to watch as the wheel-to-wheel…

Read more...

", + "content": "

I don’t have to tell you that the championship battle between Lewis Hamilton and Max Verstappen is the most captivating one Formula 1 has had in ages. The drama on track has fed political drama off it that’s reached a fever pitch in these closing races. It’s been almost as exciting to watch as the wheel-to-wheel…

Read more...

", + "category": "christian horner", + "link": "https://jalopnik.com/the-top-5-things-toto-wolff-and-christian-horner-said-w-1848091812", + "creator": "Adam Ismail", + "pubDate": "Fri, 19 Nov 2021 22:05:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Africa is the future, says US. But what will change?", - "description": "US Secretary of State Antony Blinken talks of partnerships and avoids condescending lectures of the past.", - "content": "US Secretary of State Antony Blinken talks of partnerships and avoids condescending lectures of the past.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-africa-59327059?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:43:28 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Mexico's JAC E10X Is A Reminder That America Needs Cheap Electric Cars", + "description": "

Chinese carmaker JAC is celebrating the debut of its new EV for the Mexican market, the 2022 JAC E10x. What’s worth celebrating here isn’t just that it’s an EV in Mexico — though I love to see EVs taking off in all the markets. The E10X is worth celebrating because it’s an EV with over 200 miles of range that costs…

Read more...

", + "content": "

Chinese carmaker JAC is celebrating the debut of its new EV for the Mexican market, the 2022 JAC E10x. What’s worth celebrating here isn’t just that it’s an EV in Mexico — though I love to see EVs taking off in all the markets. The E10X is worth celebrating because it’s an EV with over 200 miles of range that costs…

Read more...

", + "category": "cars", + "link": "https://jalopnik.com/mexicos-jac-e10x-is-a-reminder-that-america-needs-chea-1848092995", + "creator": "José Rodríguez Jr.", + "pubDate": "Fri, 19 Nov 2021 22:00:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Malaysian transgender woman Nur Sajat: 'I had to run away'", - "description": "Transgender woman Nur Sajat fled Malaysia after being charged with insulting Islam.", - "content": "Transgender woman Nur Sajat fled Malaysia after being charged with insulting Islam.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-asia-59286774?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 01:02:11 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Here's How Porsche Got An In On E-Bikes", + "description": "

For almost a hundred years, Porsche has made very nice gas-powered cars. But, did you know that since the 1990s it has also dabbled in bike manufacturing? Now, it’s ambitions for the bike world have taken a huge step forward as it becomes a serious investor in e-bikes.

Read more...

", + "content": "

For almost a hundred years, Porsche has made very nice gas-powered cars. But, did you know that since the 1990s it has also dabbled in bike manufacturing? Now, it’s ambitions for the bike world have taken a huge step forward as it becomes a serious investor in e-bikes.

Read more...

", + "category": "porsche", + "link": "https://jalopnik.com/heres-how-porsche-got-an-in-on-e-bikes-1848092213", + "creator": "Owen Bellwood", + "pubDate": "Fri, 19 Nov 2021 21:55:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Viewpoint: When Hindus and Muslims joined hands to riot", - "description": "What can 100-year-old riots, where Hindus and Muslims fought on the same side, teach us?", - "content": "What can 100-year-old riots, where Hindus and Muslims fought on the same side, teach us?", - "category": "", - "link": "https://www.bbc.co.uk/news/world-asia-india-59174930?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 01:12:24 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Elon Musk And His Fans Are Losing Their Minds Over CNN's Autopilot Criticism", + "description": "

Yesterday, CNN published a video of a test in New York City of Tesla’s so-called “Full Self-Driving Beta” Level 2 driver-assist software, and it didn’t go all that great. The tester was purple-sweater-enthusiast and ex-Jalop Mike Ballaban, who did admit to being “a little skittish” about using the semi-automated…

Read more...

", + "content": "

Yesterday, CNN published a video of a test in New York City of Tesla’s so-called “Full Self-Driving Beta” Level 2 driver-assist software, and it didn’t go all that great. The tester was purple-sweater-enthusiast and ex-Jalop Mike Ballaban, who did admit to being “a little skittish” about using the semi-automated…

Read more...

", + "category": "elon musk", + "link": "https://jalopnik.com/this-take-on-cnns-teslas-fsd-beta-video-test-is-absolut-1848092277", + "creator": "Jason Torchinsky", + "pubDate": "Fri, 19 Nov 2021 21:13:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Belarus president tells BBC: ‘We won’t stop the migrants’", - "description": "In an exclusive interview, President Lukashenko tells the BBC it’s “absolutely possible” his forces helped migrants cross into Poland.", - "content": "In an exclusive interview, President Lukashenko tells the BBC it’s “absolutely possible” his forces helped migrants cross into Poland.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-59353683?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:43:52 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Someone Explain What's Going On With This Dude At A Gas Station", + "description": "

There are really only three reasons why anyone goes to a gas station: you need gas, you need to void your bladder or bowels, or you need to buy a drink or snack or condoms or lighter or some other convenience store item. That’s pretty much it. There’s a video going around online, though, that shows someone at a gas…

Read more...

", + "content": "

There are really only three reasons why anyone goes to a gas station: you need gas, you need to void your bladder or bowels, or you need to buy a drink or snack or condoms or lighter or some other convenience store item. That’s pretty much it. There’s a video going around online, though, that shows someone at a gas…

Read more...

", + "category": "in germany", + "link": "https://jalopnik.com/someone-explain-whats-going-on-with-this-dude-at-a-gas-1848090692", + "creator": "Jason Torchinsky", + "pubDate": "Fri, 19 Nov 2021 20:48:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ros Atkins on... the missing Chinese tennis star Peng Shuai", - "description": "Questions remain about the whereabouts of Peng Shuai, after she accused a top Chinese government official of sexual assault.", - "content": "Questions remain about the whereabouts of Peng Shuai, after she accused a top Chinese government official of sexual assault.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-59341755?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 00:08:34 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Someone Spent $6 Million Building A Massive Ford F-750 Motor Home", + "description": "

I recently called a military truck-turned RV Titan XD 4400 camper one of the most ridiculous ways to travel the world. I now have to take that back because this also exists on Earth: the 2008 Ford F-750 World Cruiser. It was built by one of the founders of the company that moved the Space Shuttle Endeavour to its new…

Read more...

", + "content": "

I recently called a military truck-turned RV Titan XD 4400 camper one of the most ridiculous ways to travel the world. I now have to take that back because this also exists on Earth: the 2008 Ford F-750 World Cruiser. It was built by one of the founders of the company that moved the Space Shuttle Endeavour to its new…

Read more...

", + "category": "ford f 750", + "link": "https://jalopnik.com/someone-spent-6-million-building-a-massive-ford-f-750-1848091009", + "creator": "Mercedes Streeter", + "pubDate": "Fri, 19 Nov 2021 20:45:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Afghanistan: The teenage girls returning to school under the Taliban", - "description": "The BBC's John Simpson visits Bamiyan and finds some girls are attending secondary school in Afghanistan.", - "content": "The BBC's John Simpson visits Bamiyan and finds some girls are attending secondary school in Afghanistan.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-asia-59340356?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 00:26:02 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "We Are Again Talking About Possibly Illegal Formula 1 Wings", + "description": "

It was earlier this year when Mercedes was complaining about the “bendy” rear wing of Red Bull, which appeared to bend slightly back at speed to give Red Bull a straight-line advantage, when you don’t need downforce. Now it is Red Bull’s turn to complain about Mercedes’ wings, after a race in Brazil when Mercedes had…

Read more...

", + "content": "

It was earlier this year when Mercedes was complaining about the “bendy” rear wing of Red Bull, which appeared to bend slightly back at speed to give Red Bull a straight-line advantage, when you don’t need downforce. Now it is Red Bull’s turn to complain about Mercedes’ wings, after a race in Brazil when Mercedes had…

Read more...

", + "category": "formula 1", + "link": "https://jalopnik.com/we-are-again-talking-about-possibly-illegal-formula-1-w-1848091428", + "creator": "Erik Shilling", + "pubDate": "Fri, 19 Nov 2021 20:30:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Australian school food van: 'I didn't believe in myself until I got this job'", - "description": "An Australian school is using a food van to help struggling students explore new avenues.", - "content": "An Australian school is using a food van to help struggling students explore new avenues.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-australia-59257766?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 00:16:16 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "The 2022 Subaru BRZ Addresses The First Gen's Fatal Flaw", + "description": "

If you ask armchair enthusiasts what the worst thing is about the first-generation BRZ/86, most of them will tell you it’s horsepower — either the peak number of 205, or the infamous torque dip. But BRZ and 86 owners, who regularly take their cars to the track, will tell you something completely different: These cars…

Read more...

", + "content": "

If you ask armchair enthusiasts what the worst thing is about the first-generation BRZ/86, most of them will tell you it’s horsepower — either the peak number of 205, or the infamous torque dip. But BRZ and 86 owners, who regularly take their cars to the track, will tell you something completely different: These cars…

Read more...

", + "category": "brz", + "link": "https://jalopnik.com/the-2022-subaru-brz-addresses-the-first-gens-fatal-flaw-1848090009", + "creator": "Steve DaSilva", + "pubDate": "Fri, 19 Nov 2021 20:25:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The family of asylum-seekers trapped on Europe’s edge", - "description": "A BBC team filmed a couple and their two-year-old daughter as they attempted to cross the Bosnia-Croatia border into the EU in search of asylum for the 40th time.", - "content": "A BBC team filmed a couple and their two-year-old daughter as they attempted to cross the Bosnia-Croatia border into the EU in search of asylum for the 40th time.", - "category": "", - "link": "https://www.bbc.co.uk/news/world-europe-59325777?at_medium=RSS&at_campaign=KARANGA", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 05:59:26 GMT", - "folder": "00.03 News/News - EN", - "feed": "BBC Worldwide", + "title": "Even A World Championship Win Can't Save Your Seat", + "description": "

Just weeks ago Formula E’s seventh season wrapped, crowning Mercedes EQ Formula E driver Nyck De Vries its World Champion, with Mercedes also coming out as the champion constructor. But neither will be returning to the electric racing series’ paddocks for next season.

Read more...

", + "content": "

Just weeks ago Formula E’s seventh season wrapped, crowning Mercedes EQ Formula E driver Nyck De Vries its World Champion, with Mercedes also coming out as the champion constructor. But neither will be returning to the electric racing series’ paddocks for next season.

Read more...

", + "category": "world championship", + "link": "https://jalopnik.com/even-a-world-championship-win-cant-save-your-seat-1848091497", + "creator": "Lalita Chemello", + "pubDate": "Fri, 19 Nov 2021 20:24:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - EN", - "name": "BBC Worldwide" - }, - "9": { - "title": "Lifehacker", - "subtitle": "", - "link": "https://lifehacker.com", - "image": null, - "description": "Do everything better", - "items": [ + }, { - "title": "Snag These Black Friday Video Game Deals Right Now, Without Leaving Your Couch", - "description": "

It’s a good weekend to stay inside and download some video games. While real-life Black Friday doesn’t happen for another week, PlayStation and Xbox are already running virtual Black Friday sales in their respective online stores, so you can snag some cheap games without waiting in long lines at Wal-Mart. While not…

Read more...

", - "content": "

It’s a good weekend to stay inside and download some video games. While real-life Black Friday doesn’t happen for another week, PlayStation and Xbox are already running virtual Black Friday sales in their respective online stores, so you can snag some cheap games without waiting in long lines at Wal-Mart. While not…

Read more...

", - "category": "nintendo eshop", - "link": "https://lifehacker.com/snag-these-black-friday-video-game-deals-right-now-wit-1848091968", - "creator": "Stephen Johnson", - "pubDate": "Fri, 19 Nov 2021 22:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Ten Commercial Vehicles That Would Make Great Daily Drivers", + "description": "

Cars are mostly pretty great. But if you want to stand out from the crowd, replacing your normal runaround with a commercial vehicle might not be the worst idea.

Read more...

", + "content": "

Cars are mostly pretty great. But if you want to stand out from the crowd, replacing your normal runaround with a commercial vehicle might not be the worst idea.

Read more...

", + "category": "hearse", + "link": "https://jalopnik.com/ten-commercial-vehicles-that-would-make-great-daily-dri-1848090932", + "creator": "Owen Bellwood", + "pubDate": "Fri, 19 Nov 2021 19:51:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Stop Your Family From Buying Too Much Crap for Your Kids (and What to Do When It Happens Anyway)", - "description": "

It’s the season of giving, but when it comes to kids who have playrooms already overflowing with toys, books, games, and puzzles, the holidays can bring an unwanted influx of stuff adding to the mess you’re already struggling to contain.

Read more...

", - "content": "

It’s the season of giving, but when it comes to kids who have playrooms already overflowing with toys, books, games, and puzzles, the holidays can bring an unwanted influx of stuff adding to the mess you’re already struggling to contain.

Read more...

", - "category": "gift", - "link": "https://lifehacker.com/how-to-stop-your-family-from-buying-too-much-crap-for-y-1848089246", - "creator": "Sarah Showfety", - "pubDate": "Fri, 19 Nov 2021 22:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "What Do You Want To Know About The Ford Mustang Mach-E GT?", + "description": "

There’s only one other car that’s done the Tesla thing of knocking my brain into the back of my skull, and it’s this Ford Mustang Mach-E GT. I laughed out loud.

Read more...

", + "content": "

There’s only one other car that’s done the Tesla thing of knocking my brain into the back of my skull, and it’s this Ford Mustang Mach-E GT. I laughed out loud.

Read more...

", + "category": "ford", + "link": "https://jalopnik.com/what-do-you-want-to-know-about-the-ford-mustang-mach-e-1848091294", + "creator": "Raphael Orlove", + "pubDate": "Fri, 19 Nov 2021 19:24:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Harness the Awesome Power of Your Air Fryer This Thanksgiving", - "description": "

By this point, pretty much everyone is aware that air fryers are “just small convection ovens” and that they “don’t really fry anything.” But, semantics aside, having a tiny convection oven on your counter is pretty convenient. Air fryers—on the whole—rule, and you can (and should) harness their full power to make…

Read more...

", - "content": "

By this point, pretty much everyone is aware that air fryers are “just small convection ovens” and that they “don’t really fry anything.” But, semantics aside, having a tiny convection oven on your counter is pretty convenient. Air fryers—on the whole—rule, and you can (and should) harness their full power to make…

Read more...

", - "category": "air fryer", - "link": "https://lifehacker.com/harness-the-awesome-power-of-your-air-fryer-this-thanks-1848091479", - "creator": "Claire Lower", - "pubDate": "Fri, 19 Nov 2021 21:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Tesla Isn't Technically The Least Reliable Car Company: Consumer Reports", + "description": "

If you’re in the market for a reliable electric vehicle, you should probably skip Tesla. At least according to the latest reliability report from Consumer Reports. The American automaker ranked 27th out of 28 brands, only beating out Lincoln, which scored a shockingly low 18 out of 100.

Read more...

", + "content": "

If you’re in the market for a reliable electric vehicle, you should probably skip Tesla. At least according to the latest reliability report from Consumer Reports. The American automaker ranked 27th out of 28 brands, only beating out Lincoln, which scored a shockingly low 18 out of 100.

Read more...

", + "category": "tesla", + "link": "https://jalopnik.com/tesla-isnt-technically-the-least-reliable-car-company-1848089974", + "creator": "Collin Woodard", + "pubDate": "Fri, 19 Nov 2021 16:56:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Finally, Everyone 18 and Older Can Get a Booster Shot", - "description": "

The FDA authorized Moderna and Pfizer boosters today for everyone aged 18 and older, and the CDC’s advisory panel followed up with a recommendation to match. Bottom line, if you’ve been holding out because you weren’t sure if you’re eligible, you’re now definitely cleared to go get one. The only requirement is that…

Read more...

", - "content": "

The FDA authorized Moderna and Pfizer boosters today for everyone aged 18 and older, and the CDC’s advisory panel followed up with a recommendation to match. Bottom line, if you’ve been holding out because you weren’t sure if you’re eligible, you’re now definitely cleared to go get one. The only requirement is that…

Read more...

", - "category": "moderna", - "link": "https://lifehacker.com/finally-everyone-18-and-older-can-get-a-booster-shot-1848092156", - "creator": "Beth Skwarecki", - "pubDate": "Fri, 19 Nov 2021 21:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Cadillac Is Trying Too Hard", + "description": "

Cadillac has fully immersed itself in the EV reinvention game. Obviously it’s far from the only brand doing that, but you kind of have to respect General Motors for the strength of the commitment. The company told its entire Cadillac dealer network to get with the times or get out, and it’s clearly attempting to form…

Read more...

", + "content": "

Cadillac has fully immersed itself in the EV reinvention game. Obviously it’s far from the only brand doing that, but you kind of have to respect General Motors for the strength of the commitment. The company told its entire Cadillac dealer network to get with the times or get out, and it’s clearly attempting to form…

Read more...

", + "category": "cadillac", + "link": "https://jalopnik.com/cadillac-is-trying-too-hard-1848085361", + "creator": "Adam Ismail", + "pubDate": "Fri, 19 Nov 2021 16:45:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Ultimate Guide to Picking the Right Apple Watch As a Gift", - "description": "

If you’re buying a gift for someone with an iPhone, it’s likely they have an Apple Watch on their list (if they don’t own one already). Apple Watch is the most popular smartwatch in the world; the only problem is, there are quite a few of them to choose from. Between the Series 3, Series 7, SE, and others, how do you…

Read more...

", - "content": "

If you’re buying a gift for someone with an iPhone, it’s likely they have an Apple Watch on their list (if they don’t own one already). Apple Watch is the most popular smartwatch in the world; the only problem is, there are quite a few of them to choose from. Between the Series 3, Series 7, SE, and others, how do you…

Read more...

", - "category": "apple", - "link": "https://lifehacker.com/the-ultimate-guide-to-picking-the-right-apple-watch-as-1848084811", - "creator": "Jake Peterson", - "pubDate": "Fri, 19 Nov 2021 20:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Lewis Hamilton Will Have To Win This On The Track", + "description": "

It was on turn four, lap 48 last weekend in Brazil when Max Verstappen forced Lewis Hamilton off the track, an incident that stewards “noted” during the race before, shortly thereafter, deciding that no investigation was necessary. This, obviously, didn’t sit well with Mercedes, even though Hamilton still went on to…

Read more...

", + "content": "

It was on turn four, lap 48 last weekend in Brazil when Max Verstappen forced Lewis Hamilton off the track, an incident that stewards “noted” during the race before, shortly thereafter, deciding that no investigation was necessary. This, obviously, didn’t sit well with Mercedes, even though Hamilton still went on to…

Read more...

", + "category": "lewis hamilton", + "link": "https://jalopnik.com/lewis-hamilton-will-have-to-win-this-on-the-track-1848089346", + "creator": "Erik Shilling", + "pubDate": "Fri, 19 Nov 2021 16:15:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Hang Your Holiday Decor Without Destroying Your Home", - "description": "

From wreaths to string lights, indoors and out, holiday decorations can be a hassle to put up—and they can damage your walls, siding, and doors with unnecessary (and permanent) hardware. Instead, here’s how to decorate easily and breezily without the added holes and permanent hooks, while also better protecting the…

Read more...

", - "content": "

From wreaths to string lights, indoors and out, holiday decorations can be a hassle to put up—and they can damage your walls, siding, and doors with unnecessary (and permanent) hardware. Instead, here’s how to decorate easily and breezily without the added holes and permanent hooks, while also better protecting the…

Read more...

", - "category": "cable tie", - "link": "https://lifehacker.com/how-to-decorate-for-the-holidays-without-destroying-you-1848089533", - "creator": "Becca Lewis", - "pubDate": "Fri, 19 Nov 2021 19:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Not To Be Left Out, Toyota Wants To Start Making Batteries Too", + "description": "

Toyota’s getting serious about buildin’ batteries, Apple’s getting serious about making a car (again), and Stellantis is getting serious about not selling Chryslers in Australia anymore. All that and more in The Morning Shift for November 19, 2021.

Read more...

", + "content": "

Toyota’s getting serious about buildin’ batteries, Apple’s getting serious about making a car (again), and Stellantis is getting serious about not selling Chryslers in Australia anymore. All that and more in The Morning Shift for November 19, 2021.

Read more...

", + "category": "toyota", + "link": "https://jalopnik.com/not-to-be-left-out-toyota-wants-to-start-making-batter-1848088455", + "creator": "Adam Ismail", + "pubDate": "Fri, 19 Nov 2021 15:45:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Is It Safer to Place Your PS5 or Xbox Series X Vertically or Horizontally?", - "description": "

The PlayStation 5 and Xbox Series X are big, and you’ll likely need to make room to place one of these consoles in your home theater or on your desk.

Read more...

", - "content": "

The PlayStation 5 and Xbox Series X are big, and you’ll likely need to make room to place one of these consoles in your home theater or on your desk.

Read more...

", - "category": "xbox", - "link": "https://lifehacker.com/is-it-safer-to-place-your-ps5-or-xbox-series-x-vertical-1848090814", - "creator": "Brendan Hesse", - "pubDate": "Fri, 19 Nov 2021 19:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "What Commercial Vehicle Would Make The Best Daily Driver?", + "description": "

I’m a fan of a van. These commercial vehicles were designed to carry lots of stuff from A to B in the most practical manner. But, for almost as long as there have been vans on the roads, there have been people using them as their daily drivers.

Read more...

", + "content": "

I’m a fan of a van. These commercial vehicles were designed to carry lots of stuff from A to B in the most practical manner. But, for almost as long as there have been vans on the roads, there have been people using them as their daily drivers.

Read more...

", + "category": "commercial vehicle", + "link": "https://jalopnik.com/what-commercial-vehicle-would-make-the-best-daily-drive-1848088625", + "creator": "Owen Bellwood", + "pubDate": "Fri, 19 Nov 2021 14:40:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Add a Little Campari to Your Cranberry Sauce", - "description": "

Cranberry sauce is probably the easiest Thanksgiving dish you can make from scratch. Add 12 ounces of cranberries to a pot, along with a cup of sugar and a cup of water. Bring to a boil and let simmer until the cranberries pop and reduce into a thick, jelly-like sauce. Put it on turkey and eat it.

Read more...

", - "content": "

Cranberry sauce is probably the easiest Thanksgiving dish you can make from scratch. Add 12 ounces of cranberries to a pot, along with a cup of sugar and a cup of water. Bring to a boil and let simmer until the cranberries pop and reduce into a thick, jelly-like sauce. Put it on turkey and eat it.

Read more...

", - "category": "cranberry sauce", - "link": "https://lifehacker.com/add-a-little-campari-to-your-cranberry-sauce-1848090704", - "creator": "Claire Lower", - "pubDate": "Fri, 19 Nov 2021 18:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Blip: I Guess It's Not The Bean After All", + "description": "

Well, damn. I guess this proves it. Looks like Ford named the Pinto after the horse, not the bean. Huh. I could have sworn it was for the bean. Looks like I owe that guy at the car show I got into a screaming, crying, chair-throwing argument with an apology.

Read more...

", + "content": "

Well, damn. I guess this proves it. Looks like Ford named the Pinto after the horse, not the bean. Huh. I could have sworn it was for the bean. Looks like I owe that guy at the car show I got into a screaming, crying, chair-throwing argument with an apology.

Read more...

", + "category": "guess", + "link": "https://jalopnik.com/blip-i-guess-its-not-the-bean-after-all-1848088497", + "creator": "Jason Torchinsky", + "pubDate": "Fri, 19 Nov 2021 13:51:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Lock Your Secrets in the Notes App (and Why You Should)", - "description": "

Searching for data or photo lockers will lead you to many apps. Some of them are genuinely secure—others, less so—but given that you’re dealing with secure data (documents, photos, security codes, or bank details), you maybe don’t want to trust a third-party iPhone app that happens to have a thousand 5-star reviews.…

Read more...

", - "content": "

Searching for data or photo lockers will lead you to many apps. Some of them are genuinely secure—others, less so—but given that you’re dealing with secure data (documents, photos, security codes, or bank details), you maybe don’t want to trust a third-party iPhone app that happens to have a thousand 5-star reviews.…

Read more...

", - "category": "notes", - "link": "https://lifehacker.com/how-to-lock-your-secrets-in-the-notes-app-and-why-you-1848087825", - "creator": "Khamosh Pathak", - "pubDate": "Fri, 19 Nov 2021 18:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Even My Nose Knows The New Supra Isn't A Real Toyota", + "description": "

I’m pretty sure the car community got bored with the whole debate over the new Toyota Supra not being a real Supra or a real Toyota a while ago. But since I was busy doing other things at the time such as attending meetings and filling out spreadsheets, I wasn’t really able to participate. That changed last night when…

Read more...

", + "content": "

I’m pretty sure the car community got bored with the whole debate over the new Toyota Supra not being a real Supra or a real Toyota a while ago. But since I was busy doing other things at the time such as attending meetings and filling out spreadsheets, I wasn’t really able to participate. That changed last night when…

Read more...

", + "category": "supra", + "link": "https://jalopnik.com/even-my-nose-knows-the-new-supra-isnt-a-real-toyota-1848085663", + "creator": "Collin Woodard", + "pubDate": "Fri, 19 Nov 2021 13:45:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "22 Book-to-TV Adaptations to Look Forward to Binge-Watching in 2022", - "description": "

Long gone are the days of the monoculture, when everyone settled for watching one of the same three shows every night (because that’s all that was on). Today, the only thing that unifies our viewing habits is how much time we all spend figuring out what to watch—there’s so much good stuff out there, figuring out how…

Read more...

", - "content": "

Long gone are the days of the monoculture, when everyone settled for watching one of the same three shows every night (because that’s all that was on). Today, the only thing that unifies our viewing habits is how much time we all spend figuring out what to watch—there’s so much good stuff out there, figuring out how…

Read more...

", - "category": "reese witherspoon", - "link": "https://lifehacker.com/22-book-to-tv-adaptations-to-look-forward-to-binge-watc-1848069441", - "creator": "Jeff Somers", - "pubDate": "Fri, 19 Nov 2021 17:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "So, I Need To Get A U.S. Driver’s License", + "description": "

When I introduced myself here at Jalopnik, a decent number of commenters took offense to the fact that I don’t yet have a U.S. license, rather just a useless UK licence. I’m currently going through the process of rectifying this.

Read more...

", + "content": "

When I introduced myself here at Jalopnik, a decent number of commenters took offense to the fact that I don’t yet have a U.S. license, rather just a useless UK licence. I’m currently going through the process of rectifying this.

Read more...

", + "category": "human activities", + "link": "https://jalopnik.com/so-i-need-to-get-a-u-s-driver-s-license-1848085184", + "creator": "Owen Bellwood", + "pubDate": "Fri, 19 Nov 2021 13:45:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "10 Scientific Advances That Will Actually Make You Hopeful for the Future", - "description": "

We’ve all had a rough couple of years (decades?), but that doesn’t mean everything will continue to slide downhill. Maybe I’m a foolish optimist, but it’s the holidays, and these 10 technologies and trends make me genuinely hopeful for the future. Maybe we’ll wind up living in the hopeful sci-fi vision of the ‘50s,…

Read more...

", - "content": "

We’ve all had a rough couple of years (decades?), but that doesn’t mean everything will continue to slide downhill. Maybe I’m a foolish optimist, but it’s the holidays, and these 10 technologies and trends make me genuinely hopeful for the future. Maybe we’ll wind up living in the hopeful sci-fi vision of the ‘50s,…

Read more...

", - "category": "powered exoskeleton", - "link": "https://lifehacker.com/10-scientific-advances-that-will-actually-make-you-hope-1848085674", - "creator": "Stephen Johnson", - "pubDate": "Fri, 19 Nov 2021 17:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Here's What A Gas Station Fire Suppression System Actually Looks Like", + "description": "

A video is making the rounds on social media showing the moment a gas station’s fire suppression system malfunctioned, blanketing cars and the surrounding area in powder. It’s an old video, but still a good look into something most people will hopefully never have to witness.

Read more...

", + "content": "

A video is making the rounds on social media showing the moment a gas station’s fire suppression system malfunctioned, blanketing cars and the surrounding area in powder. It’s an old video, but still a good look into something most people will hopefully never have to witness.

Read more...

", + "category": "fire suppression", + "link": "https://jalopnik.com/heres-what-a-gas-station-fire-suppression-system-actual-1848086398", + "creator": "Mercedes Streeter", + "pubDate": "Fri, 19 Nov 2021 13:40:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "You Can Finally Download Amazon Prime Video Movies and TV Shows on Desktop", - "description": "

When you’re heading somewhere likely to have spotty internet coverage, downloading your favorite TV shows and movies beforehand is always a solid plan. Most streaming services allow you to do this to some extent, but until recently, you could only download Amazon Prime Video content onto a mobile device. Well, no…

Read more...

", - "content": "

When you’re heading somewhere likely to have spotty internet coverage, downloading your favorite TV shows and movies beforehand is always a solid plan. Most streaming services allow you to do this to some extent, but until recently, you could only download Amazon Prime Video content onto a mobile device. Well, no…

Read more...

", - "category": "amazon", - "link": "https://lifehacker.com/you-can-finally-download-amazon-prime-video-movies-and-1848088507", - "creator": "Pranay Parab", - "pubDate": "Fri, 19 Nov 2021 16:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Lucid Is Trying To Be The Normal EV Company", + "description": "

Peter Rawlinson is the CEO of Lucid, and a former engineer at Tesla, who is said to be obsessed with beating his former boss Elon Musk in the EV game. The jury is still out on that, but, if a new interview is anything to go by, Rawlinson is already winning when it comes to who you might want to root for.

Read more...

", + "content": "

Peter Rawlinson is the CEO of Lucid, and a former engineer at Tesla, who is said to be obsessed with beating his former boss Elon Musk in the EV game. The jury is still out on that, but, if a new interview is anything to go by, Rawlinson is already winning when it comes to who you might want to root for.

Read more...

", + "category": "nikola tesla", + "link": "https://jalopnik.com/lucid-is-trying-to-be-the-normal-ev-company-1848085905", + "creator": "Erik Shilling", + "pubDate": "Fri, 19 Nov 2021 13:20:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Convince Your Stubborn Parents to Stop Eating so Much Junk", - "description": "

Talking to a friend about health can be hard enough, but talking your parents about any kind of change can feel borderline impossible. Combine these two endeavors, and it can feel like you’re on a fool’s errand.

Read more...

", - "content": "

Talking to a friend about health can be hard enough, but talking your parents about any kind of change can feel borderline impossible. Combine these two endeavors, and it can feel like you’re on a fool’s errand.

Read more...

", - "category": "addiction medicine", - "link": "https://lifehacker.com/how-to-convince-your-stubborn-parents-to-stop-eating-so-1848086165", - "creator": "Meredith Dietz", - "pubDate": "Fri, 19 Nov 2021 15:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "At $5,200, Would You Go For Baroque In This 1982 Maserati Quattroporte?", + "description": "

Classic luxury motoring doesn’t get much classier than today’s Nice Price or No Dice Maserati Quattroporte. Some minor repairs are all that is needed to make this big sedan a serious contender. That is if the cost of entry isn’t too high.

Read more...

", + "content": "

Classic luxury motoring doesn’t get much classier than today’s Nice Price or No Dice Maserati Quattroporte. Some minor repairs are all that is needed to make this big sedan a serious contender. That is if the cost of entry isn’t too high.

Read more...

", + "category": "maserati", + "link": "https://jalopnik.com/at-5-200-would-you-go-for-baroque-in-this-1982-masera-1848081772", + "creator": "Rob Emslie", + "pubDate": "Fri, 19 Nov 2021 13:00:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "An Age-by-Age Guide to Gender-Neutral Gifts for Kids", - "description": "

Now more than ever, there is a push for toy and clothing manufacturers to create gender-neutral options for kids; ones that don’t exclusively push pink, fluffy princess gear on girls, and firetruck-themed everything on boys. Offering unisex products enables children to play and explore outside of traditional gender…

Read more...

", - "content": "

Now more than ever, there is a push for toy and clothing manufacturers to create gender-neutral options for kids; ones that don’t exclusively push pink, fluffy princess gear on girls, and firetruck-themed everything on boys. Offering unisex products enables children to play and explore outside of traditional gender…

Read more...

", - "category": "crayola", - "link": "https://lifehacker.com/an-age-by-age-guide-to-gender-neutral-gifts-for-kids-1848046071", - "creator": "Sarah Showfety", - "pubDate": "Fri, 19 Nov 2021 15:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Barbie's New Electric Sports Car Is Totally Radical And I Want One", + "description": "

Why haven’t any mainstream automakers built an electric sports car yet? It’s a no-brainer, really. The battery sits super low in the chassis so you get a good low center of gravity. That’s the thinking behind Barbie’s new car from Mattel, and really Mattel makes more cars every year than any other automaker, so for…

Read more...

", + "content": "

Why haven’t any mainstream automakers built an electric sports car yet? It’s a no-brainer, really. The battery sits super low in the chassis so you get a good low center of gravity. That’s the thinking behind Barbie’s new car from Mattel, and really Mattel makes more cars every year than any other automaker, so for…

Read more...

", + "category": "barbie", + "link": "https://jalopnik.com/barbies-new-electric-sports-car-is-totally-radical-and-1848085925", + "creator": "Bradley Brownell", + "pubDate": "Fri, 19 Nov 2021 00:00:00 GMT", + "folder": "00.03 News", + "feed": "Jalopnik", + "read": true, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News", + "name": "Jalopnik" + }, + { + "title": "RotoWire.com Latest NBA News", + "subtitle": "", + "link": "https://rotowire.com", + "image": "https://content.rotowire.com/images/logo_roto_small.gif", + "description": "Fantasy Sports from RotoWire.com", + "items": [ + { + "title": "Harrison Barnes: Picks up foot injury", + "description": "Barnes won't return to Wednesday's game against Portland due to a right foot injury, James Ham of ESPN 1320 Sacramento reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Barnes won't return to Wednesday's game against Portland due to a right foot injury, James Ham of ESPN 1320 Sacramento reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=3305", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 9:24:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Out-of-Touch Adults' Guide to Kid Culture: Why Everyone Is Excited for 'Spider-Man: No Way Home'", - "description": "

This week, the kids are raging against work, throwing cheese at cars, and enjoying the trailer for the new Spider-Man movie. Youth is wasted on the young.

Read more...

", - "content": "

This week, the kids are raging against work, throwing cheese at cars, and enjoying the trailer for the new Spider-Man movie. Youth is wasted on the young.

Read more...

", - "category": "spider man", - "link": "https://lifehacker.com/the-out-of-touch-adults-guide-to-kid-culture-why-every-1848087076", - "creator": "Stephen Johnson", - "pubDate": "Fri, 19 Nov 2021 14:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "De'Aaron Fox: Ejected versus Portland", + "description": "Fox was ejected from Wednesday's game against the Trail Blazers, Sean Cunningham of ABC 10 Sacramento reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Fox was ejected from Wednesday's game against the Trail Blazers, Sean Cunningham of ABC 10 Sacramento reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=4116", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 9:22:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "What Is the Worst Christmas Gift You've Ever Received?", - "description": "

You may have noticed we’re in the thick of gift-giving season. Well, I’m not; my shopping is basically done. (Those supply chains will not have their way with me, no they will not.) But as I peruse the list of gifts I have purchased over the past month, I ask myself: Is any of this any good? Does my 11-year-old really

Read more...

", - "content": "

You may have noticed we’re in the thick of gift-giving season. Well, I’m not; my shopping is basically done. (Those supply chains will not have their way with me, no they will not.) But as I peruse the list of gifts I have purchased over the past month, I ask myself: Is any of this any good? Does my 11-year-old really

Read more...

", - "category": "grandma", - "link": "https://lifehacker.com/what-is-the-worst-christmas-gift-youve-ever-received-1848085069", - "creator": "Meghan Moravcik Walbert", - "pubDate": "Fri, 19 Nov 2021 14:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Marcus Morris: Starting, on minutes limit", + "description": "Morris (knee) will start Tuesday's matchup against the Mavericks but is on a minutes limit, Andrew Greif of the Los Angeles Times and Ohm Youngmisuk of ESPN.com report.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Morris (knee) will start Tuesday's matchup against the Mavericks but is on a minutes limit, Andrew Greif of the Los Angeles Times and Ohm Youngmisuk of ESPN.com report.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=3198", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 5:53:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How (and Why) to Do Two Workouts a Day", - "description": "

I do two workouts most days: a session on a spin bike in the morning, and weightlifting in the afternoon or evening. But I remember a time when two-a-days sounded like an incredible amount of work, the domain of pro athletes and people who had an unhealthy obsession with exercise. It turns out that doubling up on…

Read more...

", - "content": "

I do two workouts most days: a session on a spin bike in the morning, and weightlifting in the afternoon or evening. But I remember a time when two-a-days sounded like an incredible amount of work, the domain of pro athletes and people who had an unhealthy obsession with exercise. It turns out that doubling up on…

Read more...

", - "category": "physical exercise", - "link": "https://lifehacker.com/how-and-why-to-do-two-workouts-a-day-1848085429", - "creator": "Beth Skwarecki", - "pubDate": "Thu, 18 Nov 2021 21:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Anthony Davis: Will play Tuesday", + "description": "Davis (illness) will play Tuesday against the Knicks, Broderick Turner of the Los Angeles Times reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Davis (illness) will play Tuesday against the Knicks, Broderick Turner of the Los Angeles Times reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=3297", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 3:52:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "What's New on Hulu in December 2021", - "description": "

While its original series don’t always have the marquee value of those on rival services, Hulu has quietly been building one of the strongest catalogs of original content in the Peak Streaming era—the recent delights of Only Murders in the Building being but one case in point (pun slightly intended).

Read more...

", - "content": "

While its original series don’t always have the marquee value of those on rival services, Hulu has quietly been building one of the strongest catalogs of original content in the Peak Streaming era—the recent delights of Only Murders in the Building being but one case in point (pun slightly intended).

Read more...

", - "category": "hulu", - "link": "https://lifehacker.com/whats-new-on-hulu-in-december-2021-1848082809", - "creator": "Joel Cunningham", - "pubDate": "Thu, 18 Nov 2021 20:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Seth Curry: Late scratch Monday", + "description": "Curry has been ruled out for Monday's game against Sacramento due to back stiffness, Noah Levick of NBC Sports Philadelphia reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Curry has been ruled out for Monday's game against Sacramento due to back stiffness, Noah Levick of NBC Sports Philadelphia reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=3498", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 5:44:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "9 Thanksgiving Dishes Your Vegan Guests Will Love", - "description": "

The traditional Thanksgiving menu is not exactly vegan friendly (or even vegetarian friendly). Nearly every dish contains cream, butter, eggs, or turkey stock, and the whole thing is centered around a large, dead bird.

Read more...

", - "content": "

The traditional Thanksgiving menu is not exactly vegan friendly (or even vegetarian friendly). Nearly every dish contains cream, butter, eggs, or turkey stock, and the whole thing is centered around a large, dead bird.

Read more...

", - "category": "veganism", - "link": "https://lifehacker.com/9-thanksgiving-dishes-your-vegan-guests-will-love-1848083265", - "creator": "Claire Lower", - "pubDate": "Thu, 18 Nov 2021 19:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Dillon Brooks: Will be game-time call", + "description": "Brooks (hamstring) is being considered a game-time decision for Monday's game against Utah, Eric Walden of The Salt Lake Tribune reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Brooks (hamstring) is being considered a game-time decision for Monday's game against Utah, Eric Walden of The Salt Lake Tribune reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=4125", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 4:43:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Split Bills With Your Roommates Without Pissing Each Other Off", - "description": "

Split chores. Built-in company. Someone else’s expensive snacks for you to steal in gradual, imperceptible portions. There are a lot of compelling reasons to have roommates, but odds are your decision to live in a shared household is primarily a financial one.

Read more...

", - "content": "

Split chores. Built-in company. Someone else’s expensive snacks for you to steal in gradual, imperceptible portions. There are a lot of compelling reasons to have roommates, but odds are your decision to live in a shared household is primarily a financial one.

Read more...

", - "category": "rent", - "link": "https://lifehacker.com/how-to-split-bills-with-your-roommates-without-pissing-1848083535", - "creator": "Meredith Dietz", - "pubDate": "Thu, 18 Nov 2021 18:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Nickeil Alexander-Walker: Moves to bench Monday", + "description": "Alexander-Walker will come off the bench Monday against the Timberwolves, Jennifer Hale of Fox Sports New Orleans reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Alexander-Walker will come off the bench Monday against the Timberwolves, Jennifer Hale of Fox Sports New Orleans reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=4765", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 4:27:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Get Your Kids to Actually Pick Up After Themselves", - "description": "

If only the words to the kid’s song were true: Clean up, clean up, everybody everywhere. Clean up, clean up, everybody do their share.

Read more...

", - "content": "

If only the words to the kid’s song were true: Clean up, clean up, everybody everywhere. Clean up, clean up, everybody do their share.

Read more...

", - "category": "chuck", - "link": "https://lifehacker.com/how-to-get-your-kids-to-actually-pick-up-after-themselv-1848083178", - "creator": "Sarah Showfety", - "pubDate": "Thu, 18 Nov 2021 18:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Jaylen Brown: Faces minutes restriction", + "description": "Brown will be limited to approximately 24 minutes in Monday's game against the Rockets, Jay King of The Athletic reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Brown will be limited to approximately 24 minutes in Monday's game against the Rockets, Jay King of The Athletic reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=3894", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 2:55:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Stop Your iPhone 12 or 13 From Frequently Dropping Calls", - "description": "

If your iPhone won’t stop dropping calls, it can be difficult to troubleshoot. After all, you can’t just switch to Cingular Wireless anymore, and without the support of the network with the fewest dropped calls, what are you supposed to do? If your issue is tied to an iPhone 12 or iPhone 13, however, there is a new…

Read more...

", - "content": "

If your iPhone won’t stop dropping calls, it can be difficult to troubleshoot. After all, you can’t just switch to Cingular Wireless anymore, and without the support of the network with the fewest dropped calls, what are you supposed to do? If your issue is tied to an iPhone 12 or iPhone 13, however, there is a new…

Read more...

", - "category": "iphone", - "link": "https://lifehacker.com/how-to-stop-your-iphone-12-or-13-from-frequently-droppi-1848082613", - "creator": "Jake Peterson", - "pubDate": "Thu, 18 Nov 2021 17:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", - "read": false, + "title": "Nikola Jokic: Questionable Tuesday", + "description": "Jokic (wrist) is questionable for Tuesday's game against the Trail Blazers, Jamie Hudson of KOIN 6 News Portland reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Jokic (wrist) is questionable for Tuesday's game against the Trail Blazers, Jamie Hudson of KOIN 6 News Portland reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=3612", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 2:05:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "What's New on Disney Plus in December 2021", - "description": "

The weird thing about franchise canon is you have to take the good with the bad. This means that Disney/Lucasfilm has spent the better part of the past decade working overtime to fix the parts of the official Star Wars storyline that, uh, don’t really work—retroactively making them at least seem better by retconning…

Read more...

", - "content": "

The weird thing about franchise canon is you have to take the good with the bad. This means that Disney/Lucasfilm has spent the better part of the past decade working overtime to fix the parts of the official Star Wars storyline that, uh, don’t really work—retroactively making them at least seem better by retconning…

Read more...

", - "category": "lin manuel miranda", - "link": "https://lifehacker.com/whats-new-on-disney-plus-in-december-2021-1848082540", - "creator": "Joel Cunningham", - "pubDate": "Thu, 18 Nov 2021 16:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Luka Doncic: Officially questionable Tuesday", + "description": "Doncic (ankle) is questionable for Tuesday's game against the Clippers.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Doncic (ankle) is questionable for Tuesday's game against the Clippers.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=4396", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 1:51:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "You Can Finally Get Real-Time Lyrics on Spotify", - "description": "

Even with the many music streaming options to choose from these days, Spotify is still the king for millions of users. While the app is enjoying a long, successful run, it hasn’t shined in every category. Real-time lyrics have been notably absent from Spotify’s features for some time now, as competing services like…

Read more...

", - "content": "

Even with the many music streaming options to choose from these days, Spotify is still the king for millions of users. While the app is enjoying a long, successful run, it hasn’t shined in every category. Real-time lyrics have been notably absent from Spotify’s features for some time now, as competing services like…

Read more...

", - "category": "spotify", - "link": "https://lifehacker.com/you-can-finally-get-real-time-lyrics-on-spotify-1848081872", - "creator": "Jake Peterson", - "pubDate": "Thu, 18 Nov 2021 15:30:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "Tobias Harris: Expected to sit Monday", + "description": "Harris is not expected to play in Monday's game against the Kings due to a sore hip, Keith Pompey of the Philadelphia Inquirer reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Harris is not expected to play in Monday's game against the Kings due to a sore hip, Keith Pompey of the Philadelphia Inquirer reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=3211", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:08:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Least Siri Can Do Is Pronounce Your Name Correctly", - "description": "

Siri is no one’s favorite virtual assistant, and if it’s also always pronouncing your name wrong, it’s doing little to endear itself to you. As recently as iOS 14, you could let Siri know its pronunciation was incorrect, and tell it the correct way to say your (or another contact’s) name. This method has been removed…

Read more...

", - "content": "

Siri is no one’s favorite virtual assistant, and if it’s also always pronouncing your name wrong, it’s doing little to endear itself to you. As recently as iOS 14, you could let Siri know its pronunciation was incorrect, and tell it the correct way to say your (or another contact’s) name. This method has been removed…

Read more...

", - "category": "siri", - "link": "https://lifehacker.com/the-least-siri-can-do-is-pronounce-your-name-correctly-1848081315", - "creator": "Pranay Parab", - "pubDate": "Thu, 18 Nov 2021 15:00:00 GMT", - "folder": "00.03 News/News - EN", - "feed": "Lifehacker", + "title": "LeBron James: Questionable for Tuesday", + "description": "James (abdomen) is listed as questionable for Tuesday's game against the Knicks, Ryan Ward of Lakers Nation reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "James (abdomen) is listed as questionable for Tuesday's game against the Knicks, Ryan Ward of Lakers Nation reports.\n\n Visit RotoWire.com for more analysis on this update.", + "category": "", + "link": "https://rotowire.com/basketball/player.php?id=2344", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:03:00 PM PST", + "folder": "00.03 News/Sport EN", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - EN", - "name": "Lifehacker" - }, - "10": { - "title": "Nature - Issue - nature.com science feeds", - "subtitle": "", - "link": "http://feeds.nature.com/nature/rss/current", - "image": null, - "description": "Nature is the international weekly journal of science: a magazine style journal that publishes full-length research papers in all disciplines of science, as well as News and Views, reviews, news, features, commentaries, web focuses and more, covering all branches of science and how science impacts upon all aspects of society and life.", - "items": [ + }, { - "title": "This microbe works a toxic metal into a weapon against its foes", - "description": "", - "content": "\n ", + "title": "Tyler Herro: Upgraded to questionable", + "description": "Herro (wrist) was upgraded from out to questionable ahead of Saturday's matchup against the Wizards, Anthony Chiang of the Miami Herald reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Herro (wrist) was upgraded from out to questionable ahead of Saturday's matchup against the Wizards, Anthony Chiang of the Miami Herald reports.\n\n Visit RotoWire.com for more analysis on this update.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03477-4", + "link": "https://rotowire.com/basketball/player.php?id=4780", "creator": "", - "pubDate": "2021-11-19", - "folder": "00.03 News/News - EN", - "feed": "Nature", - "read": false, + "pubDate": "Fri, 19 Nov 2021 2:22:00 PM PST", + "folder": "00.03 News", + "feed": "RotoWire", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Defining Alzheimer’s, and the climate costs of AI: Books in brief", - "description": "", - "content": "\n ", + "title": "Bam Adebayo: Questionable vs. Washington", + "description": "Adebayo (knee) is questionable Saturday against the Wizards.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Adebayo (knee) is questionable Saturday against the Wizards.\n\n Visit RotoWire.com for more analysis on this update.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03484-5", - "creator": "Andrew Robinson", - "pubDate": "2021-11-19", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://rotowire.com/basketball/player.php?id=4153", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 1:39:00 PM PST", + "folder": "00.03 News", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "COVID’s career impact and embryo secrets — the week in infographics", - "description": "", - "content": "\n ", + "title": "Kevin Porter: Questionable vs. New York", + "description": "Porter (thigh) is questionable for Saturday's tilt against the Knicks.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Porter (thigh) is questionable for Saturday's tilt against the Knicks.\n\n Visit RotoWire.com for more analysis on this update.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03478-3", + "link": "https://rotowire.com/basketball/player.php?id=4773", "creator": "", - "pubDate": "2021-11-19", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Fri, 19 Nov 2021 1:37:00 PM PST", + "folder": "00.03 News", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Scientists question Max Planck Society’s treatment of women leaders", - "description": "", - "content": "\n ", + "title": "Damian Lillard: Probable vs. Philly", + "description": "Lillard (abdomen) is probable for Saturday's matchup against the 76ers, Danny Marang of Blazers Outsiders reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Lillard (abdomen) is probable for Saturday's matchup against the 76ers, Danny Marang of Blazers Outsiders reports.\n\n Visit RotoWire.com for more analysis on this update.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03492-5", - "creator": "Alison Abbott", - "pubDate": "2021-11-19", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://rotowire.com/basketball/player.php?id=3304", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 1:31:00 PM PST", + "folder": "00.03 News", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Star Corps Crew Manual Section 15-A37: On Mental Dislocation", - "description": "", - "content": "\n ", + "title": "Tyler Herro: Out again Saturday", + "description": "Herro (wrist) won't play Saturday against the Wizards, Ira Winderman of the South Florida Sun Sentinel reports.\n\n Visit RotoWire.com for more analysis on this update.", + "content": "Herro (wrist) won't play Saturday against the Wizards, Ira Winderman of the South Florida Sun Sentinel reports.\n\n Visit RotoWire.com for more analysis on this update.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03398-2", - "creator": "Marissa Lingen", - "pubDate": "2021-11-19", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://rotowire.com/basketball/player.php?id=4780", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 1:28:00 PM PST", + "folder": "00.03 News", + "feed": "RotoWire", "read": false, "favorite": false, "created": false, "tags": [] - }, + } + ], + "folder": "00.03 News", + "name": "RotoWire" + }, + { + "title": "Sport360 - Latest Sports News", + "subtitle": "", + "link": "https://sport360.com/", + "image": null, + "description": "Latest sports news from aroud the globe, including breaking news, analysis and interviews.", + "items": [ { - "title": "NASA spacecraft will slam into asteroid in first planetary-defence test", - "description": "", + "title": "Badou Jack looks ahead to clash with Samuel Crossed this Friday in Dubai", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03471-w", - "creator": "Alexandra Witze", - "pubDate": "2021-11-19", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/other/boxing/346730/badou-jack-looks-ahead-to-clash-with-samuel-crossed-this-friday-in-dubai", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:37:28 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "First quantum computer to pack 100 qubits enters crowded race", - "description": "", + "title": "Xavi given green light by Barcelona to make January signing", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03476-5", - "creator": "Philip Ball", - "pubDate": "2021-11-19", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/football/barcelona/346723/xavi-given-green-light-by-barcelona-to-make-january-signing", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:19:37 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Genome surveillance by HUSH-mediated silencing of intronless mobile elements", - "description": "", + "title": "More top MENA names confirmed for FINA World Swimming Championships", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04228-1", - "creator": "Marta Seczynska", - "pubDate": "2021-11-18", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/regional-article/346719/more-top-mena-names-confirmed-for-fina-world-swimming-championships", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:28:41 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Optimization of Non-Coding Regions for a Non-Modified mRNA COVID-19 Vaccine", - "description": "", + "title": "Andy Murray completes line-up for Mubadala World Tennis Championship", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04231-6", - "creator": "Makda S. Gebre", - "pubDate": "2021-11-18", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/tennis/mubadala-championship/346717/andy-murray-completes-line-up-for-mubadala-world-tennis-championship", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:23:30 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "CRISPR screens unveil signal hubs for nutrient licensing of T cell immunity", - "description": "", + "title": "Hublot unveils Official Countdown Clock to World Cup 2022", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04109-7", - "creator": "Lingyun Long", - "pubDate": "2021-11-18", - "folder": "00.03 News/News - EN", - "feed": "Nature", - "read": false, + "link": "https://sport360.com/article/football/346710/hublot-unveils-official-countdown-clock-to-world-cup-2022", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:22:30 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Daily briefing: Second person found to have ‘naturally’ eradicated HIV", - "description": "", + "title": "NBA teams to play in the UAE after agreeing multiyear deal with DCT Abu Dhabi", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03489-0", - "creator": "Flora Graham", - "pubDate": "2021-11-18", - "folder": "00.03 News/News - EN", - "feed": "Nature", - "read": false, + "link": "https://sport360.com/article/nba-2/346700/nba-teams-to-play-in-the-uae-after-agreeing-multiyear-deal-with-dct-abu-dhabi", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 17:03:40 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Adopting as academics: what we learnt", - "description": "", + "title": "Dani Alves undergoes Barcelona medical ahead of second stint", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03482-7", - "creator": "Tony Ly", - "pubDate": "2021-11-18", - "folder": "00.03 News/News - EN", - "feed": "Nature", - "read": false, + "link": "https://sport360.com/article/football/barcelona/346695/dani-alves-undergoes-barcelona-medical-ahead-of-second-stint", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 17:47:57 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Do childhood colds help the body respond to COVID?", - "description": "", + "title": "Beach Run Festival 2021 attracts over 2,500 attendees", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03087-0", - "creator": "Rachel Brazil", - "pubDate": "2021-11-18", - "folder": "00.03 News/News - EN", - "feed": "Nature", - "read": false, + "link": "https://sport360.com/article/other/346686/beach-run-festival-2021-attracts-over-2500-attendees", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 13:22:40 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Europe’s COVID death toll could rise by hundreds of thousands", - "description": "", + "title": "Andrey Rublev confirmed for Mubadala World Tennis Championship", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03455-w", - "creator": "Smriti Mallapaty", - "pubDate": "2021-11-18", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/tennis/mubadala-championship/346677/andrey-rublev-confirmed-for-mubadala-world-tennis-championship", + "creator": "", + "pubDate": "Tue, 09 Nov 2021 20:25:01 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "It’s a snap: the friction-based physics behind a common gesture", - "description": "", + "title": "Early start for Xavi on first proper day of training as Barcelona boss", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03444-z", + "link": "https://sport360.com/article/football/barcelona/346675/early-start-for-xavi-on-first-proper-day-of-training-as-barcelona-boss", "creator": "", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Tue, 09 Nov 2021 17:58:46 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Canada’s scientific strength depends on greater support for innovation", - "description": "", + "title": "Audemars Piguet launches new 43mm Royal Oak Offshore collection with free running founder Sebastien Foucan", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03058-5", - "creator": "Bec Crew", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/other/346665/audemars-piguet-launches-new-43mm-royal-oak-offshore-collection-with-free-running-founder-sebastien-foucan", + "creator": "", + "pubDate": "Fri, 05 Nov 2021 10:18:37 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Sea squirts teach new lessons in evolution", - "description": "", + "title": "Dubai Exiles and Hurricanes to meet on Friday in Jon Beeton memorial fixture", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03475-6", - "creator": "Shamini Bundell", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/regional-article/346660/dubai-exiles-and-hurricanes-to-meet-on-friday-in-jon-beeton-memorial-fixture", + "creator": "", + "pubDate": "Thu, 04 Nov 2021 16:03:29 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "A guide to the Nature Index", - "description": "", + "title": "Under Armour unveils new UA HOVR Mega 2 Clone", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03065-6", + "link": "https://sport360.com/article/health-and-fitness/346698/under-armour-unveils-new-ua-hovr-mega-2-clone", "creator": "", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Wed, 03 Nov 2021 15:15:36 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Even organic pesticides spur change in the wildlife next door", - "description": "", + "title": "Week 4 results: Super League Basketball Championship", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03445-y", + "link": "https://sport360.com/article/other/346652/week-4-results-super-league-basketball-championship", "creator": "", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Tue, 02 Nov 2021 17:58:03 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Independent infections of porcine deltacoronavirus among Haitian children", - "description": "", + "title": "UAE Olympian joins tomorrow’s stars at Ultimate Athletics race night", + "description": "\n ", "content": "\n ", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04111-z", - "creator": "John A. Lednicky", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://sport360.com/article/other/athletics/346640/uae-olympian-joins-tomorrows-stars-at-ultimate-athletics-race-night", + "creator": "", + "pubDate": "Sun, 31 Oct 2021 15:37:58 +0400", + "folder": "00.03 News/Sport EN", + "feed": "Sport360", "read": false, "favorite": false, "created": false, "tags": [] - }, + } + ], + "folder": "00.03 News/Sport EN", + "name": "Sport360" + }, + { + "title": "L'Equipe.fr Actu Rugby", + "subtitle": "", + "link": "https://www.lequipe.fr", + "image": "https://www.lequipe.fr/rss/logo_RSS.gif", + "description": "L'Equipe.fr, Toute l'actualité du Rugby", + "items": [ { - "title": "Observation of universal ageing dynamics in antibiotic persistence", - "description": "", - "content": "\n ", + "title": "Rugby - Médias - Le Top 14 diffusé au Japon à partir de ce week-end", + "description": "Le Top 14 sera diffusé dès ce samedi et jusqu'en fin de saison au Japon après un accord entre la LNR et le groupe TV Asahi.", + "content": "Le Top 14 sera diffusé dès ce samedi et jusqu'en fin de saison au Japon après un accord entre la LNR et le groupe TV Asahi.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04114-w", - "creator": "Yoav Kaplan", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Medias/Actualites/Le-top-14-diffuse-au-japon-a-partir-de-ce-week-end/1301217#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:53:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "In-orbit demonstration of an iodine electric propulsion system", - "description": "", - "content": "\n ", + "title": "Rugby - AUS - Stephen Larkham quitte le Munster pour entraîner les Brumbies", + "description": "L'ancien demi d'ouverture de l'Australie Stephen Larkham quitte le Munster, où il officiait depuis 2019, pour entraîner les Brumbies en Super Rugby.", + "content": "L'ancien demi d'ouverture de l'Australie Stephen Larkham quitte le Munster, où il officiait depuis 2019, pour entraîner les Brumbies en Super Rugby.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04015-y", - "creator": "Dmytro Rafalskyi", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Stephen-larkham-quitte-le-munster-pour-entrainer-les-brumbies/1301098#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 00:15:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Cell-type specialization is encoded by specific chromatin topologies", - "description": "", - "content": "\n ", + "title": "Rugby - GAL - Le capitaine du pays de Galles Alun Wyn Jones va subir une nouvelle opération", + "description": "Alun Wyn Jones, le capitaine et deuxième-ligne du pays de Galles, va devoir se faire opérer une deuxième fois d'une épaule, a annoncé son club des Ospreys. Il était sorti blessé contre les All Blacks il y a un mois.", + "content": "Alun Wyn Jones, le capitaine et deuxième-ligne du pays de Galles, va devoir se faire opérer une deuxième fois d'une épaule, a annoncé son club des Ospreys. Il était sorti blessé contre les All Blacks il y a un mois.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04081-2", - "creator": "Warren Winick-Ng", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Le-capitaine-du-pays-de-galles-alun-wyn-jones-va-subir-une-nouvelle-operation/1301078#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:28:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Structure, function and pharmacology of human itch GPCRs", - "description": "", - "content": "\n ", + "title": "Rugby - CM 2027 - L'Australie favorite de World Rugby pour l'organisation de la Coupe du monde 2027", + "description": "World Rugby a attribué à l'Australie le statut de candidat préférentiel exclusif en vue de l'organisation de la Coupe du monde 2027. L'attribution sera votée en mai 2022.", + "content": "World Rugby a attribué à l'Australie le statut de candidat préférentiel exclusif en vue de l'organisation de la Coupe du monde 2027. L'attribution sera votée en mai 2022.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04126-6", - "creator": "Can Cao", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-australie-favorite-de-world-rugby-pour-l-organisation-de-la-coupe-du-monde-2027/1300965#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 17:40:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Cardiopharyngeal deconstruction and ancestral tunicate sessility", - "description": "", - "content": "\n ", + "title": "Rugby à XIII - La fédération de rugby à XIII suspend Ludovic Radosavljevic à titre conservatoire", + "description": "Licencié par Provence Rugby (Pro D2) à la suite de sa suspension pour propos racistes, Ludovic Radosavljevic ne pourra pas rebondir tout de suite au SO Avignon XIII. La fédération veut d'abord étudier son cas.", + "content": "Licencié par Provence Rugby (Pro D2) à la suite de sa suspension pour propos racistes, Ludovic Radosavljevic ne pourra pas rebondir tout de suite au SO Avignon XIII. La fédération veut d'abord étudier son cas.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04041-w", - "creator": "Alfonso Ferrández-Roldán", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby-a-xiii/Actualites/La-federation-de-rugby-a-xiii-suspend-ludovic-radosavljevic-a-titre-conservatoire/1300951#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 16:54:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Isolation and characterization of a californium metallocene", - "description": "", - "content": "\n ", + "title": "Rugby - World Rugby autorise le changement de sélection", + "description": "La Fédération internationale de rugby a voté ce mercredi en faveur de la simplification de l'article 8 qui régit l'éligibilité des joueurs internationaux. Ces derniers peuvent désormais changer de sélection, à certaines conditions.", + "content": "La Fédération internationale de rugby a voté ce mercredi en faveur de la simplification de l'article 8 qui régit l'éligibilité des joueurs internationaux. Ces derniers peuvent désormais changer de sélection, à certaines conditions.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04027-8", - "creator": "Conrad A. P. Goodwin", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/World-rugby-autorise-le-changement-de-selection/1300926#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 15:35:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Approaching the intrinsic exciton physics limit in two-dimensional semiconductor diodes", - "description": "", - "content": "\n ", + "title": "Rugby - Podcast - Crunch, le podcast rugby de L'Équipe : comprendre l'exploit face aux All Blacks", + "description": "Quarante points, une première victoire à domicile depuis l'an 2000 et le sentiment que, désormais, tout est réalisable : quels sont les ingrédients de l'immense succès des Bleus face à la Nouvelle-Zélande (40-25) et les clés de la préparation et de l'approche tactique tricolore ?", + "content": "Quarante points, une première victoire à domicile depuis l'an 2000 et le sentiment que, désormais, tout est réalisable : quels sont les ingrédients de l'immense succès des Bleus face à la Nouvelle-Zélande (40-25) et les clés de la préparation et de l'approche tactique tricolore ?", "category": "", - "link": "https://www.nature.com/articles/s41586-021-03949-7", - "creator": "Peng Chen", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Crunch-le-podcast-rugby-de-l-equipe-comprendre-l-exploit-face-aux-all-blacks/1300726#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 17:37:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Structure, function and pharmacology of human itch receptor complexes", - "description": "", - "content": "\n ", + "title": "Rugby - Top 14 - Bordeaux-Bègles - UBB : James Hart arrive de Biarritz comme joker médical", + "description": "Pour pallier l'absence sur blessure de Jules Gimbert, Bordeaux-Bègles a fait appel à James Hart au poste de demi de mêlée.", + "content": "Pour pallier l'absence sur blessure de Jules Gimbert, Bordeaux-Bègles a fait appel à James Hart au poste de demi de mêlée.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04077-y", - "creator": "Fan Yang", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Ubb-james-hart-arrive-de-biarritz-comme-joker-medical/1300723#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 17:24:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Exploding and weeping ceramics", - "description": "", - "content": "\n ", + "title": "Rugby - Justice - La Cour de cassation met un point final au contentieux Boudjellal-EPCR", + "description": "La Cour de cassation a annulé mardi la condamnation de l'EPCR, organisatrice des Coupes d'Europe, accusée de diffamation par l'ancien président de Toulon Mourad Boudjellal.", + "content": "La Cour de cassation a annulé mardi la condamnation de l'EPCR, organisatrice des Coupes d'Europe, accusée de diffamation par l'ancien président de Toulon Mourad Boudjellal.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-03975-5", - "creator": "Hanlin Gu", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/La-cour-de-cassation-met-un-point-finale-au-contentieux-boudjellal-epcr/1300719#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 17:21:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Reverse-translational identification of a cerebellar satiation network", - "description": "", - "content": "\n ", + "title": "Rugby - Top 14 - Racing 92 - Le demi de mêlée Mitchell Short en joker médical au Racing 92", + "description": "Pour pallier les absences de Nolann Le Garrec et Teddy Iribaren, blessés, le Racing 92 a fait appel au demi de mêlée australien Mitchell Short.", + "content": "Pour pallier les absences de Nolann Le Garrec et Teddy Iribaren, blessés, le Racing 92 a fait appel au demi de mêlée australien Mitchell Short.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04143-5", - "creator": "Aloysius Y. T. Low", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Le-demi-de-melee-mitchell-short-en-joker-medical-au-racing-92/1300709#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 16:28:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Cortical responses to touch reflect subcortical integration of LTMR signals", - "description": "", - "content": "\n ", + "title": "Rugby - Ludovic Radosavljevic rebondit au rugby à XIII au SO Avignon (Élite 1)", + "description": "Licencié par Provence Rugby après une longue suspension infligée pour des propos racistes, Ludovic Radosavljevic s'est engagé au SO Avignon qui joue en Élite 1 en rugby à XIII.", + "content": "Licencié par Provence Rugby après une longue suspension infligée pour des propos racistes, Ludovic Radosavljevic s'est engagé au SO Avignon qui joue en Élite 1 en rugby à XIII.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04094-x", - "creator": "Alan J. Emanuel", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby-a-xiii/Actualites/Ludovic-radosavljevic-rebondit-au-rugby-a-xiii-au-so-avignon-elite-1/1300678#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:44:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Mental health concerns during the COVID-19 pandemic as revealed by helpline calls", - "description": "", - "content": "\n ", + "title": "Rugby - Les Bleues troisièmes du classement mondial", + "description": "Après sa deuxième victoire de rang contre la Nouvelle-Zélande samedi, l'équipe de France féminine se retrouve désormais troisième au classement mondial.", + "content": "Après sa deuxième victoire de rang contre la Nouvelle-Zélande samedi, l'équipe de France féminine se retrouve désormais troisième au classement mondial.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04099-6", - "creator": "Marius Brülhart", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Les-bleues-troisiemes-du-classement-mondial/1300674#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:10:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Herpesviruses assimilate kinesin to produce motorized viral particles", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Après sa victoire contre la Nouvelle-Zélande, la France cinquième du classement mondial", + "description": "Les Bleus ont gagné une place dans le classement mondial après leur victoire contre les All Blacks samedi soir (40-25).", + "content": "Les Bleus ont gagné une place dans le classement mondial après leur victoire contre les All Blacks samedi soir (40-25).", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04106-w", - "creator": "Caitlin E. Pegg", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Apres-sa-victoire-contre-la-nouvelle-zelande-la-france-cinquieme-du-classement-mondial/1300652#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:59:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Observation of Stark many-body localization without disorder", - "description": "", - "content": "\n ", + "title": "Rugby - Top 14 - Montpellier - Brandon Paenga-Amosa signe à Montpellier", + "description": "Le talonneur international australien Brandon Paenga-Amosa a été recruté par Montpellier pour une durée de trois ans, dont une en option.", + "content": "Le talonneur international australien Brandon Paenga-Amosa a été recruté par Montpellier pour une durée de trois ans, dont une en option.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-03988-0", - "creator": "W. Morong", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Brandon-paenga-amosa-signe-a-montpellier/1300556#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:59:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Single-cell transcriptomic characterization of a gastrulating human embryo", - "description": "", - "content": "\n ", + "title": "Rugby - Top 14 - Clermont - Apisai Naqalevu (Clermont) indisponible six semaines", + "description": "Touché à une main avec sa sélection, Apisai Naqalevu va manquer les six prochaines semaines de compétition a indiqué l'ASM ce lundi.", + "content": "Touché à une main avec sa sélection, Apisai Naqalevu va manquer les six prochaines semaines de compétition a indiqué l'ASM ce lundi.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04158-y", - "creator": "Richard C. V. Tyser", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Apisai-naqalevu-clermont-indisponible-six-semaines/1300537#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:34:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Measuring phonon dispersion at an interface", - "description": "", - "content": "\n ", + "title": "Rugby - Top 14 - MHR - Handré Pollard quittera Montpellier en juin", + "description": "Mohed Altrad a expliqué ce lundi dans Midi Olympique que l'ouvreur sud-africain Handré Pollard, dont le contrat s'arrête en juin, ne resterait pas au MHR au-delà de cette saison.", + "content": "Mohed Altrad a expliqué ce lundi dans Midi Olympique que l'ouvreur sud-africain Handré Pollard, dont le contrat s'arrête en juin, ne resterait pas au MHR au-delà de cette saison.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-03971-9", - "creator": "Ruishi Qi", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Handre-pollard-quittera-montpellier-en-juin/1300512#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:07:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Excitons and emergent quantum phenomena in stacked 2D semiconductors", - "description": "", - "content": "\n ", + "title": "Rugby - Pro D2 - Jonathan Ruru (Blues) à Provence Rugby", + "description": "Provence Rugby a annoncé ce lundi l'arrivée du demi de mêlée néo-zélandais Jonathan Ruru (28 ans). Il remplacera Ludovic Radosavljevic, récemment licencié.", + "content": "Provence Rugby a annoncé ce lundi l'arrivée du demi de mêlée néo-zélandais Jonathan Ruru (28 ans). Il remplacera Ludovic Radosavljevic, récemment licencié.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-03979-1", - "creator": "Nathan P. Wilson", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Jonathan-ruru-blues-a-provence-rugby/1300486#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:37:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Widespread changes in surface temperature persistence under climate change", - "description": "", - "content": "\n ", + "title": "Rugby - JAP - Damian McKenzie aux Suntory Sungoliath (Japon)", + "description": "Les Suntory Sungoliath de Tokyo ont confirmé ce lundi la signature de l'international néo-zélandais Damian McKenzie pour la saison 2021-2022.", + "content": "Les Suntory Sungoliath de Tokyo ont confirmé ce lundi la signature de l'international néo-zélandais Damian McKenzie pour la saison 2021-2022.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-03943-z", - "creator": "Jingyuan Li", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Damian-mckenzie-aux-suntory-sungoliath-japon/1300464#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 11:09:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Structural insights into Ubr1-mediated N-degron polyubiquitination", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - L'Irlande surclasse l'Argentine en test-match", + "description": "Pour le dernier test-match des tournées d'automne, les Irlandais n'ont laissé aucune chance aux Argentins, réduits à quatorze à l'heure de jeu et nettement battus (53-7) à Dublin, dimanche, sept essais à un.", + "content": "Pour le dernier test-match des tournées d'automne, les Irlandais n'ont laissé aucune chance aux Argentins, réduits à quatorze à l'heure de jeu et nettement battus (53-7) à Dublin, dimanche, sept essais à un.", "category": "", - "link": "https://www.nature.com/articles/s41586-021-04097-8", - "creator": "Man Pan", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-irlande-surclasse-l-argentine/1300282#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 17:09:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "A critical mass of learning at Mila, Canada", - "description": "", - "content": "\n ", + "title": "Rugby - NZL - Presse - Après la défaite des All Blacks en France, la presse néo-zélandaise met la pression sur Ian Foster", + "description": "Déjà acerbe après le revers en Irlande (20-29) la semaine dernière, la presse néo-zélandaise est encore plus véhémente à la suite de la défaite des All Blacks, samedi, face à la France (25-40). Le sélectionneur Ian Foster est désigné comme le principal coupable d'une saison ratée.", + "content": "Déjà acerbe après le revers en Irlande (20-29) la semaine dernière, la presse néo-zélandaise est encore plus véhémente à la suite de la défaite des All Blacks, samedi, face à la France (25-40). Le sélectionneur Ian Foster est désigné comme le principal coupable d'une saison ratée.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03064-7", - "creator": "Nicola Jones", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Apres-la-defaite-des-all-blacks-en-france-la-presse-neo-zelandaise-met-la-pression-sur-ian-foster/1300233#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 10:20:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The start-ups chasing clean, carbon-free fusion energy", - "description": "", - "content": "\n ", + "title": "Rugby - Médias - 6,3M de téléspectateurs devant France-All Blacks sur France 2", + "description": "La magnifique victoire de l'équipe de France face aux All Blacks (40-25) pour conclure la tournée d'automne a rassemblé, samedi soir, 6,3M de téléspectateurs sur France 2.", + "content": "La magnifique victoire de l'équipe de France face aux All Blacks (40-25) pour conclure la tournée d'automne a rassemblé, samedi soir, 6,3M de téléspectateurs sur France 2.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03401-w", - "creator": "Philip Ball", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Medias/Actualites/6-3m-de-telespectateurs-devant-france-all-blacks-sur-france-2/1300231#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 10:17:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Californium—carbon bond captured in a complex", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Jonathan Danty : « On va pouvoir construire sur cette victoire »", + "description": "Le centre français Jonathan Danty voit dans cette victoire contre la Nouvelle-Zélande (40-25) une base solide de travail pour emmener les Bleus jusqu'à la Coupe du monde 2023.", + "content": "Le centre français Jonathan Danty voit dans cette victoire contre la Nouvelle-Zélande (40-25) une base solide de travail pour emmener les Bleus jusqu'à la Coupe du monde 2023.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03385-7", - "creator": "Julie E. Niklas", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Jonathan-danty-on-va-pouvoir-construire-sur-cette-victoire/1300219#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 08:07:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Canada’s scientists are elucidating the dark metabolome", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Melvyn Jaminet, arrière des Bleus : « La notion de plaisir a pris tout son sens »", + "description": "Après la victoire contre la Nouvelle-Zélande (40-25), l'arrière des Bleus Melvyn Jaminet était ravi d'avoir vécu de telles émotions.", + "content": "Après la victoire contre la Nouvelle-Zélande (40-25), l'arrière des Bleus Melvyn Jaminet était ravi d'avoir vécu de telles émotions.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03062-9", - "creator": "James Mitchell Crow", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Melvyn-jaminet-arriere-des-bleus-la-notion-de-plaisir-a-pris-tout-son-sens/1300211#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 00:29:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Europe’s Roma people are vulnerable to poor practice in genetics", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Cyril Baille : « J'ai crié de toutes mes forces »", + "description": "Après la victoire épatante des Bleus face aux All Blacks, samedi soir (40-25), le pilier gauche du quinze de France Cyril Baille s'est souvenu de sa réaction quand Romain Ntamack a amorcé sa relance décisive à la 64e minute.", + "content": "Après la victoire épatante des Bleus face aux All Blacks, samedi soir (40-25), le pilier gauche du quinze de France Cyril Baille s'est souvenu de sa réaction quand Romain Ntamack a amorcé sa relance décisive à la 64e minute.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03416-3", - "creator": "Veronika Lipphardt", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Cyril-baille-j-ai-crie-de-toutes-mes-forces/1300206#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 00:22:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "New mineral, FDA chief and the pandemic’s toll on research", - "description": "", - "content": "\n ", + "title": "Question du jour - Le quinze de France est-il le favori du Tournoi des Six Nations 2022 ?", + "description": "La question du jour.", + "content": "La question du jour.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03435-0", + "link": "https://www.lequipe.fr/Rugby/Actualites/Le-quinze-de-france-est-il-le-favori-du-tournoi-des-six-nations-2022/1300166#xtor=RSS-1", "creator": "", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Sun, 21 Nov 2021 00:05:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "First Nations communities bring expertise to Canada’s scientific research", - "description": "", - "content": "\n ", + "title": "Rugby - NZL - Ian Foster (Nouvelle-Zélande) : « Ces deux dernières semaines ont été très dures »", + "description": "Ian Foster, le sélectionneur de la Nouvelle-Zélande, a salué la performance de la France samedi soir (40-25) et regretté l'incapacité de son équipe à suffisamment concrétiser ses temps forts au retour des vestiaires. Les All Blacks, battus en Irlande la semaine dernière, terminent leur année avec deux défaites.", + "content": "Ian Foster, le sélectionneur de la Nouvelle-Zélande, a salué la performance de la France samedi soir (40-25) et regretté l'incapacité de son équipe à suffisamment concrétiser ses temps forts au retour des vestiaires. Les All Blacks, battus en Irlande la semaine dernière, terminent leur année avec deux défaites.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03060-x", - "creator": "Brian Owens", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Ian-foster-nouvelle-zelande-ces-deux-dernieres-semaines-ont-ete-tres-dures/1300184#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 23:45:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Cerebellar neurons that curb food consumption", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Antoine Dupont après la victoire des Bleus face aux All Blacks : « C'est incroyable »", + "description": "Le demi de mêlée et capitaine de l'équipe de France, Antoine Dupont, était sur un petit nuage après la victoire des Bleus contre la Nouvelle-Zélande, ce samedi soir (40-25).", + "content": "Le demi de mêlée et capitaine de l'équipe de France, Antoine Dupont, était sur un petit nuage après la victoire des Bleus contre la Nouvelle-Zélande, ce samedi soir (40-25).", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03383-9", - "creator": "Richard Simerly", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Antoine-dupont-apres-la-victoire-des-bleus-face-aux-all-blacks-c-est-incroyable/1300175#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 23:26:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Millions of helpline calls reveal how COVID affected mental health", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - Survolté, le XV de France s'impose face aux All Blacks", + "description": "Quatre essais à trois, les Bleus ont renversé la Nouvelle-Zélande (40-25), samedi au Stade de France, en clôture de la tournée d'automne, avec un doublé du talonneur Peato Mauvaka et un carton plein de Melvyn Jaminet dans les tirs au but.", + "content": "Quatre essais à trois, les Bleus ont renversé la Nouvelle-Zélande (40-25), samedi au Stade de France, en clôture de la tournée d'automne, avec un doublé du talonneur Peato Mauvaka et un carton plein de Melvyn Jaminet dans les tirs au but.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03454-x", - "creator": "Heidi Ledford", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Survolte-le-xv-de-france-s-impose-face-aux-all-blacks/1300158#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 22:43:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "A peek into the black box of human embryology", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - L'essai de Romain Ntamack pour les Bleus face aux All Blacks en vidéo", + "description": "L'équipe de France fait un début de match incroyable face aux All Blacks ce samedi au Stade de France, à l'image de cet essai de Romain Ntamack, le deuxième des Bleus.", + "content": "L'équipe de France fait un début de match incroyable face aux All Blacks ce samedi au Stade de France, à l'image de cet essai de Romain Ntamack, le deuxième des Bleus.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03381-x", - "creator": "Alexander Goedel", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-essai-de-romain-ntamack-face-aux-all-blacks-en-video/1300145#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 21:38:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Polar bear researchers struggle for air time", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - Les Gallois l'emportent à la dernière seconde devant l'Australie", + "description": "En infériorité numérique dès le premier quart d'heure, les Wallabies ont fini par s'incliner (29-28) samedi soir à Cardiff face au pays de Galles.", + "content": "En infériorité numérique dès le premier quart d'heure, les Wallabies ont fini par s'incliner (29-28) samedi soir à Cardiff face au pays de Galles.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03063-8", - "creator": "Chris Woolston", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Les-gallois-l-emportent-a-la-derniere-seconde-devant-l-australie/1300128#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 20:38:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Canada’s researchers call for a return to stated science ambitions", - "description": "", - "content": "\n ", + "title": "Rugby - Bleues - Annick Hayraud, après la victoire des Bleues contre la Nouvelle-Zélande : « On voulait marquer notre territoire »", + "description": "Annick Hayraud, la manager des Bleues, tire un bilan positif de la tournée de novembre du quinze de France, qui a remporté une nouvelle victoire contre la Nouvelle-Zélande (29-7) ce samedi à Castres.", + "content": "Annick Hayraud, la manager des Bleues, tire un bilan positif de la tournée de novembre du quinze de France, qui a remporté une nouvelle victoire contre la Nouvelle-Zélande (29-7) ce samedi à Castres.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03059-4", - "creator": "Brian Owens", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Annick-hayraud-apres-la-victoire-des-bleues-contre-la-nouvelle-zelande-on-voulait-marquer-notre-territoire/1300084#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 18:52:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Daily briefing: Time to rewrite the textbooks on chemical-bond strength", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - L'Angleterre s'offre l'Afrique du Sud au finish", + "description": "A l'issue d'un match de très haute intensité, l'Angleterre, pourtant très indisciplinée, est parvenue à s'imposer (27-26) sur l'Afrique du sud, samedi à Twickenham.", + "content": "A l'issue d'un match de très haute intensité, l'Angleterre, pourtant très indisciplinée, est parvenue à s'imposer (27-26) sur l'Afrique du sud, samedi à Twickenham.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03480-9", - "creator": "Flora Graham", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-angleterre-s-offre-l-afrique-du-sud-au-finish/1300065#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 18:07:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How Canada stacks up in science against its closest competitors", - "description": "", - "content": "\n ", + "title": "Rugby - Tests (F) - Le quinze de France féminin domine à nouveau la Nouvelle-Zélande", + "description": "Après leur victoire la semaine dernière à Pau, les Bleues ont signé un bis repetita plein de maîtrise à Castres, pour battre la Nouvelle-Zélande (29-7). Les Tricolores ont inscrit quatre essais aux Black Ferns.", + "content": "Après leur victoire la semaine dernière à Pau, les Bleues ont signé un bis repetita plein de maîtrise à Castres, pour battre la Nouvelle-Zélande (29-7). Les Tricolores ont inscrit quatre essais aux Black Ferns.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03061-w", + "link": "https://www.lequipe.fr/Rugby/Actualites/Le-xv-de-france-feminin-domine-a-nouveau-la-nouvelle-zelande/1300047#xtor=RSS-1", "creator": "", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Sat, 20 Nov 2021 16:54:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Welcome home", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - L'Italie dispose péniblement de l'Uruguay", + "description": "À Parme, l'Italie a battu péniblement d'accrocheurs Uruguayens (17-10). L'Uruguay, futur adversaire de l'équipe de France au Mondial 2023, a même fait peur à son hôte en fin de match.", + "content": "À Parme, l'Italie a battu péniblement d'accrocheurs Uruguayens (17-10). L'Uruguay, futur adversaire de l'équipe de France au Mondial 2023, a même fait peur à son hôte en fin de match.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03396-4", - "creator": "Beth Cato", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-italie-dispose-peniblement-de-l-uruguay/1300046#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 16:42:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Iodine powers low-cost engines for satellites", - "description": "", - "content": "\n ", + "title": "Rugby - Tests internationaux - L'Écosse maîtrise le Japon", + "description": "À domicile à Murrayfield, l'Écosse a laissé venir le Japon, pour ensuite planter ses flèches offensives (29-20). Le XV du Chardon n'a toutefois pas eu la partie facile face aux Brave Blossoms.", + "content": "À domicile à Murrayfield, l'Écosse a laissé venir le Japon, pour ensuite planter ses flèches offensives (29-20). Le XV du Chardon n'a toutefois pas eu la partie facile face aux Brave Blossoms.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03384-8", - "creator": "Igor Levchenko", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-ecosse-maitrise-le-japon/1300042#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 16:25:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Helpline data used to monitor population distress in a pandemic", - "description": "", - "content": "\n ", + "title": "Rugby - Pro D2 - Pro D2 : Mont-de-Marsan garde le pouvoir, Colomiers sur le podium", + "description": "Mont-de-Marsan s'est de nouveau emparé de la tête du classement après son succès contre Aurillac (38-10) lors de la onzième journée de Pro D2. Colomiers, vainqueur sur le fil à Narbonne (23-20), se hisse sur le podium.", + "content": "Mont-de-Marsan s'est de nouveau emparé de la tête du classement après son succès contre Aurillac (38-10) lors de la onzième journée de Pro D2. Colomiers, vainqueur sur le fil à Narbonne (23-20), se hisse sur le podium.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03038-9", - "creator": "Cindy H. Liu", - "pubDate": "2021-11-17", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Pro-d2-mont-de-marsan-garde-le-pouvoir-colomiers-sur-le-podium/1299988#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 09:12:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Funders need to credit open science", - "description": "", - "content": "\n ", + "title": "Rugby - Bleues - Trois choses à savoir sur Chloé Jacquet, qui a marqué son premier essai international face à la Nouvelle-Zélande", + "description": "La jeune trois-quarts centre Chloé Jacquet (19 ans) a eu le plaisir de marquer son premier essai international face à la Nouvelle-Zélande samedi dernier (38-13) à l'occasion de sa deuxième sélection avec le quinze de France féminin.", + "content": "La jeune trois-quarts centre Chloé Jacquet (19 ans) a eu le plaisir de marquer son premier essai international face à la Nouvelle-Zélande samedi dernier (38-13) à l'occasion de sa deuxième sélection avec le quinze de France féminin.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03418-1", - "creator": "Hans de Jonge", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Trois-choses-a-savoir-sur-chloe-jacquet-qui-a-marque-son-premier-essai-international-face-a-la-nouvelle-zelande/1299368#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 09:05:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Presidents of Royal Society live long lives", - "description": "", - "content": "\n ", + "title": "Rugby - À quelle heure et sur quelle chaîne regarder France-Nouvelle-Zélande?", + "description": "Pour son dernier match de l'automne, le quinze de France affronte ce samedi les All Blacks. Le match sera à suivre en direct à 21 heures sur France 2. L'équipe de France féminine retrouvera également les Black Ferns un peu plus tôt dans la journée.", + "content": "Pour son dernier match de l'automne, le quinze de France affronte ce samedi les All Blacks. Le match sera à suivre en direct à 21 heures sur France 2. L'équipe de France féminine retrouvera également les Black Ferns un peu plus tôt dans la journée.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03420-7", - "creator": "Oscar S. Wilson", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Medias/Actualites/A-quelle-heure-et-sur-quelle-chaine-regarder-france-nouvelle-zelande/1299581#xtor=RSS-1", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 08:15:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Link knowledge and action networks to tackle disasters", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Antoine Dupont : « Une étape importante de notre construction »", + "description": "Le capitaine du quinze de France Antoine Dupont avoue son impatience mais ne veut pas déifier les All Blacks avant le choc de samedi soir à Saint-Denis, qu'il voit comme une bonne occasion de renforcer la cohésion des Bleus.", + "content": "Le capitaine du quinze de France Antoine Dupont avoue son impatience mais ne veut pas déifier les All Blacks avant le choc de samedi soir à Saint-Denis, qu'il voit comme une bonne occasion de renforcer la cohésion des Bleus.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03419-0", - "creator": "Jim Falk", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", - "read": false, + "link": "https://www.lequipe.fr/Rugby/Actualites/Antoine-dupont-une-etape-importante-de-notre-construction/1299914#xtor=RSS-1", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 20:00:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Reflections on a pioneer in electrical engineering", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Les spectateurs de France - Nouvelle-Zélande invités à se rendre tôt au Stade de France samedi", + "description": "Le Stade de France fera le plein samedi soir pour le choc de la tournée de novembre entre la France et les All Blacks (21h00). La FFR invite les spectateurs à se rendre tôt au stade.", + "content": "Le Stade de France fera le plein samedi soir pour le choc de la tournée de novembre entre la France et les All Blacks (21h00). La FFR invite les spectateurs à se rendre tôt au stade.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03417-2", - "creator": "Polina Bayvel", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Les-spectateurs-de-france-nouvelle-zelande-invites-a-se-rendre-tot-au-stade-de-france-samedi/1299889#xtor=RSS-1", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:26:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "High-speed spinning yields some of the toughest spider silk ever found", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - IRL - Quatre changements côté irlandais pour le test contre l'Argentine", + "description": "Après leur exploit face à la Nouvelle-Zélande (29-20), les Irlandais se présenteront contre l'Argentine avec une ligne de trois-quarts remodelée, dimanche (15h15).", + "content": "Après leur exploit face à la Nouvelle-Zélande (29-20), les Irlandais se présenteront contre l'Argentine avec une ligne de trois-quarts remodelée, dimanche (15h15).", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03443-0", + "link": "https://www.lequipe.fr/Rugby/Actualites/Quatre-changements-cote-irlandais-pour-le-test-contre-l-argentine/1299852#xtor=RSS-1", "creator": "", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", - "read": false, + "pubDate": "Fri, 19 Nov 2021 16:18:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "From the archive", - "description": "", - "content": "\n ", + "title": "Rugby - Transferts - Joel Kpoku quitte les Saracens pour le LOU", + "description": "Le jeune deuxième ligne anglais, Joel Kpoku, arrive dans le Top 14. Il quitte les Saracens pour rejoindre le LOU.", + "content": "Le jeune deuxième ligne anglais, Joel Kpoku, arrive dans le Top 14. Il quitte les Saracens pour rejoindre le LOU.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03382-w", + "link": "https://www.lequipe.fr/Rugby/Actualites/Joel-kpoku-rejoint-le-top-14-et-le-lou/1299831#xtor=RSS-1", "creator": "", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Fri, 19 Nov 2021 14:56:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Stagnating salaries present hurdles to career satisfaction", - "description": "", - "content": "\n ", + "title": "Rugby - Premiership - George Ford va quitter Leicester pour les Sale Sharks", + "description": "L'ouvreur international George Ford va quitter son club de Leicester à l'issue de la saison pour une autre formation de Premiership, les Sale Sharks.", + "content": "L'ouvreur international George Ford va quitter son club de Leicester à l'issue de la saison pour une autre formation de Premiership, les Sale Sharks.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03041-0", - "creator": "Chris Woolston", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/George-ford-va-quitter-leicester-pour-les-sale-sharks/1299823#xtor=RSS-1", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:22:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "COP26 didn’t solve everything — but researchers must stay engaged", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - Dans l'ère professionnelle, les All Blacks ont à huit reprises perdu au moins deux matches d'affilée", + "description": "Il est rare que la Nouvelle-Zélande, battue en Irlande le week-end dernier et qui affronte la France ce samedi, perde deux matches de rang. Mais ça arrive...", + "content": "Il est rare que la Nouvelle-Zélande, battue en Irlande le week-end dernier et qui affronte la France ce samedi, perde deux matches de rang. Mais ça arrive...", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03433-2", + "link": "https://www.lequipe.fr/Rugby/Actualites/Dans-l-ere-professionnelle-les-all-blacks-ont-a-huit-reprises-perdu-au-moins-deux-matches-d-affilee/1299812#xtor=RSS-1", "creator": "", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Fri, 19 Nov 2021 13:56:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Daily briefing: How some fish can live for centuries", - "description": "", - "content": "\n ", + "title": "Rugby - Pro D2 - Oyonnax domine Bayonne en Pro D2", + "description": "Dans le choc de haut de tableau, Oyonnax l'a emporté sur l'Aviron Bayonnais 30-21 en ouverture de la onzième journée de Pro D2.", + "content": "Dans le choc de haut de tableau, Oyonnax l'a emporté sur l'Aviron Bayonnais 30-21 en ouverture de la onzième journée de Pro D2.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03473-8", - "creator": "Flora Graham", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Oyonnax-domine-bayonne-en-pro-d2/1299716#xtor=RSS-1", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 00:06:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Yes, science can weigh in on abortion law", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - ANG - Owen Farrell absent trois mois", + "description": "Le demi d'ouverture ou centre de l'équipe d'Angleterre de rugby, Owen Farrell, va être opéré de la cheville et devrait manquer jusqu'à trois mois de compétition. C'est son club des Saracens qui a annoncé la nouvelle.", + "content": "Le demi d'ouverture ou centre de l'équipe d'Angleterre de rugby, Owen Farrell, va être opéré de la cheville et devrait manquer jusqu'à trois mois de compétition. C'est son club des Saracens qui a annoncé la nouvelle.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03434-1", - "creator": "Diana Greene Foster", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Owen-farrell-absent-trois-mois/1299653#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 19:07:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "COP26: Meet the scientists behind the crucial climate summit", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - La Nouvelle-Zélande avec Aaron Smith et Richie Mo'unga face à la France", + "description": "En l'absence de Beauden Barrett, le sélectionneur Ian Foster a choisi d'aligner Aaron Smith et Richie Mo'unga pour débuter le match face aux Bleus, samedi (21 h) au Stade de France. Same Cane fait également son retour comme titulaire.", + "content": "En l'absence de Beauden Barrett, le sélectionneur Ian Foster a choisi d'aligner Aaron Smith et Richie Mo'unga pour débuter le match face aux Bleus, samedi (21 h) au Stade de France. Same Cane fait également son retour comme titulaire.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03029-w", - "creator": "Quirin Schiermeier", - "pubDate": "2021-11-16", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/La-nouvelle-zelande-avec-aaron-smith-et-richie-mo-unga-face-a-la-france/1299631#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 17:26:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ancient mud bricks show adobe’s foundations 5,000 years ago", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - ANG - L'Angleterre avec Manu Tuilagi au centre pour le choc face à l'Afrique du Sud", + "description": "Le sélectionneur anglais Eddie Jones a procédé à plusieurs changements pour le choc contre l'Afrique du Sud ce samedi (16h15). Manu Tuilagi effectue son retour au centre, quand Joe Marchant sera titulaire à l'aile. Courtney Lawes sera capitaine en l'absence d'Owen Farrell.", + "content": "Le sélectionneur anglais Eddie Jones a procédé à plusieurs changements pour le choc contre l'Afrique du Sud ce samedi (16h15). Manu Tuilagi effectue son retour au centre, quand Joe Marchant sera titulaire à l'aile. Courtney Lawes sera capitaine en l'absence d'Owen Farrell.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03446-x", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-angleterre-avec-manu-tuilagi-au-centre-pour-le-choc-face-a-l-afrique-du-sud/1299613#xtor=RSS-1", "creator": "", - "pubDate": "2021-11-15", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "pubDate": "Thu, 18 Nov 2021 16:07:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The greener route to indigo blue", - "description": "", - "content": "\n ", + "title": "Rugby - Bleues - Deux changements dans le quinze de France contre les Black Ferns", + "description": "Chloé Jacquet et Marie-Aurélie Castel débuteront à l'arrière et sur l'aile gauche le test des Bleues contre la Nouvelle-Zélande samedi (15 heures) à Castres.", + "content": "Chloé Jacquet et Marie-Aurélie Castel débuteront à l'arrière et sur l'aile gauche le test des Bleues contre la Nouvelle-Zélande samedi (15 heures) à Castres.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03437-y", - "creator": "James Mitchell Crow", - "pubDate": "2021-11-15", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Deux-changements-dans-le-quinze-de-france-contre-les-black-ferns/1299596#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 15:14:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "More Alzheimer’s drugs head for FDA review: what scientists are watching", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - ÉCO - Hamish Watson de retour pour l'Écosse face au Japon, Finn Russell titulaire à l'ouverture", + "description": "L'Écosse accueillera le Japon à Édimbourg pour le dernier match de sa tournée d'automne ce samedi (14 heures), avec Finn Russell à l'ouverture. Les coéquipiers du joueur du Racing 92 enregistrent par ailleurs le retour d'Hamish Watson.", + "content": "L'Écosse accueillera le Japon à Édimbourg pour le dernier match de sa tournée d'automne ce samedi (14 heures), avec Finn Russell à l'ouverture. Les coéquipiers du joueur du Racing 92 enregistrent par ailleurs le retour d'Hamish Watson.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03410-9", - "creator": "Asher Mullard", - "pubDate": "2021-11-15", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Hamish-watson-de-retour-pour-l-ecosse-face-au-japon-finn-russell-titulaire-a-l-ouverture/1299593#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 15:06:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Daily briefing: New mineral discovered inside a diamond", - "description": "", - "content": "\n ", + "title": "Rugby - Tests - AUS - Rory Arnold et Kurtley Beale titulaires avec l'Australie contre le pays de Galles", + "description": "Le Toulousain Rory Arnold et le joueur du Racing 92 Kurtley Beale seront dans le XV de départ de l'Australie, pour la rencontre au pays de Galles ce samedi (18h30). Côté gallois, Josh Adams revient à l'aile, Halaholo au centre, et Williams à la mêlée.", + "content": "Le Toulousain Rory Arnold et le joueur du Racing 92 Kurtley Beale seront dans le XV de départ de l'Australie, pour la rencontre au pays de Galles ce samedi (18h30). Côté gallois, Josh Adams revient à l'aile, Halaholo au centre, et Williams à la mêlée.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03468-5", - "creator": "Flora Graham", - "pubDate": "2021-11-15", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Rory-arnold-et-kurtley-beale-titulaires-avec-l-australie-contre-le-pays-de-galles/1299590#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 14:55:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to turn your ideas into patents", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Quinze de France : Fabien Galthié explique ses choix pour affronter la Nouvelle-Zélande", + "description": "La fin de l'association entre Jalibert et Ntamack, la titularisation de Woki en deuxième ligne, une troisième ligne densifiée, la titularisation de Danty au centre... Fabien Galthié est revenu en conférence de presse sur ses choix pour affronter la Nouvelle-Zélande samedi soir (21h00).", + "content": "La fin de l'association entre Jalibert et Ntamack, la titularisation de Woki en deuxième ligne, une troisième ligne densifiée, la titularisation de Danty au centre... Fabien Galthié est revenu en conférence de presse sur ses choix pour affronter la Nouvelle-Zélande samedi soir (21h00).", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03438-x", - "creator": "Andy Tay", - "pubDate": "2021-11-15", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Quinze-de-france-fabien-galthie-explique-ses-choix-pour-affronter-la-nouvelle-zelande/1299573#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 13:15:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Friction: from fingerprints to climate change", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - Composition du XV de France face à la Nouvelle-Zélande : Ntamack de retour à l'ouverture, Jalibert remplaçant", + "description": "Pour affronter la Nouvelle-Zélande (samedi, 21 heures), le staff des Bleus a choisi de titulariser Romain Ntamack à l'ouverture, à la place de Matthieu Jalibert.", + "content": "Pour affronter la Nouvelle-Zélande (samedi, 21 heures), le staff des Bleus a choisi de titulariser Romain Ntamack à l'ouverture, à la place de Matthieu Jalibert.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03436-z", - "creator": "Anna Novitzky", - "pubDate": "2021-11-15", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/Composition-du-xv-de-france-face-a-la-nouvelle-zelande-romain-ntamack-de-retour-a-l-ouverture/1299563#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 12:11:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "COP26 hasn’t solved the problem: scientists react to UN climate deal", - "description": "", - "content": "\n ", - "category": "", - "link": "https://www.nature.com/articles/d41586-021-03431-4", - "creator": "Ehsan Masood", - "pubDate": "2021-11-14", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "title": "Rugby - Bleus - Le Top 5 des France - Nouvelle-Zélande", + "description": "Retour en images sur cinq rencontres marquantes entre la France et la Nouvelle-Zélande.", + "content": "Retour en images sur cinq rencontres marquantes entre la France et la Nouvelle-Zélande.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Le-top-5-des-france-nouvelle-zelande/1299191#xtor=RSS-1", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 09:45:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "COP26: Glasgow Climate Pact signed into history", - "description": "", - "content": "\n ", + "title": "Rugby - Bleus - France - Nouvelle-Zélande, 10 ans après la finale de la Coupe du monde 2011", + "description": "Le XV de France affronte les Blacks ce samedi (21 heures), dix ans après la finale de Coupe du monde perdue en 2011 à l'Eden Park (8-7). Une défaite sur le fil pour la bande à Dimitri Yachvili et un souvenir éternel pour les Tricolores.", + "content": "Le XV de France affronte les Blacks ce samedi (21 heures), dix ans après la finale de Coupe du monde perdue en 2011 à l'Eden Park (8-7). Une défaite sur le fil pour la bande à Dimitri Yachvili et un souvenir éternel pour les Tricolores.", "category": "", - "link": "https://www.nature.com/articles/d41586-021-03464-9", - "creator": "Flora Graham", - "pubDate": "2021-11-13", - "folder": "00.03 News/News - EN", - "feed": "Nature", + "link": "https://www.lequipe.fr/Rugby/Actualites/France-nouvelle-zelande-10-ans-apres-la-finale-de-la-coupe-du-monde-2011/1299502#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 23:20:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - EN", - "name": "Nature" - }, - "11": { - "title": "NYT > Top Stories", - "subtitle": "", - "link": "https://www.nytimes.com", - "image": "https://static01.nyt.com/images/misc/NYT_logo_rss_250x40.png", - "description": "", - "items": [ + }, { - "title": "Divisive Case Fueled Debate Over Vigilantism and Gun Rights", - "description": "Two people familiar with the proceedings said the jury has reached a decision after deliberating for three and a half days. Here’s the latest.", - "content": "Two people familiar with the proceedings said the jury has reached a decision after deliberating for three and a half days. Here’s the latest.", + "title": "Rugby - Bleus - Jean Dujardin présent à Marcoussis avant le match des Bleus face aux All Blacks", + "description": "L'acteur Jean Dujardin était présent au CNR de Marcoussis ce mercredi pour discuter avec les Bleus et assister à l'entraînement avant le match face aux All Blacks samedi au Stade de France (21 heures).", + "content": "L'acteur Jean Dujardin était présent au CNR de Marcoussis ce mercredi pour discuter avec les Bleus et assister à l'entraînement avant le match face aux All Blacks samedi au Stade de France (21 heures).", "category": "", - "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial", - "creator": "The New York Times", - "pubDate": "Fri, 19 Nov 2021 22:34:47 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", - "read": true, + "link": "https://www.lequipe.fr/Rugby/Actualites/Jean-dujardin-present-a-marcoussis-avant-le-match-des-bleus-face-aux-all-blacks/1299497#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 22:56:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Elation and Dismay as Crowds at Courthouse Hear of Rittenhouse Verdict", - "description": "Small groups of supporters and detractors of Kyle Rittenhouse reacted to news of the not-guilty verdict as a horde of journalists looked on.", - "content": "Small groups of supporters and detractors of Kyle Rittenhouse reacted to news of the not-guilty verdict as a horde of journalists looked on.", - "category": "Rittenhouse, Kyle", - "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial/rittenhouse-reaction-courthouse-crowd", - "creator": "Dan Hinkel", - "pubDate": "Fri, 19 Nov 2021 20:02:58 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Thomas Ramos et 13 autres Bleus laissés à disposition de leur club", + "description": "Le staff des Bleus a libéré 14 joueurs avant le match face aux All Blacks samedi (21 heures), dont Thomas Ramos mais aussi les blessés Julien Marchand et Sekou Macalou.", + "content": "Le staff des Bleus a libéré 14 joueurs avant le match face aux All Blacks samedi (21 heures), dont Thomas Ramos mais aussi les blessés Julien Marchand et Sekou Macalou.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Thomas-ramos-et-13-autres-bleus-laisses-a-disposition-de-leur-club/1299490#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 22:17:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Conservatives celebrate Rittenhouse’s acquittal, as liberals lament the verdict.", - "description": "", - "content": "", - "category": "Vigilantes", - "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial/conservatives-celebrate-rittenhouses-acquittal-as-liberals-lament-the-verdict", - "creator": "Jennifer Medina", - "pubDate": "Fri, 19 Nov 2021 20:58:59 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - AFS - Rassie Erasmus suspendu deux mois pour avoir critiqué des arbitres", + "description": "Pour avoir critiqué des arbitres lors de la tournée des Lions britanniques et irlandais, Rassie Erasmus, le directeur du rugby sud-africain, a été suspendu deux mois, mercredi.", + "content": "Pour avoir critiqué des arbitres lors de la tournée des Lions britanniques et irlandais, Rassie Erasmus, le directeur du rugby sud-africain, a été suspendu deux mois, mercredi.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Rassie-erasmus-suspendu-deux-mois-pour-avoir-critique-des-arbitres/1299458#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 20:59:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Having Rittenhouse Testify Was ‘Not a Close Call,’ His Lawyer Says", - "description": "Mock juries used by his defense team to test their case reacted much more favorably when he testified, his lead lawyer said.", - "content": "Mock juries used by his defense team to test their case reacted much more favorably when he testified, his lead lawyer said.", - "category": "Murders, Attempted Murders and Homicides", - "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial/rittenhouse-testimony-sobbing", - "creator": "Sophie Kasakove", - "pubDate": "Fri, 19 Nov 2021 21:46:56 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - World Rugby lance une campagne de sensibilisation à la santé cérébrale pour les joueurs de haut niveau", + "description": "World Rugby a annoncé mercredi la mise en place d'une campagne de sensibilisation pour les joueurs de haut niveau à propos de la santé cérébrale.", + "content": "World Rugby a annoncé mercredi la mise en place d'une campagne de sensibilisation pour les joueurs de haut niveau à propos de la santé cérébrale.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/World-rugby-lance-une-campagne-de-sensibilisation-a-la-sante-cerebrale-pour-les-joueurs-de-haut-niveau/1299448#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 20:15:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "House Passes Biden’s Build Back Better Bill", - "description": "The vote was months in the making for the roughly $2 trillion measure, one of the most consequential bills in decades. Now it faces a difficult path in the Senate.", - "content": "The vote was months in the making for the roughly $2 trillion measure, one of the most consequential bills in decades. Now it faces a difficult path in the Senate.", - "category": "House of Representatives", - "link": "https://www.nytimes.com/2021/11/19/us/politics/house-passes-reconciliation-bill.html", - "creator": "Emily Cochrane and Jonathan Weisman", - "pubDate": "Fri, 19 Nov 2021 22:14:47 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Paul Willemse, avant d'affronter les All Blacks : « Pas un match comme les autres »", + "description": "Le deuxième-ligne du quinze de France Paul Willemse reconnaît que le choc face aux All Blacks, samedi soir au Stade de France (21 heures), tient une place à part dans l'esprit des joueurs tricolores.", + "content": "Le deuxième-ligne du quinze de France Paul Willemse reconnaît que le choc face aux All Blacks, samedi soir au Stade de France (21 heures), tient une place à part dans l'esprit des joueurs tricolores.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Paul-willemse-avant-d-affronter-les-all-blacks-pas-un-match-comme-les-autres/1299437#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 18:51:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Build Back Better May Not Have Passed a Decade Ago", - "description": "President Barack Obama barely muscled his health law through the House. But income inequality, economic stagnation and a pandemic propelled an even more ambitious bill.", - "content": "President Barack Obama barely muscled his health law through the House. But income inequality, economic stagnation and a pandemic propelled an even more ambitious bill.", - "category": "United States Politics and Government", - "link": "https://www.nytimes.com/2021/11/19/us/politics/democrats-economic-bill.html", - "creator": "Jonathan Weisman", - "pubDate": "Fri, 19 Nov 2021 20:46:14 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Romain Ntamack ouvreur à l'entraînement avant les All Blacks, Matthieu Jalibert remplaçant", + "description": "Lors de l'entraînement des Bleus ouvert à la presse et au public ce mercredi, Romain Ntamack occupait le poste d'ouvreur, tandis que Matthieu Jalibert avait la chasuble de remplaçant.", + "content": "Lors de l'entraînement des Bleus ouvert à la presse et au public ce mercredi, Romain Ntamack occupait le poste d'ouvreur, tandis que Matthieu Jalibert avait la chasuble de remplaçant.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Romain-ntamack-ouvreur-a-l-entrainement-avant-les-all-blacks/1299422#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 17:59:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "House Passes the Largest Expenditure on Climate in U.S. History", - "description": "The $555 billion package is designed to lure the country away from fossil fuels. It faces an uncertain path in the Senate.", - "content": "The $555 billion package is designed to lure the country away from fossil fuels. It faces an uncertain path in the Senate.", - "category": "Global Warming", - "link": "https://www.nytimes.com/2021/11/19/climate/climate-change-bill.html", - "creator": "Coral Davenport", - "pubDate": "Fri, 19 Nov 2021 22:08:38 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Elite 1 (F) - L'AS Bayonne forfait pour le reste de la saison en Élite 1", + "description": "Le conseil d'administration de l'AS Bayonne a décidé de déclarer forfait son équipe féminine pour le reste de la saison d'Élite 1. Les dirigeants n'ont pas apprécié la fronde des joueuses qui ont dénoncé un manque de moyens.", + "content": "Le conseil d'administration de l'AS Bayonne a décidé de déclarer forfait son équipe féminine pour le reste de la saison d'Élite 1. Les dirigeants n'ont pas apprécié la fronde des joueuses qui ont dénoncé un manque de moyens.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/L-as-bayonne-forfait-pour-le-reste-de-la-saison-en-elite-1/1299376#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 15:19:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kevin McCarthy Speaks for More Than Eight Hours to Delay a House Vote", - "description": "The House minority leader began speaking Thursday night against President Biden’s social policy bill. He stopped at 5:10 a.m. Friday, after setting a record for the longest speech.", - "content": "The House minority leader began speaking Thursday night against President Biden’s social policy bill. He stopped at 5:10 a.m. Friday, after setting a record for the longest speech.", - "category": "McCarthy, Kevin (1965- )", - "link": "https://www.nytimes.com/2021/11/19/us/politics/kevin-mccarthy-speech.html", - "creator": "Jonathan Weisman and Jenny Gross", - "pubDate": "Fri, 19 Nov 2021 18:59:38 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Disparition - Mort accidentelle du fils de Jannie Du Plessis", + "description": "Le fils de l'ancien pilier sud-africain de Montpellier, âgé d'un an, s'est noyé mardi dans la piscine familiale.", + "content": "Le fils de l'ancien pilier sud-africain de Montpellier, âgé d'un an, s'est noyé mardi dans la piscine familiale.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Mort-accidentelle-du-fils-de-jannie-du-plessis/1299375#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 15:18:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "C.D.C. Panel Endorses Covid Vaccine Booster Shots for All Adults", - "description": "As infections rise, Americans over 18 will be permitted to get extra doses. But it’s not clear boosters really are needed by so many people, or that the shots will turn back the pandemic.", - "content": "As infections rise, Americans over 18 will be permitted to get extra doses. But it’s not clear boosters really are needed by so many people, or that the shots will turn back the pandemic.", - "category": "your-feed-science", - "link": "https://www.nytimes.com/2021/11/19/health/covid-boosters-cdc.html", - "creator": "Apoorva Mandavilli", - "pubDate": "Fri, 19 Nov 2021 22:34:54 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Tests - NZL - Beauden Barrett (Nouvelle-Zélande) vers un forfait face à la France", + "description": "Selon John Plumtree, l'entraîneur adjoint des All Blacks, l'ouvreur aux 101 sélections n'est pas encore remis de sa commotion et semble très incertain face aux Bleus, samedi (21h00).", + "content": "Selon John Plumtree, l'entraîneur adjoint des All Blacks, l'ouvreur aux 101 sélections n'est pas encore remis de sa commotion et semble très incertain face aux Bleus, samedi (21h00).", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Beauden-barrett-nouvelle-zelande-vers-un-forfait-face-a-la-france/1299335#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 13:09:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "C.D.C. Panel Endorses Pfizer and Moderna Boosters for All Adults", - "description": "Earlier, the F.D.A. also authorized boosters for all adults. The moves come as holiday travel could bring a surge of cases. Here’s the latest on Covid.", - "content": "Earlier, the F.D.A. also authorized boosters for all adults. The moves come as holiday travel could bring a surge of cases. Here’s the latest on Covid.", + "title": "Question du jour - Approuvez-vous le retour probable à l'ouverture de Romain Ntamack contre les All Blacks ?", + "description": "La question du jour.", + "content": "La question du jour.", "category": "", - "link": "https://www.nytimes.com/live/2021/11/19/world/covid-vaccine-boosters-mandates", - "creator": "The New York Times", - "pubDate": "Fri, 19 Nov 2021 22:15:47 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "link": "https://www.lequipe.fr/Rugby/Actualites/Approuvez-vous-le-retour-probable-a-l-ouverture-de-romain-ntamack-contre-les-all-blacks/1299252#xtor=RSS-1", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 00:05:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Austria Announces Covid Vaccine Mandate, Crossing a Threshold for Europe", - "description": "The extraordinary step shows that governments desperate to safeguard public health and economic recoveries are increasingly willing to push for once unthinkable measures.", - "content": "The extraordinary step shows that governments desperate to safeguard public health and economic recoveries are increasingly willing to push for once unthinkable measures.", - "category": "Politics and Government", - "link": "https://www.nytimes.com/2021/11/19/world/europe/austria-covid-vaccine-mandate-lockdown.html", - "creator": "Jason Horowitz and Melissa Eddy", - "pubDate": "Fri, 19 Nov 2021 22:55:10 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Bleus : Romain Ntamack en 10 face aux All Blacks ?", + "description": "Comme annoncé par RMC Sport et confirmé par L'Equipe, Romain Ntamack devrait retrouver le poste de demi d'ouverture face à la Nouvelle-Zélande samedi au Stade de France (21 heures).", + "content": "Comme annoncé par RMC Sport et confirmé par L'Equipe, Romain Ntamack devrait retrouver le poste de demi d'ouverture face à la Nouvelle-Zélande samedi au Stade de France (21 heures).", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Bleus-romain-ntamack-en-10-face-aux-all-blacks/1299222#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 20:49:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Wisconsin Republicans Push to Take Over the State’s Elections", - "description": "Led by Senator Ron Johnson, G.O.P. officials want to eliminate a bipartisan elections agency — and maybe send its members to jail.", - "content": "Led by Senator Ron Johnson, G.O.P. officials want to eliminate a bipartisan elections agency — and maybe send its members to jail.", - "category": "Wisconsin", - "link": "https://www.nytimes.com/2021/11/19/us/politics/wisconsin-republicans-decertify-election.html", - "creator": "Reid J. Epstein", - "pubDate": "Fri, 19 Nov 2021 15:00:08 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Podcast - Crunch, le podcast rugby de L'Équipe : autopsie d'All Blacks", + "description": "À quelques jours du choc entre la France et la Nouvelle-Zélande, revue de troupes côté All Blacks dans Crunch : comment expliquer leur défaite en Irlande ? En quoi les Bleus peuvent-ils s'en inspirer ?", + "content": "À quelques jours du choc entre la France et la Nouvelle-Zélande, revue de troupes côté All Blacks dans Crunch : comment expliquer leur défaite en Irlande ? En quoi les Bleus peuvent-ils s'en inspirer ?", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Crunch-le-podcast-rugby-de-l-equipe-autopsie-d-all-blacks/1299199#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 18:41:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Discussions of Race Are Notably Absent in Trial of Arbery Murder Suspects", - "description": "Many outside observers say Ahmaud Arbery’s death at the hands of three white men is a prominent example of racial violence. But the jury never heard that argument.", - "content": "Many outside observers say Ahmaud Arbery’s death at the hands of three white men is a prominent example of racial violence. But the jury never heard that argument.", - "category": "Black People", - "link": "https://www.nytimes.com/2021/11/19/us/ahmaud-arbery-shooting-race.html", - "creator": "Tariro Mzezewa, Giulia Heyward and Richard Fausset", - "pubDate": "Fri, 19 Nov 2021 19:20:14 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Tests - Tonga, une équipe de rugby pas comme les autres", + "description": "Le photographe de L'Équipe, Alain Mounic, a accompagné les Tonga dans leur préparation, avant leur match face aux Barbarians français à Lyon (défaite 42-17).", + "content": "Le photographe de L'Équipe, Alain Mounic, a accompagné les Tonga dans leur préparation, avant leur match face aux Barbarians français à Lyon (défaite 42-17).", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Tonga-une-equipe-de-rugby-pas-comme-les-autres/1299170#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 16:10:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Who Is Afghanistan's Soccer Team Playing For?", - "description": "Afghanistan’s national soccer team played a rare match this week. But with the Taliban in control of their country, what, and whom, are they playing for?", - "content": "Afghanistan’s national soccer team played a rare match this week. But with the Taliban in control of their country, what, and whom, are they playing for?", - "category": "Soccer", - "link": "https://www.nytimes.com/2021/11/18/sports/soccer/afghanistan-soccer-taliban.html", - "creator": "James Montague and Bradley Secker", - "pubDate": "Fri, 19 Nov 2021 16:59:22 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Mondial 2023 - Land Rover, cinquième partenaire majeur du Mondial 2023", + "description": "Le constructeur automobile britannique Land Rover est devenu, ce mardi, le cinquième partenaire majeur de la prochaine Coupe du monde masculine (8 septembre-28 octobre 2023) en France.", + "content": "Le constructeur automobile britannique Land Rover est devenu, ce mardi, le cinquième partenaire majeur de la prochaine Coupe du monde masculine (8 septembre-28 octobre 2023) en France.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Land-rover-cinquieme-partenaire-majeur-du-mondial-2023/1299165#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 15:41:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Modi to Repeal India Farm Laws Following Protests", - "description": "A bungled response to Covid and a struggling economy have hurt his party’s standing, leaving it vulnerable to a well-organized protest movement.", - "content": "A bungled response to Covid and a struggling economy have hurt his party’s standing, leaving it vulnerable to a well-organized protest movement.", - "category": "India", - "link": "https://www.nytimes.com/2021/11/18/world/asia/india-farmers-modi.html", - "creator": "Emily Schmall, Karan Deep Singh and Sameer Yasir", - "pubDate": "Fri, 19 Nov 2021 22:32:12 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Tests - AFS - Cobus Reinach et Handré Pollard, la charnière sud-africaine de Montpellier, titulaire face à l'Angleterre", + "description": "Pour le dernier test de sa tournée d'automne, l'Afrique du Sud procède à trois changements. Contre l'Angleterre (ce samedi, 16h15), la charnière de Montpellier Cobus Reinach-Handré Pollard sera titulaire.", + "content": "Pour le dernier test de sa tournée d'automne, l'Afrique du Sud procède à trois changements. Contre l'Angleterre (ce samedi, 16h15), la charnière de Montpellier Cobus Reinach-Handré Pollard sera titulaire.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Cobus-reinach-et-handre-pollard-la-charniere-sud-africaine-de-montpellier-titulaire-samedi-face-a-l-angleterre/1299149#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 14:51:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "On Putin’s Strategic Chessboard, a Series of Destabilizing Moves", - "description": "In the stretch of Europe from the Baltic Sea to the Black Sea, where Moscow and the West have competed for influence for decades, the threat of a new military conflict is growing.", - "content": "In the stretch of Europe from the Baltic Sea to the Black Sea, where Moscow and the West have competed for influence for decades, the threat of a new military conflict is growing.", - "category": "United States International Relations", - "link": "https://www.nytimes.com/2021/11/19/world/europe/russia-putin-belarus-ukraine.html", - "creator": "Anton Troianovski", - "pubDate": "Fri, 19 Nov 2021 19:59:22 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Justice - Mohamed Haouas finalement jugé le 4 février 2022 pour une affaire de cambriolages", + "description": "Alors que son procès avait été renvoyé à plusieurs reprises et qu'il devait se tenir en début d'année, Mohamed Haouas sera finalement jugé le 4 février 2022.", + "content": "Alors que son procès avait été renvoyé à plusieurs reprises et qu'il devait se tenir en début d'année, Mohamed Haouas sera finalement jugé le 4 février 2022.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Mohamed-haouas-finalement-juge-le-4-fevrier-2022-pour-une-affaire-de-cambriolages/1299133#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 12:56:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "After Time in U.S. Prisons, Maria Butina Now Sits in Russia's Parliament", - "description": "Maria Butina, convicted of serving as an unregistered foreign agent before and after the 2016 election, insists she “wasn’t a spy” and that her Duma seat is “not a reward.” Her critics call her a Kremlin “trophy.”", - "content": "Maria Butina, convicted of serving as an unregistered foreign agent before and after the 2016 election, insists she “wasn’t a spy” and that her Duma seat is “not a reward.” Her critics call her a Kremlin “trophy.”", - "category": "Content Type: Personal Profile", - "link": "https://www.nytimes.com/2021/11/19/world/europe/maria-butina-russia-duma.html", - "creator": "Valerie Hopkins", - "pubDate": "Fri, 19 Nov 2021 10:00:29 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby à 7 - Hongkong - Le tournoi de Hongkong reporté à novembre 2022", + "description": "Le tournoi de rugby à 7 de Hongkong, comptant pour le circuit mondial, a été décalé d'avril à novembre 2022, ont annoncé ce mardi les organisateurs.", + "content": "Le tournoi de rugby à 7 de Hongkong, comptant pour le circuit mondial, a été décalé d'avril à novembre 2022, ont annoncé ce mardi les organisateurs.", + "category": "", + "link": "https://www.lequipe.fr/Rugby-a-7/Actualites/Le-tournoi-de-hongkong-reporte-a-novembre-2022/1299120#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 12:22:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Decision That Cost Hitler the War", - "description": "“Hitler’s American Gamble,” by Brendan Simms and Charlie Laderman, examines Hitler’s ill-fated choice to declare war on the United States.", - "content": "“Hitler’s American Gamble,” by Brendan Simms and Charlie Laderman, examines Hitler’s ill-fated choice to declare war on the United States.", - "category": "Books and Literature", - "link": "https://www.nytimes.com/2021/11/19/books/review/hitlers-american-gamble-brendan-simms-charlie-laderman.html", - "creator": "Benjamin Carter Hett", - "pubDate": "Fri, 19 Nov 2021 10:00:04 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Tests - James Slipper capitaine des Wallabies face au pays de Galles", + "description": "James Slipper sera capitaine de l'équipe d'Australie pour le test contre le pays de Galles samedi.", + "content": "James Slipper sera capitaine de l'équipe d'Australie pour le test contre le pays de Galles samedi.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/James-slipper-capitaine-des-wallabies-face-au-pays-de-galles/1299111#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 11:42:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "It Really Would Help if People Learned to Email", - "description": "You should never find out that you were someone’s second choice.", - "content": "You should never find out that you were someone’s second choice.", - "category": "Work-Life Balance", - "link": "https://www.nytimes.com/2021/11/19/business/roxane-gay-work-friend-hiring.html", - "creator": "Roxane Gay", - "pubDate": "Fri, 19 Nov 2021 22:01:40 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Mondial 2023 - La GMF s'engage avec la Coupe du monde de rugby 2023", + "description": "La GMF s'est engagée en tant que sponsor de la Coupe du monde 2023 qui aura lieu en France du 8 septembre au 28 octobre.", + "content": "La GMF s'est engagée en tant que sponsor de la Coupe du monde 2023 qui aura lieu en France du 8 septembre au 28 octobre.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/La-gmf-s-engage-avec-la-coupe-du-monde-de-rugby-2023/1299094#xtor=RSS-1", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 10:00:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kyle Rittenhouse's Firearm Made Everything Worse", - "description": "Kyle Rittenhouse’s semiautomatic rifle endangered everybody around him —  and himself.", - "content": "Kyle Rittenhouse’s semiautomatic rifle endangered everybody around him —  and himself.", - "category": "Murders, Attempted Murders and Homicides", - "link": "https://www.nytimes.com/2021/11/17/opinion/kyle-rittenhouse-guns.html", - "creator": "Farhad Manjoo", - "pubDate": "Fri, 19 Nov 2021 19:50:37 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - ANG - Tests - Owen Farrell et Jamie George forfaits contre l'Afrique du Sud", + "description": "Le capitaine et le talonneur du XV anglais, blessés face à l'Australie, manqueront la revanche de la finale de la dernière coupe du Monde face aux Springboks samedi prochain.", + "content": "Le capitaine et le talonneur du XV anglais, blessés face à l'Australie, manqueront la revanche de la finale de la dernière coupe du Monde face aux Springboks samedi prochain.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Owen-farrell-et-jamie-george-forfaits-contre-l-afrique-du-sud/1299009#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 19:25:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The G.O.P. Has a Bad Men Problem", - "description": "The creeping not-so-casual misogyny is indicative of the dark path down which former President Donald Trump continues to lead the G.O.P.", - "content": "The creeping not-so-casual misogyny is indicative of the dark path down which former President Donald Trump continues to lead the G.O.P.", - "category": "Gosar, Paul (1958- )", - "link": "https://www.nytimes.com/2021/11/19/opinion/trump-gop-misogyny.html", - "creator": "Michelle Cottle", - "pubDate": "Fri, 19 Nov 2021 17:00:00 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Antoine Dupont nommé pour le titre de meilleur joueur du monde", + "description": "Le demi de mêlée des Bleus Antoine Dupont figure parmi les quatre joueurs retenus par World Rugby pour le titre de meilleur joueur de l'année 2021.", + "content": "Le demi de mêlée des Bleus Antoine Dupont figure parmi les quatre joueurs retenus par World Rugby pour le titre de meilleur joueur de l'année 2021.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Antoine-dupont-nomme-pour-le-titre-de-meilleur-joueur-du-monde/1298973#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 15:26:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Joe Biden's Infrastructure Bill Is a Big Success", - "description": "Voters may pummel Democrats next year, but future generations will be grateful. ", - "content": "Voters may pummel Democrats next year, but future generations will be grateful. ", - "category": "Infrastructure Investment and Jobs Act (2021)", - "link": "https://www.nytimes.com/2021/11/18/opinion/biden-infrastructure-stimulus-bill.html", - "creator": "David Brooks", - "pubDate": "Fri, 19 Nov 2021 19:53:46 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - XV de France : Julien Marchand forfait pour la Nouvelle-Zélande", + "description": "Touché aux côtes face à la Géorgie dimanche, le talonneur des Bleus Julien Marchand ne pourra pas jouer contre les All Blacks samedi soir au Stade de France.", + "content": "Touché aux côtes face à la Géorgie dimanche, le talonneur des Bleus Julien Marchand ne pourra pas jouer contre les All Blacks samedi soir au Stade de France.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Xv-de-france-julien-marchand-forfait-pour-la-nouvelle-zelande/1298946#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 13:08:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The New York Blood Center Can Get an Upgrade, if NIMBYs Don’t Get in the Way", - "description": "The New York Blood Center should be allowed to build its new life sciences center. ", - "content": "The New York Blood Center should be allowed to build its new life sciences center. ", - "category": "Buildings (Structures)", - "link": "https://www.nytimes.com/2021/11/19/opinion/new-york-blood-center-city-council.html", - "creator": "Mara Gay", - "pubDate": "Fri, 19 Nov 2021 22:12:24 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Médias - 3,5 millions de téléspectateurs devant France-Géorgie sur France 2", + "description": "Diffusé dimanche après-midi sur France 2, le test-match France-Géorgie (41-15) a réalisé une bonne audience.", + "content": "Diffusé dimanche après-midi sur France 2, le test-match France-Géorgie (41-15) a réalisé une bonne audience.", + "category": "", + "link": "https://www.lequipe.fr/Medias/Actualites/3-5-millions-de-telespectateurs-devant-france-georgie-sur-france-2/1298910#xtor=RSS-1", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 10:04:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kyle Rittenhouse’s Acquittal and America’s Gun Laws", - "description": "Readers react to the verdict, discuss America’s self-defense laws and make connections to the Ahmaud Arbery case. Also: The social policy bill.", - "content": "Readers react to the verdict, discuss America’s self-defense laws and make connections to the Ahmaud Arbery case. Also: The social policy bill.", - "category": "Rittenhouse, Kyle", - "link": "https://www.nytimes.com/2021/11/19/opinion/letters/kyle-rittenhouse-acquittal-guns.html", + "title": "Rugby - Tests - Joe Biden félicite le XV d'Irlande, victorieux des All Blacks", + "description": "Joe Biden, le président des États-Unis, qui a des origines irlandaises, a félicité dimanche le XV d'Irlande, vainqueur la veille des All Blacks (29-20).", + "content": "Joe Biden, le président des États-Unis, qui a des origines irlandaises, a félicité dimanche le XV d'Irlande, vainqueur la veille des All Blacks (29-20).", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Joe-biden-felicite-le-xv-d-irlande-victorieux-des-all-blacks/1298872#xtor=RSS-1", "creator": "", - "pubDate": "Fri, 19 Nov 2021 20:41:00 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "pubDate": "Sun, 14 Nov 2021 23:42:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Talk to Kids About Death and Loss", - "description": "Loss may be part of Thanksgiving this year. Here’s how to help kids navigate it.", - "content": "Loss may be part of Thanksgiving this year. Here’s how to help kids navigate it.", - "category": "Grief (Emotion)", - "link": "https://www.nytimes.com/2021/11/19/opinion/grief-mourning-children.html", - "creator": "Miranda Featherstone", - "pubDate": "Fri, 19 Nov 2021 17:38:08 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Pierre Bourgarit parmi les 14 joueurs appelés chez les Bleus pour préparer les All Blacks", + "description": "Le talonneur rochelais Pierre Bourgarit, qui n'avait pas encore été appelé cet automne, a été convoqué dimanche parmi les 14 joueurs supplémentaires pour préparer le dernier test de la tournée face à la Nouvelle-Zélande.", + "content": "Le talonneur rochelais Pierre Bourgarit, qui n'avait pas encore été appelé cet automne, a été convoqué dimanche parmi les 14 joueurs supplémentaires pour préparer le dernier test de la tournée face à la Nouvelle-Zélande.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Pierre-bourgarit-parmi-les-14-joueurs-appeles-chez-les-bleus-pour-preparer-les-all-blacks/1298848#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 22:04:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Belarus-Poland Border Chaos Is Partly of Europe’s Own Making", - "description": "The chaos at the Belarus-Poland border is partly of the European Union’s making.", - "content": "The chaos at the Belarus-Poland border is partly of the European Union’s making.", - "category": "Belarus", - "link": "https://www.nytimes.com/2021/11/19/opinion/poland-belarus-border-europe.html", - "creator": "Charlotte McDonald-Gibson", - "pubDate": "Fri, 19 Nov 2021 12:20:46 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Tests - NZL - Le centre all black Lienert-Brown forfait face à la France, Beauden Barrett en observation", + "description": "Le centre néo-zélandais Anton Lienert-Brown, blessé à une épaule, ne jouera pas face aux Bleus samedi soir prochain. L'ouvreur Beauden Barrett est lui suivi par le corps médical all black après une commotion.", + "content": "Le centre néo-zélandais Anton Lienert-Brown, blessé à une épaule, ne jouera pas face aux Bleus samedi soir prochain. L'ouvreur Beauden Barrett est lui suivi par le corps médical all black après une commotion.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Le-centre-all-black-lienert-brown-forfait-face-a-la-france-beauden-barrett-en-observation/1298834#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 21:11:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "What Happens After the Worst of the Pandemic Is Behind Us?", - "description": "We need to learn the right lessons from the pandemic.", - "content": "We need to learn the right lessons from the pandemic.", - "category": "Coronavirus (2019-nCoV)", - "link": "https://www.nytimes.com/2021/11/18/opinion/covid-winter-risk.html", - "creator": "Zeynep Tufekci", - "pubDate": "Fri, 19 Nov 2021 18:11:00 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Maxime Lucu, joyeuse première en Bleu face à la Géorgie", + "description": "Le demi de mêlée de l'UBB, Maxime Lucu, a fêté sa première sélection ce dimanche face à la Géorgie (41-15). Qui plus est chez lui, à Bordeaux.", + "content": "Le demi de mêlée de l'UBB, Maxime Lucu, a fêté sa première sélection ce dimanche face à la Géorgie (41-15). Qui plus est chez lui, à Bordeaux.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Maxime-lucu-joyeuse-premiere-en-bleu-face-a-la-georgie/1298810#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 19:11:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Case Against Loving Your Job", - "description": "Will work ever love us back? Two millennials disagree.", - "content": "Will work ever love us back? Two millennials disagree.", - "category": "Labor and Jobs", - "link": "https://www.nytimes.com/2021/11/19/opinion/ezra-klein-podcast-sarah-jaffe.html", - "creator": "‘The Ezra Klein Show’", - "pubDate": "Fri, 19 Nov 2021 20:28:34 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Gaël Fickou préfère retenir le « positif » après la victoire des Bleus face à la Géorgie", + "description": "Le trois-quarts centre du quinze de France Gaël Fickou a conscience que tout n'a pas été parfait dans la victoire des Bleus face à la Géorgie ce dimanche à Bordeaux (41-15). Mais il a apprécié le répondant de l'équipe.", + "content": "Le trois-quarts centre du quinze de France Gaël Fickou a conscience que tout n'a pas été parfait dans la victoire des Bleus face à la Géorgie ce dimanche à Bordeaux (41-15). Mais il a apprécié le répondant de l'équipe.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Gael-fickou-prefere-retenir-le-positif-apres-la-victoire-des-bleus-face-a-la-georgie/1298795#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 18:32:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "3 Women in the Senate Object to ‘Sexist’ Focus on Sinema’s Style", - "description": "The senators criticize The Times’s coverage of their colleague’s style and fashion choices.", - "content": "The senators criticize The Times’s coverage of their colleague’s style and fashion choices.", - "category": "Sinema, Kyrsten", - "link": "https://www.nytimes.com/2021/11/19/opinion/letters/kyrsten-sinema-senate.html", + "title": "Rugby - Tests - Le pays de Galles se défait des Fidji", + "description": "Les Gallois ont souffert pour l'emporter (38-23) dimanche soir à Cardiff face aux Fidjiens, profitant de vingt minutes en double supériorité numérique, quinze contre treize.", + "content": "Les Gallois ont souffert pour l'emporter (38-23) dimanche soir à Cardiff face aux Fidjiens, profitant de vingt minutes en double supériorité numérique, quinze contre treize.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Le-pays-de-galles-se-defait-des-fidji/1298793#xtor=RSS-1", "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:39:43 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "pubDate": "Sun, 14 Nov 2021 18:23:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Suburbs Are Poorer and More Diverse Than We Realize", - "description": "Understanding diversity in the suburbs is a key to winning elections.", - "content": "Understanding diversity in the suburbs is a key to winning elections.", - "category": "Suburbs", - "link": "https://www.nytimes.com/2021/11/18/opinion/suburbs-poor-diverse.html", - "creator": "Jay Caspian Kang", - "pubDate": "Thu, 18 Nov 2021 20:00:07 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Fabien Galthié, sélectionneur du XV de France : « Ne pas copier les Irlandais contre les All Blacks »", + "description": "Après la large victoire contre la Géorgie (41-15) ce dimanche, le sélectionneur des Bleus Fabien Galthié a reconnu des imperfections dans ce match et s'est projeté sur le choc du week-end prochain face à la Nouvelle-Zélande, battue par l'Irlande samedi.", + "content": "Après la large victoire contre la Géorgie (41-15) ce dimanche, le sélectionneur des Bleus Fabien Galthié a reconnu des imperfections dans ce match et s'est projeté sur le choc du week-end prochain face à la Nouvelle-Zélande, battue par l'Irlande samedi.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Fabien-galthie-selectionneur-du-xv-de-france-ne-pas-copier-les-irlandais-contre-les-all-blacks/1298788#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 17:39:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Biden Met With Xi. But Is His China Policy Right?", - "description": "The truth is, America’s national security depends on cooperation a lot more than competition.", - "content": "The truth is, America’s national security depends on cooperation a lot more than competition.", - "category": "United States International Relations", - "link": "https://www.nytimes.com/2021/11/18/opinion/biden-china-xi-summit.html", - "creator": "Peter Beinart", - "pubDate": "Fri, 19 Nov 2021 20:20:19 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Julien Marchand touché aux côtes face à la Géorgie", + "description": "Fabien Galthié, le sélectionneur de l'équipe de France, a indiqué que le talonneur Julien Marchand avait été touché aux côtes dimanche contre la Géorgie (41-15). Il est incertain pour la Nouvelle-Zélande samedi soir.", + "content": "Fabien Galthié, le sélectionneur de l'équipe de France, a indiqué que le talonneur Julien Marchand avait été touché aux côtes dimanche contre la Géorgie (41-15). Il est incertain pour la Nouvelle-Zélande samedi soir.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Julien-marchand-touche-aux-cotes-face-a-la-georgie-selon-fabien-galthie/1298780#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 17:05:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Feeling Anxious About Thanksgiving This Year? You’re Not Alone.", - "description": "The first postvaccine Thanksgiving will be full of joy — and anxiety. Here’s how to navigate it.", - "content": "The first postvaccine Thanksgiving will be full of joy — and anxiety. Here’s how to navigate it.", - "category": "Quarantine (Life and Culture)", - "link": "https://www.nytimes.com/2021/11/18/opinion/thanksgiving-christmas-family-tension.html", - "creator": "Emily Esfahani Smith", - "pubDate": "Fri, 19 Nov 2021 14:44:16 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Bleus - Antoine Dupont après la victoire face à la Géorgie : « Les All Blacks, c'est un grand défi »", + "description": "Le capitaine et demi de mêlée des Bleus, qui a mené son équipe à la victoire ce dimanche face à la Géorgie (41-15), se projette désormais vers le dernier match de la tournée face à la redoutable équipe néo-zélandaise, samedi prochain, au Stade de France.", + "content": "Le capitaine et demi de mêlée des Bleus, qui a mené son équipe à la victoire ce dimanche face à la Géorgie (41-15), se projette désormais vers le dernier match de la tournée face à la redoutable équipe néo-zélandaise, samedi prochain, au Stade de France.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/Antoine-dupont-apres-la-victoire-des-bleus-contre-la-georgie-la-copie-n-est-pas-parfaite/1298770#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 16:23:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Biden Says His Infrastructure Law Is a ‘Big Deal.’ How Big?", - "description": "$550 billion for new spending is big, but many say America’s infrastructure needs are even bigger.", - "content": "$550 billion for new spending is big, but many say America’s infrastructure needs are even bigger.", - "category": "debatable", - "link": "https://www.nytimes.com/2021/11/18/opinion/biden-infrastructure-bill.html", - "creator": "Spencer Bokat-Lindell", - "pubDate": "Thu, 18 Nov 2021 23:00:06 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby - Tests - La France s'impose face à la Géorgie", + "description": "Sans surprise, les Bleus ont battu (41-15) la Géorgie, six essais à deux, dimanche à Bordeaux. Répétition générale avant d'affronter les All Blacks, samedi prochain au Stade de France.", + "content": "Sans surprise, les Bleus ont battu (41-15) la Géorgie, six essais à deux, dimanche à Bordeaux. Répétition générale avant d'affronter les All Blacks, samedi prochain au Stade de France.", + "category": "", + "link": "https://www.lequipe.fr/Rugby/Actualites/La-france-s-impose-face-a-la-georgie/1298767#xtor=RSS-1", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 15:53:00 +0100", + "folder": "00.03 News/Sport - FR", + "feed": "L'Equipe - Rugby", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/Sport - FR", + "name": "L'Equipe - Rugby" + }, + { + "title": "Le Rugbynistère", + "subtitle": "", + "link": "https://www.lerugbynistere.fr/rss.php", + "image": "https://www.lerugbynistere.fr/imgs/design/logo-rugbynistere-default.png", + "description": "Retrouvez ici nos derniers articles", + "items": [ + { + "title": "RUGBY. Trop cartons rouges au niveau international, Shaun Edwards demande des explications aux arbitres", + "description": "Pour le Gallois Shaun Edwards, entraineur de la défense française, il y a trop de cartons rouges et les arbitres n'y sont pas étrangers.", + "content": "Depuis quelque temps la protection des joueurs sur le terrain est devenue une priorité. Entre protocole commotion, arbitrage vidéo et nouvelles règles, World Rugby essaye de faire son maximum pour assurer la protection des acteurs de notre sport. Les arbitres de plus en plus sévères, laissent maintenant très rarement passer des actions qui mettent en danger les joueurs. Les officiels n’hésitent plus à sortir un carton rouge quand il le faut. Si en TOP 14, les joueurs semblent l’avoir compris avec seulement 6 cartons rouges distribués en 140 matchs, c’est plus compliqué sur la scène internationale. Si l'on se focalise uniquement sur les 20 matchs de l’Autumn Nations Series, les arbitres ont sorti à 4 reprises un carton rouge lors d'un match. Une exclusion définitive tous les 5 matchs. Et si l’on prend l’ensemble des tests de l’année 2021, c’est 7 cartons rouges distribués en seulement 38 rencontres. Un carton rouge tous les 5,4 matchs, ça gâche un peu le spectacle. Parmi les mauvaises élèves, on retrouve l’Australie avec 2 cartons rouges sur cette année civile ainsi que bien évidement l’Argentine avec 2 unités également, ça va plus vite quand on a Lavanini dans ses rangs.\nVIDÉO. Lavanini disjoncte une nouvelle fois et l'Irlande corrige l'Argentine (53-7)Shaun Edwards, l’entraineur de la défense française a réagi, dans un podcast de Scrum-V, à cette pluie de cartons rouges sur la scène internationale. Une tendance qui plait très peu au technicien français, mais pour lui, l’ensemble des joueurs et des entraineurs est un peu dans le flou quant à la zone à viser lors du plaquage : « Personnellement, je pense qu'il y a beaucoup trop (de cartons rouges). Mais je ne suis pas un officiel pour leur dire comment faire. » Pour lui, les officiels savent très bien dire quand la zone cible attaquée n’est pas la bonne, mais donnent très peu de solutions pour savoir où plaquer dans certaines situations : « Si quelqu'un fait un pick and go et qu'il est emmené par quelqu’un derrière lui et qu'il est vraiment bas et penché, où est la zone cible ? On peut dire que ce n'est pas la zone cible, mais j'aimerais demander à certains arbitres : \"S'il vous plaît, dites-moi où se trouve la zone cible\" ».\nÀ son goût, le plaqueur se retrouve trop souvent sans solution et n’a d’autre choix que de se faire sanctionner : « Vous êtes très bons pour nous dire où elle ne l'est pas, mais où est-elle ? S'il vous plaît, dites-moi... Si vous attrapez les jambes, cela peut être un plaquage sans les bras. Si vous visez la mi-hauteur normale, vous risquez de toucher sa tête lorsqu'il est penché en avant. Alors où est la zone cible ? » Une meilleure communication des arbitres et une clarification des règles pourrait donc éviter bon nombre de cartons rouge d’après Edwards. Cela éviterait de gâcher bon nombre de rencontres, car maintenant, gagner avec un joueur en moins lors d'une rencontre internationale, c’est devenu quasiment mission impossible.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-trop-cartons-rouges-la-faute-aux-arbitres-pour-shaun-edwards-2511211730.php", + "creator": "", + "pubDate": "2021-11-25 18:00:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "First Known Covid Case Was Vendor at Wuhan Market, Scientist Says", - "description": "A new review of early Covid-19 cases in the journal Science will revive, though certainly not settle, the debate over how the pandemic began.", - "content": "A new review of early Covid-19 cases in the journal Science will revive, though certainly not settle, the debate over how the pandemic began.", - "category": "Coronavirus (2019-nCoV)", - "link": "https://www.nytimes.com/2021/11/18/health/covid-wuhan-market-lab-leak.html", - "creator": "Carl Zimmer, Benjamin Mueller and Chris Buckley", - "pubDate": "Fri, 19 Nov 2021 03:45:26 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Roger Tuivasa-Sheck, le briseur de reins venu du XIII qui va vous faire aimer le Super Rugby", + "description": "On le surnomme RTS, était une star de NRL et jouera en Super Rugby avec les Blues en 2022. Si vous ne le connaissez pas, asseyez-vous bien, car ça secoue !", + "content": "Mesdames et messieurs les mordus de rugby champagne, de garçons assez bankables ou de compilations d'appuis fous sur Youtube, on a ce qu'il vous faut. Oubliez les Quade Cooper, Teddy Thomas ou Cheslin Kolbe, ils seront bientôt tous loin derrière la machine néo-zélandaise Roger Tuivasa-Sheck. Car si ce dernier est de la même génération que les deux précédents nommés, il aura pour lui une donnée inébranlable en sa faveur : la nouveauté ! \nVIDEO. NRL - Roger Tuivasa-Sheck casse les chevilles de son vis-à-vis avec un magnifique tchik tchakEh oui, RTS a beau être l'une des plus grandes stars de la NRL depuis plusieurs années, il n'est qu'un sombre inconnu pour l'immense majorité du public quinziste. Sauf qu'il vient justement de switcher de discipline et de débarquer du côté des Blues d'Auckland pour conquérir ce nouveau monde ! À 28 ans, le natif des Samoa est en effet en pleine possession de ses moyens et a fait des All Blacks et de la coupe du monde 2023 son objectif prioritaire. Joueur athlétique (1m82 pour 95kg), doté d'appuis absolument insolents, d'un punch à toute épreuve et d'un sens du jeu largement supérieur à la moyenne, Tuivasa-Sheck a tout pour devenir la nouvelle coqueluche des Blues, et plus si affinités. \nÉlu notamment meilleur arrière de la ligue en 2015 puis MVP du \"meilleur championnat du monde\" à XIII en 2018, l'ancien acolyte de Shaun Johnson chez les Warriors aura aussi pour lui d'avoir été formé à XV durant sa jeunesse, avant de basculer définitivement pour son \"cousin\" au moment de quitter l'Otahuhu College. Alors qu'il a pris ses quartiers au sein de la province d'Auckland en Bunning NPC récemment, il entamera bientôt la préparation au Super Rugby avec la franchise de la même ville. Avec la même réussite que les SBW, Jason Robinson ou Chris Ashton ? Rarement un joueur n'a en tout cas paru aussi bien paré pour le faire.\n\nEn somme, cela nous permet de vous signaler qu'il formera une ligne de 3/4 tout simplement insolente chez les Blues, aux côtés des Beauden Barrett, Caleb Clarke, Rieko Ioane ou Bryce Heem. Ces derniers seront donc plus que jamais des prétendants au titre pour cette première édition du Super Rugby Pacifika, dont les groupes ont justement été dévoilés cette semaine. Pour information, rien ne change vraiment ici et là du côté des équipes néo-zélandaises et australiennes, même si l'on sera évidemment curieux d'observer les retours au pays des anciens exilés japonais Brodie Retallick ou TJ Perenara. Aussi de voir ce que Pablo Matera peut apporter aux Crusaders de Richie Mo'unga, tenants du titre depuis 4 ans maintenant...\nEnfin, parmi les deux nouvelles franchises qui intègreront cette nouvelle version du Super Rugby, il sera très intéressant de suivre ce que seront capables de faire les Moana Pasifika. Coachée par Aaron Mauger, cette équipe créée pour l'occasion comptera en effet dans ses rangs des garçons d'expérience comme Sekope Kepu, Christian Lea'liifano, Jack Lam ou l'ancien grenoblois Lolagi Visinia. En plus desquels il faudra également, selon nous, garder un oeil sur les 3 boules de nerfs des lignes arrières : Solomone Kata (centre/ailier, 1m79 pour 104kg), Levi Aumua (centre, 1m83 pour 115kg) et Timoci Tavatavanawai (ailier, 1m87 pour 111kg). Chaud devant !", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-roger-tuivasa-sheck-la-nouvelle-star-qui-va-vous-faire-aimer-le-super-rugby-2511211659.php", + "creator": "", + "pubDate": "2021-11-25 17:30:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Oklahoma Governor Commutes Julius Jones's Death Sentence", - "description": "A coalition of celebrities, conservatives and Christian leaders had urged Gov. Kevin Stitt to commute the death penalty sentence of Julius Jones, who was convicted of murder in 2002.", - "content": "A coalition of celebrities, conservatives and Christian leaders had urged Gov. Kevin Stitt to commute the death penalty sentence of Julius Jones, who was convicted of murder in 2002.", - "category": "Oklahoma", - "link": "https://www.nytimes.com/2021/11/17/us/julius-jones-oklahoma-clemency.html", - "creator": "Michael Levenson, Maria Cramer and Simon Romero", - "pubDate": "Fri, 19 Nov 2021 00:28:40 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "RUGBY. Equipe de France. La Dupont-dépendance, mythe ou réalité chez les Bleus ?", + "description": "L'équipe de France est-elle dépendante des performances d'Antoine Dupont ? Les récents matchs des Bleus semblent montrer que non. Qu'en pense la rédaction ?", + "content": "Théo\nDupont quoi ? Dupont dépendance ? Au vrai, si vous lui posiez directement la question, notre cher Antoine vous répondrait assurément que dans un sport aussi collectif que le rugby, difficile - encore plus qu’ailleurs - de parler de dépendance en qui que ce soit. Cependant, on voit où vous voulez en venir : la saison passée, l’équipe de France (comme Toulouse) s’en est souvent remis à son petit prodige pour débloquer des situations dès lors que le verrou adverse était trop bien verrouillé. Lors de cette tournée d’automne, certes, l’on eut un peu moins cette impression, quand par exemple, Toto ne fut pas le Tricolore le plus brillant face aux All Blacks. Pour autant, ce serait oublier que le meilleur demi de mêlée du monde a été tout simplement été indécent dans sa conduite du jeu et son énergie déployée sur le terrain. Aussi que c’est lui qui fut à la conclusion de l’essai que l’on pensait libérateur face à l’Argentine - sur un soutien puis un rush dont il a le secret - avant que celui-ci ne soit finalement refusé pour un en-avant douteux.FRANCE. RUGBY. Dupont plus fort que Smith, un nouveau statut à défendre ?Des données qui montrent qu’Antoine a une nouvelle fois été indispensable. Quand bien même il est plus pisté que jamais et ne peut plus traverser le terrain 3 fois par match ? Au lieu d’être cloîtré, Dupont ouvre des espaces pour les autres, et c’est peut-être aussi en ça qu’il est aujourd’hui un très grand parmi les géants. Oui, forts d’un talent collectif et individuels énormes, les Bleus peuvent faire sans lui pour mettre à mal à peu près toutes les défenses de la planète. Mais plus que jamais, le Toulousain fait figure de catalyseur d'une équipe de France qui n’a peut-être jamais été aussi forte...\nBaptiste\nL'équipe de France a trouvé son salut par l'intermédiaire d'Antoine Dupont au début de l'ère Galthié. Plusieurs fois décisif, le demi de mêlée du stade toulousain est aujourd'hui en passe d'être officiellement reconnu comme le meilleur joueur du monde. Difficile d'imaginer une indépendance des Bleus à partir de là. Même si les Français ont réalisé avant tout une performance collective face à la Nouvelle-Zélande ce samedi, Antoine Dupont s'est avéré être encore une fois omniprésent, de par ses montées défensives en pointe, sa justesse dans le jeu, ainsi que ses inspirations et éternels soutiens à l'intérieur. Il fait partie de ses joueurs qui peuvent faire basculer des rencontres, lorsque le score est indécis, l'adversaire en embuscade et le collectif pas aussi efficace que voulu. C'est pour cela qu'Antoine Dupont reste un joueur dont la France ne peut pas se passer, même si elle est capable de remporter des matchs sans lui. On l'a vu cet été en Australie, mais aussi lors de l'Autumn Nations Cup de 2020, où l'absence de Dupont a peut-être coûté des victoires aux Tricolores, notamment la finale face à l'Angleterre et le troisième test face aux Wallabies. Il me semble donc que ce n'est pas la fin de la Dupont-dépendance pour le XV de France.\nAlexis\nIndispensable en équipe de France, le demi de mêlée international s’est montré ultra-décisif sous le maillot des Bleus ces derniers temps. Particulièrement lors du dernier Tournoi, où « Toto » était impliqué sur plus de 35% des essais français. Mais lors de cette tournée, on l’a vu bien plus muselé par les défenses adverses, ce qui nous pousse à se poser cette question aujourd’hui. Mais n’oublions pas que la « menace Dupont » permet de concentrer les défenses sur ce dernier, laissant peut-être plus d’espaces au large. D’autant plus que nous oublions souvent l’importance du Toulousain dans les autres secteurs, comme la défense et le jeu au pied. Dupont a d’ailleurs, lors de ces matchs, sauvé beaucoup de coups en revenant asséner des plaquages décisifs. C’est pour cela que la « Dupont-Dépendance » n'est selon moi pas terminée. Elle a peut-être diminué, mais elle reste néanmoins bien présente.\nJules\nJe ne pense pas qu'il y ait de Dupont dépendance en équipe de France. Il y a maintenant un effectif riche avec quasiment des joueurs qui peuvent rivaliser avec les meilleurs du monde à chaque poste. Il occupe un rôle très important en tant que numéro 9 et maintenant capitaine. Mais, aux postes de la charnière, Ntamack a montré qu'il pouvait prendre le jeu à son compte et de la meilleure des manières. La tournée a d'ailleurs démontré, qu'avec un Antoine Dupont brillant mais sans ses grandes envolées habituelles, l'équipe de France pouvait aussi très bien marcher. Plus dans un rôle d'éjecteur sur les trois matchs, il a davantage assuré la continuité du jeu. Par contre, comme à son habitude, il a été intraitable en défense sur l'ensemble de la tournée. Je pense qu'il n'y a pas réellement de \"Dupont dépendance\", mais il est certain que le Toulousain apporte un gros plus au XV de France quand il est sur la pelouse.\nLouis\nDupont a toujours été un élément incontournable du XV de France. Depuis le début du mandat de Fabien Galthié, d’autres joueurs se sont également affirmés. On pense à Baille, Marchand, Alldritt, etc. Sur cette tournée d’automne et en partie lors du match face aux Blacks, on a réellement vu un collectif se dégager, bien loin d’une ’’Dupont dépendance’’. Lors du dernier test, le demi de mêlée tricolore s’est démené dans les tâches obscures et a su faire briller ses partenaires offensivement, et ce, malgré le fait qu’il soit désormais surveillé par toutes les équipes. Mais que dire du pack tricolore, qui a tout simplement roulé sur son vis-à-vis néo-zélandais, notamment lors de la première mi-temps, les deux essais de Mauvaka comme illustration. Sans oublier les prometteurs Ntamack, Jaminet, Jalibert ou encore Penaud derrière. Bref, c’est un collectif fort qui se dégage de ce XV de France avec une somme de talent certes, mais qui parvient à se mettre au service de l’équipe. Parler à l’heure actuelle d’une ’’Dupont dépendance’’ serait faire injure aux 22 autres joueurs présents sur la feuille de match.\nErwan\nSi Dupont reste un joueur clé du jeu français, il a su montrer lors de cette tournée qu'il était capable d'outrepasser le rôle qu'on lui connaissait. Ou plutôt, il était capable de se mettre en \"joueur en coulisses\". Moins porteur de ballons, le demi de mêlée toulousain donnait le tempo offensif durant cet automne. D'abord accompagné d'un duo \"Jalimack\", dont il manque encore quelques atomes crochus, il est devenu le chef d'orchestre de ses coéquipiers face aux All Blacks. Le néo-capitaine lance les assauts tricolores dans un timing parfait. Le meilleur exemple étant sûrement le second essai français durant l'ultime rencontre de novembre. \"Toto\" Dupont lance parfaitement Villière, puis sert avec une belle lucidité Ntamack.VIDEO. RUGBY. France. Du punch et des cannes, Penaud et Villière, les deux font la paireSans lui enlever les qualités qu'on lui connait, le Bleu a semblé lisser son rôle dans son jeu. Ainsi, il semble que si Galthié venait à devoir faire sans Dupont un jour, le système des Bleus ne s'en retrouverait pas chamboulé. Surtout au vu de la pléthore de talents à son poste. Même si la France perdrait un atout de poids. Cependant, en prenant la place d'un joueur plus distributeur durant l'Autumn Nations Series, le numéro 9 a tendance à moins ramener le jeu des Bleus aux exploits dont il est l'un des seuls à être capable sur la planète rugby. ", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-equipe-de-france-la-dupont-dependance-mythe-ou-realite-chez-les-bleus-2511211641.php", + "creator": "", + "pubDate": "2021-11-25 16:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Justus Rosenberg, Beloved Professor With a Heroic Past, Dies at 100", - "description": "As a teenager, he helped provide safe passage to artists and intellectuals out of Vichy France. He went on to teach literature at Bard College for six decades.", - "content": "As a teenager, he helped provide safe passage to artists and intellectuals out of Vichy France. He went on to teach literature at Bard College for six decades.", - "category": "Rosenberg, Justus (1921- )", - "link": "https://www.nytimes.com/2021/11/17/nyregion/justus-rosenberg-dead.html", - "creator": "Alex Vadukul", - "pubDate": "Thu, 18 Nov 2021 19:41:12 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "VIDEO. BAYONNE. Quand les joueurs de l'Aviron Bayonnais piègent des supporters", + "description": "En collaboration avec le centre commercial BAB2, l'Aviron Bayonnais a pu offrir aux habitants du Pays Basque une expérience unique, mêlant réel et virtuel.", + "content": "Durant tout un après-midi, en plein centre commercial BAB2, les joueurs bayonnais ont pu offrir une expérience exceptionnelle à quelques chanceux qui passaient par là. Installée pour l’occasion, une pièce de 40 m2 représentant le plus réellement possible le stade Jean Dauger allait être leur terrain de jeu. Les visiteurs les plus téméraires, pouvaient tenter de réaliser le défi proposé par Yannick Bru, manager de l’Aviron Bayonnais. Le défi ? Réussir à attraper le ballon aux rebonds capricieux, dans les lieux les plus emblématiques du Pays Basque. La tâche n’allait pas être facile. Pour avoir la chance d’attraper ce ballon ovale dans cette vidéo à 360°, il faut le suivre à travers les montagnes, les airs, une partie de beach-rugby, le centre-ville de Bayonne et enfin jusqu’au cœur du rugby bayonnais, le stade de Jean Dauger. Cette fameuse vidéo, la voici :\n\nMais cette petite vidéo était en fait un malicieux subterfuge pour changer le décor et faire entrer en scène quelques acteurs. Des acteurs pas des moins connus au Pays Basque, puisque ce n’est autre que 8 joueurs de l’Aviron Bayonnais qui entrent en scène dans la pièce. Et pas les plus gringalets, c'est le pack complet qui est présent. Une fois prêt à lancer la touche, les visiteurs sont invités à enlever leur casque, et là… c’est émotion garantie. Heureusement, pour notre plus grand bonheur, toutes les séquences réactions des piégés ont été regroupées dans une petite caméra cachée. Régalez-vous :\n", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/videobayonne-quand-les-joueurs-de-laviron-bayonnais-piege-des-supporters-2511211536.php", + "creator": "", + "pubDate": "2021-11-25 16:00:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "He Helped Build Tesla. Now He Hopes to Do the Same at Lucid.", - "description": "Peter Rawlinson engineered the Tesla Model S. His new Lucid Air sedan is a direct challenge to Tesla’s dominance.", - "content": "Peter Rawlinson engineered the Tesla Model S. His new Lucid Air sedan is a direct challenge to Tesla’s dominance.", - "category": "Electric and Hybrid Vehicles", - "link": "https://www.nytimes.com/2021/11/18/business/lucid-motors-tesla.html", - "creator": "Niraj Chokshi and Jack Ewing", - "pubDate": "Thu, 18 Nov 2021 21:41:17 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Equipe de France. Antoine Dupont, capitaine pour le Tournoi des 6 Nations ? Il répond", + "description": "Le demi de mêlée de l'équipe de France de rugby Antoine Dupont a mené les Bleus vers la victoire en tant que capitaine cet automne. Le sera-t-il lors du Tournoi ?", + "content": "VIDEO. Equipe de France de Rugby. Entre justesse et efficacité, le meilleur d'Antoine Dupont face aux All BlacksAprès la victoire remarquable de l'équipe de France de rugby sur la Nouvelle-Zélande, plusieurs noms revenaient dans la presse. Celui de Melvyn Jaminet, véritable révélation de l'année à l'arrière. Bien évidemment, celui de Romain Ntamack, auteur d'une relance de l'espace et d'un solide match. Mais surtout celui de son compère à la charnière, Antoine Dupont. Le demi de mêlée a été récemment nominé pour le titre de meilleur joueur du monde. Après la victoire des Bleus face aux Blacks, on ne voit pas comment cette distinction pourrait lui échapper. Adoubé par la légende irlandaise Brian O'Driscoll, le Toulousain est en concurrence avec les Australiens Hooper et Kerevi ainsi que l'Anglais Itoje. RUGBY. Voici les nominés pour le prix du meilleur joueur au monde... avec Dupont dans la liste !De l'avis de beaucoup, il n'y a pas photo après la nouvelle performance majuscule du numéro 9 face à la Nouvelle-Zélande où il a notamment éclipsé son vis-à-vis Aaron Smith. S'il a conscience d'avoir \"pris de l'ampleur\", il n'en reste pas moins humble au moins d'évoquer via le Midi Olympique ses performances avec Toulouse et sous le maillot tricolore : \"C’est aussi parce que je me trouve dans un contexte favorisant. Avec le Stade toulousain, nous avons réalisé le doublé la saison dernière. Avec l’équipe de France, depuis deux ans, nous avons enchaîné de belles performances. Moi, je me retrouve dans ces collectifs forts. Donc mon évolution va de pair avec celles des équipes dans lesquelles je joue.\" À l'heure actuelle, il ne se prend pas la tête pour savoir s'il est effectivement le meilleur joueur du monde. Il souhaite juste que cette dynamique se poursuive le plus longtemps possible. Au sortir d'une tournée réussie avec trois victoires en autant de tests, les Bleus sont attendus lors du Tournoi des 6 Nations. En 2022, ils recevront à trois reprises (Italie, Irlande, Angleterre), c'est donc une bonne année pour la France qui espère remporter son premier titre sous l'ère Galthié. Et surtout son premier Tournoi depuis 2010 ! XV de France - Charles Ollivon de retour pour le Tournoi des 6 Nations 2022 ?Une question se pose en amont de la compétition : Antoine Dupont sera-t-il à nouveau le capitaine de l'équipe de France ? \"Cela m’a amené à me poser un peu plus de questions, mais c’est venu assez naturellement par la suite. Je me suis senti de plus en plus à l’aise au fil des semaines.\" Le Toulousain a en effet parfaitement assumé ce rôle durant le mois de novembre. Si bien qu'on se demande s'il ne va pas encore porter le brassard l'hiver prochain. Cette question, Dupont ne se la pose pas. \"Il faut voir comment Charles évolue dans sa blessure et son retour à la compétition, pour qu’il revienne dans les meilleures conditions.\" Le retour de Charles Ollivon, victime d'une rupture du ligament croisé du genou gauche en juin dernier, n'est pas officiellement connu. Si d'aventure le 3e ligne devait reprendre la compétition dans les semaines à venir et être sélectionné par Fabien Galthié, Antoine Dupont n'aura aucun souci avec le fait qu'il récupère son brassard. \"C’était lui à la base. On verra comment ça évolue.\" Qu'il conserve ce rôle ou non, le demi de mêlée est plus que jamais l'un des leaders de l'équipe de France.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/equipe-de-france-antoine-dupont-capitaine-pour-le-tournoi-des-6-nations-il-repond-2511211531.php", + "creator": "", + "pubDate": "2021-11-25 15:35:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Supermodel Iman Opens Up About David Bowie, a New Perfume and More", - "description": "The supermodel talks about life after David Bowie, their Catskills refuge and the perfume inspired by their love.", - "content": "The supermodel talks about life after David Bowie, their Catskills refuge and the perfume inspired by their love.", - "category": "Content Type: Personal Profile", - "link": "https://www.nytimes.com/2021/11/18/style/iman-david-bowie.html", - "creator": "Guy Trebay", - "pubDate": "Fri, 19 Nov 2021 16:20:50 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Irlande. Dernier tour de terrain pour la légende irlandaise Rob Kearney", + "description": "Rob Kearney disputera sa dernière rencontre de rugbyman professionnel ce samedi avec les Barbarians, à Twickenham. Une page du rugby irlandais se tourne.", + "content": "C'est une légende du rugby mondial qui s'apprête à tirer sa révérence ce week-end. Rob Kearney, 95 sélections avec l'Irlande et 3 sous le maillot des Lions Britanniques (2009-2013), effectuera son dernier tour de terrain lors de la rencontre entre les Barbarians et les Samoa, samedi à Twickenham (15h30). Il a lui-même annoncé la nouvelle sur les réseaux sociaux : ''Cela a toujours été un rêve de jouer pour les Barbarians. Quelle équipe historique pour jouer votre dernier match de rugby, reconnaissant de l'opportunité.''\n\n\nIt’s always been a dream to play for the @Barbarian_FC and what a historic team to play your last game of rugby with, grateful for the opportunity! pic.twitter.com/xQP3ohB93P\n— Rob Kearney (@KearneyRob) November 23, 2021\n\nÀ 35 ans, Kearney s'était lancé un dernier défi cette saison, en rejoignant au début de l'année la Western Force en Australie. Seulement son deuxième club en professionnel, puisqu'en plus d'être une icône du XV du Trèfle, l'arrière est également une légende du Leinster. Quinze ans au sein de la province irlandaise, près de 220 matchs et plus de 230 points inscrits. Avec son club de toujours, il a remporté à 4 reprises la Coupe d'Europe et 6 fois la Ligue Celte. Juste stratosphérique. Kearney, c'est un palmarès long comme le bras, puisqu'avec la sélection nationale, il a aussi remporté deux fois le Tournoi des 6 Nations, lors des Grands Chelems de 2009 et 2018. \nVIDÉO. Super Rugby. La nouvelle vie de Rob Kearney en Australie à 34 ansRapide, doté de très bons appuis et d'une aisance insolente sous les ballons hauts, Kearney prendra donc sa retraite ce week-end avec les Baabaas. Comme un symbole. Quoi de mieux pour un joueur historique, que de terminer sa carrière avec une sélection légendaire. \n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/irlande-le-dernier-tour-de-piste-de-la-legende-rob-kearney-2511211500.php", + "creator": "", + "pubDate": "2021-11-25 15:00:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Venezuelan Opposition Risks an Election Challenge to Maduro", - "description": "With little hope of a fair vote, opposition candidates take a desperate risk to gain any edge against Venezuela’s entrenched autocrat, Nicolás Maduro.", - "content": "With little hope of a fair vote, opposition candidates take a desperate risk to gain any edge against Venezuela’s entrenched autocrat, Nicolás Maduro.", - "category": "Elections", - "link": "https://www.nytimes.com/2021/11/19/world/americas/venezuela-elections-maduro.html", - "creator": "Julie Turkewitz and Adriana Loureiro Fernandez", - "pubDate": "Fri, 19 Nov 2021 18:56:44 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Top 14. UBB. Le bon usage la vidéo selon Christophe Urios : ''Ce qui me fait flipper, c'est de ne pas sentir l'adversaire''", + "description": "L'entraîneur de l'UBB Christophe Urios explique comment il utilise la vidéo à l'UBB. Pour lui, il ne faut pas en abuser mais c'est utile pour progresser.", + "content": "Ce dimanche, l'UBB se rend sur la pelouse du Racing 92 dans le cadre de la 11e journée de Top 14. Un match important pour ces deux prétendants aux phases finales. Les Bordelais occupent la deuxième place du classement tandis que les Franciliens sont au cinquième rang. En cas de victoire, ces derniers pourraient revenir sur le peloton de tête. Les visiteurs ont de leur côté l'opportunité de mettre la pression sur le champion de France. Mais s'imposer sur la pelouse synthétique de l'Arena ne sera pas chose aisée. Et Christophe Urios le sait très bien. L'entraîneur girondin est du genre à ne laisser aucun détail de côté. \"Je fais partie de ceux qui pensent que plus tu es préparé, plus tu as de chances de capter ce qu'il se passe sur le terrain. Ce qui me fait flipper, c'est de ne pas sentir l'adversaire, de ne pas avoir assez préparé le match. Je n'ai pas ce talent d'arriver et d'improviser, confiait le technicien sur les ondes de RMC samedi dernier dans le cadre des Grandes Gueules du sport. C'est important pour moi que les joueurs abordent le match en ayant les idées claires sur ce qu'il va se passer sur le terrain pour qu'ils puissent saisir les opportunités.\" Et pour être le plus préparé possible, il fait bien évidement usage de la vidéo. Mais n'importe comment non plus et sans tomber dans un usage à outrance. \"Nous, on ne l'utilise pas du tout à la mi-temps ou pendant l'entraînement. Je trouve qu'à un moment donné, il faut vivre les situations\". Récemment, le club de football de Montpellier s'est attaché les services de plusieurs analystes et propose à ses joueurs de revoir certaines actions à la mi-temps. Si cela peut porter ses fruits, ce n'est pas dans la philosophie d'Urios de l'employer de cette manière. \"La vidéo est un outil important pour la progression des joueurs, pour créer une atmosphère aussi. Après ça reste un outil. Et je suis toujours très vigilant par rapport à tous ces outils qui nous permettent d'être performant dans la durée. Moi j'aime m'en servir pour créer une histoire du match à travers des montages de vidéos de rugby ou autre. C'est important d'inventer chaque semaine une histoire pour le match. La vidéo permet de bien mettre en avant l'aspect mental et combat sans oublier bien évidemment l'aspect tactique. Pour la préparation des rencontres et les bilans ça me paraît être important sur un plan collectif et individuel. Ça créé du liant parce que le joueur ne se rend parfois pas compte de l'exigence et du niveau qu'on peut encore attendre de lui.\" À l'UBB, les vidéos sont courtes : pas plus de 15 minutes, car les joueurs ont surtout envie d'être sur le terrain. La vidéo doit servir avant tout à décortiquer les raisons de la victoire ou de la défaite. \"On va jouer le Racing 92 donc on va regarder comment ils jouent et là où ils peuvent nous mettre en difficulté. Mais aussi comment ils défendent et comment on peut les mettre en difficulté.\" Quelle sera le teneur de la séance vidéo de lundi à Bordeaux ? Réponse dimanche soir.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/top-14-ubb-le-bon-usage-la-video-selon-christophe-urios-ce-qui-me-fait-flipper-cest-de-ne-pas-sentir-ladversaire-2511211223.php", + "creator": "", + "pubDate": "2021-11-25 12:25:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Miss Friday's Lunar Eclipse? Here's What it Looked Like.", - "description": "The partial eclipse on Thursday night and Friday morning lasted more than six hours, and these photos captured the moon’s rust-red hue.", - "content": "The partial eclipse on Thursday night and Friday morning lasted more than six hours, and these photos captured the moon’s rust-red hue.", - "category": "Eclipses", - "link": "https://www.nytimes.com/2021/11/19/science/lunar-eclipse-photos.html", - "creator": "Michael Roston and Matt McCann", - "pubDate": "Fri, 19 Nov 2021 17:19:05 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Ce rugbyman a couru 163km en 24h et récolté plus d'un million d'euros pour la bonne cause", + "description": "L’ancienne gloire des Leeds Rhinos, Kevin Sinfield, a récolté un peu plus d’un million pour une association caritative en courant près de 163 km en 24 h.", + "content": "Sa course folle a commencé au stade des Leicester Tigers, où il officie maintenant comme entraineur de la défense, pour se terminer à son ancien stade de Headingley à Leeds. Une destination pas choisie au hasard. Si Sinfield a réalisé cet exploit monstre, c’est pour son ami et ancien coéquipier Rob Burrow qui s’était vu diagnostiquer la maladie de Charcot en 2010. Parti de Leicester, il a découpé son parcours en section de 7 km, chacune de ces sections devait être réalisée en 1h s’il voulait atteindre son objectif. Plus de 1 000 personnes l’attendaient au stade de Leeds pour fêter son exploit. Accompagné de la femme et la fille aînée de Burrow pour les derniers kilomètres, c’est surtout la présence de son ancien coéquipier au bout du parcours qu’il l’a poussé jusqu’à la fin : « C'était vraiment dur par moments, surtout à la fin, mais c'est grâce à mon petit camarade ici présent » a-t-il déclaré à la BBC. Une initiative qui a pour but de récolter le maximum d'argent. Lui qui s’était fixé un objectif de 100 000 livres sterling, en avait récolté plus d’un million mardi après-midi. Une somme qui sera reversée à l’association MND qui lutte contre les maladies neurodégénératives ainsi qu’à une deuxième association, Leeds Hospitals Charity. Une action exemplaire qui touche plus que tout la famille de Burrow, notamment son père, qui est très impliqué dans la recherche d’un traitement pour son fils : « Ce n'est rien de moins qu'un miracle, vraiment. Il est surhumain. », avant de rajouter : « Il est comme un autre fils pour moi. » Kevin Sinfield n’est pas à son coup d’essai. En 2020, toujours pour la même cause, il avait récolté 2,7 millions de livres sterling en courant 7 marathons en 7 jours. Remarquable. Si des actions comme celle-ci sont à multiplier, par sûr que Sinfield, lui, ne recommence demain : « Je suis brisé. Je ne sais pas quand je pourrai courir à nouveau. »Merci à Louis d'avoir porté cette belle histoire à notre attention.", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/ce-rugbyman-a-couru-163km-en-24h-et-recolte-plus-dun-million-deuros-pour-la-bonne-cause-2511211214.php", + "creator": "", + "pubDate": "2021-11-25 12:15:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Cuomo Assembly Report Contains Grounds for Impeachment, Lawmaker Says", - "description": "A report set to be made public next week sheds new light on the Cuomo administration’s manipulation of nursing home death data and the former governor’s $5.1 million book deal.", - "content": "A report set to be made public next week sheds new light on the Cuomo administration’s manipulation of nursing home death data and the former governor’s $5.1 million book deal.", - "category": "Cuomo, Andrew M", - "link": "https://www.nytimes.com/2021/11/19/nyregion/cuomo-impeachment-report.html", - "creator": "Grace Ashford", - "pubDate": "Fri, 19 Nov 2021 22:12:08 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Equipe de France. Jalibert-Ntamack, une «diversion» pour contrer la Nouvelle-Zélande ?", + "description": "Laurent Labit s'est exprimé sur la stratégie mise en place pour venir à bout de la Nouvelle-Zélande. Il évoque notamment une ''diversion''.", + "content": "Le jour et la nuit. Les performances de l'équipe de France lors de cette tournée d'automne ont été très hétérogènes d'une rencontre à l'autre. Poussive face à l'Argentine, brouillonne contre la Géorgie, étincelante face à la Nouvelle-Zélande. Certains y verront le poids de l'association Jalibert-Ntamack dans les deux premières rencontres, qui n'a pas trouvé son rendement nominal et qui a été exposée à la critique populaire. Mais à en croire l'entraineur des arrières Laurent Labit, il s'agissait surtout de cacher au maximum le contenu que les Français allaient exposer face à leurs adversaires. Dans le Midol de ce lundi, il explique notamment que \"certains des lancements, nous les avons gardés uniquement pour ce dernier match contre les Blacks. Les montrer trop tôt, c’était prendre le risque d’être contrés. Or, pour nous, le sommet, c’était ce match contre la Nouvelle-Zélande.\" On pourrait presque penser également que la préparation physique a été centrée sur le choc de samedi dernier, tant l'engagement physique des tricolores était largement plus conséquente que lors des week-ends précédents.\n D’abord, les deux premiers matchs, c’était le moment idéal pour tester notamment l’association Matthieu Jalibert-Romain Ntamack. Nous voulions savoir si ces deux joueurs de talent avaient la possibilité d’évoluer ensemble, soit en cours de match, soit dès le début d’une rencontre en fonction de l’adversaire avec une stratégie différente. Seulement, nous savions que les Néo-Zélandais allaient travailler sur cette configuration et nous proposer une stratégie pour nous contrer. Je n’irai donc pas jusqu’à dire que c’était finalement pour faire diversion, mais l’idée de départ n’était pas de les aligner contre les Blacks. Nous ne voulions pas montrer tous nos axes de travail sur cette tournée.\n\nPas officiellement une \"diversion\" donc dixit Labit, d'autant plus qu'il s'agissait de fait, du meilleur moment pour tester l'association. « Jouer deux matchs au centre pour Romain Ntamack et repasser à l’ouverture, ça ne lui pose aucun problème. Vous l’avez bien vu. Ces joueurs sont au service de l’équipe. Nous y pensions depuis un moment. » Les absences sur blessure deVakatawa, Barassi et Vincent, sont apparus être une opportunité pour franchir le pas. Pourra-t-on revoir cette association en équipe de France pour autant ? « On ne s’interdit pas de l’utiliser dès le début d’une rencontre, mais effectivement le talent et les compétences de ces deux joueurs, associés en fin de match, ça peut être précieux si on veut espérer quelque chose en 2023. »\nLa stratégie de l'encadrement de l'équipe de France s'est avérée être payante en tout cas. Au-delà du score flatteur, tout a presque marché selon Laurent Labit. « Franchement, durant la première mi-temps contre la Nouvelle-Zélande, nous avons flirté avec la perfection en termes d’organisation, de gestion des temps forts, des temps faibles. On a su rejouer au pied quand c’était nécessaire, retrouver de l’avancée au près sur les ballons lents… Durant 40 minutes, nous avons quasiment roulé sur les Blacks. C’était énorme. Nous n’avions pas imaginé un tel scénario de match avec 40 points inscrits au final. Quel plaisir de travailler avec des joueurs qui répondent présent. » Quel plaisir pour les yeux des supporters également.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/equipe-de-france-jalibert-ntamack-une-diversion-pour-contrer-les-blacks-2511211116.php", + "creator": "", + "pubDate": "2021-11-25 11:30:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "U.S. Rests Its Case in the Elizabeth Holmes Trial", - "description": "Defense lawyers are expected to argue that the founder of Theranos, the blood-testing start-up, failed but did not commit fraud.", - "content": "Defense lawyers are expected to argue that the founder of Theranos, the blood-testing start-up, failed but did not commit fraud.", - "category": "Suits and Litigation (Civil)", - "link": "https://www.nytimes.com/2021/11/19/technology/elizabeth-holmes-trial.html", - "creator": "Erin Griffith", - "pubDate": "Fri, 19 Nov 2021 22:53:35 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Guitoune, Piutau, Saili... ces stars qui pourraient jouer pour un autre pays en 2023", + "description": "World Rugby a annoncé un bouleversement ce mercredi : cela pourrait permettre à de nombreux anciens internationaux de jouer pour une autre sélection.", + "content": "OFFICIEL. Révolution dans le rugby : World Rugby approuve le principe du droit de naissance\nC'est un changement majeur qu'a validé World Rugby ce mercredi : désormais, le changement de sélection pour un joueur sera autorisé sous différentes conditions. Comme expliqué dans un précédent article, cela ne pourra se faire que si le principal intéressé n'a plus été sélectionné dans son équipe nationale d'origine depuis 36 mois et qu'il est né dans le pays pour lequel le joueur souhaite évoluer, ou qu'il a un parent ou un grand-parent né dans ce pays. Ainsi, de nombreuses \"mutations\" pourraient être opérées en vue du Mondial 2023. Voici une liste non exhaustive de quelques anciens tricolores et autres stars internationales qui pourraient switcher :\nSofiane Guitoune - Algérie\nLe saviez-vous ? Sofiane Guitoune est né en Algérie, à Alger plus précisément. Arrivé en France durant son enfance, l'ancien agenais est devenu international tricolore finalement peu de temps après avoir connu la première division. De fait, on ne sait pas s'il a vraiment déjà songé à représenter son pays de naissance. Toujours est-il qu'avec cette nouvelle règle et une équipe des Fennecs toujours en course pour sa qualification au Mondial en France, cela pourrait lui passer par la tête. À 32 ans, au sortir d'une grosse blessure et vu le renouveau du XV de France, la plus belle mèche de l'Hexagone sait qu'il y a autant de chance de retrouver le maillot bleu un jour que Tomas Lavanini n'en a de ne pas prendre de carton pendant plus d'un mois... Du coup, alors qu'il aura 34 piges en 2023, pourquoi pas le retrouver avec le numéro 13 de l'Algérie dans le dos prochainement ? Récemment, il déclarait d'ailleurs qu'il trouverait magnifique de voir les Fennecs et les Bleus s'affronter à Marseille lors cet évènement. Y'a plus qu'à, comme on dit. \nTop 14. Stade Toulousain. Sofiane Guitoune prêt pour décoiffer à nouveau ses adversaires\nAlivereti Raka - Fidji\nVous le savez, Raka fait partie de ces éléments qui ont pu jouer sous le maillot de l'équipe de France grâce à la naturalisation. Sauf que s'il performe de nouveau avec l'ASM, le natif de la province de Naitasiri se semble plus vraiment dans les plans du staff des Bleus, qui dispose déjà d'un noyau dur aux ailes. Alors Raka pour les Fidji en 2023, c'est possible ? Intrinsèquement pourquoi pas, lui dont on ne peut pas nier les qualités exceptionnelles de finition (44 essais en Top 14 à 26 ans...), et ce même si les Fidji sont déjà bien équipés à son poste. Sauf que le Clermontois a disputé son dernier match en Bleu en décembre 2020, et serait donc juste pour postuler en 2023 avec son pays d'origine, en respectant les 36 mois de non sélection préalables...\nNoa Nakaitaci - Fidji\nPour Nakaitaci, reprenez le texte concernant Alivereti Raka, vous lui ajoutez deux variantes et votre équation est toute faite. En fait, à la différence de son compère, le Lyonnais sera lui éligible pour les Fidji à compter de 2022 mais, contrairement à lui, soigne actuellement une longue blessure et rien ne garantit qu'il sera au niveau des autres ailiers fidjiens en 2023, à 33 ans. Mais bon, cela ne coûte rien de l'imaginer sous un maillot blanc en train d'exécuter le Cibi et de faire 12 offloads à la minute...\nMorgan Parra - Portugal\nEt ça, vous étiez au courant ? Que Morgan Parra était éligible avec le Portugal du fait de ses origines ? En tout cas, et puisqu'il n'a plus été sélectionné en Bleu depuis mars 2019, vous imaginez un peu si la légende clermontoise s'offrait un dernier tour de piste avec les Loups pour accrocher le Mondial 2023 ? Fantastique, non ? Attention tout de même, certes le Portugal impressionne ces dernier temps, mais il devrait également être en concurrence avec l'un de ses anciens adversaires de Top 14 à la mêlée : Samuel Marques. Objectif, savoir qui sera le plus fort des deux dans 2 ans et surtout, lequel aura le plus de cheveux. Rien d'évident, en somme...\nRUGBY. VIDEO. Personne n'en parle, mais le Portugal a failli réaliser l'exploit de l'année\nCharles Piutau - Tonga\nOn vous le dit d'ores et déjà, il faudra à nouveau se méfier des Tonga en 2023. Bien qu'en perte de vitesse depuis le dernier Mondial, les Aigles des Mers vont, grâce à la nouvelle législation de World Rugby, pouvoir bénéficier de renforts tels que Charles Piutau. L'ancien All Black (30 ans) est l'une des stars de Premiership aujourd'hui et comme Fekitoa, a toujours clamé son envie de pouvoir jouer un jour pour son pays d'origine. Si le centre aux 24 sélections avec la NZ a déjà fait le nécessaire pour être éligible en passant par une étape à 7 avec les Tonga, l'arrière ou ailier, lui, le sera à compter de l'année prochaine. Deux suppléments de poids, qui devraient probablement en appeler d'autres...\nAuraient également pu être cités : Francis Saili, Israel Folau, Ngani Laumape, George Moala...\nVIDEO. Charles Piutau aspire l'âme d'un adversaire avec un cad-deb fulgurant", + "category": "", + "link": "https://www.lerugbynistere.fr/news/avec-la-nouvelle-regle-de-leligibilite-ces-stars-qui-pourraient-jouer-pour-un-autre-pays-en-2023-2511211119.php", + "creator": "", + "pubDate": "2021-11-25 11:30:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Biden Will Briefly Transfer Power to Harris", - "description": "President Biden, who will undergo a physical and colonoscopy on Friday, is the oldest commander in chief to receive a full medical evaluation while in office.", - "content": "President Biden, who will undergo a physical and colonoscopy on Friday, is the oldest commander in chief to receive a full medical evaluation while in office.", - "category": "Biden, Joseph R Jr", - "link": "https://www.nytimes.com/2021/11/19/us/politics/biden-harris-power-transfer.html", - "creator": "Katie Rogers", - "pubDate": "Fri, 19 Nov 2021 19:23:13 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "VIDEO. RUGBY. L’immense carrière de Jonah Lomu retracée dans un reportage plein d’émotions", + "description": "Dans un reportage en 4 épisodes, Canal+Sport rend hommage 6 ans après sa disparition, à l’ancienne star du rugby néo-zélandais, Jonah Lomu.", + "content": "Après des années de bataille contre sa maladie, Jonah Lomu s’éteignait le 18 novembre 2015 à seulement 40 ans. Une star du rugby mondial dont de nombreuses générations de joueurs entendront parler. Pour lui rendre hommage, Canal+Sport, a sorti un reportage intitulé ’’ The Big Man’’. Un magnifique documentaire étalé sur 4 épisodes qui retrace l’ensemble de sa carrière. Dans ce premier épisode, on découvre l’arrivée de Lomu sur la planète rugby. Pour parler du phénomène, de nombreuses anciennes gloires du rugby mondial font leur apparition. Andrew Mehrtens, son ancien coéquipier chez les Blacks, ne ménage pas ses mots quand il parle des débuts de l'ailier néo-zélandais : « il détruisait tout le monde au lycée ». Des performances qui l’ont très vite amené au plus haut niveau. Après ses débuts en 1994 sous le maillot des All Blacks. Lomu participera à la coupe du monde 1995 où il en sera la véritable attraction, mais surtout un véritable poison pour les défenses adverses. VIDÉO. RUGBY. Le jour où Jonah Lomu a dégommé la défense française !Dans ce reportage, plusieurs anciens internationaux français parlent de la crainte quant à l’idée de le rencontrer dans cette compétition, spécifiquement l’ancien ailier tricolore Xavier Garbajosa : « On priait déjà dans nos chambres pour pas être face à lui ». Emile Ntamack et Vincent Clerc quant à eux, reviennent sur les qualités extraordinaires et hors normes que Lomu possédait à l’époque et la facilité qu’il avait à éliminer les défenseurs. Même l’actuel sélectionneur des Bleus et demi de mêlée lors de la coupe du monde 1995 Fabien Galthié, ne peut s’empêcher d’être élogieux à son égard et ira même jusqu’à dire : « On a croisé l’histoire en fait. Notre génération a croisé Mandela en 1995. Et Lomu en 1995. » Rien que ça. Un reportage poignant et pleins d’émotions à regarder sans modération. Ne manquez surtout pas le 4ᵉ et dernier épisode, une édition spéciale France – Nouvelle-Zélande de la coupe du monde 1999.\n", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/video-rugby-dans-un-reportage-plein-demotions-canalsport-retrace-limmense-carriere-de-jonah-lomu-2411211803.php", + "creator": "", + "pubDate": "2021-11-24 19:00:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "WNYC Retracts Four Articles on Its News Site, Gothamist", - "description": "In a new episode of turmoil at the radio station, the author of the articles was reassigned.", - "content": "In a new episode of turmoil at the radio station, the author of the articles was reassigned.", - "category": "News and News Media", - "link": "https://www.nytimes.com/2021/11/19/business/media/wnyc-gothamist-jami-floyd.html", - "creator": "Marc Tracy", - "pubDate": "Fri, 19 Nov 2021 21:30:10 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "RUGBY. Course à la qualif', maintien, mais au fait où en est-on en Top 14 ?", + "description": "Après deux semaines de pauses pour échéances internationales, le Top 14 et la course au Brennus reprennent leurs droits ce week-end. On fait le point sur la situation du championnat.", + "content": "Fin de l'euphorie et la joie des tests de novembre, et notamment de ceux de l'équipe de France. C'est le retour du quotidien Top 14 et des joutes de nos clubs. Avec deux semaines d'arrêt, il n'est peut-être pas si évident de se souvenir des dynamiques du championnat et des positions de chacun des protagonistes. Voici ce qu'il faut savoir avant samedi.\nToulouse et Bordeaux locomotives\nAvec respectivement 10 et 7 points d'avances sur le 3ᵉ Montpellier, le double champion de France en titre et l'UBB sont clairement les deux meilleures équipes du début de saison. Portées par leur charnière Dupont-Ntamack et Lucu-Jalibert, elles ne comptent que 2 défaites chacune en 10 rencontres. Lors de la 11ᵉ journée néanmoins, les deux clubs procèderont à une revue d'effectif pour reposer leurs effectifs, et devront faire face à domicile contre Brive, et surtout au Racing pour Bordeaux. La tâche s'annonce difficile pour ces derniers malgré leur effectif complet.RUGBY. Top 14. Pas de repos pour tous les braves de l'équipe de France de rugby\nMontpellier et La Rochelle trouvent leur rythme, Castres et Lyon alternent le chaud et le froid\nParmi les (nombreux) prétendants à la qualification pour les phases finales, on retrouve Montpellier et La Rochelle dans des dynamiques positives. Que ce soit le finaliste 2021, auteur de 4 victoires lors de ses 5 derniers matchs, dont une convaincante face à Bordeaux lors de la dernière journée, ou bien Montpellier qui pointe désormais à la 3ᵉ place, grâce notamment à ses performances au Racing et au Stade Français, et à la maison contre Lyon. En revanche, Castres et Lyon stagnent dans leur position respective. Si les Lyonnais sont à une 4ᵉ place synonyme de barrage à domicile, Castres est au pied des phases finales à la 7ᵉ place. Depuis la déculottée à Toulouse dans le derby, les Tarnais enchainent les performances poussives. Une victoire de justesse à Pierre Fabre contre Brive (23-22) et une défaite à Lyon (30-23), ont marqué un coup d'arrêt à un début de saison bien débuté. Le Castres Olympique se déplace à Montpellier ce samedi.\nLe Racing 92 handicapé, Clermont enfin lancé ?\nAvec son armada de blessés (13) et d'absences pour sélections, le Racing s'en sort finalement bien à la 5ᵉ place. Sa victoire lors de la 9ᵉ journée face au Stade Toulousain a rappelé qu'il faudrait compter sur les Franciliens cette année. Clermont lui, semble (enfin) trouver son rugby. Ses dernières performances face à Pau et Toulon ainsi qu'à Montpellier, indiquent une hausse de niveau et le début de l'apport Jono Gibbes en tant qu'entraineur. Le Racing reçoit Bordeaux à 21h00 ce dimanche, et Clermont se déplace à l'USAP.\nLes 4 derniers dans un mouchoir de poche\nOutre Brive et Pau dans le ventre mou du classement, Paris, Toulon, Perpignan et Biarritz se tiennent en 4 points seulement. Biarritz accuse le coup depuis quelques matchs, alors que les Biarrots avaient réalisé un très bon départ (victoire à Aguilera face à Bordeaux et le Racing). Perpignan s'accroche et semble mieux armé que lors de sa saison 2018/19 cauchemardesque. Paris retrouve petit à petit son niveau et pourrait se détacher au classement, alors que Toulon vient juste de recruter Franck Azéma pour relancer le club. La lutte pour le maintien sera encore une fois âprement disputée.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-course-a-la-qualif-maintien-mais-au-fait-ou-en-est-on-en-top-14-2411211644.php", + "creator": "", + "pubDate": "2021-11-24 16:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Amazon Deforestation Soars to 15-Year High", - "description": "Brazil committed this month to end illegal deforestation in eight years, but a government report raises questions about its intent and ability to meet that target.", - "content": "Brazil committed this month to end illegal deforestation in eight years, but a government report raises questions about its intent and ability to meet that target.", - "category": "Politics and Government", - "link": "https://www.nytimes.com/2021/11/19/world/americas/brazil-amazon-deforestation.html", - "creator": "Manuela Andreoni", - "pubDate": "Fri, 19 Nov 2021 18:26:13 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "VIDÉO. Rugby. Équipe de France. Le discours intense de Galthié qui a propulsé les Bleus vers la victoire", + "description": "La FFR nous propose de rentrer dans l'intimité de l'équipe de France de rugby grâce à ces images filmées avant, pendant et après le match face à la Nouvelle-Zélande.", + "content": "Au cas où vous auriez passé le week-end sur la lune ou que vous ayez trop arrosé l'anniversaire de tata Suzanne, l'équipe de France a battu la Nouvelle-Zélande pour la 13e fois seulement de son histoire. Les Bleus restaient sur quatorze revers de rang face aux All Blacks. Un match d'anthologie pour beaucoup. Il faut dire que les Tricolores ont infligé une belle fessée aux Kiwis. Laquelle aurait pu être bien plus importante sans un réveil (prévisible) des visiteurs dans le second acte. Ce qui n'enlève rien à la performance tricolore. Ce match, c'est l'aboutissement de deux années de travail de la part du staff emmené par Fabien Galthié. Il doit permettre aux Bleus de continuer de grandir afin de valider l'objectif ultime, remporter la Coupe du monde en France en 2023. Nul doute que le sélectionneur et son équipe sauront comment faire progresser ce groupe et le conduire dans la bonne direction comme ils ont su le faire jusqu'à présent. Avant cela, retour sur les coulisses de ce match mémorable avec notamment le discours et les mots forts de Fabien Galthié avant la rencontre en passant par la remise des maillots et la venue du président.\n", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/video-rugby-equipe-de-france-le-discours-intense-de-galthie-qui-a-propulse-les-bleus-vers-la-victoire-2411211628.php", + "creator": "", + "pubDate": "2021-11-24 16:30:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Gerald Migdol Is Charged in Campaign Finance Scheme", - "description": "Gerald Migdol is accused of concealing contributions to a New York City comptroller candidate to get more public-matching funds.", - "content": "Gerald Migdol is accused of concealing contributions to a New York City comptroller candidate to get more public-matching funds.", - "category": "Campaign Finance", - "link": "https://www.nytimes.com/2021/11/19/nyregion/nyc-fraud-campaign-finance.html", - "creator": "Matthew Haag", - "pubDate": "Fri, 19 Nov 2021 22:27:17 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby. Après 99, 2007, ce France-Nouvelle-Zélande a-t-il sa place au panthéon des Bleus ?", + "description": "La France s'est imposée contre les All Blacks ce samedi. Mais où placer ce succès dans la hiérarchie des victoires historiques face à ces mêmes adversaires ?", + "content": "L'effervescence de la victoire est forcément redescendue depuis ce samedi soir riche en émotions. Un succès face aux mythiques All Blacks, 40 points inscrits et une prestation des plus abouties. Et si cela reste toujours historique de battre les Néo-Zélandais, même lorsque ces derniers paraissent essoufflés après une saison éreintante, cette soirée restera à coup sûr, dans le panthéon des succès face à la meilleure nation du monde. De par son ambiance, un stade de France à guichets fermés, 82 000 personnes prêtes à pousser à chaque action de ses protégés. De par la manière également, et cette première période de rêve à ce moment de doute au milieu du second acte. Avant cette relance de Romain Ntamack, qui fut merveilleusement poursuivie par Melvyn Jaminet, et enfin la délivrance, suite à l'interception de Damian Penaud. Alors, histoire de remonter dans le temps, retour sur les plus beaux exploits des Français lors des confrontations contre la Nouvelle-Zélande. \nRUGBY. ''Un match d'anthologie'', un supporter nous raconte son France/Nouvelle-Zélande au ras de la pelouse\n1979 : Un 14 juillet historique\n\nCe jour de fête nationale, le XV de France est en tournée en Nouvelle-Zélande. Après une défaite à Christchurch une semaine plus tôt (23-9) qui ne souffre d'aucune contestation, la bande à Jean-Pierre Rives a de nouveau rendez-vous avec ces mêmes All Blacks à l'Eden Park d'Auckland. Une rencontre qui s'avèrera être bien différente de la semaine d'avant. Auteurs d'une prestation remarquable, les Français mèneront 24-10 à dix minutes du trille final de l'arbitre. Des essais signés Gallion, Caussade, Averous et Cordoniou. Mais les Néo-Zélandais recolleront dans les derniers instants et offriront une fin de match déconseillée aux cardiaques (19-24). Les Bleus résisteront et s'imposeront. Historique puisque cela signe la première victoire française en terre néo-zélandaise. Comme un symbole, un 14 juillet. \n\n1994 : Une tournée idyllique\nEn déplacement en Nouvelle-Zélande pour une série de test-matchs, la France va balayer non pas une, mais deux fois la Nouvelle-Zélande pour remporter avec brio la tournée estivale. Le 26 juin 1994 dans un premier temps, où la bande à Phillipe Berbizier s'impose nettement 22-8. Avant ce fameux 3 juillet 1994. Outre la victoire à l'arrachée 23-20, on se souviendra de cet essai du bout du monde, conclu par Jean-Luc Sadourny. Là aussi une nouvelle fois, une tournée à jamais dans les livres d'histoire. \n\n1999 : La France terrasse les Blacks de Lomu\nCela fait un an jour pour jour que Christophe Dominici nous a quittés. Alors pour lui rendre un hommage, quoi de mieux que de se rappeler cette fameuse victoire en demi-finale de Coupe du Monde, à Twickenham, le temple du rugby. Alors certes vous connaissez l'histoire par cœur. De cette première mi-temps difficile, où Jonah Lomu lui aussi décédé il y a à peine plus de six ans, a marché sur l'ensemble de la délégation tricolore à ce second acte monumental des Bleus. Ces essais de Dominici, de Dourthe ou encore Bernat-Salles et cette victoire incroyable (43-31) qui permit à la France de se hisser en finale, la deuxième de son histoire. Savoureux. \nVIDEO. FLASHBACK. 1999. La France de Philippe Bernat-Salles élimine les All Blacks dans une 1/2 d'anthologie\n2000 : Et le Vélodrome s'enflamma\nVIDEO. En 2000, les Bleus de Galthié et Lamaison s'offraient les All Blacks d'Umaga à Marseille\nUn an après cette fameuse demi-finale, le XV de France reçoit la Nouvelle-Zélande. Au Vélodrome, l'enceinte la plus bouillante de France et sûrement l'une des références en Europe en matière de foot. Mais les Marseillais savent aussi se mettre à l'heure rugby. Une semaine après avoir été battus par ces mêmes Néo-Zélandais au Stade de France, les Bleus vont livrer une partition mémorable, emmenés par un Christophe Lamaison étincelant. Une victoire 42-33 dans la fournaise du ''Vel''. \n\n2007 : David contre Goliath\n6 octobre 2007. La France pourtant organisatrice de cette Coupe du Monde, doit se déplacer à Cardiff pour disputer ce quart de finale. La rencontre ayant été délocalisée hors de l'Hexagone, celle ci s'annonce encore plus compliquée quand on connaît le nom de l'adversaire : la Nouvelle-Zélande. Les partenaires de Richie McCaw se sont montrés intraitables en poule, balayant chacun de leurs adversaires avec une facilité déconcertante. 40-0 contre l'Écosse, 76-14 face aux Italiens, 85-8 contre la Roumanie et une gifle infligée au Portugal : 108-13. Oui mais voilà, c'est peut-être ce manque d'adversaire coriace qui a conduit les hommes du pays du long nuage blanc à leur perte. Car sur ce quart de finale, ils vont tomber face à des Bleus solidaires. Et ce dès le haka, quand les hommes de Bernard Laporte s'avanceront comme un seul homme vers leurs adversaires. Et malgré une entame à la faveur des Blacks, les Bleus réagiront et finiront par s'imposer grâce notamment à deux essais de Dusautoir et Jauzion (20-18).\n\n2009 : Rebelote, 13 ans plus tard\nDeux ans plus tard, les Bleus se déplacent en Nouvelle-Zélande pour y affronter les Blacks. L'un des gros tests pour le sélectionneur Marc Lièvremont qui n'hésite pas à lancer ses jeunes joueurs (Dupuy, Trinh-Duc) à Dunedin. Alors que les Bleus (en blanc) mènent rapidement 17-0, ils voient les Blacks revenir à l'heure de jeu (17-17). Mais une interception de Médard et la botte d'un Julien Dupuy impérial, viendront sceller le sort du match. Le dernier essai des locaux ne changera rien (22-27). 13 ans après, la France s'impose de nouveau sur le sol néo-zélandais. \nRugby. Pourquoi la victoire de l'équipe de France a sans doute rendu service à la Nouvelle-Zélande ?Alors selon vous, laquelle de ces victoires reste la plus marquante dans l'histoire du XV de France ? Répondez-nous en commentaires.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-ce-france-nouvelle-zelande-est-il-le-match-le-plus-memorable-des-bleus-2411211542.php", + "creator": "", + "pubDate": "2021-11-24 16:15:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "M.L.B. Finalizes Plan to Provide Housing for Minor Leaguers", - "description": "An advocacy group called the deal a “historic victory,” but noted that there were issues that might need to be addressed.", - "content": "An advocacy group called the deal a “historic victory,” but noted that there were issues that might need to be addressed.", - "category": "Baseball", - "link": "https://www.nytimes.com/2021/11/19/sports/baseball/mlb-housing.html", - "creator": "James Wagner", - "pubDate": "Fri, 19 Nov 2021 21:19:08 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "C'est passé inaperçu, mais le All Black Dillon Hunt doit stopper sa carrière à seulement 26 ans", + "description": "Absent des terrains depuis plus d'un an à cause de commotions à répétition, Dillon Hunt (2 sélections) doit raccrocher les crampons, à seulement 26 ans...", + "content": "Un de plus sur la liste, donc... À l'été 2020, les Blues n'avaient pas été peu fiers d'annoncer le retour d'un des enfants d'Auckland, Dillon Hunt, dans son fief. Le 3ème ligne sortait de saisons pleines du côté des Highlanders, où il s'était fait un nom et était devenu l'un des meilleurs plaqueurs/gratteurs du Super Rugby. Sauf que voilà, plus d'un an plus tard, Hunt n'était toujours pas apparu sur une seule feuille de match de la franchise de la plus grande ville du pays. \nRUGBY. L'ancien toulonnais et palois Carl Hayman souffre de démence précoce\nEt pour cause, à seulement 26 ans, l'ancien vice-capitaine des Landers a annoncé il y a quelques jours qu'il devait mettre un terme à sa carrière. Depuis novembre dernier et un choc à la tête lors d'un match de NPC avec sa province de North Harbour, il traîne en effet une énième commotion, dont il ne s'est cette fois jamais totalement remis. Dans une interview pour le NZ Herald, le principal intéressé confiait \"être revenu trop tôt d'une commotion subie 8 semaines plus tôt\", et met en garde tous les pratiquants de rugby encore en activité sur le fait de ne pas plaisanter avec les coups reçus à la tête. Au milieu d'autres exemples, lui explique ne pas avoir pu \"entendre la moindre nuisance sonore ni voir la moindre lumière\" pendant des mois...\nRUGBY. Le All Black Liam Squire contraint de prendre sa retraite à seulement 30 ans\nEn 2017 lors du match de semaine face à la France puis en 2018 au Japon, Hunt avait connu les joies des All Blacks. Joueur agressif, dur au mal et gros défenseur, son profil s'inscrivait clairement dans la lignée d'un Sam Cane, par exemple. Il s'agit déjà du 3ème international néo-zélandais à devoir raccrocher les crampons prématurément cette année, après Liam Squire (30 ans) et Nathan Harris (29 ans). Une nouvelle qui risque une nouvelle fois de relancer le débat autour de la prise en compte de ces blessures ; en espérant - au moins - qu'elles ne fassent pas subir de fâcheuses conséquences à Dillon Hunt durant le reste de sa nouvelle vie...", + "category": "", + "link": "https://www.lerugbynistere.fr/news/cest-passe-inapercu-mais-le-all-black-dillon-hunt-doit-stopper-sa-carriere-a-seulement-26-ans-2411211514.php", + "creator": "", + "pubDate": "2021-11-24 15:25:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Business Updates: Google Questions Impartiality of Justice Dept. Antitrust Boss", - "description": "The move, announced on Friday, is an attempt by the country’s newish prime minister to revive an economy battered by Covid restrictions and a supply chain crunch.", - "content": "The move, announced on Friday, is an attempt by the country’s newish prime minister to revive an economy battered by Covid restrictions and a supply chain crunch.", + "title": "OFFICIEL. Révolution dans le rugby : World Rugby approuve le principe du droit de naissance", + "description": "Ce mercredi, le Conseil de World Rugby a approuvé un amendement au règlement 8 régissant la représentation des équipes nationales", + "content": "\n🍾\n— Daniel Leo (@danleo82) November 24, 2021\n\nC'est une décision qui pourrait changer le rugby tel qu'on le connaît aujourd'hui. Et surtout, qui devrait aider certaines nations à progresser. Ce mercredi, le Conseil de World Rugby a approuvé un amendement au règlement 8 régissant la représentation des équipes nationales. À partir du 1er janvier 2022, un joueur international pourra changer de fédération, sous réserve de démontrer un lien étroit et crédible avec la nouvelle fédération par le biais du droit de naissance. Et ce, pour une seule et unique fois dans sa carrière. Ce changement sera régi par plusieurs critères :\n\nLe joueur doit se retirer du rugby international pendant 36 mois\nLe joueur doit soit être né dans le pays de la fédération dans laquelle il souhaite être transféré, soit avoir un parent ou un grand-parent né dans ce pays.\nSelon les critères révisés du Règlement 8, un joueur ne peut changer de fédération qu'une seule fois et chaque cas sera soumis à l'approbation de la Commission des Règlements de World Rugby afin de préserver l'intégrité\n\nUn changement historique qui va notamment permettre aux nations du Pacifique de pouvoir accueillir dans leurs rangs des joueurs qui auraient par exemple joué avec les All Blacks comme Fekitoa ou Piutau ou encore l'Angleterre comme les frères Vunipola. \"Nous pensons que c'est la manière la plus équitable de mettre en œuvre un changement progressif qui donne la priorité aux joueurs tout en ayant le potentiel de soutenir un rugby international masculin et féminin en pleine croissance et de plus en plus compétitif\", a commenté Sir Bill Beaumont, président de World Rugby sur le site de la fédération internationale.", "category": "", - "link": "https://www.nytimes.com/live/2021/11/19/business/news-business-stock-market", - "creator": "The New York Times", - "pubDate": "Fri, 19 Nov 2021 22:22:24 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "link": "https://www.lerugbynistere.fr/news/officiel-revolution-dans-le-rugby-world-rugby-approuve-le-principe-du-droit-de-naissance-2411211520.php", + "creator": "", + "pubDate": "2021-11-24 15:21:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Why the U.S. Is Considering Expanding Booster Shot Eligibility to All Adults", - "description": "The U.S. may soon offer booster shots to every adult. Here’s why.", - "content": "The U.S. may soon offer booster shots to every adult. Here’s why.", + "title": "VIDEO. RUGBY. France. Du punch et des cannes, Penaud et Villière, les deux font la paire", + "description": "À l’instar de Ntamack, Damian Penaud et Gabin Villière ont aussi été très en vue face à la Nouvelle-Zélande. De quoi en faire des titulaires indiscutables ?", + "content": "France Rugby : Romain Ntamack sur sa folle relance : ''c'est l'instinct'' !Si la prestation de Romain Ntamack face aux Blacks n’est pas passée inaperçue et a suscité de nombreux éloges à son égard. La performance des deux ailiers français est aussi à souligner. Auteur d’un début de saison exemplaire avec l’ASM, Damian Penaud, nous avait rassuré lors des deux premières rencontres de la tournée. Après un match sérieux, mais sans grande envolée face aux Pumas, il avait régalé contre la Géorgie. Deux essais et le titre d’homme du match, l’ailier clermontois était en feu. Face aux Blacks, l’Auvergnat a répondu présent. Avec 77 mètres parcourus ballons en main en seulement 3 courses, on peut dire que l’ailier a fait des interventions tranchantes. Comme à son habitude, toujours dans les bons coups et dans un style tout en vitesse, à l’image de sa course folle après la remise 'inté' de Danty. Souvent critiqué pour son jeu au pied, il réussira même un magnifique jeu au pied par-dessus en bout de ligne qui donnera une mêlée à 5m introduction française. Mais surtout, quand la France avait seulement 5 longueurs d’avance sur les Néo-zélandais, à la suite d’un turnover, l’ailier clermontois viendra crucifier les Blacks d’une magnifique interception qui terminera entre les perches. Presque rien à redire sur ce match, si ce n’est sa défense trop tendre sur l’essai de Jordie Barrett en début de deuxième mi-temps. Damian Penaud n’est pas le joueur le plus utilisé par Galthié en 2021 pour rien.\nD’abord forfait pour les premières semaines de rassemblement, Gabin Villière aurait pu voir cette tournée dans son canapé. Tout juste remis, il est rappelé une semaine avant le premier test face à l’Argentine. Un match qu’il commencera avec le numéro 11 sur le dos. Pas grand-chose à se mettre sous la dent, l’ailier toulonnais s’illustrera par son activité débordante et par une belle prise de balle sur l’essai refusé de Dupont. Pas retenu pour le deuxième match aux dépens de Lebel. Ça sera bien lui qui sera titulaire face aux Blacks. En duel face à un Will Jordan en feu depuis quelque temps, on pouvait lui promettre une partie plutôt rude. C'est plutôt l’ailier néo-zélandais qui a subi les impacts du Français à l’image de son énorme percussion en bout de ligne qui laissera Jordan sur le ventre. Dans son style si caractéristique, plein d’envie et de gaz, le Toulonnais donne le ton de rencontre en allant se joindre aux avants sur le premier ballon porté qui aboutira à l’essai de Mauvaka. Comme lors du premier test, Villière aura eu une énorme activité autour des rucks en multipliant les prises de balle, 7 pour être exact.\nSi Damian Penaud avait quasiment sa place assurée au sein du XV de départ lors de la tournée, il restait une place à pourvoir de l’autre côté de la ligne de trois-quarts. Gabin Villière semblait avoir un peu d’avance sur ses concurrents, et il l’a confirmé lors de cette tournée. Le sélectionneur Fabien Galthié a très certainement trouvé sa paire d’ailiers pour le 6 Nations. Une paire très complémentaire, avec le flair et la pointe de vitesse de Penaud, et le punch et l’envie débordante de Villière. En attendant leurs nouveaux exploits lors du Tournoi, on vous laisse avec la compilation de leurs meilleures actions face aux Blacks :\n", "category": "", - "link": "https://www.nytimes.com/2021/11/19/briefing/booster-eligibility-us-fda.html", - "creator": "Ian Prasad Philbrick and Claire Moses", - "pubDate": "Fri, 19 Nov 2021 13:59:58 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "link": "https://www.lerugbynistere.fr/videos/rugby-france-du-punch-et-des-cannes-penaud-et-villiere-les-deux-font-la-paire-2411211425.php", + "creator": "", + "pubDate": "2021-11-24 14:30:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How Belarus Manufactured a Border Crisis", - "description": "A political gamble by the nation’s desperate leader has become a diplomatic and humanitarian crisis.", - "content": "A political gamble by the nation’s desperate leader has become a diplomatic and humanitarian crisis.", - "category": "Belarus-Poland Border Crisis (2021- )", - "link": "https://www.nytimes.com/2021/11/19/podcasts/the-daily/belarus-poland-migrant-crisis-european-union.html", - "creator": "Michael Barbaro, Sydney Harper, Mooj Zadie, Clare Toeniskoetter, Rachelle Bonja, Lynsea Garrison, Mike Benoist, Patricia Willens, M.J. Davis Lin, Dan Powell and Chris Wood", - "pubDate": "Fri, 19 Nov 2021 11:00:07 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "France Rugby. LA stat impressionnante : Melvyn Jaminet, le cannonier des Bleus", + "description": "Les débuts de Melvyn Jaminet en Bleu sont fracassants : en plus de ses qualités dans le jeu, il a déjà inscrit 89 points en 6 rencontres. Un record, à ce stade.", + "content": "C'est peu dire que Melvyn Jaminet fait partie des réussites de l'année chez les Bleus. Arrivé là en Australie alors qu'il n'avait pas la moindre minute de Top 14 dans les jambes, l'arrière de l'USAP a plus qu'impressionné que ce soit cet été ou durant l'automne, ces dernières semaines. À tel point qu'il paraît presque insensé (comme d'autres choix de la même instance d'ailleurs) que l'ancien hyèrois ne soit pas nommé dans la liste des potentielles révélations de l'année de World Rugby. \nARBITRAGE. Y'avait-il réellement en-avant de Melvyn Jaminet sur l'essai refusé à Antoine Dupont ?\nCar au-delà du fait qu'il fait qu'il \"pue\" le rugby, qu'il soit serein en défense et sur les ballons hauts et que sa vitesse fasse de lui un danger permanent, Jaminet a surtout prouvé qu'il était un buteur de (top) niveau international. Sur ses 6 premières capes, le joueur formé à Toulon a en effet passé 41 des 45 coups de pieds qu'il a tentés, soit 91,9% de réussite ! Avec 89 points marqués au passage, le garçon de 22 ans est tout simplement le recordman de l'histoire de l'Équipe de France à ce stade, bien loin devant des garçons comme Titou Lamaison (46 pts) ou Thomas Castagnède (42 pts), comme le signale Actu Rugby.\nXV de France. Melvyn Jaminet, le minot s’illustre déjà par une statistique “Made in USAP”\nEt à l'étranger ? Oh, dans l'histoire, ils ne sont que deux à avoir dépassé la statistique hallucinante du petit frère de Kylian. Et oui, au-delà du talent et de la réussite, on oublie souvent que cette responsabilité si cruciale n'est que très rarement confiée à des débutants au niveau international. C'est ainsi que \"Mel\" n'est devancé que par les Néo-Zélandais Grant Fox et Andrew Mehrtens, qui culminaient eux à 112 unités en 6 sélections... Quid du recordman de points français (436 en 77 capes), Frédéric Michalak ? Au même stade, il n'en était qu'à 3 petits pions, ce qui peut laisser imaginer de (très) grandes choses pour son cadet de 17 ans...\nVers l'infini et l'au-delà ? \nD'autant qu'en dehors de nos contrées et pour vous donner un ordre d'idées, les deux meilleurs réalisateurs de l'histoire internationale furent eux aussi derrière Melvyn après le même nombre de match. Dan Carter, ça vous dit quelque chose ? Et bien le GOAT n'en était \"qu'à\" 83 unités après 6 capes, dont 4 essais, lors de ses débuts fracassants en 2003. Sir Jonny Wilkinson ? Il ne comptait alors qu'une grosse quarantaine de points...\nTRANSFERTS. Melvyn Jaminet aurait rencontré Ugo Mola et Didier Lacroix !\nQuand on sait que le premier finit avec 1598 points au compteur (en 112 sélections) et le second à 1246 (en 97 sélections avec l'Angleterre et les Lions), l'on se dit que le champ des possibles est actuellement immense, à condition d'avoir la même longévité que ces deux pontes du rugby. Et si leur marque finale paraît intouchable, imaginez seulement si un jour, par le fruit du talent et du travail, Jaminet finissait par détroner celui qu'il admirait sur la pelouse de Mayol quand il était petit... Aux âmes bien nées, la valeur n'attend pas le nombre d'années.\n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/france-rugby-la-stat-impressionnante-melvyn-jaminet-le-cannonier-des-bleus-2411211212.php", + "creator": "", + "pubDate": "2021-11-24 12:20:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Emotional and Financial Business of Taylor Swift’s ‘All Too Well’", - "description": "What does the rerecorded song from “Red” say about how power and the past have shaped her career?", - "content": "What does the rerecorded song from “Red” say about how power and the past have shaped her career?", - "category": "Pop and Rock Music", - "link": "https://www.nytimes.com/2021/11/17/arts/music/popcast-taylor-swift-all-too-well.html", + "title": "POINT TRANSFERT. Un Australien au Racing 92, un Irlandais à l'UBB, un Wallaby au MHR", + "description": "On fait le point sur les rumeurs et les annonces officielles qui agitent le marché des transferts cette semaine en Top 14 et en Pro D2.", + "content": "Top 14\nMontpellier\nTop 14. 3 choses à savoir sur Brandon Paenga-Amosa, nouvelle recrue du MHRLe talonneur international australien Brandon Paenga-Amosa a officiellement signé au MHR pour deux saisons plus une en option. De son côté, l'ouvreur sud-africain Handré Pollard partira bien à la fin de la saison. Pour l'heure, la formation héraultaise ne lui a pas trouvé de remplaçant.\nCastres\nSelon le Midi Olympique le pilier droit de Carcassonne Aurélien Azar (27 ans), le deuxième ligne Gauthier Maravat (Agen, 21 ans) et le centre Adrien Séguret (Grenoble, 23 ans) ont signé pour deux ans. Le 3/4 de l'USAP Alivereti Duguivalu (24 ans) ainsi que le 3e ligne Asier Usarraga (Bayonne, 26 ans) et le demi de mêlée Gauthier Doubrère (Mont-de-Marsan) seraient aussi sur les tablettes du CO.\nRacing 92\nL'Australien Mitchell Short débarque en qualité de joker médical jusqu'en juin 2022. Pour rappel, le Racing est privé de Nolann Le Garrec et Teddy Iribaren en raison de blessure.Top 14. Racing 92. La tuile pour Iribaren, absent jusqu'à la fin de saison !\nUBB\nDu côté de l'UBB, l'absence de Jules Gimbert devrait être paliée par l'arrivée de l'Irlandais James Hart en provenance du BO.Top 14. Jules Gimbert (UBB) et Facundo Isa (RCT) ont déjà le genou dans la boîte à gants\nClermont\nTRANSFERT. TOP 14. Après Belleau, au tour de Louis Carbonel (RCT) d'être pisté par ClermontAbsence longue durée pour le centre Apisai Naqalevu, touché face au Pays de Galles à la main.\nUSAP\nLe champion de France 2021 de Pro D2 cherche à prolonger Alivereti Duguivalu.\n\nPro D2\nGrenoble\nLe FCG a trouvé un accord avec Paris sur le prêt jusqu'à la fin de la saison du centre international tongien Atu Manu.\nMont-de-Marsan\nPremier contrat pro pour le 3e ligne Aurélien Lisena jusqu'en 2025.\nColomiers\nAlexis Palisson devrait prolonger jusqu'en 2023. L'ancien tricolore arrivait en fin de contrat.\nBéziers\nL'ancien Wallaby Josh Valentine va faire son retour en France et sortir de sa retraite pour jouer avec l'ASBH.\nProvence Rugby\nTRANSFERTS. PRO D2. Énorme coup de Provence Rugby, qui signe un Maori All Black à la mêlée !\n\nPremiership\nSaracens\nLes Sarries sont prêts à signer le pilier de Bath et d'Angleterre Beno Obano en remplacement de Mako Vunipola, qui devrait quitter le club l'été prochain.\nLeicester\nLes Tigers de Leicester sont engagés dans une bataille avec Bath pour signer le demi d'ouverture des Springboks, Handre Pollard, après que la star anglaise George Ford a annoncé qu'il partait pour Sale Sharks l'été prochain.\n\nNouvelle-Zélande\nAll Blacks\nLe sélectionneur Ian Foster a le soutien de sa fédération et devrait rester en poste en 2022.TRANSFERT. Cette fois c'est sûr, Damian McKenzie va bel et bien s'envoler pour le Japon", + "category": "", + "link": "https://www.lerugbynistere.fr/news/point-transfert-un-australien-au-racing-92-un-irlandais-a-lubb-un-wallaby-au-mhr-2411211214.php", "creator": "", - "pubDate": "Wed, 17 Nov 2021 20:06:24 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "pubDate": "2021-11-24 12:15:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The First Family of New Jersey Football", - "description": "Seventeen of the last 20 New Jersey state high school championships have featured a team coached by Mike Campanile or one of his four sons.", - "content": "Seventeen of the last 20 New Jersey state high school championships have featured a team coached by Mike Campanile or one of his four sons.", - "category": "Coaches and Managers", - "link": "https://www.nytimes.com/2021/11/19/sports/football/nj-high-school-football-campanile.html", - "creator": "Kevin Armstrong", - "pubDate": "Fri, 19 Nov 2021 15:51:51 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "RUGBY. L'UBB va-t-elle causer la perte du Matmut Atlantique ?", + "description": "La SBA, exploitant du Matmut Atlantique connaît un déficit important depuis plusieurs années. La faute selon elle, au stade Chaban Delmas, l'antre de l'Union Bordeaux-Bègles.", + "content": "C'est une information révélée ce mardi par Sud Ouest. En 2020, SBA (la société Stade Bordeaux Atlantique), exploitant du Matmut Atlantique, l'enceinte des Girondins de Bordeaux et qui accueille lors de rares occasions des rencontres de l'UBB, a connu un important déficit de près de 3 millions d'euros. Ce qui n'est pas rare pour la société puisqu'elle connaît depuis sa création en 2015, de lourdes pertes chaque année comme nous l'apprend le quotidien. Si bien que cumulés, on approche les 20 millions d'euros dans le rouge. Ce qui pousse Loïc Duroselle, patron de SBA a pensé au dépôt de bilan comme il l'avait déclaré en 2019. Mais cela pourrait arriver plus vite que prévu puisque ''si la situation ne s'améliore pas, 2022 sera la dernière année de SBA. La société jettera l'éponge''. C'est ce que déclarait un membre de la commission de contrôle à Sud Ouest.\nClassement Top 14. Bordeaux prend la tête, Lyon perd du terrain, Toulon se rassure !\nLa semaine dernière, toujours selon le journal, SBA aurait estimé qu'il y avait un stade en trop à Bordeaux. Et on parle là de Chaban-Delmas. L'objectif pour la société serait que le Matmut ait deux locataires, en l'occurrence les Girondins et l'UBB, afin que les chiffres remontent. Le fait de voir l'UBB évoluer à Chaban causerait la perte de SBA toujours d'après la société. Des propos qui n'ont pas tardé à faire réagir les élus locaux : ''Un stade de trop, ce n'est pas la question. Quand SBA a signé le contrat, le stade Chaban existait déjà. Ils connaissaient son existence je suppose''. L'UBB va-t-elle, malgré elle causer la perte du Matmut Atlantique ? On grossit le trait bien évidemment mais les prochaines semaines pourraient s'avérer décisives pour l'enceinte bordelaise. La commission pense que SBA dramatise la chose, afin d'obtenir une renégociation du deal. Le propriétaire des Girondins de Bordeaux, Gérard Lopez, pourrait racheter l'enceinte si la situation devenait critique. Pour rappel, les Bleus ont disputé un match au Matmut Atlantique cet automne, contre la Géorgie. \nFrance Rugby. Ce qu'il faut retenir de la victoire des Bleus face à la Géorgie !", + "category": "", + "link": "https://www.lerugbynistere.fr/news/lubb-va-t-il-causer-la-perte-du-matmut-atlantique-2411211119.php", + "creator": "", + "pubDate": "2021-11-24 11:20:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘Bad Luck Banging or Loony Porn’ Review: No Sex, Please, We’re Romanian", - "description": "A viral video scandal ensnares a Bucharest schoolteacher in Radu Jude’s biting, bawdy and brilliant Covid-age fable.", - "content": "A viral video scandal ensnares a Bucharest schoolteacher in Radu Jude’s biting, bawdy and brilliant Covid-age fable.", - "category": "Movies", - "link": "https://www.nytimes.com/2021/11/18/movies/bad-luck-banging-or-loony-porn-review.html", - "creator": "A.O. Scott", - "pubDate": "Fri, 19 Nov 2021 19:51:19 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Top 14. Le projet Aguilera de nouveau enterré ? Énième rebondissement au Biarritz Olympique", + "description": "Alors que le projet Aguiléra avait enfin été validé par les deux parties, la SASP et la mairie, un nouveau rebondissement est venu une nouvelle fois tout chambouler.", + "content": "Biarritz, c'est un peu Dallas ces derniers mois. Et on se demande bien quand toute cette agitation en coulisse va bien pouvoir prendre fin. Bon, on va synthétiser. Depuis un certain temps, Jean-Baptiste Aldigé et la mairie de Biarritz étaient en conflit. La cause ? Ce fameux ''projet Aguilera''. Le président de la section professionnelle souhaitait une rénovation du stade ou encore la création d'un centre de formation moderne. Un projet auquel a refusé de prendre part Maïder Arosteguy, maire de la ville. Jean-Baptite Aldigé avait alors émis le souhait de délocaliser le club à Lille, hypothèse finalement enterrée par un retournement de situation. Ces derniers jours, on apprenait que la mairie avait finalement accepté de participer au projet, Maïder Arostéguy déclarant pour Midi Olympique : ''Tout est relancé. On est en train de retravailler la copie de départ. D'une part et d'autre, il y a une réelle volonté de faire avancer le projet Aguilera [...] On travaille sur une pérennisation du club sur son territoire d'origine.'' Oui mais voilà, un énième imbroglio est venu une nouvelle fois tout chambouler. \nChallenge Cup. Aguiléra désigné pour les matchs européens du BO, vers la fin du feuilleton basque ?\nEn effet, ce mardi Corine Martineau, conseillère municipale de Biarritz, indiquait sur sa page Facebook que la date limite de dépôt de dossier avait été dépassée, le dossier étant une nouvelle fois au point mort : ''La date limite impérative de dépôt des études et du permis de construire était le 15 novembre pour un début de travaux le 14 juin. Le financement public avait été trouvé et validé. Malheureusement, suite à une volonté manifeste encore une fois de la mairie de trainer et de tergiverser, cette date a été dépassée et empêche toute faisabilité. Nous sommes donc revenus au point de départ, c'est-à-dire sans perspective d'amélioration des installations sportives pour Aguilera et l'équipe sportive''. Alors, une solution va-t-elle être trouvée ? Dans le cas contraire, et si le projet Aguilera venait à être abandonné, Rugbyrama indique que le club n'aurait que deux solutions. Une poursuite en l'état ou une fermeture du club. La suite au projet numéro de ce feuilleton sans fin. \n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/top-14-biarritz-le-projet-aguilera-de-nouveau-enterre-enieme-rebondissement-au-biarritz-olympique-2411211005.php", + "creator": "", + "pubDate": "2021-11-24 10:07:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Little Lad? Berries and Cream? Call It Performance Art.", - "description": "Jack Ferver, the creator of a well-regarded body of dance-theater works, has also become a TikTok phenomenon because of a Starburst ad from 2007.", - "content": "Jack Ferver, the creator of a well-regarded body of dance-theater works, has also become a TikTok phenomenon because of a Starburst ad from 2007.", - "category": "Social Media", - "link": "https://www.nytimes.com/2021/11/19/arts/dance/berries-and-cream-tik-tok.html", - "creator": "Margaret Fuhrer", - "pubDate": "Fri, 19 Nov 2021 15:00:08 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Vos Matchs de Rugby : Toulouse/Brive, Agen vs Oyonnax, à quelle heure et sur quelle chaîne ?", + "description": "La période internationale est terminée. Retour du Top 14 et de la Pro D2 ce week-end avec la 11e et la 12e journée. Que nous réserve le programme.", + "content": "Après ce week-end totalement fou qui a vu l'équipe de France s'imposer face à la Nouvelle-Zélande, retour sur Terre avec la Pro D2 et le Top 14. Au programme, la 12e journée de deuxième division ainsi que la 11e journée en élite. Certaines formations seront encore privées de leurs internationaux, ce qui pourrait déboucher sur des résultats inattendus. Les stades devraient cependant faire le plein et la billetterie tourner à plein régime à l'instar de la buvette. Découvrez le programme des matchs du wee-end.\nPro D2 - 12e journée :\nJeudi 25 novembre\n\nBéziers vs Mont-de-Marsan à 20h45 sur Canal + Décalé ⏩ prenez vos billets au stade Raoul-Barrière\n\nVendredi 26 novembre\n\nBayonne vs Carcassonne à 19h30 sur Rugby + ⏩ prenez vos billets au stade Jean Dauger\nColomiers vs Vannes à 19h30 sur Rugby + ⏩ prenez vos billets au Stade Michel Bendichou\nNevers vs Bourg-en-Bresse à 19h30 sur Rugby + ⏩ prenez vos billets au stade du Pré Fleuri\nAurillac vs Rouen à 19h30 sur Rugby + ⏩ prenez vos billets au stade Jean-Alric\nGrenoble vs Narbonne à 19h30 sur Rugby + ⏩ prenez vos billets au stade des Alpes\nAix-en-Provence vs Montauban à 19h30 sur Rugby + ⏩ prenez vos billets au stade Maurice-David\nAgen vs Oyonnax à 20h45 sur Canal + Sport ⏩ prenez vos billets au stade Armandie\n\n\nTop 14 - 11e journée :\nSamedi 27 novembre\n\nUSAP vs Clermont à 15h sur Rugby + ⏩ prenez vos billets au stade Aimé Giral\nLa Rochelle vs Pau à 15h sur Rugby + ⏩ prenez vos billets au stade Marcel Deflandre\nMHR vs Castres à 15h sur Rugby + ⏩ prenez vos billets au GGL Stadium\nBiarritz vs Paris à 15h sur Rugby + ⏩ prenez vos billets au stade Aguiléra\nToulon vs Lyon à 17h sur Canal + ⏩ prenez vos billets au stade Mayol\nToulouse vs Brive à 21h05 sur Canal + ⏩ prenez vos billets au stade Ernest Wallon\n\nDimanche 28 novembre\n\nRacing vs UBB à 21h05 sur Canal + ⏩ prenez vos billets à la Paris la Défense Arena\n\n\nUnited Rugby Championship - 6e journée :\nVendredi 26 novembre\n\nConnacht vs Ospreys à 20h35 sur BeIn Sport\n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/vos-matchs-de-rugby-toulousebrive-agen-vs-oyonnax-a-quelle-heure-et-sur-quelle-chaine-2311211822.php", + "creator": "", + "pubDate": "2021-11-23 18:25:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Curry’s 3-Point Bonanza Has Golden State Bouncing Back", - "description": "A turnaround early this season has come with Stephen Curry reasserting why he is the best 3-point shooter in basketball history.", - "content": "A turnaround early this season has come with Stephen Curry reasserting why he is the best 3-point shooter in basketball history.", - "category": "Basketball", - "link": "https://www.nytimes.com/2021/11/19/sports/basketball/nba-golden-state-warriors-stephen-curry.html", - "creator": "Victor Mather", - "pubDate": "Fri, 19 Nov 2021 19:00:47 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "RUGBY. ''Un match d'anthologie'', un supporter nous raconte son France/Nouvelle-Zélande au ras de la pelouse", + "description": "Antoine a eu la chance d'assister à la victoire de l'équipe de France face à la Nouvelle-Zélande au Stade de France. Il nous raconte son match.", + "content": "FRANCE RUGBY. Le Stade de France, un chaudron ? Les All Blacks ont en tout cas été bluffés !Ce match entre l'équipe de France et la Nouvelle-Zélande au Stade de France restera dans les annales à plus d'un titre. Tout d'abord, parce que les Bleus ne battent pas souvent les All Blacks : première fois depuis 12 ans, première fois en France depuis 21 ans et première fois à Paris depuis 1973. Ce qui place déjà la performance. Deuxièmement parce que la Nouvelle-Zélande prend rarement 40 points et de cette manière après avoir été dominée pendant une période entière. Cette performance, 79 041 personnes ont pu y assister dont Antoine, un supporter des Bleus bien conscient d'avoir assisté à quelque chose d'historique. Cette rencontre mémorable, il a bien failli la voir à la télé comme beaucoup d'entre nous. \"J'ai eu la chance qu'on m'offre une place au dernier moment. La veille, c'était pas prévu que j'aille au Stade. Et là je me retrouve au ras de la pelouse juste devant l'endroit où le premier essai été marqué sur ballon porté.\" Mais avant ce premier essai, il y a eu le haka et surtout cette Marseillaise remarquable reprise par tout un stade comme un seul homme.\n \nInternational militaire, Antoine a déjà entendu et chanté l'hymne tricolore. On peut dire qu'il connaît bien. Il était aussi du match à Saint-Denis face aux Pumas. \"Mais là, ça n'avait rien à voir. On sentait vraiment qu'il y avait un truc spécial. Comme à chaque fois qu'une équipe joue les Blacks. C'est une équipe qui est attendue, admirée et crainte. En étant aussi près du terrain, et malgré la piste d'althé, on se rend compte à quel point ça va vite. On ressent la force des impacts.\" Mais les Bleus ont fait front et avec la manière. Auteurs de trois essais dans le premier acte, ils ont mis les All Blacks dans une position dans laquelle ils n'ont que très peu eu l'occasion d'être. Une réaction était donc forcément attendue de leur part. \"Ce sont les Blacks, on sait qu'il va se passer quelque chose, ça va forcément être dur. C'est impossible de gagner facilement contre eux. Et c'est ce qui s'est passé\". Douze minutes très compliquées pour les joueurs comme pour leurs supporters avec trois essais encaissés qui ont vu les Néo-Zélandais recoller à deux longueurs. Pourtant, il se dégageait de cette équipe de France une certaine sérénité. Spectateur privilégié, Antoine estime que les Bleus ont \"dominé dans tous les secteurs. Que ce soit dans les impacts, en défense, sur les ballons portés, le jeu déployé, la contre-attaque. C'est un match plein des Bleus hormis ce passage à vide de 12 minutes\". Un match qui a marqué les esprits des supporters. Au coup de sifflet final, personne n'avait envie de quitter le Stade de France. Tous avaient envie de communier avec les joueurs tout en étant bien conscients qu'ils avaient assisté à un moment rare. \"Contrairement au match France/Argentine où on a vu des spectateurs partir assez vite, tout le monde avait envie de saluer les joueurs pendant le tour d'honneur pour profiter de ce moment d'anthologie.\" Si Antoine avait un match à préparer le lendemain avec son club (le GTO Rugby Centre 77) et n'a donc pas célébré ce succès jusqu'au bout de la nuit, d'autres l'ont fêté pour lui. Vivement le Tournoi des 6 Nations et les réceptions de l'Italie, l'Irlande et surtout l'Angleterre pour revivre de superbes moments comme ceux-là.Crédit photo : Antoine R.", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/rugby-un-supporter-nous-raconte-son-francenouvelle-zelande-au-ras-de-la-pelouse-2311211643.php", + "creator": "", + "pubDate": "2021-11-23 16:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Inspiration for ‘Malfunction: The Dressing Down of Janet Jackson’", - "description": "The New York Times’s latest documentary, premiering Friday, examines the scandal surrounding the performer following the 2004 Super Bowl halftime show.", - "content": "The New York Times’s latest documentary, premiering Friday, examines the scandal surrounding the performer following the 2004 Super Bowl halftime show.", - "category": "Pop and Rock Music", - "link": "https://www.nytimes.com/2021/11/19/insider/janet-jackson-documentary.html", - "creator": "Rachel Abrams", - "pubDate": "Fri, 19 Nov 2021 16:58:08 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "VIDEO. Mystifié par les appuis de son adversaire, il colle un beau plaquage à l'arbitre à sa place", + "description": "Les officiels font partie du jeu et ils s'exposent parfois à recevoir le même traitement que les joueurs. Ici, l'arbitre a été plaqué à la place d'un joueur.", + "content": "VIDEO. Percutés, Plaqués, visés, ces arbitres n'ont pas eu la vie facile en Top 14On l'a récemment vu en Top 14, les arbitres n'ont parfois pas la vie facile sur le pré. Il arrive même que certains se blessent gravement. Heureusement, c'est assez rare. Cependant, les officiels font partie intégrante du jeu. Certaines équipes n'hésitent d'ailleurs pas à jouer avec leur présence sur le pré pour prendre à défaut la défense adverse. On appelle ça jouer dans la zone arbitre. De fait, il n'est pas rare de les voir encaisser quelques \"coups\" au passage. C'est pourquoi ils se doivent d'être prêts physiquement. Aucun n'est en effet à l'abri d'être percuté par un joueur et même plaqué. C'est ce qui est arrivé à cet officiel lors d'un match de catégorie jeune. Suite à une mêlée, le numéro 9 de la défense a été pris par les appuis du numéro 7. Emporté par son élan, et la tête un peu trop dans le guidon, il a plaqué l'arbitre et non le porteur du ballon. Notez que ce dernier a tout de même essayé de siffler en tombant. Dans son rôle jusqu'au bout.\n", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/video-mystifie-par-les-appuis-de-son-adversaire-il-colle-un-beau-plaquage-a-larbitre-a-sa-place-2311211412.php", + "creator": "", + "pubDate": "2021-11-23 16:00:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Mental Health Days Are Important. Here’s How to Make Yours Worthwhile.", - "description": "Well readers share advice on how to get away from it all.", - "content": "Well readers share advice on how to get away from it all.", - "category": "Mental Health and Disorders", - "link": "https://www.nytimes.com/2021/11/18/well/mind/mental-health-day-ideas.html", - "creator": "Christina Caron", - "pubDate": "Thu, 18 Nov 2021 19:30:21 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "RUGBY. Les statistiques frappantes de la victoire de l'équipe de France sur la Nouvelle-Zélande", + "description": "On revient sur la victoire de l'équipe de France de rugby sur la Nouvelle-Zélande dans l'Autumn Nations Series à travers les statistiques du match.", + "content": "\n\n47%\n\n\nAvez-vous eu l'impression que les Bleus avaient tous les ballons face à la Nouvelle-Zélande ? Une impression trompeuse. S'ils ont majoritairement occupé le camp all black (53 % d'occupation), les Bleus n'ont pas dominé en termes de possession (47 %). Ce qui est intéressant ici, c'est que les ballons que les hommes de Galthié ont eu à exploiter, ils les ont joués dans le camp adverse. En effet, ils n'ont eu que 37% de possession dans leur moitié de terrain. De fait, ils ont plus été en contrôle.\n\n\n\n\nMême dominés, les Blacks sont capables de tout. Et ça, toutes les nations le savent. Les Bleus en ont fait une fois de plus l'expérience dans le second acte en encaissant trois essais en moins de 15 minutes. Les Néo-Zélandais n'ont pourtant passé que 3 minutes dans les 22 mètres tricolores. Ce qui donne un ratio de 3,8 points par visite contre 2,9 pour les Bleus. Ce qui montre une fois de plus qu'ils sont diablement efficaces.\n\n\n3,8\n\n\n\n\nEfficacité ne veut pas forcément dire maîtrise. En fin de saison, les Kiwis étaient très certainement émoussés malgré le roulement au sein du groupe. Face aux Bleus, on a vu les All Blacks commettre beaucoup de fautes de mains (10) et de mauvaises passes (7). Ce qui a parfois débouché sur des en-avants (3). Ils n'ont pourtant pas été si maladroits que ça avec 11 offloads contre seulement 2 pour les Français. \n\n\n\n\n\n\nSi les Néo-Zélandais ont été si perturbés, c'est parce que l'équipe de France a mis beaucoup d'engagement, surtout devant. L'Irlande leur avait déjà fait le coup à Dublin et ils avaient annoncé qu'ils seraient plus physique à Saint-Denis. A ce petit jeu, ce sont les Bleus qui ont été les meilleurs. En effet, 16 % des rucks néo-zélandais ont mis six secondes ou plus à recycler le cuir contre seulement 6,7% des rucks tricolores. Preuve que ces derniers ont pas mal perturbé les sorties de balles adverses.\n\n\n\n\n83%\n\n\nIl est un domaine où les deux équipes n'ont pas été à leur top niveau : les plaquages. On a vu de beaux gestes défensifs lors de cette rencontre. Mais aussi de beaux passages à vide comme sur la relance de Ntamack où l'ouvreur bat au moins trois Néo-Zélandais dans l'en-but avant de mettre les cannes. Au total, les deux formations ont manqué 50 plaquages sur 293 tentés. De fait, leur taux de réussite respectif dépasse mollement les 80%. C'est faible.\n\n\n\n\nEn revanche, les deux nations ont été dans les standards internationaux sur la discipline avec 10 pénalités concédées pour la France et seulement une de plus pour les All Blacks. Ils ont cependant payé cher le carton jaune d'Ardie Savea dans le second acte avec l'essai sur interception de Penaud. C'est principalement au sol que les visiteurs ont été pénalisés (7 fois), preuve que les Français ont mis beaucoup d'engagement. La touche a aussi été un secteur où les All Blacks ont été contrariés (2 pénalités). A l'inverse, les Bleus ont été efficaces dans ces zones d'affrontement avec seulement 3 pénalités concédées dans les rucks. À l'avenir, ils devront néanmoins faire attention à leur replacement puisqu'ils ont été pris cinq fois par la patrouille pour des hors-jeu. Ce qui peut se payer cher à des moments critiques proches de la ligne\n\n\n\n\n\nOn termine avec une stat qui montre que les Bleus ont bien réalisé une véritable performance. C'est la première fois depuis 2016 et la défaite face à l'Irlande à Chicago que les All Blacks encaissaient 40 points. Surtout, l'écart à la pause (18 points, 24 à 6) est le plus large jamais connu par les All Blacks.\n\n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-les-statistiques-frappantes-de-la-victoire-de-lequipe-de-france-sur-la-nouvelle-zelande-2311211538.php", + "creator": "", + "pubDate": "2021-11-23 15:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Ease and Avoid Seasonal Affective Disorder", - "description": "As the days get shorter and the nights start earlier, take these steps to help prevent seasonal affective disorder.", - "content": "As the days get shorter and the nights start earlier, take these steps to help prevent seasonal affective disorder.", - "category": "Content Type: Service", - "link": "https://www.nytimes.com/2021/09/30/well/mind/seasonal-affective-disorder-help.html", - "creator": "Christina Caron", - "pubDate": "Thu, 30 Sep 2021 19:40:50 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "Rugby. Pourquoi la victoire de l'équipe de France a sans doute rendu service à la Nouvelle-Zélande ?", + "description": "À deux ans du match d'ouverture de la coupe du monde, les Français ont marqué leur territoire, mais n'est-ce pas aussi l'occasion pour les Néo-zélandais de se remettre sérieusement en question ?", + "content": "Les Français ont (re)mis en lumières les faiblesses néo-zélandaises samedi soir au Stade de France. Déficients en touche et sur les défenses de ballons portés, manque d'agressivité au sol. Si on ajoute à ça les facteurs la fatigue de la fin de saison, et les conditions sanitaires imposées, les All Blacks ont logiquement perdu pied face à de solides équipes comme l'Irlande ou la France. Jean-Baptiste Lafond, bien que régulièrement grisé pour sa manière de parler, analyse avec justesse la situation pour Rugbyrama de cette manière : \"Fabien Galthié le sait, il n'a pas affronté la meilleure équipe des Blacks. On était dans un contexte hyper-favorable : ils sont partis de chez eux il y a 2 mois et demie, ils n'en peuvent plus. Une bulle sanitaire, une équipe moyenne qui sera renouvelée de moitié d'ici à 2 ans. Comme disait un ministre japonais après l'attaque de Pearl Harbor : \"on va réveiller un géant\". \"France Rugby : Romain Ntamack sur sa folle relance : ''c'est l'instinct'' !En effet, qui sait ce qui serait arrivé si Romain Ntamack n'avait pas effectué sa folle relance depuis son en-but. À un moment du match où les Tricolores étaient en-dedans, une mêlée à 5 mètres de notre en-but aurait été peut-être préjudiciable et une victoire kiwi plausible. Une victoire trompeuse, car la Nouvelle-Zélande a été dominée de la tête et des épaules en première mi-temps. De la même manière que face à l'Irlande (même si ce coup ne s'est pas avéré gagnant), les hommes d'Ian Foster avaient tendance à faire le dos rond, pour préserver le score, puis à réaliser une action éclaire pour tuer la rencontre et le moral de leurs adversaires. En s'inclinant deux fois consécutivement, et réalisant sa pire saison depuis 2009, l'équipe à la fougère argentée se voit dans l'obligation de se remettre en question. Elle est justement dans la même situation qu'il y a 12 ans, où Richie McCaw et ses partenaires, deux ans avant d'accueillir la coupe du monde 2011, ne semblaient pas prêts.\n\"On doit se regarder dans les yeux, et avoir les discussions dont nous ne pouvons pas échapper\", déclarait Dane Coles juste après le coup de sifflet final de Wayne Barnes à Paris. Pour la saison 2010, les Blacks avaient procédé à des changements de rôle au sein de l'encadrement technique. Graham Henry, sélectionneur de l'époque, est passé de l'occupation de la défense aux avants, Steve Hansen a basculé sur l'attaque, et Wayne Smith de l'attaque à la défense et aux contre-attaques. Ces changements de statuts ont obligé en premier lieu les entraineurs à se remettre en question. Et on pense forcément à l'encadrement actuel, très critiqué. Ian Foster, qui souffre de la comparaison avec Scott Robertson, quintuple vainqueur d'affilée du Super Rugby avec les Crusaders, ne semble pas apporter un plan de jeu capable de faire évoluer son équipe. Son contrat ayant été renouvelé en août dernier, il devra faire la même introspection que ses prédécesseurs s'il souhaite amener la Nouvelle-Zélande à nouveau sur le toit du monde.\n\"La formule pour une grande équipe All Blacks ? Ils dominent physiquement. Ils ont des joueurs qui savent faire des choix et ont la capacité de tuer les équipes quand celles-ci ont des occasions\". La recette de Richie McCaw dans son livre autobiographique The Open Side. Et selon l'éditorialiste Patrick McKendry pour RugbyPass, cette équipe manque d'énergie et d'idées, deux ans seulement après la prise de fonction d'Ian Foster. De plus, il juge cette équipe, sans la présence d'un meneur comme Richie McCaw, et d'un milieu de terrain comme la paire Ma'a Nonu/ Conrad Smith, moins capable de se relever comme cela a pu être le cas déjà plusieurs fois par le passé. Il reconnait néanmoins qu'avec deux ans de préparations avant la Coupe du monde, cette équipe possède suffisamment de temps et de talent pour évoluer. Quoiqu'il en soit ce ne sera clairement pas la même équipe de Nouvelle-Zélande qui arrivera au Stade de France le 8 septembre 2023, qui plus est avec une introspection réalisée, une vraie fraîcheur physique et une volonté de fer de prendre sa revanche. La bête all black s'est peut-être réveillée ce 20 novembre 2021...", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-pourquoi-la-victoire-de-lequipe-de-france-a-sans-doute-rendu-service-a-la-nouvelle-zelande-2311211345.php", + "creator": "", + "pubDate": "2021-11-23 13:50:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Why Are More Black Children Dying by Suicide?", - "description": "Mental health experts assumed that people of all races had the same risk factors for self-harm. Emerging evidence suggests that is not the case.", - "content": "Mental health experts assumed that people of all races had the same risk factors for self-harm. Emerging evidence suggests that is not the case.", - "category": "Suicides and Suicide Attempts", - "link": "https://www.nytimes.com/2021/11/18/well/mind/suicide-black-kids.html", - "creator": "Christina Caron and Julien James", - "pubDate": "Fri, 19 Nov 2021 03:48:00 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", - "read": true, + "title": "RUGBY. Top 14. Pas de repos pour tous les braves de l'équipe de France de rugby", + "description": "Ce samedi, retour au quotidien du Top 14 pour les clubs. Les internationaux français peuvent jouer dès cette journée, mais Toulouse va reposer ses cadres.", + "content": "Après avoir brillé face à la Nouvelle-Zélande, les internationaux français du Stade Toulousain seront de repos face à Brive pour la 11ᵉ journée de Top 14 selon le Midi Olympique. Ce ne sont pas moins de 8 joueurs qui seront absents pour la venue des Coujous, à savoir Cyril Baille, Peato Mauvaka, François Cros, Anthony Jelonch, Antoine Dupont, Mathis Lebel et Romain Ntamack, ainsi que Julien Marchand, indisponible suite à sa blessure aux côtes face à la Géorgie.\nThomas Ramos et Dorian Aldegheri seront eux bien présents dans le groupe toulousain. Libérés dès le mercredi soir de la semaine de la rencontre face au All Blacks, ils pourront apporter une aide nécessaire à leur équipe face à des Brivistes qui viendront forcément motivés à l'idée de rencontrer un Toulouse diminué. On notera également l'exception Thibaut Flament qui devrait jouer ce samedi, étant donné le nombre d'absences importantes en deuxième ligne, en l'occurrence Rory Arnold, qui a joué l'Autumn Nations Series avec les Wallabies, ou encore Jo Tekori, retenu par les Manus Samoa pour affronter les Barbarians à Twickenham ce samedi.Rugby. Les Barbarians avec un fort contingent australien, deux Françaises chez les féminines !A ce jour, les autres clubs n'ont pas communiqué sur leur gestion des internationaux, si ce n'est l'USAP. Via le journal L'Indépendant, on apprend que le club sang et or compterait aligner Melvyn Jaminet dès ce samedi en vue de la réception de Clermont, et le reposer lors des échéances européennes de début décembre. Les clubs français ont obligation de reposer minimum un week-end un international avant la fin de l'année civil, si celui-ci est sélectionné pour les tests de novembre.\nCertains éléments qui ont été appelés mais qui n'ont pas joué devraient être alignés ce week-end. On pense à Ramos, Dulin, Priso, Buros, Vili, Rattez, Moefana, Barassi, Diallo, Becognée ou encore Verhaeghe.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-top-14-pas-de-repos-pour-tous-les-braves-de-lequipe-de-france-de-rugby-2311211207.php", + "creator": "", + "pubDate": "2021-11-23 12:10:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "How to Harness Your Anxiety ", - "description": "Research shows that we can tame anxiety to use it as a resource.", - "content": "Research shows that we can tame anxiety to use it as a resource.", - "category": "Anxiety and Stress", - "link": "https://www.nytimes.com/2018/10/16/well/mind/how-to-harness-your-anxiety.html", - "creator": "Alicia H. Clark", - "pubDate": "Tue, 16 Oct 2018 09:00:01 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "VIDÉO. La Nouvelle-Zélande a établi un record du monde impensable face à l'équipe de France de rugby", + "description": "Malgré une année terminée par deux défaites contre l'Irlande et la France, les Néo-zélandais ont battu un nouveau record du monde.", + "content": "La Nouvelle-Zélande succède à l'Argentine pour ce qui est du record du nombre d'essais marqués en test-matchs sur une saison. Lors de l'année 2003, les Pumas avaient terminé à 92 reprises dans l'en-but adverse. Les All Blacks ont battu ce record lors de leur victoire à Rome face à l'Italie (47-9). À l'issue de leur dernier test face aux Bleus, les coéquipiers de Beauden Barrett ont terminé la saison avec 102 essais. Rieko Ioane a été auteur du 100ᵉ néo-zélandais, avant qu'Ardie Savea inscrive le 101ᵉ et dernier essai de la saison.VIDEO. Autumn Nations Series. Les All Blacks s'offrent un record du monde face à de valeureux ItaliensLes Néo-zélandais ont bien été aidé par les 'air-défenses' des Tonga et des Etats-Unis, qui ont chacun encaissé 16 essais face à ces premiers. Deux rencontres qui leur ont permis de battre ce record, mais qui ne masqueront tout de même pas la fin de saison mitigée face à de plus grosses écuries, comme l'Afrique du Sud, l'Irlande ou la France. Avec 15 réalisations en 11 sélections, Will Jordan, l'ailier des Crusaders, termine la saison comme meilleur marqueur de son équipe. On se souviendra notamment de son bijou inscrit face aux gallois au Millenium Stadium.\n", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/video-la-nouvelle-zelande-a-etabli-un-record-du-monde-impensable-face-a-lequipe-de-france-de-rugby-2311211153.php", + "creator": "", + "pubDate": "2021-11-23 11:55:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "My 3-Year-Old Can Tell I’m Depressed", - "description": "Experts say that, instead of avoiding the topic, parents like me should shoot for ‘age-appropriate honesty.’", - "content": "Experts say that, instead of avoiding the topic, parents like me should shoot for ‘age-appropriate honesty.’", - "category": "Mental Health and Disorders", - "link": "https://www.nytimes.com/2021/04/09/well/mind/depression-parents-advice.html", - "creator": "Stephanie H. Murray", - "pubDate": "Tue, 13 Apr 2021 19:52:26 +0000", - "folder": "00.03 News/News - EN", - "feed": "NYTimes", + "title": "RUGBY. ESPOIRS. Le Rugby Club d'Aubenas-Vals dénonce ''un incident d'une gravité importante''", + "description": "Le Rugby Club d'Aubenas-Vals va comparaitre devant le conseil disciplinaire de la Fédération pour des faits graves relatés sur le terrain envers l'arbitre d'une rencontre en Espoirs.", + "content": "TOP 14. Racisme : Demba Bamba soutenu par Pierre MignoniLes dirigeants ardéchois ont publié un communiqué ce lundi stipulant qu'ils s'indignaient du comportement d'un \"supporter\", qui aurait proféré des insultes à caractères racistes envers l'arbitre, dans le cadre de la rencontre opposant Aix-en-Provence à Aubenas-Vals en Reichel Espoirs. C'est en tout cas ce que sous-entend le communiqué : \"Si des propos, des comportements ou des violences à caractère raciste, antisémite ou de toute autre nature injurieuse survenaient dans l'enceinte du stade, le RCAV se montrera d'une sévérité exemplaire et se réservera le droit de porter plainte contre la ou les personnes responsables de ces agissements qui devront assumer leurs actes devant la justice.\"\nL'arbitre de la rencontre aurait fait un rapport à la FFR et décidé de porter plainte contre le club. Ce dernier risque une sanction financière et sportive. Le Bureau Directeur du RCAV se réserve également le droit de porter plainte contre la ou les responsables des agissements. Les faits ne sont pour l'instant pas connus et devraient être rendus publics le 30 novembre, jour de l'audition du club.PRO D2. Ludovic Radosavljevic et Provence Rugby, c'est bientôt terminé !", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-espoirs-le-rugby-club-daubenas-vals-denonce-un-incident-dune-gravite-importante-2311211128.php", + "creator": "", + "pubDate": "2021-11-23 11:30:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - EN", - "name": "NYTimes" - }, - "12": { - "title": "World news | The Guardian", - "subtitle": "", - "link": "https://www.theguardian.com/world", - "image": "https://assets.guim.co.uk/images/guardian-logo-rss.c45beb1bafa34b347ac333af2e6fe23f.png", - "description": "Latest World news news, comment and analysis from the Guardian, the world's leading liberal voice", - "items": [ + }, { - "title": "Kyle Rittenhouse found not guilty after fatally shooting two in Kenosha unrest", - "description": "

Rittenhouse killed two people and injured a third at protests last year after a white officer shot a Black man, Jacob Blake, in the back

A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped America.

Rittenhouse killed Joseph Rosenbaum, 36, and Anthony Huber, 26, and wounded Gaige Grosskreutz, 27, when he shot them with an assault rifle as he roamed the streets of Kenosha with other armed men acting as a self-described militia during protests in August 2020, after a white police officer shot a Black man, Jacob Blake, in the back.

Continue reading...", - "content": "

Rittenhouse killed two people and injured a third at protests last year after a white officer shot a Black man, Jacob Blake, in the back

A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped America.

Rittenhouse killed Joseph Rosenbaum, 36, and Anthony Huber, 26, and wounded Gaige Grosskreutz, 27, when he shot them with an assault rifle as he roamed the streets of Kenosha with other armed men acting as a self-described militia during protests in August 2020, after a white police officer shot a Black man, Jacob Blake, in the back.

Continue reading...", - "category": "Kyle Rittenhouse", - "link": "https://www.theguardian.com/us-news/2021/nov/19/kyle-rittenhouse-verdict-kenosha-shooting", - "creator": "Maya Yang and Joanna Walters", - "pubDate": "2021-11-19T20:36:20Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "VIDEO. Equipe de France de Rugby. Entre justesse et efficacité, le meilleur d'Antoine Dupont face aux All Blacks", + "description": "Retour en vidéo sur le match du demi de mêlée Antoine Dupont face aux All Blacks. Le Toulousain a été précieux en défense et il a joué juste en attaque.", + "content": "RUGBY. Voici les nominés pour le prix du meilleur joueur au monde... avec Dupont dans la liste !Qui sera le meilleur joueur du monde ? Michael Hooper (Australie), Maro Itoje (Angleterre/British and Irish Lions), Samu Kerevi (Australie) ou bien Antoine Dupont (France) ? Sans être trop chauvin et compte tenu de la récente performance des Bleus face aux All Blacks, le demi de mêlée tricolore semble partir avec une longueur d'avance. Le vote des fans va-t-il consacrer le Toulousain ? Il pourrait succéder au Sud-africain Pieter Steph Du Toit et devenir le premier Français à remporter ce titre depuis un certain Thierry Dusautoir au sortir de la finale de la Coupe du monde 2011 perdue par les Bleus face à la Nouvelle-Zélande.\nFRANCE. RUGBY. Dupont plus fort que Smith, un nouveau statut à défendre ?Déjà élu meilleur joueur du Tournoi 2020, une première pour un Tricolore, Antoine Dupont ne cesse d'impressionner. S'il a été moins en vu offensivement en 2021, car plus surveiller, il pèse sur les résultats de l'équipe de France. Comme l'expliquait Sam Cane avant le match de samedi, il représente une menace constante. Aussi, les défenses ne peuvent pas le laisser sans surveillance. Ce qui permet à ses coéquipiers d'avoir plus d'espace. Sur la pelouse de Saint-Denis, il a été au four et au moulin avec pas moins de 8 défenseurs battus en seulement 41 mètres parcourus (9 courses). Il a réalisé une passe décisive et plaqué à sept reprises. Des plaquages qui, comme on peut le voir sur cette vidéo, ont souvent permis à la France de mettre les Blacks sous pression et d'avancer. En attaque, ses prises de décision et sa qualité de passe ont permis à la France de faire un grand match.\n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/video-equipe-de-france-entre-justesse-et-efficacite-le-meilleur-dantoine-dupont-face-aux-all-blacks-2311211101.php", + "creator": "", + "pubDate": "2021-11-23 11:02:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘I thought I was a goner’: survivors detail harrowing stories of Canada mudslides", - "description": "

Emergency crews continue search for victims after flash floods tear through region

Emergency crews in western Canada continued searching on Friday for victims of flash floods and mudslides which tore through the region this week, as survivors described harrowing escapes from the disaster.

British Columbia declared its third state of emergency in a year on Wednesday after a month’s worth of rain fell in two days, swamping towns and cities, blocking major highways and leaving much of the province under water.

Continue reading...", - "content": "

Emergency crews continue search for victims after flash floods tear through region

Emergency crews in western Canada continued searching on Friday for victims of flash floods and mudslides which tore through the region this week, as survivors described harrowing escapes from the disaster.

British Columbia declared its third state of emergency in a year on Wednesday after a month’s worth of rain fell in two days, swamping towns and cities, blocking major highways and leaving much of the province under water.

Continue reading...", - "category": "Canada", - "link": "https://www.theguardian.com/world/2021/nov/19/canada-floods-mudslides-survivors", - "creator": "Leyland Cecco in Toronto", - "pubDate": "2021-11-19T19:15:10Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "RUGBY. Jean Castex positif au Covid, inquiétude sur le Top 14 avec le retour des Bleus", + "description": "Le Premier ministre, Jean Castex, a été annoncé positif au Covid-19. Il aurait rendu visite aux Bleus après le match face aux Blacks.", + "content": "Une nouvelle pourrait bien venir gâcher le retour des joueurs de l'équipe de France en club après leur succès sur les All Blacks. Le Premier ministre, Jean Castex, annoncé cas contact, est positif au Covid-19. Or, ce dernier était présent au match des Bleus samedi au Stade de France. Après avoir assisté à la rencontre en tribunes aux côtés du président de la FFR Bernard Laporte, il aurait rendu visite aux joueurs dans les vestiaires selon RMC, sans doute en compagnie de ce dernier. Faut-il considérer que tous ceux qui étaient présents à ce moment-là sont également cas contact ? Auquel cas, ils devront s'isoler si on en croit les recommandations de l'assurance maladie. Du moins, \"si le schéma vaccinal est incomplet ou si l’on est immunodéprimé.\" On peut penser que tous les joueurs du XV de France ont été vaccinés.  En août dernier, la Ligue nationale de rugby parlait de 90 % de taux de vaccination. Un chiffre qui se rapprochait des 100 % selon Le Figaro en octobre. S'il devait y avoir un cas positif au sein des clubs, le ou les joueurs devront s'isoler pendant 10 jours. Selon les informations de RMC, Bernard Laporte aurait été testé négatif.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-jean-castex-positif-au-covid-inquietude-sur-le-top-14-avec-le-retour-des-bleus-2311211002.php", + "creator": "", + "pubDate": "2021-11-23 10:05:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Covid live: Dutch police open fire at protest; German government not ruling out full lockdown", - "description": "

Two injured as police in Rotterdam fire warning shots; German health minister says nothing can be ruled out

A quick snap from Reuters here that the UK government has announced it will add booster shot status to the Covid-19 pass for outbound international travel, though it said they would not be added to the domestic pass at this time.

The health ministry said that travellers who have had a booster or a third dose would be able to demonstrate their vaccine status through the NHS Covid pass from Friday, adding that a booster was not necessary to travel into England.

This pandemic has exposed a vulnerability to whole-system emergencies – that is, emergencies that are so broad that they engage the entire system. Although the government had plans for an influenza pandemic, it did not have detailed plans for many non-health consequences and some health consequences of a pandemic like Covid-19. There were lessons from previous simulation exercises that were not fully implemented and would have helped prepare for a pandemic like Covid-19. There was limited oversight and assurance of plans in place, and many pre-pandemic plans were not adequate. In addition, there is variation in capacity, capability and maturity of risk management across government departments.

Continue reading...", - "content": "

Two injured as police in Rotterdam fire warning shots; German health minister says nothing can be ruled out

A quick snap from Reuters here that the UK government has announced it will add booster shot status to the Covid-19 pass for outbound international travel, though it said they would not be added to the domestic pass at this time.

The health ministry said that travellers who have had a booster or a third dose would be able to demonstrate their vaccine status through the NHS Covid pass from Friday, adding that a booster was not necessary to travel into England.

This pandemic has exposed a vulnerability to whole-system emergencies – that is, emergencies that are so broad that they engage the entire system. Although the government had plans for an influenza pandemic, it did not have detailed plans for many non-health consequences and some health consequences of a pandemic like Covid-19. There were lessons from previous simulation exercises that were not fully implemented and would have helped prepare for a pandemic like Covid-19. There was limited oversight and assurance of plans in place, and many pre-pandemic plans were not adequate. In addition, there is variation in capacity, capability and maturity of risk management across government departments.

Continue reading...", - "category": "Coronavirus", - "link": "https://www.theguardian.com/world/live/2021/nov/19/covid-news-live-macron-says-locking-down-frances-unvaccinated-not-necessary", - "creator": "Nadeem Badshah (now); Lucy Campbell, Martin Belam and Samantha Lock (earlier)", - "pubDate": "2021-11-19T22:49:41Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "TRANSFERT. TOP 14. Après Belleau, au tour de Louis Carbonel (RCT) d'être pisté par Clermont", + "description": "En quête d'un ouvreur de haut niveau, l'ASM a visiblement décidé d'aller faire son marché du côté de Toulon...", + "content": "Décidemment, l'ASM aime l'odeur des marchés varois. Alors qu'il est fort probable que Camille Lopez quitte l'Auvergne à la fin de la saison, Clermont s'est donc lancé - depuis de nombreuses semaines - à la recherche d'un ouvreur du même calibre pour la saison prochaine. Et si Anthony Belleau (25 ans, 12 sélections) serait le choix numéro 1 des dirigeants jaunes et bleus (qu'il a d'ailleurs rencontrés), aucun accord n'a encore été donné, ni signé, de la part du natif de Montflanquin. \nPOINT TRANSFERT. Toulon lorgne Baubigny, l'ASM veut Belleau, Devergie vers Agen ?\nAlors, histoire de ne pas se retrouver bredouille si le dossier venait à ne pas aboutir, ces derniers auraient également activé leurs contacts avec un autre jeune ouvreur du RCT : Louis Carbonel. L'enfant du club (22 ans) vit en effet une situation assez difficile ces derniers temps puisqu'il a été relégué sur le banc des remplaçants, derrière Belleau justement. L'arrivée de Franck Azéma pourrait le relancer mais Clermont, qui connaît sa position, a bel et bien activé sa piste, selon nos confrères du Midi Olympique. L'affaire serait belle mais des choses s'y opposent et non des moindres : déjà, le contrat de \"Carbo\" court jusqu'en 2024 ; ensuite, on voit mal l'ouvreur aux 3 sélections quitter son \"chez lui\" aujourd'hui, si jeune et alors que le club a besoin de garçons comme lui pour préparer son avenir.\nXV de France. Lolesio vs Carbonel, aux bons souvenirs de 2019\nL'affaire finira-t-elle quand même par se faire ? C'est très peu probable, mais difficile d'affirmer quoi que ce soir pour l'heure. Toujours est-il que toujours selon le Midol, l'ASM aurait également songé à l'ouvreur italien des Harlequins Tommaso Allan, qui depuis cette année, est la doublure de la pépite anglaise Marcus Smith, chez le champion d'Angleterre...", + "category": "", + "link": "https://www.lerugbynistere.fr/news/transfert-top-14-apres-belleau-au-tour-de-louis-carbonel-rct-detre-piste-par-clermont-2211211630.php", + "creator": "", + "pubDate": "2021-11-22 16:40:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Peng Shuai: UN calls on China to prove tennis star’s whereabouts", - "description": "

Women’s Tennis Association adds to pressure by saying it is considering pulling its tournaments out of China

The UN has called on Chinese authorities to give proof of the whereabouts of tennis star Peng Shuai, as the White House said it was “deeply concerned” and the Women’s Tennis Association said it was prepared to pull its tournaments out of China over the matter.

Peng, a former doubles world No 1, has not been seen in public since she accused the former high-ranking official Zhang Gaoli of sexual assault on 2 November.

Continue reading...", - "content": "

Women’s Tennis Association adds to pressure by saying it is considering pulling its tournaments out of China

The UN has called on Chinese authorities to give proof of the whereabouts of tennis star Peng Shuai, as the White House said it was “deeply concerned” and the Women’s Tennis Association said it was prepared to pull its tournaments out of China over the matter.

Peng, a former doubles world No 1, has not been seen in public since she accused the former high-ranking official Zhang Gaoli of sexual assault on 2 November.

Continue reading...", - "category": "China", - "link": "https://www.theguardian.com/world/2021/nov/19/peng-shuai-wta-prepared-to-pull-out-of-china-over-tennis-stars-disappearance", - "creator": "Helen Davidson in Taipei, Vincent Ni and Tumaini Carayol", - "pubDate": "2021-11-19T16:41:53Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Équipe de France de Rugby. Demba Bamba, le ''supersub'' idéal ?", + "description": "Remplaçant lors des trois tests de cet automne, Demba Bamba a impressionné lors de chacune de ses rentrées, grâce à sa puissance et à son explosivité.", + "content": "Peu d'équipes dans le monde peuvent se targuer d'avoir un joueur de la qualité de Demba Bamba sur le banc ! Et pourtant, le Lyonnais a débuté chaque match de cette tournée avec le numéro 18 dans le dos. Des rentrées qui ont fait énormément de bien aux Bleus, et qui ont insufflé du sang neuf dans le pack. Si certains aimeraient le voir débuter, ne tiendrait-on pas là le supersub idéal ?\nVIDEO. BIP BIP ! Bamba écrase la défense catalane pour un essai 100% puissance !\nUne puissance rare\nCe qui frappe quand on voit Bamba, c'est avant tout son physique hors normes (1 mètre 85 pour 125 kg), qui lui permet de prendre souvent le dessus sur ses adversaires. Un avantage, d'autant plus accentué lorsqu'il se retrouve face à des joueurs pour la plupart émoussés ! On l'a d'ailleurs vu très à l'aise face à l'Argentine et à la Géorgie. Contre les Blacks, son entrée a également beaucoup apporté, notamment en mêlée. Si ce dernier doit faire attention à des prises de balles parfois brouillonnes, nul doute qu'il est à l'heure actuelle, l'un des piliers les plus prometteurs du monde. Mais alors, si Demba Bamba est aussi fort, pourquoi ne pas le titulariser ?\n\nHaouas ou Atonio détruisent, Bamba termine le boulot\nLa réponse à la question précédente se trouve peut-être dans ce paragraphe. Car si Galthié place Demba Bamba sur le banc, c'est pour le faire rentrer en début de seconde période, et profiter du travail fait par le titulaire au poste. Que ce soit Haouas ou Atonio, ces deux joueurs usent leurs adversaires en mêlée fermée, mais également dans le jeu courant, grâce à leur puissance. Le Rochelais s'est notamment montré très utile lors du premier acte, et à énormément peser sur le pack néo-zélandais. De plus, le fait que le Lyonnais puisse mettre beaucoup d'intensité sur une longue durée peut permettre à Fabien Galthié de débuter avec un pilier droit qui ne tient qu'une mi-temps, ou à peine plus. C'est le cas d'Atonio, ou à moindre mesure, de Mohamed Haouas. Demba Bamba fut d'ailleurs le premier finisseur a fouler la pelouse lors de chaque match de cette tournée, hormis blessure.\nXV de France : Demba Bamba explose et traverse la mêlée du Pays de Galles\nAlors, Demba Bamba plutôt finisseur que titulaire ? C'est en tout cas la position que prend le staff des Bleus pour le moment. Et au vu des performances du joueur, ainsi que des résultats de l'équipe, on ne peut que leur donner raison. D'autant plus que le champion du monde U20 semble être (enfin) tranquille avec les blessures pour le moment, ce qui lui permet d'enchaîner.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/equipe-de-france-de-rugby-demba-bamba-le-supersub-ideal-2211211539.php", + "creator": "", + "pubDate": "2021-11-22 16:30:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Lukashenko says Belarusian troops may have helped refugees reach Europe", - "description": "

Leader acknowledges it was ‘absolutely possible’ his army had a part in creating migrant crisis at Polish border

The Belarusian leader, Alexander Lukashenko, has acknowledged that his troops probably helped Middle Eastern asylum seekers cross into Europe, in the clearest admission yet that he engineered the new migrant crisis on the border with the EU.

In an interview with the BBC at his presidential palace in Minsk, he said it was “absolutely possible” that his troops helped migrants across the frontier into Poland.

Continue reading...", - "content": "

Leader acknowledges it was ‘absolutely possible’ his army had a part in creating migrant crisis at Polish border

The Belarusian leader, Alexander Lukashenko, has acknowledged that his troops probably helped Middle Eastern asylum seekers cross into Europe, in the clearest admission yet that he engineered the new migrant crisis on the border with the EU.

In an interview with the BBC at his presidential palace in Minsk, he said it was “absolutely possible” that his troops helped migrants across the frontier into Poland.

Continue reading...", - "category": "Alexander Lukashenko", - "link": "https://www.theguardian.com/world/2021/nov/19/lukashenko-says-belarusian-troops-may-have-helped-refugees-reach-europe", - "creator": "Andrew Roth in Moscow", - "pubDate": "2021-11-19T17:03:46Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Rugby. Les Barbarians avec un fort contingent australien, deux Françaises chez les féminines !", + "description": "Les Barbarians affrontent les Samoa ce samedi à Twickenham (15h30). L'occasion de revoir cette mythique sélection à l'œuvre 2 ans après. Chez les féminines, deux Françaises ont été sélectionnées....", + "content": "Après plusieurs incertitudes en raison du Covid, les Barbarians affronteront finalement bien ce samedi les Samoa à Twickenham. Et cela reste toujours un évènement pour les passionnés de ce sport. Car on le sait, les Baabaas c'est un esprit à part, une semaine loin des exigences professionnelles et un match qui vient couronner tous ces précieux moments. Surtout, cela fait 2 ans que les Barbarians n'ont plus disputé la moindre rencontre, la faute à cette fâcheuse pandémie. Pour ce match, l'équipe aura un fort accent australien avec notamment la titularisation de James O'Connor à l'arrière. De quoi nous rappeler les bons souvenirs, quand le joueur martyrisait les défenses internationales avec le numéro 15 floqué dans le dos. Parmi les autres Wallabies présents dans ce squad, on retrouve aussi le jeune prometteur et virevoltant demi de mêlée Tate McDermott, le centre Len Ikitau qui s'est installé en sélection nationale ou encore le puissant flanker Rob Leota. À l'ouverture le japonnais Ryoto Nakamura sera titularisé, habitué à jouer centre avec les Brave Blossoms alors que Duane Vermeulen prendra place sur le banc. Et on ne cachera pas notre plaisir de revoir Rob Kearney évoluer au plus haut niveau international, lui qui joue à la Western Force à l'heure actuelle. Il est d'ailleurs le seul européen de l'effectif des Barbarians avec Jack Dunne, autre irlandais. \nAustralie. Tate McDermott, le feu follet qui a semé la panique dans la défense des Bleus\n\nWarning: Look away now if you hate exceptional ruggers and fun days out 😉Some tickets are still available NOW 🎉🥳🎟 👉 https://t.co/BmUKDOKj8p#Baabaas #rugby #KillikCup pic.twitter.com/Ut9xNNwptY\n— Barbarian FC (@Barbarian_FC) November 22, 2021\n\nDu côté des Manu Samoa, on retrouve plusieurs pensionnaires du Top 14. Paul Alo-Emile, joueur du Stade Français, capitaine de la sélection mènera les siens. Joe Tekori, Tala Gray, John Ulugia ou encore JJ Taulagi complètent cette liste. À noter que les féminines défieront de leur côté les Springboks. Les Françaises Lenaïg Corson et Morganne Peyronnet font partie de la liste. \n\nSQUAD NEWS 🤩We’ve assembled two glittering squads for our Men’s & Women’s sides - There’s more stars than an Oscars’ after party 🎉 Players & coaches from all over the globe 🌍 🇦🇺🇯🇵🇮🇪🇦🇷🏴󠁧󠁢󠁥󠁮󠁧󠁿🇿🇦🏴󠁧󠁢󠁳󠁣󠁴󠁿🇨🇦🇪🇸🇺🇸🇫🇷🏴󠁧󠁢󠁷󠁬󠁳󠁿#Baabaas #rugby pic.twitter.com/zKY32TDcpF\n— Barbarian FC (@Barbarian_FC) November 22, 2021\n\n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-les-barbarians-avec-un-fort-contingent-australien-deux-francaises-chez-les-feminines-2211211539.php", + "creator": "", + "pubDate": "2021-11-22 15:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "House Democrats pass Biden’s expansive Build Back Better policy plan", - "description": "

Bill now goes back to the Senate, where it faces total opposition from Republicans and an uphill battle against centrist Democrats

Joe Biden has hailed the US House of Representatives for passing a $1.75tn social and climate spending bill, a central pillar of his agenda that must now go before the Senate.

The Democratic majority in the House approved the Build Back Better Act on Friday despite fierce opposition from Republicans.

Continue reading...", - "content": "

Bill now goes back to the Senate, where it faces total opposition from Republicans and an uphill battle against centrist Democrats

Joe Biden has hailed the US House of Representatives for passing a $1.75tn social and climate spending bill, a central pillar of his agenda that must now go before the Senate.

The Democratic majority in the House approved the Build Back Better Act on Friday despite fierce opposition from Republicans.

Continue reading...", - "category": "House of Representatives", - "link": "https://www.theguardian.com/us-news/2021/nov/19/house-democrats-pass-biden-expansive-build-back-better-policy-plan", - "creator": "Lauren Gambino and David Smith in Washington and Vivian Ho", - "pubDate": "2021-11-19T17:43:16Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "RUGBY. Le ''clean-sheet'' des nations du Nord face au Sud ce week-end : une première depuis 2002 !", + "description": "Ce week-end, les nations de l'hémisphère nord se sont toutes imposées face à leurs adversaires du sud. Un signe de changement de l'ordre établi ?", + "content": "Ce lundi matin, World Rugby dévoilait comme chaque semaine une mise à jour du classement mondial des équipes. Les champions du monde sud-africains pointent toujours en tête, suivis par la Nouvelle-Zélande en 2ème position. Simplement, ces deux nations ont perdu samedi, respectivement face à l'Angleterre et la France. Pire, toutes les nations du Sud, se sont inclinés ce week-end, une première depuis l'automne 2002 ! Les Gallois ont arraché la victoire grâce à une pénalité dans les dernières secondes de Rhys Priestland, les Argentins se sont fait atomiser par les Irlandais à Dublin, les Italiens ont enfin retrouvé le succès face à l'Uruguay, et les Ecossais ont gagné au forceps contre le Japon. A première vue, on pourrait y voir un signe annonciateur d'un renouveau de l'hémisphère nord, notamment de la France, Angleterre et Irlande, qui ont réalisé un sans-faute cette année pour leurs tests matchs de novembre.\n\nL'Argentine inquiétante, l'Irlande et l'Afrique du Sud en forme\n\nIl faut tout de même rappeler les circonstances atténuantes. D'abord à Cardiff, on a vu une équipe Galloise évoluer (encore) à 15 contre 14 face aux Wallabies. Le 3ème ligne Rob Valetini, coupable d'un plaquage dangereux sur Adam Beard, a laissé ses coéquipiers en infériorité numérique pour le reste de la rencontre. Malgré son absence, les hommes de Dave Rennie sont passés tout proche de l'exploit (défaite 29-28), et des décisions arbitrales douteuses sur la dernière action du match (notamment une tolérance extrême envers les déblayages gallois) ont eu raison de l'Australie.\nIrlande. ''Tu es un salaud !'' : Peter O'Mahony dézingue Tomas Lavanini\n A Londres, la victoire étriquée 27-26 de l'Angleterre n'a eu rien d'une démonstration, et le match aurait pu tourner en faveur des Boks. A Édimbourg, les Ecossais ont montré les muscles pour prendre le dessus sur les Nippons. Mais ces derniers ont fait preuve de panache et se sont fait punir pour trop avoir voulu relancer depuis leurs 22 mètres. La meilleure performance du Japon cette année. C'est à Dublin que l'inquiétude demeure. Pas pour les Irlandais, non, mais les Argentins. Les Pumas sont fatigués, sans carburant. Leurs enchainements effrayants de matchs depuis novembre 2020 les empêchent de progresser et de rivaliser face aux meilleures nations. De grandes questions, souvent les mêmes, sur le calendrier, le projet de jeu, la logistique, doivent se poser en Argentine, pour arriver en forme dans 2 ans à la coupe du monde.\n\nLa suprématie All-Black contestée et déchue \n \nLes grands perdants de ces tests de novembre sont donc les argentins et les néo-zélandais. Ces derniers, placés en bulle sanitaire depuis le 24 août dernier, et qui ne sont toujours pas rentrés au pays depuis, accusaient également de la fatigue. Se rajoutent les critiquent envers le sélectionneur Ian Foster, dont le projet de jeu est remis en question, et son habilité à construire une équipe performante, notamment à la place de Scott Robertson, quintuple vainqueur en titre du Super Rugby sur le banc des Crusaders.\nREVUE DE PRESSE. Le meilleur de la presse mondiale après France vs Nouvelle-Zélande\nLa Nouvelle-Zélande va avoir recours à une grande remise en question. Leur défaite face à la France, en plus d'avoir montré le potentiel gigantesque de l'équipe de Fabien Galthié, a aussi illustré les points faibles néo-zélandais face à un paquet d'avant dominant. Nul doute que le visage des All Blacks sera totalement différent le 8 septembre 2023 pour le match d'ouverture du mondial. Quant aux Springboks et Wallabies, ils restent des acteurs en force. L'Afrique du Sud est bel est bien la meilleure équipe du monde actuellement. L'Australie continue d'apprendre et sa jeune génération laisse entrevoir de belles prouesses pour l'avenir. L'hémisphère sud n'est pas prête de s'écrouler, et aura désormais affaire à un trio Angleterre-France-Irlande très en forme.\n\nLe Tournoi 2022 promet \n\nC'est en fait le Pays de Galles qui parait en-dessous. En ayant joué 6 matchs en supériorité numérique cette année (un record), les hommes de Wayne Pivac n'ont pas convaincu dans le jeu, et restent stéréotypés et peu entreprenants. Poussifs face aux Fidjis et Australiens, dépassés par les Néo-zélandais et Sud-Africains, ils risquent d'être hors course lors du prochain tournoi des 6 nations, même si c'est LA compétition prioritaire du Pays de Galles, et que des retours de blessures sont attendus d'ici février (Alun-Wyn Jones, Taulupe Faletau, Justin Tipuric, Ken Owens). L'Ecosse, capable de hausser son niveau de jeu sur un match, semble encore juste pour tenir sur la longueur. Elle sera néanmoins difficile à battre sur sa pelouse lors du prochain tournoi (on pense à Ecosse-France forcément). Afrique du Sud, Nouvelle-Zélande, Angleterre, Irlande, France, les nations du top 5 du classement World Rugby, se tiennent dans un mouchoir de poche. C'est la vraie conclusion de cet autumn nations series 2021.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-le-clean-sheet-des-nations-du-nord-face-au-sud-ce-week-end-une-premiere-depuis-2002-2211211506.php", + "creator": "", + "pubDate": "2021-11-22 15:10:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Abducted Afghan psychiatrist found dead weeks after disappearance", - "description": "

Family say the body of Dr Nader Alemi, who was taken by armed men in September, showed signs of torture

One of Afghanistan’s most prominent psychiatrists, who was abducted by armed men in September, has been found dead, his family has confirmed.

Dr Nader Alemi’s daughter, Manizheh Abreen, said that her father had been tortured before he died.

Continue reading...", - "content": "

Family say the body of Dr Nader Alemi, who was taken by armed men in September, showed signs of torture

One of Afghanistan’s most prominent psychiatrists, who was abducted by armed men in September, has been found dead, his family has confirmed.

Dr Nader Alemi’s daughter, Manizheh Abreen, said that her father had been tortured before he died.

Continue reading...", - "category": "Global development", - "link": "https://www.theguardian.com/global-development/2021/nov/19/abducted-afghan-psychiatrist-found-dead-weeks-after-disappearance", - "creator": "Haroon Janjua in Islamabad", - "pubDate": "2021-11-19T14:44:35Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Irlande. ''Tu es un salaud !'' : Peter O'Mahony dézingue Tomas Lavanini", + "description": "Le flanker du XV du Trèfle Peter O'Mahony s'en est pris verbalement à Tomas Lavanini sur le terrain. En cause ? La charge à l'épaule de ce dernier sur Cian Healy.", + "content": "Ce dimanche lors de la victoire de l'Irlande face à l'Argentine, l'agression de Tomas Lavanini sur Cian Healy n'est pas passé inaperçue. Sur le terrain, cela a eu le don d'agacer Peter O'Mahony qui s'en est violemment pris au deuxième ligne des Pumas au moment de l'incident. Furieux de voir son coéquipier agressé de la sorte, le flanker du XV du Trèfle a eu des paroles très dures envers le joueur de Clermont : ''C'est un putain de rouge ! Tu es un salaud. Tu sais exactement ce que tu fais.'' Avant de poursuivre : ''Un joueur dur, c'est ça que tu es ? Un bon gars ? C'est vraiment différent de toi ça, non ?''\nVIDÉO. Lavanini disjoncte une nouvelle fois et l'Irlande corrige l'Argentine (53-7)\nLa tension était à son paroxysme, et si cela a fini par s'apaiser par la suite, les deux joueurs ne risquent pas de passer leurs vacances ensemble. O'Mahony s'est excusé à l'arbitre de la rencontre de la façon dont il s'était emporté. Il faut dire que la charge à l'épaule de Lavanini était d'une sacrée violence. L'Argentin a d'ailleurs été exclu à la suite de ce geste. \n\nArgentina seeing red! 🟥#C4Rugby | #IrishRugby ☘️ | #IREvARG pic.twitter.com/lVTtWQCsNx\n— Channel 4 Sport (@C4Sport) November 21, 2021\n", + "category": "", + "link": "https://www.lerugbynistere.fr/news/irlande-tu-es-un-salaud-peter-omahony-dezingue-tomas-lavanini-2211211353.php", + "creator": "", + "pubDate": "2021-11-22 13:55:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kamala Harris takes on presidential role – briefly – as Biden has colonoscopy", - "description": "

The vice-president became the first woman to wield the powers of the US presidency, during Biden’s routine medical procedure

Kamala Harris on Friday morning became the first woman to wield presidential power in the US – temporarily, when Joe Biden had a colonoscopy under anesthetic.

In a statement, the White House press secretary, Jen Psaki, said: “This morning, the president will travel to Walter Reed Medical Center for a routine physical. While he is there, the president will undergo a routine colonoscopy.

Continue reading...", - "content": "

The vice-president became the first woman to wield the powers of the US presidency, during Biden’s routine medical procedure

Kamala Harris on Friday morning became the first woman to wield presidential power in the US – temporarily, when Joe Biden had a colonoscopy under anesthetic.

In a statement, the White House press secretary, Jen Psaki, said: “This morning, the president will travel to Walter Reed Medical Center for a routine physical. While he is there, the president will undergo a routine colonoscopy.

Continue reading...", - "category": "Kamala Harris", - "link": "https://www.theguardian.com/us-news/2021/nov/19/kamala-harris-presidential-powers-biden-colonoscopy", - "creator": "Martin Pengelly", - "pubDate": "2021-11-19T17:20:20Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "TRANSFERTS. PRO D2. Énorme coup de Provence Rugby, qui signe un Maori All Black à la mêlée !", + "description": "Ce lundi, le club d'Aix-en-Provence a annoncé l'arrivée du demi de mêlée des Auckland Blues Jonathan Ruru avec effet immédiat. Il remplacera Rado, licencié.", + "content": "Eh bien quelle prise, ah ça oui, quelle prise ! Pour remplacer le polyvalent Ludovic Radosavljevic, licencié pour faute grave, Provence Rugby n'a pas fait dans la dentelle. Ce lundi, le club du 13 a en effet annoncé l'arrivée avec effet immédiat du demi de mêlée des Blues d'Auckland, Jonathan Ruru. Agé de 28 ans, ce numéro 9 robuste (1m84 pour 94kg), très axé sur la préparation physique et doté d'une belle qualité de passes n'est autre que le frère de Michael (31 ans), qui évolue lui aussi en ProD2, du côté de Bayonne.\nAprès 7 mois sans jouer, Beauden Barrett explose le record aux tests physiques !\nEn 2020, le natif de Napier (île du Nord) s'était fait remarqué pour sa performance remarquable lors d'un test Bronco des Blues, où il avait terminé le circuit en 4min14 sec, juste derrière Beauden Barrett. Bref, un garçon prêt physiquement, qui arrive en tant que joueur additionnel à Aix, avant de signer jusqu'en 2023 une fois la batterie de tests effectués. Ruru, c'est aussi 46 matchs de Super Rugby et des sélections à 7 et avec les Maoris All Blacks. Bref, une sacrée prise, pour l'actuel 10ème de ProD2. \nPRO D2. Non mais c’est quoi cette équipe de fou qu’est en train de se bâtir Provence Rugby ?", + "category": "", + "link": "https://www.lerugbynistere.fr/news/transferts-pro-d2-enorme-coup-de-provence-rugby-qui-signe-un-maori-all-black-a-la-melee-2211211307.php", + "creator": "", + "pubDate": "2021-11-22 13:10:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Work on ‘Chinese military base’ in UAE abandoned after US intervenes – report", - "description": "

Satellite images reportedly detected construction of secret facility at Khalifa port amid growing US-China rivalry

US intelligence agencies found evidence this year of construction work on what they believed was a secret Chinese military facility in the United Arab Emirates, which was stopped after Washington’s intervention, according to a report on Friday.

The Wall Street Journal reported that satellite imagery of the port of Khalifa had revealed suspicious construction work inside a container terminal built and operated by a Chinese shipping corporation, Cosco.

Continue reading...", - "content": "

Satellite images reportedly detected construction of secret facility at Khalifa port amid growing US-China rivalry

US intelligence agencies found evidence this year of construction work on what they believed was a secret Chinese military facility in the United Arab Emirates, which was stopped after Washington’s intervention, according to a report on Friday.

The Wall Street Journal reported that satellite imagery of the port of Khalifa had revealed suspicious construction work inside a container terminal built and operated by a Chinese shipping corporation, Cosco.

Continue reading...", - "category": "China", - "link": "https://www.theguardian.com/world/2021/nov/19/chinese-military-base-uae-construction-abandoned-us-intelligence-report", - "creator": "Julian Borger in Washington", - "pubDate": "2021-11-19T18:13:08Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "France Rugby : Romain Ntamack sur sa folle relance : ''c'est l'instinct'' !", + "description": "Après la victoire mythique des Bleus face aux Blacks, Romain Ntamack est revenu sur son incroyable relance faite de son en-but.", + "content": "L'homme de ce match. Préféré à Matthieu Jalibert au poste d'ouvreur, Romain Ntamack a rendu une copie quasi-parfaite samedi soir, et fut l'un des grands artisans de cette victoire mémorable. Au-delà de son essai, ainsi que son implication dans le jeu des Bleus, Ntamack est surtout l'auteur d'une relance de folie qui constitue, à n'en pas douter, le véritable tournant de ce match. Nous sommes un peu après l'heure de jeu, quand Jordie Barrett tape à suivre dans le champ profond. La suite ? C'est le Toulousain lui-même qui la raconte, à nos confrères de l'Équipe :\nFrance Rugby. Qui a marqué des points durant cette tournée d'automne ?\n\"Sur le coup, ma première obsession est de revenir le plus vite possible pour être le premier sur le ballon suite au coup de pied de Jordie Barrett. Au moment où je me saisis du ballon, je ne sais pas si je suis ou non entré dans l’en-but avec. Donc je me dis : Je tente de m’en sortir, je sais que j’aurai du soutien. Et si je me fais plaquer, soit il y aura renvoi de l’en-but, soit mêlée à cinq mètres (...)  Donc dans ma tête, c’est clair, il faut le tenter. Je m’en sors et je me fixe la ligne droite. Puis je sens l’appel de Melvyn Jaminet. Franchement, je ne sais même pas s’il m’appelle, il y a tellement de bruit que je n’entends rien. Je le vois juste du coin de l’œil qui dédouble. J’ai plus qu’à m’appliquer pour bien lui lever le ballon et lui mettre parfaitement dans la course\".\nREVUE DE PRESSE. Le meilleur de la presse mondiale après France vs Nouvelle-Zélande\nUne relance qui, au-delà d'être magnifiquement réalisée, évite à nos Bleus de concéder une mêlée à 5 mètres, Ntamack ayant effectivement bien rentré le ballon dans l'en-but. Cette dernière aurait pu permettre aux Blacks de reprendre l'avantage au score, eux qui n'étaient menés plus que de deux petits points : \"Je ne pensais même plus au score (27-25). C’était un moment crucial. Nous étions dans un temps faible et cette action met un sacré coup derrière la tête des Néo-Zélandais. Ils se voyaient récupérer une mêlée à cinq mètres de notre ligne. Finalement, ils prennent un carton jaune et trois points. C’est grâce à cette bouffée d’oxygène qu’on bascule vers la victoire. Les Blacks étaient revenus très forts, on était dans un sacré temps faible. Il nous fallait une action ou un geste qui nous redonne confiance. Cette relance nous fait un bien fou\".\n\nUne action d'envergure que l'on doit au départ à l'intelligence et au talent de l'ouvreur du XV de France, qui a suivi son instinct : \"Je suis dos au jeu quand je récupère le ballon. Je ne sais pas combien de Néo-Zélandais sont là. Je choisis un côté, mais j’aurais pu partir de l’autre et tout ça ne serait pas arrivé. C’est l’instinct, l’intuition qu’on peut faire des choses comme ça. Quand je relance, je sais que toute l’équipe a cette capacité de réaction\".\nEquipe de France. Les Bleus enflamment les réseaux sociaux en passant 40 points aux All Blacks !\nCette relance représente parfaitement ce que l'on appelle le \"French Flair\", et qui aurait pu se transformer en un essai légendaire. Toujours est-il qu'après cela, les Blacks seront réduits à 14, et concèderont quelques minutes plus tard, un quatrième essai signé Damian Penaud, ce qui scellera définitivement l'issue de cette rencontre fantastique.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/france-rugby-romain-ntamack-sur-sa-folle-relance-cest-linstinct-2211211147.php", + "creator": "", + "pubDate": "2021-11-22 12:55:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "US wildfires have killed nearly 20% of world’s giant sequoias in two years", - "description": "

Blazes in western US have hit thousands of Earth’s largest trees, once considered almost fire-proof

Lightning-sparked wildfires killed thousands of giant sequoias this year, adding to a staggering two-year death toll that accounts for up to nearly a fifth of Earth’s largest trees, officials said on Friday.

Fires in Sequoia national park and the surrounding national forest that also bears the trees’ name tore through more than a third of groves in California and torched an estimated 2,261 to 3,637 sequoias. Fires in the same area last year killed an unprecedented 7,500 to 10,400 of the 75,000 trees.

Continue reading...", - "content": "

Blazes in western US have hit thousands of Earth’s largest trees, once considered almost fire-proof

Lightning-sparked wildfires killed thousands of giant sequoias this year, adding to a staggering two-year death toll that accounts for up to nearly a fifth of Earth’s largest trees, officials said on Friday.

Fires in Sequoia national park and the surrounding national forest that also bears the trees’ name tore through more than a third of groves in California and torched an estimated 2,261 to 3,637 sequoias. Fires in the same area last year killed an unprecedented 7,500 to 10,400 of the 75,000 trees.

Continue reading...", - "category": "Climate crisis in the American west", - "link": "https://www.theguardian.com/us-news/2021/nov/19/giant-sequoias-wildfires-killed", - "creator": "Associated Press", - "pubDate": "2021-11-19T21:15:39Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "FRANCE RUGBY. Le Stade de France, un chaudron ? Les All Blacks ont en tout cas été bluffés !", + "description": "Si les Blacks ont été dépassés par l'envie et la qualité du jeu tricolore ce samedi, la ferveur du Stade de France a visiblement joué sur les nerfs également.", + "content": "Ce samedi soir était définitivement à part, que ce soit sur le terrain comme en tribunes. Ici, on a vu une équipe de France probablement à son apogée rugbystique, capable de passer 40 points à une équipe réputée invincible. Là, la morne Plaine St-Denis n'était plus, bien au contraire, et celui qu'on a souvent coutume d'appeler le \"frigo du Stade de France\" se transforma en un chaudron digne des plus grands écrins européens. Autour de Dupont et consorts, ce sont plus de 79 000 personnes chauffées à blanc qui se sont époumonnées durant 80 minutes afin de porter ceux qui les font rêver depuis maintenant plus de 18 mois. \nFrance Rugby : Romain Ntamack sur sa folle relance : ''c'est l'instinct'' !\nDes chants, des sauts et des cris permanents, donnant le temps d'une soirée, l'impression que le plus grand stade de l'Hexagone était devenu le Millenium de Cardiff. A tel point que les Blacks eux-mêmes furent assez impressionnés : \"L'ambiance de ce soir était très bruyante, il y avait beaucoup de spectateurs, constatait le capitaine Sam Whitelock en conférence de presse. On a permis aux Français de bien démarrer et les supporters ont fait beaucoup de bruit. Il faut qu'on arrive à gérer cela. On a constaté ce soir que la foule soutenait la France et les a portés.\"\nFRANCE. RUGBY. Audience, record et dentier... La victoire face aux All Blacks en chiffres !\nDe là à dire que sans cette marée humaine dans les gradins les Bleus n'auraient peut-être pas su trouver les ressources nécessaires pour faire vaciller les hommes en noir ? Il n'y a probablement qu'un pas...", + "category": "", + "link": "https://www.lerugbynistere.fr/news/france-rugby-le-stade-de-france-un-chaudron-les-all-blacks-ont-en-tout-cas-ete-bluffe-2211211232.php", + "creator": "", + "pubDate": "2021-11-22 12:40:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Lewis Hamilton praised after wearing rainbow helmet in Qatar GP practice", - "description": "
  • Hamilton earns praise for LGBTQ+ ‘incredible act of allyship’
  • World champion has criticised Qatar’s human rights record

Lewis Hamilton has been praised for “an incredible act of allyship” after wearing a rainbow-coloured helmet in practice at the inaugural Qatar Grand Prix.

The seven-time Formula One world champion’s helmet bore the colours of the Progress Pride flag – a banner which includes the traditional rainbow design with additional colours that recognise the diversity of the LGBTQ+ community.

Continue reading...", - "content": "
  • Hamilton earns praise for LGBTQ+ ‘incredible act of allyship’
  • World champion has criticised Qatar’s human rights record

Lewis Hamilton has been praised for “an incredible act of allyship” after wearing a rainbow-coloured helmet in practice at the inaugural Qatar Grand Prix.

The seven-time Formula One world champion’s helmet bore the colours of the Progress Pride flag – a banner which includes the traditional rainbow design with additional colours that recognise the diversity of the LGBTQ+ community.

Continue reading...", - "category": "Lewis Hamilton", - "link": "https://www.theguardian.com/sport/2021/nov/19/lewis-hamilton-rainbow-helmet-qatar-grand-prix-formula-one", - "creator": "PA Media", - "pubDate": "2021-11-19T18:23:07Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "VIDÉO. Lavanini disjoncte une nouvelle fois et l'Irlande corrige l'Argentine (53-7)", + "description": "L'Irlande a étrillé l'Argentine ce dimanche à Dublin (53-7). Une rencontre qui a vu un nouveau coup de sang du deuxième ligne argentin Tomas Lavanini, expulsé à l'heure de jeu.", + "content": "Une semaine après sa victoire contre les All Blacks, l'Irlande recevait ce dimanche l'Argentine à Dublin. Et si les partenaires de Conor Murray ont rapidement encaissé un essai par l'intermédiaire de Mateo Carrerras, ils ont rectifié le tir pour signer une victoire probante. À vrai dire, il n'y a pas eu match, et les rares fois où les Pumas auraient pu recoller, Emiliano Boffelli a fait preuve d'une terrible maladresse face aux perches. Si bien qu'à la mi-temps, le score est déjà de 24 à 7 en faveur du XV du Trèfle avec des réalisations de Van der Flier, Porter et Doris. Avant que le second acte ne soit un cavalier seul des hommes d'Andy Farrell. Van der Flier une deuxième fois, Sheehan, Healy et Beirne viendront sceller le succès irlandais avec 7 essais à la clé.\nRESUME VIDEO. L'exploit de l'Irlande qui fait tomber la Nouvelle-Zélande après un match épique\nBien que supérieure à son adversaire du jour, l'Irlande a pu se détacher en seconde mi-temps notamment grâce au carton rouge adressé au seconde ligne argentin Tomas Lavanini peu avant l'heure de jeu. Le joueur de Clermont, très rugueux, souvent à la limite de la règle est un coutumier du fait. Sur cette action, il est venu charger, épaule en avant, le pilier Cian Healy dans un ruck. L'épaule entrant directement en contact avec la mâchoire du joueur irlandais, la décision ne pouvait être autre. L'Irlande conclut donc cette tournée automnale de la plus belle des manières (3 victoires sur 3) tandis que l'Argentine enregistre une nouvelle défaite. \n", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/video-lavanini-disjoncte-une-nouvelle-fois-et-lirlande-corrige-largentine-2211211057.php", + "creator": "", + "pubDate": "2021-11-22 11:05:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘Storm clouds’ over Europe – but UK Covid rates remain high", - "description": "

Analysis: likes of Slovakia and Austria have worse figures but UK’s have topped EU average for months

As Covid infection rates surged again across Europe, Boris Johnson spoke this week of “storm clouds gathering” over parts of the continent and said it was unclear when or how badly the latest wave would “wash up on our shores”.

The situation in some EU member states, particularly those with low vaccination rates, is indeed dramatic. In central and eastern Europe in particular, but also Austria, Belgium and the Netherlands, case numbers are rocketing.

Continue reading...", - "content": "

Analysis: likes of Slovakia and Austria have worse figures but UK’s have topped EU average for months

As Covid infection rates surged again across Europe, Boris Johnson spoke this week of “storm clouds gathering” over parts of the continent and said it was unclear when or how badly the latest wave would “wash up on our shores”.

The situation in some EU member states, particularly those with low vaccination rates, is indeed dramatic. In central and eastern Europe in particular, but also Austria, Belgium and the Netherlands, case numbers are rocketing.

Continue reading...", - "category": "Coronavirus", - "link": "https://www.theguardian.com/world/2021/nov/19/storm-clouds-over-europe-but-uk-covid-rates-remain-higher", - "creator": "Jon Henley Europe correspondent", - "pubDate": "2021-11-19T12:25:02Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "TRANSFERT. Cette fois c'est sûr, Damian McKenzie va bel et bien s'envoler pour le Japon", + "description": "Comme annoncé depuis plusieurs mois, \"DMac\" va prendre la direction des Suntory Sungoliath (Japon) pour la nouvelle saison le League One.", + "content": "C'est ce lundi, pour ne pas générer un quelconque conflit d'intêret avec l'équipe nationale de son nouveau poulain, que le club des Suntory Sungoliath a annoncé la venue du All Black Damian McKenzie au Japon. Si l'information était dans les tuyaux depuis quelques mois déjà, rien n'avait encore été confirmé par les principaux intéressés jusqu'alors... Quoi qu'il en soit, \"DMac\" sera à coup sûr l'une - si ce n'est la - des attractions de la League One. \nSUPER RUGBY. Le festival McKenzie face aux Hurricanes sort les Chiefs de 11 défaites [VIDÉO]\nVéritable maître à jouer de la franchise des Chiefs d'Hamilton depuis plusieurs saisons et fort de ses 95 matchs de Super Rugby et 40 capes avec les hommes en noir, le \"smiling assassin\" s'est fait une solide réputation de \"top joueur\", à seulement 26 ans. Cette saison fut plus difficile pour lui en sélection, où il a définitivement perdu sa place au profit de Jordie Barrett. Mais le natif d'Invercargill reste cet arrière/ouvreur aussi insaisissable que métronomique, capable d'un coup d'éclat à tout moment. À Fuchü, qui a visiblement le goût des bonnes choses, il remplacera numériquement nul autre que son compère et ami : Beauden Barrett. Sans que la date de son retour sur l'archipel maori ne soit précisé...\n⚠ Alerte ! Génie du rugby en détresse : Pourquoi la Nouvelle-Zélande boude Damian McKenzie ?", + "category": "", + "link": "https://www.lerugbynistere.fr/news/transfert-cette-fois-cest-sur-damian-mckenzie-va-bel-et-bien-senvoler-pour-le-japon-2211211043.php", + "creator": "", + "pubDate": "2021-11-22 10:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘No way around it’: Austrians queue for jabs as unvaccinated told to stay home", - "description": "

In Linz, jab willingness is rising as police check Covid passports – but confusion remains on what is essential travel

On a street of shops in the Austrian city of Linz, a stone’s throw from the winding Danube river, two police officers in navy-blue uniforms and peaked white caps stop random passersby to check their vaccine passports.

Elderly shoppers rummage around in their handbags and comply with a smile, but a fortysomething woman with a nose piercing is less forthcoming: she says she left her immunisation certificate on the kitchen table as she had to dash across town to see a dentist.

Continue reading...", - "content": "

In Linz, jab willingness is rising as police check Covid passports – but confusion remains on what is essential travel

On a street of shops in the Austrian city of Linz, a stone’s throw from the winding Danube river, two police officers in navy-blue uniforms and peaked white caps stop random passersby to check their vaccine passports.

Elderly shoppers rummage around in their handbags and comply with a smile, but a fortysomething woman with a nose piercing is less forthcoming: she says she left her immunisation certificate on the kitchen table as she had to dash across town to see a dentist.

Continue reading...", - "category": "Austria", - "link": "https://www.theguardian.com/world/2021/nov/19/austrians-queue-for-covid-jabs-as-unvaccinated-told-to-stay-home", - "creator": "Philip Oltermann in Linz", - "pubDate": "2021-11-19T10:30:02Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "RUGBY. Équipe de France. Face aux All Blacks, les Bleus ont un cruel déficit d'expérience", + "description": "Le 15 de France affronte ce samedi à 21h les All Blacks sur la pelouse du Stade France. Combien de joueurs de chaque camp ont déjà croisé le fer ?", + "content": "Rugby. France-All Blacks. Woki vs Retallick : l'élève face au maître !Plus que quelques heures avant LE choc tant attendu de la fin de la tournée de novembre du XV de France. Une affiche qui fait rêver face à des Blacks revanchards. La tension autour de cette rencontre ne cesse de monter, Ian Foster avait lancé les hostilités en conférence de presse cette semaine : « nous avons tous à cœur de finir cette tournée, très, très fort », avant de rajouter : « Un match, face à la France, au Stade de France, face à une jeune équipe excitante et qui se développe bien, c’est le match idéal pour donner l’occasion de répondre à ce qui s’est passé samedi dernier. » Une sortie médiatique qui n’est pas passé inaperçu dans le camp français. Fabien Galthié, n’a pas manqué de répondre à son homologue néo-zélandais : « On a bien entendu et reçu le message des Néo-Zélandais et de leur entraîneur. » Une rencontre qui a son pesant d’or des deux côtés. La France pourrait mettre fin à 48 années de disette face aux Blacks au Stade de France. Quant aux hommes de Sam Whitelock, l’idée de subir pour la deuxième fois deux revers de rang n’est certainement pas inenvisageable. Un match qui s’annonce très disputé et explosif. Aussi, l’expérience de ces grands rendez-vous aura très certainement son importance. À ce petit jeu-là, seulement six Français ont déjà rencontré les Blacks. Quant aux Néo-zélandais qui fouleront la pelouse de Saint-Denis ce samedi, ils semblent avoir bien plus d’expérience que leurs confrères de l’Hexagone. Allons voir ça de plus près.\nDes Français très peu expérimentés\nOn le sait, la nouvelle équipe de France sous l’ère Galthié a la particularité d’être assez jeune. Une fierté pour le sélectionneur des Bleus, qui ne cesse de rappeler que ces compositions se rapproche très souvent des 25 ans de moyenne d’âge. Preuve de l’efficacité des nouvelles générations. En revanche, si cette statistique glorifie la formation française, elle peut avoir son inconvénient dans les grands rendez-vous. Et le match de samedi en sera un. Les rencontres face aux All Blacks ont toujours une saveur particulière et mettent une pression supplémentaire. Une pression que cette jeune équipe de France va devoir gérer si elle veut exister face aux triples champions du monde. Sur les 23 Bleus de samedi, seulement 6 ont déjà fait face au haka : Uini Atonio, Antoine Dupont, Damian Penaud, Cyril Baille, Anthony Jelonch et Gaël Fickou. Le troisième ligne et le demi de mêlée toulousain ainsi que l’ailier clermontois ont eu cet honneur qu’à une seule reprise. Baille et Atonio sont à peine plus expérimentés. Ils ont croisé par 4 fois la route des hommes en noir. Le plus capé de ce groupe France, Gaël Fickou, a joué pour la première fois face aux Blacks en 2013. Depuis il les a affrontés à 5 autres occasions. Le point commun pour ces six Tricolores, aucun n’a jamais battu les Néo-zélandais. Néanmoins, pas un seul des 26 joueurs français de ce week-end ne faisaient partie de la déroute des Bleus lors de la coupe du monde 2015. Le sélectionneur français aurait pu apporter de l’expérience en plus, puisque dans la liste des 42 joueurs, Pierre Bourgarit, Dany Priso et Brice Dulin avaient, eux aussi, déjà affronté les Kiwis par le passé.VIDEO. En 2000, les Bleus de Galthié et Lamaison s'offraient les All Blacks d'Umaga à Marseille\nUn rendez-vous bien connu pour ces Blacks\nSi du côté tricolore l’expérience lors des chocs franco-néo-zélandais n’est pas des plus présente, du côté des Kiwis ce n’est pas ce qui manque. À noter pour commencer qu'Ian Foster peut se permettre d’aligner un double champion du monde dans sa composition. Oui, un des hommes qui a tant fait de mal à la France en 2011 sera sur la pelouse ce samedi. Cet homme, ce n’est autre que l’infatigable deuxième ligne et capitaine de cette équipe néo-zélandaise, Sam Withelock. Le joueur de 33 ans est le seul rescapé de la finale de 2011. En tout, il a affronté à 11 reprises le XV de France pour autant de victoires. Il n’est certainement pas le seul à déjà avoir puni les Bleus : 14 des 26 Blacks de ce samedi ont déjà croisé la route des Tricolores. À l’inverse des Français, ces joueurs ont tous un point commun : aucun n’a jamais perdu face à la France. Chez les titulaires, ils ne seront que 4 à connaître leur premier choc face aux Français : Will Jordan, George Bridge, Akira Ioane et enfin le jeune centre Quinn Tupaea. Sam Cane et Aaron Smith quant à eux, seront les plus expérimentés derrière leur capitaine avec respectivement 8 et 9 chocs face aux Bleus. Sans sa blessure, Bauden Barrett aurait apporté encore un peu plus d’expérience contrairement à son homologue Richie Mo’unga qui a seulement disputé quelques minutes en tant que remplaçant face aux Bleus.All Blacks. Qui est Quinn Tupaea, ce ''rookie'' qui pourrait faire des misères aux Bleus ?À comparaison, les Bleus manquent cruellement d’expérience dans ces chocs franco- néo-zélandais. Si l’on cumule les sélections lors de ces duels de chaque côté, on obtient 16 petites sélections françaises contre 66 néo-zélandaises. Un sacré écart. Si vous voulez savoir qui l’emportera entre la fougue de la jeunesse française ou bien l’expérience néo- zélandaise, rendez-vous samedi 21h.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-equipe-de-france-face-aux-all-blacks-les-bleus-ont-un-cruel-deficit-dexperience-1911211817.php", + "creator": "", + "pubDate": "2021-11-19 18:20:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "First known Covid case was Wuhan market vendor, says scientist", - "description": "

Claim will reignite debate about origins of pandemic, a continuing source of tension between US and China

The first known Covid-19 case was a vendor at the live-animal market in Wuhan, according to a scientist who has scrutinised public accounts of the earliest cases in China.

The chronology is at odds with a timeline laid out in an influential World Health Organization (WHO) report, which suggested an accountant with no apparent link to the Hunan market was the first known case.

Continue reading...", - "content": "

Claim will reignite debate about origins of pandemic, a continuing source of tension between US and China

The first known Covid-19 case was a vendor at the live-animal market in Wuhan, according to a scientist who has scrutinised public accounts of the earliest cases in China.

The chronology is at odds with a timeline laid out in an influential World Health Organization (WHO) report, which suggested an accountant with no apparent link to the Hunan market was the first known case.

Continue reading...", - "category": "Coronavirus", - "link": "https://www.theguardian.com/world/2021/nov/19/first-covid-patient-in-wuhan-was-at-animal-market-study-finds", - "creator": "Hannah Devlin Science correspondent", - "pubDate": "2021-11-19T14:08:44Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Le duel Antoine Dupont - Aaron Smith : un match pour nous dire qui est (vraiment) le meilleur 9 du monde", + "description": "Ce France/Nouvelle-Zélande est aussi l'occasion de nous offrir LE duel que tout le monde attend depuis maintenant plus de 18 mois : Dupont face à Smith !", + "content": "Durant les 18 derniers mois, on ne compte plus les fois où l'on entendit les uns arguer qu'Aaron Smith était toujours le meilleur demi de mêlée de la planète, les autres qu'Antoine Dupont avait enfin dépassé le maître. Pendant ce temps et comme pour toujours plus nous faire saliver, voilà que le All Black aux 101 sélections adoubait le tricolore sur ses réseaux sociaux dès avril 2020, avant de récidiver ici et là, à chaque prestation 5 étoiles sortie par le prodige du Stade Toulousain. \nWTF - Le bel hommage d'Aaron Smith à Antoine Dupont... qui lui rend bien !\nSi l'enfant de Castelnau-Magnoac lui répondait avec classe, on n'attendait qu'une seule chose : que les deux meilleurs numéro 9 de la planète s'affrontent ! Cette fois ça y est, Bon Dieu, on va enfin l'avoir ce duel tant convoité ! Samedi à 21h, \"Nugget\" et \"Toto\" vont croiser le fer, ou plutôt leurs passes. En juin dernier, Smith et Dupont l'avait d'ailleurs déjà fait par vidéos interposées, pour la chaîne Youtube de World Rugby. Avec malice, c'est le Néo-Zélandais qui l'avait emporté, le Français prouvant lui qu'il était le plus fort sur les qualités intrinsèques.\nVIDÉO. Antoine Dupont vs Aaron Smith : qui a la passe la plus rapide au monde ?\nAu nom du vice, du physique et du saint-esprit \nMais à ce jeu comme ailleurs, le vice compte. Et au Stade de France, en plus de son talent que tout le monde sait unique, Dupont devra également faire marcher un certain esprit roublard. Sinon quoi Smithy pourrait bien se faire un malin plaisir à tenter de prendre un avantage psychologique sur son cadet... Malgré ses tout juste 25 ans (il les a fêtés ce lundi), croyez-nous : il en est (déjà) capable. Car s'ils font jeu égal sur cet aspect du jeu, l'on sait que le Français, intouchable dans la dimension physique et dans la forme de sa vie, aura alors toutes les cartes en main pour montrer à son glorieux aîné (33 ans dimanche) qu'il est - définitivement - temps de passer le flambeau...\nRUGBY. Owen Farrell encense Antoine Dupont suite à l'annonce de son capitanat\nLe reste ? Probablement une relative opposition de styles entre le NZ, de retour après 4 mois pour rassurer ses partenaires et désormais un peu moins peu moins \"foufou\", et Dupont, que les hommes en noir craignent tout particulièrement pour sa faculté à trouver des failles dans un mur que l'on croyait pourtant en béton armé. Aussi, le danger permanent qu'il cause sur les défenses pourrait ouvrir des espaces pour les Tricolores, comme on le voit de plus en plus chaque week-end. Jerome Kaino l'a dit : \"viser Dupont ne sera pas la solution pour les Blacks.\"\nVIDÉO. WTF 😱. Le sniper Aaron Smith fait le show avec des passes d'une précision chirurgicaleEn face, les puristes ont déjà hâte de (re)voir la plus belle fluidité de passe de la planète à l'oeuvre... Quoiqu'il en soit, cet affrontement sera clairement digne du mythique Joshua/Klitschko de 2017 chez nos voisins du sport pugilistique. Avec en ligne de mire, non pas une ceinture IBF et WBA, mais plutôt l'idée de sceller d'un cachet de cire qui d'Antoine Dupont ou d'Aaron Smith est aujourd'hui le meilleur numéro 9 du monde...RUGBY. France/All Blacks. Sam Cane se méfie d'Antoine Dupont : ''C'est une menace constante''", + "category": "", + "link": "https://www.lerugbynistere.fr/news/le-duel-antoine-dupont-aaron-smith-un-match-pour-nous-dire-qui-est-vraiment-le-meilleur-9-du-monde-1911211715.php", + "creator": "", + "pubDate": "2021-11-19 17:25:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘It was mind-boggling’: Richard Gere on the rescue boat at the heart of Salvini trial", - "description": "

Exclusive: the Hollywood actor, who lawyers have listed as a key witness, describes scenes of desperation on the Open Arms vessel

The Hollywood actor Richard Gere has revealed for the first time the full story behind his mercy mission to the NGO rescue boat Open Arms as he prepares to testify as a witness against Italy’s former interior minister and far-right leader, Matteo Salvini, who is on trial for attempting to block the 147 people onboard from landing in Italy.

In an exclusive interview with the Guardian, Gere, 72, who lawyers have listed as a key witness to the situation aboard the NGO rescue boat Open Arms, described the scenes of desperation he saw when he arrived on the vessel being held off the Italian island of Lampedusa in the summer of 2019 with conditions rapidly deteriorating.

Continue reading...", - "content": "

Exclusive: the Hollywood actor, who lawyers have listed as a key witness, describes scenes of desperation on the Open Arms vessel

The Hollywood actor Richard Gere has revealed for the first time the full story behind his mercy mission to the NGO rescue boat Open Arms as he prepares to testify as a witness against Italy’s former interior minister and far-right leader, Matteo Salvini, who is on trial for attempting to block the 147 people onboard from landing in Italy.

In an exclusive interview with the Guardian, Gere, 72, who lawyers have listed as a key witness to the situation aboard the NGO rescue boat Open Arms, described the scenes of desperation he saw when he arrived on the vessel being held off the Italian island of Lampedusa in the summer of 2019 with conditions rapidly deteriorating.

Continue reading...", - "category": "Global development", - "link": "https://www.theguardian.com/global-development/2021/nov/19/richard-gere-open-arms-rescue-boat-heart-of-salvini-trial", - "creator": "Lorenzo Tondo in Palermo", - "pubDate": "2021-11-19T14:00:00Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "RUGBY. PRONOSTICS. L'équipe de France va-t-elle faire tomber l'ogre néo-zélandais ?", + "description": "Place aux pronostics avec notre partenaire Winamax avec France/Nouvelle-Zélande, Angleterre vs Afrique du Sud et Pays de Galles/Australie.", + "content": "Rugby. Calendrier de l'Autumn Nations Series - Test Matchs de NovembrePlace aux pronostics avec notre partenaire Winamax. Ce week-end, tout le monde aura les yeux rivés sur le Stade de France où les Bleus reçoivent les All Blacks. Mais il y aura aussi de très belles affiches en Europe avec notamment Angleterre vs Afrique du Sud ou encore Pays de Galles Australie.\nAngleterre/Afrique du Sud (samedi à 16h15)\nCe remake de la dernière finale de la Coupe du monde va-t-il sourire aux Anglais ? Le XV d'Angleterre ne se ressemble plus vraiment à celui qui avait battu les All Blacks en demie pour se hisser en finale au Japon. Mais il n'en reste pas moins très solide. En face, les Sud-Africains ont peu évolué mais sont tout de même privés de certains éléments importants. Une chose est sûre, ça va taper très fort samedi à Twickenham.Le pari sûr : succès des Boks coté à 1,80.\nLe pari audacieux : J. May et B. Mbonambi manque un essai chacun, cote à 8.\nPour parier sur ce match, c'est par ici\nPays de Galles/Australie (samedi à 18h30)\nVainqueurs du dernier Tournoi des 6 Nations, les Gallois ont été battus par la Nouvelle-Zélande et l'Afrique du Sud. Et ce n'est pas le succès poussif contre les Fidji qui va satisfaire les supporters. Ils ont besoin d'une victoire probante face à l'une des trois nations majeures de l'hémisphère sud. Il ne leur reste qu'une occasion face à des Wallabies qui ont aussi vécu une tournée compliquée avec des revers en Écosse puis en Angleterre. \nLe pari sûr : succès du Pays de Galles ou match nul, cote à 1,48.\nLe pari audacieux : Match nul et moins de 45,5 points inscrits, cote à 27.\nPour parier sur ce match, c'est par ici\nFrance/Nouvelle-Zélande (samedi à 21h)\nDeux ans avant le match d'ouverture de la Coupe du monde, les Bleus ont l'occasion de se tester face à leur prochain adversaire au Mondial. Ils n'auront plus cette opportunité avant 2023. L'équipe de France comme la Nouvelle-Zélande compte des absents dans ses rangs. Mais le gros des troupes est bien là pour ce choc au sommet. Les Tricolores ont l'occasion de remporter une première victoire à Paris qui échappe à la France depuis 1973 ! Ils n'ont plus battu les Blacks dans l'Hexagone depuis 21 ans ! Le pari sûr : triple marqueur d'essais : G. Bridge ou W. Jordan ou D. Penaud, cote à 1,33.\nLe pari audacieux : succès de la France coté à 3.\nPour parier sur ce match, c'est par ici \nN'oubliez pas les copains : votre 1er pari remboursé jusqu’à 100 € avec l'offre Winamax ! De quoi se tenter un pari audacieux ?\nEn partenariat avec Winamax.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-pronostics-lequipe-de-france-va-t-elle-faire-tomber-lorgre-neo-zelandais-1911211602.php", + "creator": "", + "pubDate": "2021-11-19 16:05:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Good or bad? Top cardiologist gives verdict on chocolate, coffee and wine", - "description": "

Exclusive: Prof Thomas Lüscher assesses the heart healthiness of some of our favourite treats

Dark chocolate is a “joy” when it comes to keeping your heart healthy, coffee is likely protective, but wine is at best “neutral”, according to one of the world’s leading cardiologists.

As editor of the European Heart Journal for more than a decade, Prof Thomas Lüscher led a team that sifted through 3,200 manuscripts from scientists and doctors every year. Only a fraction – those deemed “truly novel” and backed up with “solid data” – would be selected for publication.

Continue reading...", - "content": "

Exclusive: Prof Thomas Lüscher assesses the heart healthiness of some of our favourite treats

Dark chocolate is a “joy” when it comes to keeping your heart healthy, coffee is likely protective, but wine is at best “neutral”, according to one of the world’s leading cardiologists.

As editor of the European Heart Journal for more than a decade, Prof Thomas Lüscher led a team that sifted through 3,200 manuscripts from scientists and doctors every year. Only a fraction – those deemed “truly novel” and backed up with “solid data” – would be selected for publication.

Continue reading...", - "category": "Health", - "link": "https://www.theguardian.com/society/2021/nov/19/good-or-bad-top-cardiologist-gives-verdict-chocolate-coffee-wine", - "creator": "Andrew Gregory Health editor", - "pubDate": "2021-11-19T12:29:35Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Équipe de France de Rugby. Enfin l’heure de Peato Mauvaka ?", + "description": "Souvent barré par son partenaire de club Julien Marchand, Peato Mauvaka aura l’occasion ce samedi de montrer toute l’étendue de son talent.", + "content": "Arrivé au Stade Toulousain à 15 ans, loin de sa ville natale de Nouméa, Peato Mauvaka est un surdoué du rugby. Passé par l'équipe de France des moins de 20 ans, il débute sa carrière professionnelle à Toulouse, à seulement 19 ans. Malgré la rude concurrence au poste, Peato s'impose petit à petit dans la rotation, jusqu'à être aujourd'hui, l'un des cadres du club double champion de France en titre. Et alors que son concurrent Julien Marchand est indisponible pour le match face aux Blacks, ne serait-ce pas l'heure pour Mauvaka d'enfin s'imposer comme le titulaire indiscutable ?\nRESUME VIDEO. Deux gestes justes de Jalibert envoient Flament et Mauvaka en Terre promise pour la victoire\nUne forme incroyable\nToujours derrière son compère du Stade Julien Marchand dans la hiérarchie, Mauvaka ne cesse d'impressionner ces derniers mois. Tout d'abord en club, où il se partage désormais de manière assez équitable le temps de jeu avec Marchand. Depuis le début de l'année, Mauvaka a débuté 4 rencontres, tout comme son concurrent direct. De plus, ses rentrées sont souvent décisives, ce qui poussent beaucoup de personnes à le voir de plus en plus comme le numéro 1 au poste. Très précis en touche, son explosivité et ses qualités balle en main le font se démarquer des autres talonneurs français. Très bon également en défense, Peato est une valeur sûre du pack français. Il a d'ailleurs dépassé assez facilement Bourgarit et Chat dans la hiérarchie chez les Bleus, malgré les bonnes performances de ces derniers en club. Auteur de trois essais depuis le début de la tournée, nul doute que Mauvaka fera parfaitement l'affaire, face aux Blacks samedi soir.\nXV de France - Peato Mauvaka, de numéro 3 à Toulouse à la Coupe du monde en neuf mois !\nUn départ pour s'imposer ?\nQuand on voit les performances de ce joueur, difficile de croire que Peato Mauvaka n'est pas un titulaire indiscutable dans son club ! Véritable joker de luxe, il semble néanmoins compliqué de voir le natif de Nouméa passé définitivement Julien Marchand pour le moment, lui qui est toujours aussi bon. Ce dernier acceptera-t-il de partager son temps de jeu ? Des envies d'ailleurs pourraient apparaître dans l'esprit de Peato, surtout lorsque l'on sait que le RCT était très intéressé. Sébastien Bézy avait notamment quitté le Stade Toulousain pour une raison similaire, lui qui était derrière l'indéboulonnable Antoine Dupont. Mais que les supporters du Stade soient rassurés, Mauvaka ne semble pas vouloir quitter la Ville rose pour le moment. Mieux, une prolongation de contrat serait d'actualité ! S'il reste, à lui de continuer sur cette lancée, qui lui a permis d'obtenir une place de titulaire, face à la Nouvelle-Zélande.\n\nRUGBY. La composition de la France avec Woki en 4, Ntamack en 10 et Jaminet en 15 face aux All Blacks", + "category": "", + "link": "https://www.lerugbynistere.fr/news/equipe-de-france-de-rugby-enfin-lheure-de-peato-mauvaka-1911211236.php", + "creator": "", + "pubDate": "2021-11-19 15:00:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘We are more powerful than Modi’: Indian farmers celebrate U-turn on laws", - "description": "

Camp outside Delhi cheers after PM announced revoking of farm laws following a year of protests

The scent of victory was in the air. As tractors rolled through the protest camp on the outskirts of Delhi set up by farmers almost exactly a year ago, rousing cries of “long live the revolution” and “we defeated Modi” rang out. Old men with trailing silver beards and rainbow turbans danced on tractor roofs and flag-waving children were held up high.

“For one year we have been at war,” said Ranjeet Singh, 32. “We have suffered, people have died. But today farmers won the war.”

Continue reading...", - "content": "

Camp outside Delhi cheers after PM announced revoking of farm laws following a year of protests

The scent of victory was in the air. As tractors rolled through the protest camp on the outskirts of Delhi set up by farmers almost exactly a year ago, rousing cries of “long live the revolution” and “we defeated Modi” rang out. Old men with trailing silver beards and rainbow turbans danced on tractor roofs and flag-waving children were held up high.

“For one year we have been at war,” said Ranjeet Singh, 32. “We have suffered, people have died. But today farmers won the war.”

Continue reading...", - "category": "India", - "link": "https://www.theguardian.com/world/2021/nov/19/we-are-more-powerful-than-modi-indian-farmers-celebrate-laws-repealing", - "creator": "Hannah Ellis-Petersen in Singhu", - "pubDate": "2021-11-19T13:39:57Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "All Blacks. Qui est Quinn Tupaea, ce ''rookie'' qui pourrait faire des misères aux Bleus ?", + "description": "Très peu connu du grand public, Quinn Tupaea prend de plus en plus de place au sein des All Blacks, symbole de cette nouvelle génération néo-zélandaise.Titulaire face à la France, qui est-il ?", + "content": "COMPOSITION. Les All Blacks sans Beauden Barrett contre les Bleus, Aaron Smith face à Dupont !En observant d'un œil soucieux la composition de la Nouvelle-Zélande, bon nombre de spectateurs avisés de la balle ovale ont dû se demander qui était ce numéro 12, au milieu de cette pléiade de stars. Car on l'avoue, malgré son indéniable talent, il est le All Black du XV de départ le moins connu. Alors ce samedi, la France va découvrir Quinn Tupaea, 22 ans, 1m86 pour 97kg. Le solide joueur évoluera au centre du terrain aux côtés d'un Rieko Ioane plus habitués aux joutes internationales. Face à lui, Jonathan Danty, titularisé pour la première fois de la tournée chez les Tricolores. Un affrontement entre ''rookie'' qui promet de faire des étincelles. Alors certes, on vous l'accorde, en l'absence d'Anton Lienert-Brown on s'attendait logiquement à voir David Havili toucher le jackpot. À savoir hériter du numéro 12 pour l'épilogue de cette Autumn Nations Series. Certains pourront se montrer déçus de ne pas voir l'élégant joueur à la coupe mulet démarrer sur la pelouse du Stade de France. Impérial depuis le début de saison, le joueur des Crusaders s'est enfin révélé sous le maillot frappé de la fougère à un poste qu'on ne lui connaissait pas. Oui, mais voilà, Foster a tranché. Havili sera sur le banc et c'est donc Tupaea qui débutera la partie. Ce dernier a su saisir sa chance cet été, avec notamment les absences de Goodhue, touché aux ligaments croisés et Ngani Laumape, exilé en France. Alors qui est le nouveau (et énième) phénomène néo-zélandais ? \nRUGBY. Pourquoi Ardie Savea, fer de lance des All Blacks, est-il le meilleur numéro 8 du monde ?Né à Hamilton, Tupaea se fait rapidement connaître dans les équipes de jeunes. Titulaire avec la sélection des moins de 20 ans, de la partie avec les Maoris All Blacks contre les Moana Pasifika, ses qualités de vitesses, d'appuis alliées à une grande puissance, une technique individuelle au-dessus de la moyenne et un bon sens du jeu lui permettent de gravir rapidement les échelons. Le prototype même du trois-quarts centre néo-zélandais. Après s'être étalonné en NPC avec Waikato où il brille, il démarre en 2020 sa carrière au plus haut niveau avec les Chiefs lors du Super Rugby puis Super Rugby Aoteaoroa. Cette saison encore, il joue 7 rencontres avec sa franchise. Ses performances tapent dans l'œil d'Ian Foster qui le sélectionne pour les tests de juillet. L'occasion pour lui de souffler sa première bougie lors de l'écrasante victoire face aux Tonga. Une performance remarquée, mais malheureusement sans essai pour le jeune joueur. Mais qu'importe, ce dernier a pris rendez-vous avec l'avenir.\n\nThat moment when you’re named in the All Blacks for the first time. Congrats Quinn Tupaea 🙌 pic.twitter.com/uXtFeeiiLX\n— All Blacks (@AllBlacks) June 21, 2021\n\nRugby Championship et titularisation contre la France\nCar ses 63 minutes jouées contre les Tonga seront tous sauf un feu de paille. Ian Foster affirme sa confiance en son jeune centre et le sélectionne dans le groupe pour participer au Rugby Championship. Et s'il reste derrière des Havili ou Lienert-Brown, Tupaea grignote quelques minutes en entrant en jeu contre l'Argentine ou lors de la victoire en Afrique du Sud. Face à ces mêmes Pumas, il disputera l'intégralité de la rencontre, le 18 septembre dernier. Une marque de confiance. Par la même occasion, il remportera le Rugby Championship, le premier trophée d'une carrière internationale naissante. Car oui, c'est ça être un All Black. Remplir l'armoire à trophées dès son plus jeune âge et ne laisser que des miettes à ses adversaires. Son premier essai interviendra le 23 octobre dernier lors d'une nouvelle rouste infligée aux USA (14-104). Dans tous les bons coups, Quinn Tupaea sera titularisé une nouvelle fois contre l'Italie, une quinzaine de jours plus tard. Alors on vous voit venir. Vous allez nous dire que Foster l'a aligné seulement lors des matchs estimés plus ''aisés''. Allez, on acquiesce. Pourtant, pour jouer ce samedi, il a été préféré à l'une des pointures au poste, David Havili. Et face à une grosse nation de ce sport. Comment l'expliquer ? \n\n''Je suis ravi de la profondeur d'effectif, mais je pense que, pour ce match-ci, nous avons vraiment senti que l'équipe avait l'air un peu en dedans la semaine dernière et apporter des nouveaux joueurs est exactement ce dont nous avons besoin''. Ça ? Ce sont des propos d'Ian Foster en conférence de presse relayés par Rugby Pass. Et à vrai dire, qui de mieux que Quinn Tuapea, peu utilisé jusqu'à présent lors des rencontres importantes, pour apporter du sang neuf ? Les Blacks arrivent en bout de course, l'état de fraîcheur sera donc primordial pour l'emporter face aux Français. Ce qui peut expliquer cette titularisation, tout comme celle de Sam Cane blessé durant une bonne partie de la saison ou même d'Aaron Smith. Foster se justifiait d'ailleurs, au sujet de l'association choisie au centre du terrain : ''Évidemment, Anton est de toute façon absent avec une blessure à l'épaule [...] Nous avons envisagé d'utiliser Davie et Quinn''. Associer les deux joueurs et décaler Tupaea en 13 ? Finalement Foster a décidé de maintenir Ioane à ce poste. Havili sera dès lors utilisé comme un impact player idéal : ''David a montré de belles choses dans la dernière partie du match (en Irlande NDLR), donc nous travaillons là-dessus et nous pensons que Quinn sera idéal pour entrer dans un rôle de titulaire et l'amener à jouer le type de jeu pour lequel il est bon.'' La puissance de Tupaea pour épuiser la défense des Bleus avant de lâcher la cavalerie avec Havili ? Cela semble être une des stratégies. Toujours est-il, que le jeune centre vivra ce samedi dans la froide nuit parisienne, le plus grand match de son début de carrière, le tout à seulement six sélections (bientôt 7). À Quinn d'être l'un des rois des All Blacks. \nVIDEO. RUGBY. 1973, la dernière victoire à Paris des Bleus de Spanghero face aux All Blacks", + "category": "", + "link": "https://www.lerugbynistere.fr/news/all-blacks-qui-est-quinn-tupaea-le-rookie-de-la-nouvelle-zelande-1911211455.php", + "creator": "", + "pubDate": "2021-11-19 14:56:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘Diagnosis is rebirth’: women who found out they were autistic as adults", - "description": "

Women from around the world describe the life-changing impact of finally receiving a diagnosis

Less than 20 hours after asking women who had received a late diagnosis of autism, we received 139 replies from around the world.

There were women whose lives had been scarred by victimisation, from bullying to rape, because without a diagnosis they did not know they were highly vulnerable to manipulation and abuse.

Continue reading...", - "content": "

Women from around the world describe the life-changing impact of finally receiving a diagnosis

Less than 20 hours after asking women who had received a late diagnosis of autism, we received 139 replies from around the world.

There were women whose lives had been scarred by victimisation, from bullying to rape, because without a diagnosis they did not know they were highly vulnerable to manipulation and abuse.

Continue reading...", - "category": "Autism", - "link": "https://www.theguardian.com/society/2021/nov/19/diagnosis-women-autism-later-life", - "creator": "Amelia Hill", - "pubDate": "2021-11-19T14:36:02Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", - "read": false, - "favorite": false, - "created": false, - "tags": [] - }, - { - "title": "Do long jail sentences stop crime? We ask the expert", - "description": "

Penelope Gibbs, former magistrate and founder of Transform Justice, on whether harsher sentences are effective

Until recently, the subject of criminal punishment hasn’t been a massive concern for the public (putting aside that small demographic committed to a “hang ’em all!” approach). But in the wake of Sarah Everard’s murder, calls for misogyny to become a hate crime have gone from a whisper to a roar. That change would give judges the power to increase sentences when misogyny was found to be an aggravating factor in a crime. But would harsher sentences do much to stop such crimes happening? I asked Penelope Gibbs, former magistrate and founder of Transform Justice, a charity campaigning for a more effective justice system.

Did you hear about the Thai fraudster who was sentenced to jail for more than 13,000 years? I guess they needed a number to describe ‘throwing away the key’. Are long sentences becoming more common?
I don’t know about across the world, but I can tell you that in England and Wales sentences have been getting steadily longer over the past decade, by roughly 20%.

Continue reading...", - "content": "

Penelope Gibbs, former magistrate and founder of Transform Justice, on whether harsher sentences are effective

Until recently, the subject of criminal punishment hasn’t been a massive concern for the public (putting aside that small demographic committed to a “hang ’em all!” approach). But in the wake of Sarah Everard’s murder, calls for misogyny to become a hate crime have gone from a whisper to a roar. That change would give judges the power to increase sentences when misogyny was found to be an aggravating factor in a crime. But would harsher sentences do much to stop such crimes happening? I asked Penelope Gibbs, former magistrate and founder of Transform Justice, a charity campaigning for a more effective justice system.

Did you hear about the Thai fraudster who was sentenced to jail for more than 13,000 years? I guess they needed a number to describe ‘throwing away the key’. Are long sentences becoming more common?
I don’t know about across the world, but I can tell you that in England and Wales sentences have been getting steadily longer over the past decade, by roughly 20%.

Continue reading...", - "category": "Social trends", - "link": "https://www.theguardian.com/lifeandstyle/2021/nov/19/do-long-jail-sentences-stop-we-ask-the-expert", - "creator": "Coco Khan", - "pubDate": "2021-11-19T15:00:02Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "RUGBY. Deux ans après la finale, cet Angleterre/Afrique du Sud sera-t-il vraiment une revanche ?", + "description": "Ce samedi après-midi, l'Afrique du Sud termine sa face aux finalistes anglais, à Twickenham. 2 ans après la finale. Décryptage des compositions.", + "content": "Sur fond d'affaire Rassie Erasmus (suspendu de toute activité rugbystique cette semaine, suite à ses critiques de l'arbitrage lors de la tournée des Lions en Afrique du Sud cet été), les Springboks viennent défier l'Angleterre pour la revanche de la dernière finale de la coupe du monde, dans ce qui s'annonce comme un choc au sommet. Alors que l'Afrique du Sud et son sélectionneur Jacques Nienaber ont gardé la même ossature qui les avait assuré du titre mondial au Japon, les hommes d'Eddie Jones ont eux, après un Tournoi 2021 médiocre, largement été renouvelés.\nExit l'association Ford-Farrell, qui avait eu raison des All Blacks en demi-finale. Place désormais à Marcus Smith en numéro 10, pendant qu'Owen Farrell est forfait pour blessure pendant plusieurs semaines. Exit également le contingent important de Sarries dans le XV de la Rose : les frères Vunipola, Jamie George, Ben Spencer, George Kruis et consorts. Ils ne seront plus que 3 sur la feuille de match, en la personne de Maro Itoje, Charlie Ewels et Max Mallins. Ces absences ont su être bénéfiques aux jeunes talents prometteurs tels que Stward, Marchant, Sam Simmonds (dont la sélection en Angleterre était très attendue outre-Manche), Bevan Rood ou Blamire. Les \"kamikazes kid\", eux, sont toujours présents deux ans après, et ont encore de belles années à vivre sous le maillot anglais. De même pour Kyle Sinckler, qui était sorti suite à un KO après seulement quelques minutes, et qui ne se souvient plus du tout de la rencontre aujourd'hui.\n\n🇿🇦 Minor rotational changes to the Springbok team➡️ Starts for De Jager, Reinach and Pollard at Twickenham🗣️ “England have made it clear that they’ll come hard at us in this match”🔗 Team announcement: https://t.co/978wrrvKfi#StrongerTogether #StrongerForever #ENGvRSA pic.twitter.com/Lzn7ewszf0\n— Springboks (@Springboks) November 16, 2021\n\n\nCôté Boks, l'ossature n'a presque pas changé. D'abord seulement deux changements dans le banc des remplaçants, où Wiese et Elton Jantjies remplacent numériquement François Louw (retraite) et RG Snyman (blessé). Et 5 changements dans le XV de départ. Les retraités Mtawarira et Malherbe ont été relayés par Nché et Nyakane. Du Toit, meilleur joueur du monde 2019, est blessé et c'est Kwagga Smith qui assurera avec le numéro 7 dans le dos. De Klerck également blessé, ainsi que la star Cheslin Kolbe, sont remplacés par Cobus Reinach et Jesse Kriel. Mais les Etzebeth, Kolisi, Vermeulen, Pollard, De Allende et Leroux porteront bien le maillot de la nation arc-en-ciel à Twickenham dans l'une des affiches au sommet de ce samedi de tests.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-deux-ans-apres-la-finale-cet-angleteterreafrique-du-sud-sera-t-il-vraiment-une-revanche-1911211343.php", + "creator": "", + "pubDate": "2021-11-19 14:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "David Lacey obituary", - "description": "Guardian sports writer whose wit and talent redefined what a football column could be

It is not customary to look forward to Monday mornings but, in the heyday of the Guardian’s print sales in the late 1970s and 80s, many readers relished Monday’s paper more than anything else.

On a features page would be Posy Simmonds’ weekly dissection of middle-class life. And, further back, stretched across the width of the main sports page, David Lacey would offer his weekly dissection of football. Like Posy’s cartoon strip, this was one of the great institutions of British journalism.

Continue reading...", - "content": "Guardian sports writer whose wit and talent redefined what a football column could be

It is not customary to look forward to Monday mornings but, in the heyday of the Guardian’s print sales in the late 1970s and 80s, many readers relished Monday’s paper more than anything else.

On a features page would be Posy Simmonds’ weekly dissection of middle-class life. And, further back, stretched across the width of the main sports page, David Lacey would offer his weekly dissection of football. Like Posy’s cartoon strip, this was one of the great institutions of British journalism.

Continue reading...", - "category": "Football", - "link": "https://www.theguardian.com/football/2021/nov/19/david-lacey-obituary", - "creator": "Matthew Engel", - "pubDate": "2021-11-19T17:41:00Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "VIDEO. RUGBY. 1973, la dernière victoire à Paris des Bleus de Spanghero face aux All Blacks", + "description": "Le Stade de France accueillera ce samedi le choc tant attendu entre la France et la Nouvelle-Zélande. Un stade qui ne réussit pas vraiment aux Tricolores.", + "content": "RESUME VIDEO. 1986. Le fameux match face aux All Blacks où les Français se seraient dopés aux amphétaminesC’est la petite stat qui fait grincer des dents. La France peine à mettre à mal les Néo-Zélandais sur son sol et encore plus à Paris. Le dernier succès français face aux Blacks dans la capitale remonte à 1973. Les Bleus s’étaient imposés 13-6 dans un match assez cadenassé. Cette rencontre étant d’ailleurs la deuxième victoire des Bleus de l’histoire face aux All Blacks. Mais les Tricolores ne reste pas sur 48 années de disette en France. Par quatre fois les Bleus ont fait rompre les triples champions du monde dans l’Hexagone : 1977, 1986, 1995 et en 2000. Mais ces quatre succès ont tous eu lieu en province et non dans la capitale. Notamment le magnifique succès à Marseille en 2000, dans un Stade Vélodrome plein à craquer, les Français avaient étrillé les Blacks 42-33. Un match marqué par l’arrivée très tardive des Bleus au stade, le bus des joueurs ayant multiplié les erreurs d’aiguillage. Strap dans le bus, échauffement écourté, Galthié, alors demi de mêlée de cette équipe de France avait eu une merveilleuse idée pour faire monter la température malgré tous ces petits incidents. Avant la rentrée au vestiaire, les Bleus feront un tour d’honneur dans le stade. Chauffé à blanc par un public en folie. L’équipe de France réalisera une des plus belles prestations de son histoire face aux Blacks. Depuis, la France n’a plus jamais réalisé à nouveau cet exploit devant son public. Au Stade de France, c’est 48 années à vide pour les Bleus. En termes de match, c’est 10 revers depuis la victoire en 1973. Un seul petit nul en 2002 vient « égayer » cette triste série. Alors, le choc de samedi viendra confirmer cette malédiction ou bien la France mettra enfin un terme à cette triste série ?\n\nLes compositions :\nFrance 15 Jack Cantoni ; 14 Roland Bertranne - 13 Claude Dourthe - 12 Jean-Pierre - Lux 11 Andre Campaes ; 10 Jean-Pierre Romeu ; 9 Max Barrau 7 Pierre Biemouret -  8 Walter Spanghero (c) - 6 Olivier Saisset 5 Alain Esteve - 4 Elie Cester 3 Jean Iracabal - 2 Rene Benesis - 1 Jean-Louis Azarete \nRemplaçants : 16 Michel Droitecourt, 17 Armand Clerc, 18 Andre Darrieussecq, 19 Jean-Claude Skrela, 20 Michel Pebeyre, 21 Jean-Louis Berot\n\nNouvelle-Zélande : 15 Joe Karam ; 14 Bryan Williams -  13 Bruce Robertson - 12 Ian Hurst - 11 Grant Batty ; 10 Bob Burgess 9 Sid Going  ; 1 Graham Whiting -  2 Tane Norton - 3 Kent Lambert ;  4 Pole Whiting - 5 Hamish Macdonald ; 6 Ian Kirkpatrick (c) - 7 Grizz Wyllie - 8 Alan Sutherland", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/video-rugby-1973-la-derniere-victoire-a-paris-des-bleus-de-spanghero-face-aux-all-blacks-1911211433.php", + "creator": "", + "pubDate": "2021-11-19 14:35:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Marry Me: do you take the J-Lo/Owen Wilson romcom to be the weirdest film of 2022?", - "description": "

Jennifer Lopez proposes to Owen Wilson, a maths teacher she’s never met. What was she thinking? How will it end? And does anyone care?

Nobody really wants it to be 2021, do they? A vicious global pandemic is about to enter its third year, the world is on fire and populist politics threatens to overturn democracy as we know it. Some people have reacted to these terrible times by trying to change things. Others are willing themselves back to a more innocent era.

By “others”, I mean Jennifer Lopez and Owen Wilson, who are doing their level best to make it 2005 again. How? By making a romcom, that’s how. If this was a decade and a half ago, then Marry Me would automatically be one of the biggest hits of the year, bringing together the unstoppable forces responsible for Maid in Manhattan and Wedding Crashers. But it isn’t 2005, it’s 2021, and the thought of watching Lopez and Wilson shuffle through a romcom together is baffling. Perhaps it’d help to go through the Marry Me trailer beat by beat.

Continue reading...", - "content": "

Jennifer Lopez proposes to Owen Wilson, a maths teacher she’s never met. What was she thinking? How will it end? And does anyone care?

Nobody really wants it to be 2021, do they? A vicious global pandemic is about to enter its third year, the world is on fire and populist politics threatens to overturn democracy as we know it. Some people have reacted to these terrible times by trying to change things. Others are willing themselves back to a more innocent era.

By “others”, I mean Jennifer Lopez and Owen Wilson, who are doing their level best to make it 2005 again. How? By making a romcom, that’s how. If this was a decade and a half ago, then Marry Me would automatically be one of the biggest hits of the year, bringing together the unstoppable forces responsible for Maid in Manhattan and Wedding Crashers. But it isn’t 2005, it’s 2021, and the thought of watching Lopez and Wilson shuffle through a romcom together is baffling. Perhaps it’d help to go through the Marry Me trailer beat by beat.

Continue reading...", - "category": "Film", - "link": "https://www.theguardian.com/film/2021/nov/19/marry-me-do-you-take-the-j-loowen-wilson-romcom-to-be-the-weirdest-film-of-2022", - "creator": "Stuart Heritage", - "pubDate": "2021-11-19T14:42:26Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "POINT TRANSFERTS. Le Racing 92 fait son marché à Brive, Seuteni vers la Rochelle, deux Toulousains sur le départ ?", + "description": "On fait le point sur les rumeurs et les annonces officielles qui ont agité le marché des transferts cette semaine en Top 14 et en Pro D2.", + "content": "Top 14\nToulouse\nAntoine Miquel (27 ans) et Arthur Bonneval (26 ans) pourrait quitter le champion de France. Le premier est sur les tablettes du LOU tandis que le second intéresserait le Stade Français et l'UBB selon le Midol.\nBrive\nLe Midi olympique avance que le talonneur Peniami Nasali Narisia (24 ans) et le 3e ligne Kitione Kamikamica (25 ans) ont donné leur accord au Racing 92. L'ailier Setareki Bituniyata serait aussi dans le viseur de la formation francilienne mais il est sous contrat jusqu'en 2024.\nLa Rochelle\nRMC avance que le 3/4 de l'UBB Ulupano Seuteni jouera au Stade Rochelais l'an prochain et ce jusqu'en 2025.\nMontpellier\nCourtisé par le MHR, l'ouvreur anglais George Ford a signé à Sale.\nUSAP\nGeorge Tilsley reste une saison de plus à Perpignan. Piula Fa’asalélé pourrait également continuer l'aventure.\nLOU\nLe Tricolore Baptiste Couilloud aurait prolongé jusqu'en 2025 selon RMC.\nPro D2\nGrenoble\nAnge Capuozzo intéresse plusieurs clubs de Top 14 dont le Racing 92.\nBayonne\nLe pilier Ugo Boniface serait en partance pour l'UBB qui cherchait un joueur suite au départ de Thierry Paiva pour la Rochelle. Notez que le 3e ligne Pierre Huguet devrait débarquer en provenance de Carcassonne.\nMont-de-Marsan\nLe demi de mêlée Léo Coly pourrait rejoindre le Top 14 sans se soucier des phases finales. Toulon et le LOU sont intéressés. La formation lyonnaise lui aurait même fait une offre selon le Midol.\nAgen\nFormé à Oyonnax, l'Anglais Zak Farrance (2e ligne) débarque au SUA.\nAurillac\nProlongation du pilier Alexandre Plantier pour deux saisons supplémentaires (+ 1 en option).\nPremiership\nSale\nL'Irlandais Conor Murray serait dans le viseur des Sharks pour remplacer Faf de Klerk en cas de départ.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/point-transferts-le-racing-92-fait-son-marche-a-brive-seuteni-vers-la-rochelle-deux-toulousains-sur-le-depart-1911211146.php", + "creator": "", + "pubDate": "2021-11-19 11:50:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "York’s anti-terror measures make centre a ‘no go zone’ for disabled people", - "description": "

Campaigners say removal of blue badge parking to make way for new defences is in breach of Equality Act

Disability rights campaigners are planning a legal challenge against York council after it voted to ban blue badge parking on key streets in the city centre.

York Accessibility Action (YAA), an organisation founded by disabled York residents and carers, said the city has become a “no go zone” for many disabled people and there was now no suitable parking within 150 metres of the city centre.

Continue reading...", - "content": "

Campaigners say removal of blue badge parking to make way for new defences is in breach of Equality Act

Disability rights campaigners are planning a legal challenge against York council after it voted to ban blue badge parking on key streets in the city centre.

York Accessibility Action (YAA), an organisation founded by disabled York residents and carers, said the city has become a “no go zone” for many disabled people and there was now no suitable parking within 150 metres of the city centre.

Continue reading...", - "category": "York", - "link": "https://www.theguardian.com/uk-news/2021/nov/19/york-anti-terror-measures-disabled-people-blue-badge-parking", - "creator": "Miranda Bryant", - "pubDate": "2021-11-19T18:16:46Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Rugby. France-All Blacks. Woki vs Retallick : l'élève face au maître !", + "description": "À l'aube de la confrontation entre la France et la Nouvelle-Zélande, focus sur l'un des duels de ce match : Brodie Retallick, face à Cameron Woki.", + "content": "Plus qu'une journée ! Samedi soir, la France et la Nouvelle-Zélande s'apprêtent à s'affronter dans un match qui s'annonce palpitant. D'un côté, les All Blacks, quasiment imbattables et dieux du rugby, et de l'autre, la France, emmenée par une génération dorée qui voudra certainement prouver au monde entier de quoi elle est capable. Si le duel Smith/Dupont fait déjà saliver tous les fans de ce sport, une autre confrontation va avoir lieu, entre une légende vivante du rugby, et un jeune pétri de talent : Brodie Retallick vs Cameron Woki.\nRUGBY. La composition de la France avec Woki en 4, Ntamack en 10 et Jaminet en 15 face aux All Blacks\nLe grand écart\nOn ne va pas se cacher, ce duel paraît bien déséquilibré sur le papier. En même temps, peu de deuxième ligne sur la planète rugby peuvent rivaliser face au meilleur joueur du monde 2014 ! Brodie, c'est 204 centimètres de talent, jumelés à 122 kg de puissance. Rien que ça ! Aussi habile balle en main qu'en défense, Retallick est l'une des pièces maîtresses du jeu des Blacks, avec son pote de la seconde ligne, Sam Whitelock. Titulaire indiscutable depuis 2013, le joueur de 30 ans est aujourd'hui l'une des références à son poste.\nVIDÉO. Avec cet essai, Brodie Retallick prouve encore une fois qu'il est le meilleur soutien du monde\nAutant vous dire que la tâche ne sera pas aisée pour le Bordelais, Cameron Woki ! Bien plus jeune que le Néo-Zélandais, Woki souffre également d'un déficit énorme d'expérience au niveau international : seulement 10 sélections chez les Bleus pour l'ancien joueur de Massy, contre 86 pour le géant all blacks. De plus, Woki évoluera samedi à un poste inhabituel pour lui ! Troisième ligne aile de métier, le match de samedi ne sera que son deuxième à ce poste chez les Bleus, après celui disputé il y a une semaine face à la Géorgie. Un manque d'automatisme qui peut faire défaut au joueur de l'UBB, mais qui n'enlève en rien ses qualités rugbystiques, et notamment en touche, où il livrera une bataille sans merci à l'alignement des Blacks.\n\nUne vraie carte à jouer pour Woki ?\nLe repositionnement de Woki dans la cage a surpris beaucoup de monde, qui aurait préféré voir un spécialiste du poste, surtout pour un match de cette intensité. On pense particulièrement au Toulousain Flament, ou encore au Lyonnais Taofifenua. Et pourtant, le staff des Bleus a choisi Cameron Woki pour accompagner Willemse en deuxième ligne. Si l’on se doute bien que ce choix est, en premier lieu, fait pour la touche, la présence de Woki dans le pack permettra également d’apporter une touche technique. En effet, le Bordelais est un joueur très habile, capable de jouer facilement avant, et après contact. Son activité en défense est aussi à louer, et sera primordiale face à des Blacks qui auront sûrement la possession du ballon. \nVIDEO. POW POW POW ! Cameron Woki claque un énorme dunk sur le visage des Australiens !Le véritable point noir de ce repositionnement, c’est le manque de puissance de Woki, face à deux monstres physiques. Attention, Cameron Woki est plus que solide (1 mètre 97 pour 108 kg), mais son profil correspond plus à celui d’un troisième ligne ! Face à une deuxième ligne néo-zélandaise qui culmine à plus de 245 kg, la question peut donc se poser ici. Néanmoins, Galthié a certainement prévu le coup, en densifiant sa troisième ligne (avec notamment l’association Jelonch-Cros-Alldritt). À voir donc si cela suffira à repousser la puissance des avants Blacks, qui voudront se racheter après s’être fait concasser la semaine passée par les Irlandais.\n\nÉquipe de France. Copier l'Irlande et les Boks, l'erreur fatale face aux Blacks ?\nToujours est-il que ce match dans le match sera intéressant à suivre, avec un Cameron Woki qui ne cesse de nous surprendre.", + "category": "", + "link": "https://www.lerugbynistere.fr/news/rugby-france-all-blacks-woki-vs-retallick-leleve-face-au-maitre-1911211048.php", + "creator": "", + "pubDate": "2021-11-19 11:45:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Omar Souleyman: singer held by Turkey over alleged militant links is freed", - "description": "

Syrian questioned by police after reports he has ties to banned Kurdish People’s Protection Units

Celebrated Syrian singer Omar Souleyman, who has performed at festivals around the world, has been released after being detained over alleged links to Kurdish militants.

Souleyman was freed at 10.30pm (19.30 GMT) after a confusing day during which he was released in the morning before being taken back to a detention centre.

Continue reading...", - "content": "

Syrian questioned by police after reports he has ties to banned Kurdish People’s Protection Units

Celebrated Syrian singer Omar Souleyman, who has performed at festivals around the world, has been released after being detained over alleged links to Kurdish militants.

Souleyman was freed at 10.30pm (19.30 GMT) after a confusing day during which he was released in the morning before being taken back to a detention centre.

Continue reading...", - "category": "Turkey", - "link": "https://www.theguardian.com/world/2021/nov/19/singer-omar-souleyman-held-by-turkey-over-alleged-militant-links-is-freed", - "creator": "AFP in Ankara", - "pubDate": "2021-11-19T22:23:28Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "VIDEO. A Brens, Mathieu, autiste, vit sa passion pour le rugby grâce au respect de ses coéquipiers", + "description": "Le Brens Olympique compte dans ses rangs un joueur très particulier. Mathieu a la particularité d'être autiste mais cela ne l'empêche pas de vivre sa passion.", + "content": "VIDEO. AMATEUR. Ils ajoutent 5 minutes au match pour permettre à Mathieu, autiste, de marquer un essaiIl y a quelques semaines, nous avions raconté une belle histoire qui avait eu lieu lors du match entre le club de Brens et de Gondrin. Pour rappel, les deux équipes avaient convenu d'ajouter quelques minutes à la rencontre pour permettre à Mathieu, autiste, de porter le ballon jusqu'en Terre promise. Un beau geste de la part de tous les acteurs du match envers ce rugbyman. \"Il fait partie intégrante de l'équipe\", confie l'entraîneur du Brens Olympique Régis Sacarrère. Le rugby l'a aidé à aller vers les autres, à s'ouvrir alors qu'il n'aimait pas trop qu'on le touche. Cela fait dix ans que Matthieu fait partie du groupe et quand il n'est pas là, il manque au collectif comme n'importe quel autre élément. Et notamment après les entraînements où il joue parfois les animateurs grâce à son excellente mémoire. Quand il n'est pas sur le pré avec ses coéquipiers, qu'il ne pratique pas le tai-chi-chuan ou qu'il ne s'occupe pas de chevaux, il est le premier supporter de son équipe et fait profiter à la main courante de ses commentaires. À la fin du match, place à la tradition : laisser Mathieu, alias le foudroyeur, marquer un essai et le transformer. De belles images à découvrir à travers ce reportage de France TV.\n", + "category": "", + "link": "https://www.lerugbynistere.fr/videos/video-a-brens-mathieu-autiste-vit-sa-passion-pour-le-rugby-grace-au-respect-de-ses-coequipiers-1911211047.php", + "creator": "", + "pubDate": "2021-11-19 10:50:00", + "folder": "00.03 News/Sport - FR", + "feed": "Le Rugbynistere", "read": false, "favorite": false, "created": false, "tags": [] - }, + } + ], + "folder": "00.03 News/Sport - FR", + "name": "Le Rugbynistere" + }, + { + "title": "Fil Sport - actualités", + "subtitle": "", + "link": "https://rmcsport.bfmtv.com/fil-sport/", + "image": "https://rmcsport.bfmtv.com/assets/images/RMCSPORT_default_16x9.jpg", + "description": "Retrouvez sur RMC Sport toute l'actualité sportive en continu et en direct: football, mercato, rugby, basket, tennis, formule 1…", + "items": [ { - "title": "Oxford University identifies 145 artefacts looted in Benin raid", - "description": "

Plundered items likely to be returned to Nigeria include plaques, bronze figures and musical instruments

The University of Oxford is holding 145 objects looted by British troops during an assault on the city of Benin in 1897 that are likely to be repatriated to Nigeria, a report has said.

More than two-thirds of the plundered items are owned by the university’s Pitt Rivers Museum, and 45 are on loan. They include brass plaques, bronze figures, carved ivory tusks, musical instruments, weaving equipment, jewellery, and ceramic and coral objects dating to the 13th century.

Continue reading...", - "content": "

Plundered items likely to be returned to Nigeria include plaques, bronze figures and musical instruments

The University of Oxford is holding 145 objects looted by British troops during an assault on the city of Benin in 1897 that are likely to be repatriated to Nigeria, a report has said.

More than two-thirds of the plundered items are owned by the university’s Pitt Rivers Museum, and 45 are on loan. They include brass plaques, bronze figures, carved ivory tusks, musical instruments, weaving equipment, jewellery, and ceramic and coral objects dating to the 13th century.

Continue reading...", - "category": "University of Oxford", - "link": "https://www.theguardian.com/education/2021/nov/19/oxford-university-identifies-145-artefacts-looted-in-benin-raid", - "creator": "Harriet Sherwood Arts and culture correspondent", - "pubDate": "2021-11-19T18:28:23Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", - "read": false, + "title": "PSG: Marco Verratti absent plusieurs semaines ?", + "description": "Selon L’Equipe, le milieu de terrain du PSG, Marco Verratti, blessé aux quadriceps, devrait être absent des terrains durant trois semaines.

", + "content": "Selon L’Equipe, le milieu de terrain du PSG, Marco Verratti, blessé aux quadriceps, devrait être absent des terrains durant trois semaines.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-marco-verratti-absent-plusieurs-semaines_AV-202111250658.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 22:59:36 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Kyle Rittenhouse: Biden accepts verdict as acquittal sparks outrage – live", - "description": "

Jerrold Nadler of New York, the Democratic chair of the House judiciary committee, is out with a much stronger statement than President Biden:

“This heartbreaking verdict is a miscarriage of justice and sets a dangerous precedent which justifies federal review by [the Department of Justice].

I stand by what the jury has to say. The jury system works.”

Continue reading...", - "content": "

Jerrold Nadler of New York, the Democratic chair of the House judiciary committee, is out with a much stronger statement than President Biden:

“This heartbreaking verdict is a miscarriage of justice and sets a dangerous precedent which justifies federal review by [the Department of Justice].

I stand by what the jury has to say. The jury system works.”

Continue reading...", - "category": "Kyle Rittenhouse", - "link": "https://www.theguardian.com/us-news/live/2021/nov/19/kyle-rittenhouse-verdict-not-guilty-kenosha-shooting-latest", - "creator": "Kari Paul (now) and Martin Pengelly (earlier)", - "pubDate": "2021-11-19T22:30:24Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", - "read": false, + "title": "Brondby-OL: Cherki savoure son superbe doublé", + "description": "Lyon a poursuivi son parcours sans-faute en Ligue Europa en alignant ce jeudi une cinquième victoire de rang à Brondby (1-3). Un succès qui porte le sceau de Rayan Cherki, auteur d’un doublé et qui a remis en selle les siens alors que l’OL était mené.

", + "content": "Lyon a poursuivi son parcours sans-faute en Ligue Europa en alignant ce jeudi une cinquième victoire de rang à Brondby (1-3). Un succès qui porte le sceau de Rayan Cherki, auteur d’un doublé et qui a remis en selle les siens alors que l’OL était mené.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/brondby-ol-cherki-savoure-son-superbe-double_AV-202111250657.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 22:54:33 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Kiribati’s attempts to keep stranded Australian judge out of the country ruled unconstitutional", - "description": "

In a landmark ruling, Kiribati’s chief justice ordered the government to allow high court judge David Lambourne to return

A landmark judgment in the Pacific country of Kiribati has ruled the government’s actions in blocking an Australian, a judge on Kiribati’s high court, from returning to the island were unconstitutional.

When David Lambourne left Kiribati in February 2020 to attend a conference in Australia, he thought it would be a brief and uneventful trip. Instead, the Australian judge, who has been resident of the Pacific nation for over two decades, found himself stranded after Covid-19 hit.

Continue reading...", - "content": "

In a landmark ruling, Kiribati’s chief justice ordered the government to allow high court judge David Lambourne to return

A landmark judgment in the Pacific country of Kiribati has ruled the government’s actions in blocking an Australian, a judge on Kiribati’s high court, from returning to the island were unconstitutional.

When David Lambourne left Kiribati in February 2020 to attend a conference in Australia, he thought it would be a brief and uneventful trip. Instead, the Australian judge, who has been resident of the Pacific nation for over two decades, found himself stranded after Covid-19 hit.

Continue reading...", - "category": "Kiribati", - "link": "https://www.theguardian.com/world/2021/nov/20/kiribatis-attempts-to-keep-stranded-australian-judge-out-of-the-country-ruled-unconstitutional", - "creator": "Kieran Pender", - "pubDate": "2021-11-19T20:00:07Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "OM: \"On doit grandir\", l'avertissement de Sampaoli après l’élimination en Ligue Europa", + "description": "L’entraîneur de l’Olympique de Marseille, Jorge Sampaoli, était déçu après la défaite face à Galatasaray (4-2), synonyme d’élimination en Ligue Europa. L'Argentin estime que son groupe n'est pas assez mature.

", + "content": "L’entraîneur de l’Olympique de Marseille, Jorge Sampaoli, était déçu après la défaite face à Galatasaray (4-2), synonyme d’élimination en Ligue Europa. L'Argentin estime que son groupe n'est pas assez mature.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/om-on-doit-grandir-l-avertissement-de-sampaoli-apres-l-elimination-en-ligue-europa_AV-202111250646.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 22:24:57 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Australia live news updates: Victoria Covid protests expected to escalate; NSW records 182 new cases; William Tyrrell search in sixth day", - "description": "

Anti-fascist activists vow to counter-rally against another wave of planned ‘freedom rallies’ they claim have been infiltrated by far-right groups

Asked about whether we can expect to see the introduction of a legislation for a federal anti-corruption commission in parliament in the next couple of weeks, Tim Wilson says it’s important that they “get the legislation right”:

Because what we’ve had too often is proposals which are designed to establish, kind of, kangaroo courts, and actually would do more to breed distrust in the political conversation. We’ve seen that particularly in the consequence of what’s happening in ICAC in New South Wales.

We want a process that’s based around integrity, that’s been consulted with the Australian community, and is actually going to do the job we need it to do, which is actually to breed trust and strength in the political system, not simply to create show trials, as I’ve seen it many times.

I think this is pretty simple. You’ve got a group of people marching down the street with a life-sized execution device. You’ve got people threatening to kill the Premier of Victoria. If you’re any sort of leader, you just condemn that, full stop. You don’t go on and then say, “But I understand why people are frustrated.”

I think it is legitimate to point out that Scott Morrison has pulled the sheet out of the Trump handbook here. Lie, deny, blame other people, never take responsibility for anything, try and divide the community, pander to the extreme right - this is Trump without the toupee. And, seriously, I think the Australian people deserve better than that.

Continue reading...", - "content": "

Anti-fascist activists vow to counter-rally against another wave of planned ‘freedom rallies’ they claim have been infiltrated by far-right groups

Asked about whether we can expect to see the introduction of a legislation for a federal anti-corruption commission in parliament in the next couple of weeks, Tim Wilson says it’s important that they “get the legislation right”:

Because what we’ve had too often is proposals which are designed to establish, kind of, kangaroo courts, and actually would do more to breed distrust in the political conversation. We’ve seen that particularly in the consequence of what’s happening in ICAC in New South Wales.

We want a process that’s based around integrity, that’s been consulted with the Australian community, and is actually going to do the job we need it to do, which is actually to breed trust and strength in the political system, not simply to create show trials, as I’ve seen it many times.

I think this is pretty simple. You’ve got a group of people marching down the street with a life-sized execution device. You’ve got people threatening to kill the Premier of Victoria. If you’re any sort of leader, you just condemn that, full stop. You don’t go on and then say, “But I understand why people are frustrated.”

I think it is legitimate to point out that Scott Morrison has pulled the sheet out of the Trump handbook here. Lie, deny, blame other people, never take responsibility for anything, try and divide the community, pander to the extreme right - this is Trump without the toupee. And, seriously, I think the Australian people deserve better than that.

Continue reading...", - "category": "Australia news", - "link": "https://www.theguardian.com/australia-news/live/2021/nov/20/australia-live-news-updates-victoria-covid-protests-expected-to-escalate-william-tyrrell-search-enters-in-sixth-day", - "creator": "Stephanie Convery", - "pubDate": "2021-11-19T22:49:38Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Ligue Europa: déjà qualifié, l’OL plane toujours grâce à Cherki", + "description": "Déjà qualifié pour les 8emes de finale, l’Olympique Lyonnais a signé sa cinquième victoire en autant de match en Ligue Europa sur la pelouse de Bröndby, battu 3-1 ce jeudi soir. Les Gones peuvent remercier leur jeune crack Rayan Cherki, auteur d’un somptueux doublé en deuxième période.

", + "content": "Déjà qualifié pour les 8emes de finale, l’Olympique Lyonnais a signé sa cinquième victoire en autant de match en Ligue Europa sur la pelouse de Bröndby, battu 3-1 ce jeudi soir. Les Gones peuvent remercier leur jeune crack Rayan Cherki, auteur d’un somptueux doublé en deuxième période.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/ligue-europa-deja-qualifie-l-ol-plane-toujours-grace-a-cherki_AV-202111250634.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 22:03:26 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "England and Wales ‘one step closer to ending child marriage’ after MP vote", - "description": "

Second reading of bill to ban marriage for under-18s receives cross-party support

A ban on child marriage in England and Wales came a step closer Friday with cross-party support for a new bill in the House of Commons.

The marriage and civil partnership (minimum age) bill had its second reading in parliament, with government and opposition MPs supporting the private member’s bill brought by Conservative MP Pauline Latham.

Continue reading...", - "content": "

Second reading of bill to ban marriage for under-18s receives cross-party support

A ban on child marriage in England and Wales came a step closer Friday with cross-party support for a new bill in the House of Commons.

The marriage and civil partnership (minimum age) bill had its second reading in parliament, with government and opposition MPs supporting the private member’s bill brought by Conservative MP Pauline Latham.

Continue reading...", - "category": "Global development", - "link": "https://www.theguardian.com/global-development/2021/nov/19/england-and-wales-one-step-closer-to-ending-child-marriage-after-mp-vote", - "creator": "Karen McVeigh", - "pubDate": "2021-11-19T17:33:09Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Europa Conference League: Tottenham en danger, Conte critique ses joueurs", + "description": "Battus par les Slovènes de Mura (2-1) ce jeudi, les Spurs n'ont pas leur destin en main avant la dernière journée de la phase de poules de l'Europa Conference League. Virtuellement éliminés, ils n'ont pas échappé aux critiques de leur nouvel entraîneur Antonio Conte.

", + "content": "Battus par les Slovènes de Mura (2-1) ce jeudi, les Spurs n'ont pas leur destin en main avant la dernière journée de la phase de poules de l'Europa Conference League. Virtuellement éliminés, ils n'ont pas échappé aux critiques de leur nouvel entraîneur Antonio Conte.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/europa-conference-league-tottenham-en-danger-conte-critique-ses-joueurs_AV-202111250631.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 21:58:49 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Croatia violated rights of Afghan girl who was killed by train, court rules", - "description": "

Madina Hussiny, 6, died after police refused to let her family apply for asylum and made them walk back to Serbia

After four years of legal struggle, the European court of human rights (ECHR) has ruled that Croatian police were responsible for the death of a six-year-old Afghan girl when they forced her family to return to Serbia via train tracks without giving them the opportunity to seek asylum.

The little girl, named Madina Hussiny, was struck and killed by a train after being pushed back with her family by the Croatian authorities in 2017.

Continue reading...", - "content": "

Madina Hussiny, 6, died after police refused to let her family apply for asylum and made them walk back to Serbia

After four years of legal struggle, the European court of human rights (ECHR) has ruled that Croatian police were responsible for the death of a six-year-old Afghan girl when they forced her family to return to Serbia via train tracks without giving them the opportunity to seek asylum.

The little girl, named Madina Hussiny, was struck and killed by a train after being pushed back with her family by the Croatian authorities in 2017.

Continue reading...", - "category": "Serbia", - "link": "https://www.theguardian.com/global-development/2021/nov/19/croatia-violated-rights-of-afghan-girl-who-was-killed-by-train-court-rules", - "creator": "Lorenzo Tondo", - "pubDate": "2021-11-19T17:29:22Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Monaco-Real Sociedad: une victoire et une qualification pour l’ASM", + "description": "Monaco a poursuivi ce jeudi son excellent parcours en Ligue Europa en disposant de la Real Sociedad (2-1) à Louis-II, lors de la 5e journée. Assurés d’achever la phase de poules à la première place, les coéquipiers de Wissam Ben Yedder sont qualifiés pour les 8es de finale.

", + "content": "Monaco a poursuivi ce jeudi son excellent parcours en Ligue Europa en disposant de la Real Sociedad (2-1) à Louis-II, lors de la 5e journée. Assurés d’achever la phase de poules à la première place, les coéquipiers de Wissam Ben Yedder sont qualifiés pour les 8es de finale.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/monaco-real-sociedad-une-victoire-et-une-qualification-pour-l-asm_AN-202111250628.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 21:56:28 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "As millions face famine #CongoIsStarving is calling on Joe Biden to help | Vava Tampa", - "description": "

Only a UN tribunal, sponsored by the US president, can end the culture of impunity fuelling violence and poverty in the DRC

The numbers are difficult to absorb. According to a new IPC report, a record 27 million Congolese – roughly a quarter of the Democratic Republic of the Congo’s (DRC’s) population – are facing hunger, with 860,000 children under five acutely malnourished. The DRC is home to more starving people than any other country in the world. This could have been prevented.

Without faith that their own president Félix Tshisekedi will act, people are turning to the US president, hoping that lobbying using the hashtag #CongoIsStarving on Twitter will urge Joe Biden to back the creation of an international criminal tribunal for the DRC to end the impunity fuelling violence and famine risk. Shockingly, it could be that simple to bring an end to this suffering; we are asking for solidarity, not charity, to save lives and end this nightmarish crisis.

Continue reading...", - "content": "

Only a UN tribunal, sponsored by the US president, can end the culture of impunity fuelling violence and poverty in the DRC

The numbers are difficult to absorb. According to a new IPC report, a record 27 million Congolese – roughly a quarter of the Democratic Republic of the Congo’s (DRC’s) population – are facing hunger, with 860,000 children under five acutely malnourished. The DRC is home to more starving people than any other country in the world. This could have been prevented.

Without faith that their own president Félix Tshisekedi will act, people are turning to the US president, hoping that lobbying using the hashtag #CongoIsStarving on Twitter will urge Joe Biden to back the creation of an international criminal tribunal for the DRC to end the impunity fuelling violence and famine risk. Shockingly, it could be that simple to bring an end to this suffering; we are asking for solidarity, not charity, to save lives and end this nightmarish crisis.

Continue reading...", - "category": "Global development", - "link": "https://www.theguardian.com/global-development/2021/nov/19/as-millions-face-famine-congo-is-starving-is-calling-on-joe-biden-to-help", - "creator": "Vava Tampa", - "pubDate": "2021-11-19T12:40:13Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Rennes: \"Je suis fâché\", Genesio tacle ses joueurs malgré la qualification", + "description": "En dépit de la qualification du Stade Rennais pour les 8emes de finale de l’Europa Conference League, l’entraîneur breton Bruno Genesio n’a pas aimé du tout l’attitude de ses joueurs, tenus en échec par le Vitesse Arnhem (3-3) après avoir mené deux fois au score.

", + "content": "En dépit de la qualification du Stade Rennais pour les 8emes de finale de l’Europa Conference League, l’entraîneur breton Bruno Genesio n’a pas aimé du tout l’attitude de ses joueurs, tenus en échec par le Vitesse Arnhem (3-3) après avoir mené deux fois au score.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/rennes-je-suis-fache-genesio-tacle-ses-joueurs-malgre-la-qualification_AV-202111250602.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 21:10:58 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rio Tinto’s past casts a shadow over Serbia’s hopes of a lithium revolution", - "description": "

People in the Jadar valley fear environmental catastrophe as Europe presses for self-sufficiency in battery technology

Photographs by Vladimir Zivojinovic

A battery sign, flashing dangerously low, appears superimposed over a view of the globe as seen from space. “Green technologies, electric cars, clean air – all of these depend on one of the most significant lithium deposits in the world, which is located right here in Jadar, Serbia,” a gravel-voiced narrator announces. “We completely understand your concerns about the environment. Rio Tinto is carrying out detailed analyses, so as to make all of us sure that we develop the Jadar project in line with the highest environmental, security and health standards.”

Beamed into the country’s living rooms on the public service channel RTS, the slick television ad, shown just after the evening news, finishes with images of reassuring scientists and a comforted young couple walking into the sunset: “Rio Tinto: Together we have the chance to save the planet.”

Continue reading...", - "content": "

People in the Jadar valley fear environmental catastrophe as Europe presses for self-sufficiency in battery technology

Photographs by Vladimir Zivojinovic

A battery sign, flashing dangerously low, appears superimposed over a view of the globe as seen from space. “Green technologies, electric cars, clean air – all of these depend on one of the most significant lithium deposits in the world, which is located right here in Jadar, Serbia,” a gravel-voiced narrator announces. “We completely understand your concerns about the environment. Rio Tinto is carrying out detailed analyses, so as to make all of us sure that we develop the Jadar project in line with the highest environmental, security and health standards.”

Beamed into the country’s living rooms on the public service channel RTS, the slick television ad, shown just after the evening news, finishes with images of reassuring scientists and a comforted young couple walking into the sunset: “Rio Tinto: Together we have the chance to save the planet.”

Continue reading...", - "category": "Serbia", - "link": "https://www.theguardian.com/global-development/2021/nov/19/rio-tintos-past-casts-a-shadow-over-serbias-hopes-of-a-lithium-revolution", - "creator": "Daniel Boffey in the Jadar valley, Serbia", - "pubDate": "2021-11-19T04:00:24Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "OM: Guendouzi reconnaît une \"énorme déception\" après l'élimination en Ligue Europa", + "description": "Au micro de RMC Sport, Mattéo Guendouzi a confié sa frustration après la défaite de l'OM jeudi contre Galatasaray (4-2), synonyme pour son équipe d'élimination en Ligue Europa. Il promet une réaction dès dimanche en championnat.

", + "content": "Au micro de RMC Sport, Mattéo Guendouzi a confié sa frustration après la défaite de l'OM jeudi contre Galatasaray (4-2), synonyme pour son équipe d'élimination en Ligue Europa. Il promet une réaction dès dimanche en championnat.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/om-guendouzi-reconnait-une-enorme-deception-apres-l-elimination-en-ligue-europa_AV-202111250598.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 21:08:44 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘We have fallen into a trap’: for hotel staff Qatar’s World Cup dream is a nightmare", - "description": "

Exclusive: Seduced by salary promises, workers at Fifa-endorsed hotels allege they have been exploited and abused

When Fifa executives step on to the asphalt in Doha next November for the start of the 2022 World Cup finals, their next stop is likely to be the check-in at one of Qatar’s glittering array of opulent hotels, built to provide the most luxurious possible backdrop to the biggest sporting event on earth.

Now, with a year to go before the first match, fans who want to emulate the lifestyle of the sporting elite can head to Fifa’s hospitality website to plan their stay in the host nation. There they can scroll through a catalogue of exclusive, Fifa-endorsed accommodation, from boutique hotels to five-star resorts.

Continue reading...", - "content": "

Exclusive: Seduced by salary promises, workers at Fifa-endorsed hotels allege they have been exploited and abused

When Fifa executives step on to the asphalt in Doha next November for the start of the 2022 World Cup finals, their next stop is likely to be the check-in at one of Qatar’s glittering array of opulent hotels, built to provide the most luxurious possible backdrop to the biggest sporting event on earth.

Now, with a year to go before the first match, fans who want to emulate the lifestyle of the sporting elite can head to Fifa’s hospitality website to plan their stay in the host nation. There they can scroll through a catalogue of exclusive, Fifa-endorsed accommodation, from boutique hotels to five-star resorts.

Continue reading...", - "category": "Workers' rights", - "link": "https://www.theguardian.com/global-development/2021/nov/18/we-have-fallen-into-a-trap-for-hotel-staff-qatar-world-cup-dream-is-a-nightmare", - "creator": "Pete Pattisson in Doha", - "pubDate": "2021-11-18T12:00:05Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Coupe Davis: Alcaraz positif au Covid-19 et forfait pour la phase finale", + "description": "Le jeune espagnol Carlos Alcaraz a été testé positif au Covid-19 et est ainsi contraint de déclarer forfait pour la phase finale de la Coupe Davis, qui a débuté jeudi entre Madrid, Innsbruck (Autriche) et Turin (Italie), a annoncé le joueur sur les réseaux sociaux jeudi.

", + "content": "Le jeune espagnol Carlos Alcaraz a été testé positif au Covid-19 et est ainsi contraint de déclarer forfait pour la phase finale de la Coupe Davis, qui a débuté jeudi entre Madrid, Innsbruck (Autriche) et Turin (Italie), a annoncé le joueur sur les réseaux sociaux jeudi.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/coupe-davis/coupe-davis-alcaraz-positif-au-covid-19-et-forfait-pour-la-phase-finale_AD-202111250588.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 20:46:58 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kyle Rittenhouse verdict declares open hunting season on progressive protesters | Cas Mudde", - "description": "

Demonstrators in the US must fear not only police brutality but also rightwing vigilantes

Kyle Rittenhouse – the armed white teenager whose mother drove him from Illinois to Wisconsin to allegedly “protect” local businesses from anti-racism protesters in Kenosha, whereupon he shot and killed two people and injured another – has been acquitted of all charges. I don’t think anyone who has followed the trial even casually will be surprised by this verdict. After the various antics by the elected judge, which seemed to indicate where his sympathies lay, and the fact that the prosecution asked the jurors to consider charges lesser than murder, the writing was on the wall.

I do not want to discuss the legal particulars of the verdict. It is clear that the prosecution made many mistakes and got little to no leeway from the judge, unlike the defense team. Moreover, we know that “self-defense” – often better known as vigilantism – is legally protected and highly racialized in this country. Think of the acquittal of George Zimmerman of the killing of Trayvon Martin in 2013.

Continue reading...", - "content": "

Demonstrators in the US must fear not only police brutality but also rightwing vigilantes

Kyle Rittenhouse – the armed white teenager whose mother drove him from Illinois to Wisconsin to allegedly “protect” local businesses from anti-racism protesters in Kenosha, whereupon he shot and killed two people and injured another – has been acquitted of all charges. I don’t think anyone who has followed the trial even casually will be surprised by this verdict. After the various antics by the elected judge, which seemed to indicate where his sympathies lay, and the fact that the prosecution asked the jurors to consider charges lesser than murder, the writing was on the wall.

I do not want to discuss the legal particulars of the verdict. It is clear that the prosecution made many mistakes and got little to no leeway from the judge, unlike the defense team. Moreover, we know that “self-defense” – often better known as vigilantism – is legally protected and highly racialized in this country. Think of the acquittal of George Zimmerman of the killing of Trayvon Martin in 2013.

Continue reading...", - "category": "Kyle Rittenhouse", - "link": "https://www.theguardian.com/us-news/commentisfree/2021/nov/19/kyle-rittenhouse-verdict-acquitted-protest", - "creator": "Cas Mudde", - "pubDate": "2021-11-19T21:53:51Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Coupe Davis: \"Je ne suis pas au niveau\", regrette Gasquet", + "description": "Richard Gasquet, sélectionné en équipe de France de Coupe Davis pour son expérience, a regretté de ne pas avoir eu \"le niveau\", après sa défaite dans le premier match contre la République tchèque, jeudi à Innsbruck ; face à Tomas Machac.

", + "content": "Richard Gasquet, sélectionné en équipe de France de Coupe Davis pour son expérience, a regretté de ne pas avoir eu \"le niveau\", après sa défaite dans le premier match contre la République tchèque, jeudi à Innsbruck ; face à Tomas Machac.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/coupe-davis/coupe-davis-je-ne-suis-pas-au-niveau-regrette-gasquet_AD-202111250575.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 20:25:18 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "‘The strongman blinks’: why Narendra Modi has backed down to farmers", - "description": "

Analysis: the authoritarian PM’s first retreat is a much needed triumph of democracy

“The strongman finally blinks,” was how one commentator put it. On Friday morning, India woke to a surprise announcement by the prime minister, Narendra Modi, that he was repealing the farm laws, which have been at the heart of one of the greatest challenges his government had faced in almost eight years in power.

It was a significant turning point, not only for the farmers, but for Indian politics and the reputation of the Bharatiya Janata party (BJP) government. Since Modi was first elected in 2014, his modus operandi has been that of a tough, unyielding, authoritarian strongman leader who does not bow to public pressure.

Continue reading...", - "content": "

Analysis: the authoritarian PM’s first retreat is a much needed triumph of democracy

“The strongman finally blinks,” was how one commentator put it. On Friday morning, India woke to a surprise announcement by the prime minister, Narendra Modi, that he was repealing the farm laws, which have been at the heart of one of the greatest challenges his government had faced in almost eight years in power.

It was a significant turning point, not only for the farmers, but for Indian politics and the reputation of the Bharatiya Janata party (BJP) government. Since Modi was first elected in 2014, his modus operandi has been that of a tough, unyielding, authoritarian strongman leader who does not bow to public pressure.

Continue reading...", - "category": "India", - "link": "https://www.theguardian.com/world/2021/nov/19/the-strongman-blinks-why-narendra-modi-has-backed-down-to-farmers", - "creator": "Hannah Ellis-Petersen South Asia correspondent", - "pubDate": "2021-11-19T16:14:05Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Europa Conference League: Laborde et Mura envoient le Stade Rennais en huitièmes", + "description": "Grâce à un triplé de son buteur Gaëtan Laborde mais aussi à la victoire surprise de Mura face à Tottenham (2-1), le Stade Rennais, pourtant tenu en échec par le Vitesse Arnhem 3-3 au Roazhon Park, décroche son ticket pour les 8emes de finale de l’Europa Conference League.

", + "content": "Grâce à un triplé de son buteur Gaëtan Laborde mais aussi à la victoire surprise de Mura face à Tottenham (2-1), le Stade Rennais, pourtant tenu en échec par le Vitesse Arnhem 3-3 au Roazhon Park, décroche son ticket pour les 8emes de finale de l’Europa Conference League.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/europa-conference-league-laborde-et-mura-envoient-le-stade-rennais-en-huitiemes_AV-202111250558.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 19:56:13 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "WTA’s hardline approach to Peng Shuai presents China with new problem", - "description": "

Analysis: Up to now sports associations have rapidly backed down from rows with Beijing

It is perhaps no coincidence that Chinese state media published an email purportedly written by the missing Chinese tennis star Peng Shuai shortly after reports emerged that the Biden administration was considering a “diplomatic boycott” of February’s Winter Olympics in Beijing.

China says the Games are apolitical and – in the words of its embassy in Washington – “a grand gathering for countries and a fair stage for athletes from all over the world to compete”.

Continue reading...", - "content": "

Analysis: Up to now sports associations have rapidly backed down from rows with Beijing

It is perhaps no coincidence that Chinese state media published an email purportedly written by the missing Chinese tennis star Peng Shuai shortly after reports emerged that the Biden administration was considering a “diplomatic boycott” of February’s Winter Olympics in Beijing.

China says the Games are apolitical and – in the words of its embassy in Washington – “a grand gathering for countries and a fair stage for athletes from all over the world to compete”.

Continue reading...", - "category": "China", - "link": "https://www.theguardian.com/world/2021/nov/19/wtas-hardline-approach-to-peng-shuai-presents-china-with-new-problem", - "creator": "Vincent Ni China affairs correspondent", - "pubDate": "2021-11-19T15:10:33Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "VIDEO. Galatasaray-OM: Marseille coule en Turquie et sort de la Ligue Europa", + "description": "Sèchement battu par Galatasaray (4-2) ce jeudi soir à Istanbul, Marseille est éliminé de la Ligue Europa avant même la dernière journée de la phase de groupes. Le club phocéen tentera de limiter la casse en rejoignant la Ligue Europa Conference.

", + "content": "Sèchement battu par Galatasaray (4-2) ce jeudi soir à Istanbul, Marseille est éliminé de la Ligue Europa avant même la dernière journée de la phase de groupes. Le club phocéen tentera de limiter la casse en rejoignant la Ligue Europa Conference.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/video-galatasaray-om-marseille-coule-en-turquie-et-sort-de-la-ligue-europa_AN-202111250551.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 19:48:37 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Lukashenko has got the ear of the EU at last – but it won’t help him", - "description": "

The Belarusian leader may have won phone talks with Angela Merkel but Europe remains united against him

As migrants camped out in the woods prepared for another night of sub-zero temperatures, the Estonian foreign minister, Eva-Maria Liimets, on Tuesday revealed to an evening news programme the gist of what Alexander Lukashenko demanded of Angela Merkel in the first call between a European leader and Belarus’s dictator in more than a year.

“He wants the sanctions to be halted, [and] to be recognised as head of state so he can continue,” she said he told Merkel.

Continue reading...", - "content": "

The Belarusian leader may have won phone talks with Angela Merkel but Europe remains united against him

As migrants camped out in the woods prepared for another night of sub-zero temperatures, the Estonian foreign minister, Eva-Maria Liimets, on Tuesday revealed to an evening news programme the gist of what Alexander Lukashenko demanded of Angela Merkel in the first call between a European leader and Belarus’s dictator in more than a year.

“He wants the sanctions to be halted, [and] to be recognised as head of state so he can continue,” she said he told Merkel.

Continue reading...", - "category": "Alexander Lukashenko", - "link": "https://www.theguardian.com/world/2021/nov/18/lukashenko-has-got-the-ear-of-the-eu-at-last-but-it-wont-help-him", - "creator": "Andrew Roth in Moscow", - "pubDate": "2021-11-18T05:00:02Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Brondby-OL: Cherki, Keita, Lukeba… Bosz fait confiance aux espoirs lyonnais", + "description": "Déjà assuré de terminer à la première place de son groupe, et par conséquent d'être qualifié pour les 8es de finale de la Ligue Europa, l’OL présente une équipe fortement remaniée pour son déplacement à Brondby, ce jeudi, lors de la 5e journée de Ligue Europa (sur RMC Sport 1).

", + "content": "Déjà assuré de terminer à la première place de son groupe, et par conséquent d'être qualifié pour les 8es de finale de la Ligue Europa, l’OL présente une équipe fortement remaniée pour son déplacement à Brondby, ce jeudi, lors de la 5e journée de Ligue Europa (sur RMC Sport 1).

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/brondby-ol-cherki-keita-lukeba-bosz-fait-confiance-aux-espoirs-lyonnais_AV-202111250540.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 19:24:12 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "'I'm not surprised': mixed reactions outside courthouse after Kyle Rittenhouse verdict – video", - "description": "

A jury acquitted teenager Kyle Rittenhouse on Friday of murder after the fatal shooting of two men in a trial that highlighted divisions over gun rights and stirred fierce debate about the boundaries of self-defence in the United States. Amid a heavy law enforcement presence, several dozen protesters lined the steps outside the courthouse after the verdict was read, some carrying placards in support of Rittenhouse and others expressing disappointment

Continue reading...", - "content": "

A jury acquitted teenager Kyle Rittenhouse on Friday of murder after the fatal shooting of two men in a trial that highlighted divisions over gun rights and stirred fierce debate about the boundaries of self-defence in the United States. Amid a heavy law enforcement presence, several dozen protesters lined the steps outside the courthouse after the verdict was read, some carrying placards in support of Rittenhouse and others expressing disappointment

Continue reading...", - "category": "Kyle Rittenhouse", - "link": "https://www.theguardian.com/us-news/video/2021/nov/19/im-not-surprised-mixed-reaction-outside-courthouse-after-kyle-rittenhouse-verdict-video", + "title": "Brondby-OL en direct: l'OL poursuit le sans faute, Cherki flamboyant", + "description": "Déjà assuré de terminer à la première place de son groupe, l'Olympique Lyonnais se déplace à Brondby pour la cinquième journée d'Europa League. Peter Bosz a décidé d'aligner une équipe remaniée.

", + "content": "Déjà assuré de terminer à la première place de son groupe, l'Olympique Lyonnais se déplace à Brondby pour la cinquième journée d'Europa League. Peter Bosz a décidé d'aligner une équipe remaniée.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/europa-league-brondby-ol-en-direct_LS-202111250534.html", "creator": "", - "pubDate": "2021-11-19T20:54:26Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "pubDate": "Thu, 25 Nov 2021 19:16:31 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kenosha shooting: jury finds Kyle Rittenhouse not guilty – video", - "description": "

A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped the US

Continue reading...", - "content": "

A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped the US

Continue reading...", - "category": "Kyle Rittenhouse", - "link": "https://www.theguardian.com/us-news/video/2021/nov/19/kenosha-shooting-jury-finds-kyle-rittenhouse-not-guilty-video", + "title": "Galatasaray-OM: des projectiles lancés sur la pelouse par les supporters turcs, tensions à Istanbul", + "description": "Le match de Ligue Europa entre Galatasaray et l'OM a été marqué par des incidents en tribunes ce jeudi. Les Marseillais ont été visés par des projectiles lancés par des supporters turcs.

", + "content": "Le match de Ligue Europa entre Galatasaray et l'OM a été marqué par des incidents en tribunes ce jeudi. Les Marseillais ont été visés par des projectiles lancés par des supporters turcs.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/galatasaray-om-des-projectiles-lances-sur-la-pelouse-par-les-supporters-turcs-tensions-a-istanbul_AV-202111250521.html", "creator": "", - "pubDate": "2021-11-19T18:40:17Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "pubDate": "Thu, 25 Nov 2021 18:47:31 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "'An attack on our health system': Austria's chancellor condemns anti-vaxxers – video", - "description": "

Austria is to go into a national lockdown to contain a fourth wave of coronavirus cases, the chancellor, Alexander Schallenberg, announced on Friday, as new infections hit a record high amid a pandemic surge across Europe. Despite all the persuasion and campaigns, too few people had decided to get vaccinated, Schallenberg said, leaving the country no other choice but to introduce mandatory vaccinations in February

Continue reading...", - "content": "

Austria is to go into a national lockdown to contain a fourth wave of coronavirus cases, the chancellor, Alexander Schallenberg, announced on Friday, as new infections hit a record high amid a pandemic surge across Europe. Despite all the persuasion and campaigns, too few people had decided to get vaccinated, Schallenberg said, leaving the country no other choice but to introduce mandatory vaccinations in February

Continue reading...", - "category": "Austria", - "link": "https://www.theguardian.com/world/video/2021/nov/19/an-attack-on-our-health-system-austrias-chancellor-condemns-anti-vaxxers-video", + "title": "Le PSG a-t-il fait une erreur en recrutant Messi? La Dream Team divisée", + "description": "Dans \"Rothen S’enflamme\" jeudi sur RMC, Jérôme Rothen et Nicolas Anelka sont revenus sur les débuts mitigés de Lionel Messi, au lendemain d’une performance encore décevante face à Manchester City (2-1) en Ligue des champions.

", + "content": "Dans \"Rothen S’enflamme\" jeudi sur RMC, Jérôme Rothen et Nicolas Anelka sont revenus sur les débuts mitigés de Lionel Messi, au lendemain d’une performance encore décevante face à Manchester City (2-1) en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/le-psg-a-t-il-fait-une-erreur-en-recrutant-messi-la-dream-team-divisee_AV-202111250501.html", "creator": "", - "pubDate": "2021-11-19T15:52:18Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "pubDate": "Thu, 25 Nov 2021 18:18:20 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Modi repeals controversial laws in surprise victory for Indian farmers – video report", - "description": "

Narendra Modi has announced he will repeal three contentious farm laws that prompted a year of protests and unrest in India, in one of the most significant concessions made by his government and a huge victory for India’s farmers. They had fought hard for the repeal of what the farmers called the 'black laws' that put their livelihoods at risk and gave private corporations control over the pricing of their crops

Continue reading...", - "content": "

Narendra Modi has announced he will repeal three contentious farm laws that prompted a year of protests and unrest in India, in one of the most significant concessions made by his government and a huge victory for India’s farmers. They had fought hard for the repeal of what the farmers called the 'black laws' that put their livelihoods at risk and gave private corporations control over the pricing of their crops

Continue reading...", - "category": "India", - "link": "https://www.theguardian.com/world/video/2021/nov/19/modi-repeals-controversial-laws-victory-indian-farmers-video-report", - "creator": "Maheen Sadiq", - "pubDate": "2021-11-19T14:07:16Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "Monaco-Real Sociedad en direct: l'AS Monaco fait tomber la Real et file en 8es de finale", + "description": "Monaco s’impose finalement 2-1 face à la Real Sociedad et se qualifie officiellement pour les 8es de finale de la Ligue Europa !

", + "content": "Monaco s’impose finalement 2-1 face à la Real Sociedad et se qualifie officiellement pour les 8es de finale de la Ligue Europa !

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/ligue-europa-monaco-real-sociedad-en-direct_LS-202111250500.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:15:47 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rap battles return in Rio’s City of God – in pictures", - "description": "

Artists in the favela are starting to compete again after the Covid-19 pandemic curtailed public gatherings, a show that signals a return to normality for music lovers

Continue reading...", - "content": "

Artists in the favela are starting to compete again after the Covid-19 pandemic curtailed public gatherings, a show that signals a return to normality for music lovers

Continue reading...", - "category": "Brazil", - "link": "https://www.theguardian.com/world/gallery/2021/nov/19/rap-battles-return-in-rio-city-of-god-in-pictures", - "creator": "Silvia Izquierdo/AP", - "pubDate": "2021-11-19T10:33:46Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", + "title": "VIDEO. Galatasaray-OM: l'ouverture du score des Turcs après une erreur de Kamara", + "description": "Galatasaray n'a eu besoin que de 14 minutes pour ouvrir le score face à l'OM, ce jeudi, lors de la cinquième journée de la phase de poules de la Ligue Europa (sur RMC Sport 1). Boubacar Kamara est en partie responsable.

", + "content": "Galatasaray n'a eu besoin que de 14 minutes pour ouvrir le score face à l'OM, ce jeudi, lors de la cinquième journée de la phase de poules de la Ligue Europa (sur RMC Sport 1). Boubacar Kamara est en partie responsable.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/galatasaray-om-l-ouverture-du-score-des-turcs-apres-une-erreur-de-kamara_AV-202111250496.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:11:27 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Has Covid ended the neoliberal era? – podcast", - "description": "

The year 2020 exposed the risks and weaknesses of the market-driven global system like never before. It’s hard to avoid the sense that a turning point has been reached. By Adam Tooze

Continue reading...", - "content": "

The year 2020 exposed the risks and weaknesses of the market-driven global system like never before. It’s hard to avoid the sense that a turning point has been reached. By Adam Tooze

Continue reading...", - "category": "Coronavirus", - "link": "https://www.theguardian.com/world/audio/2021/nov/19/has-covid-ended-the-neoliberal-era-podcast", - "creator": "Written by Adam Tooze, read by Ben Norris and produced by Esther Opoku-Gyeni", - "pubDate": "2021-11-19T10:00:31Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", - "read": true, + "title": "Top 14: Arthur Vincent va prolonger à Montpellier", + "description": "Le trois quart centre international, Arthur Vincent, va prolonger son aventure avec le Montpellier Hérault Rugby. Formé au club, il portera ce maillot deux années supplémentaires, en dépit des sollicitations du Stade Toulousain.

", + "content": "Le trois quart centre international, Arthur Vincent, va prolonger son aventure avec le Montpellier Hérault Rugby. Formé au club, il portera ce maillot deux années supplémentaires, en dépit des sollicitations du Stade Toulousain.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/rugby/top-14-arthur-vincent-va-prolonger-a-montpellier_AV-202111250481.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 17:53:03 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "18,000 people stranded after floods and landslides in British Columbia – video", - "description": "

Authorities and emergency crews in Canada are trying \nto reach 18,000 people stranded by \nmajor floods and landslides. The province of\nBritish Columbia declared\na state of emergency with concerns over further falls in coming days. Some grocery store shelves\nin affected areas have\nalso been stripped bare while floods and mudslides destroyed\nroads, houses and bridges,\nhampering rescue efforts

Continue reading...", - "content": "

Authorities and emergency crews in Canada are trying \nto reach 18,000 people stranded by \nmajor floods and landslides. The province of\nBritish Columbia declared\na state of emergency with concerns over further falls in coming days. Some grocery store shelves\nin affected areas have\nalso been stripped bare while floods and mudslides destroyed\nroads, houses and bridges,\nhampering rescue efforts

Continue reading...", - "category": "Canada", - "link": "https://www.theguardian.com/world/video/2021/nov/19/18000-people-stranded-after-floods-and-landslides-in-british-columbia-video", + "title": "Mercato: Zidane, pas encore au PSG", + "description": "Au cœur de rumeurs concernant un éventuel départ en Angleterre et à Manchester United, Mauricio Pochettino n'a pas demandé au PSG d'être libéré. Le club de la capitale n’a par ailleurs pas entamé de discussions directes avec Zinédine Zidane, ni avec aucun entraîneur.

", + "content": "Au cœur de rumeurs concernant un éventuel départ en Angleterre et à Manchester United, Mauricio Pochettino n'a pas demandé au PSG d'être libéré. Le club de la capitale n’a par ailleurs pas entamé de discussions directes avec Zinédine Zidane, ni avec aucun entraîneur.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/mercato-zidane-pas-encore-au-psg_AV-202111250464.html", "creator": "", - "pubDate": "2021-11-19T07:38:27Z", - "folder": "00.03 News/News - EN", - "feed": "The Guardian", - "read": true, + "pubDate": "Thu, 25 Nov 2021 17:37:22 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - EN", - "name": "The Guardian" - }, - "13": { - "title": "RSSOpinion", - "subtitle": "", - "link": "http://online.wsj.com/page/2_0006.html", - "image": "http://online.wsj.com/img/wsj_sm_logo.gif", - "description": "RSSOpinion", - "items": [ + }, { - "title": "The Real Biden Bill: At Least $4.6 Trillion", - "description": "Program by program, here’s how Democrats disguise the real cost of their entitlement blowout.", - "content": "Program by program, here’s how Democrats disguise the real cost of their entitlement blowout.", - "category": "PAID", - "link": "https://www.wsj.com/articles/the-real-biden-bill-at-least-4-6-trillion-congressional-budget-office-score-congress-democrats-11637275848", + "title": "Le gardien de l’Iran dans le livre des records grâce au dégagement à la main le plus long de l'histoire", + "description": "Le gardien de but de l’Iran et de Boavista, Alireza Beiranvand, est entré dans l’histoire du football en inscrivant son nom dans le Guinness des Records. Le 11 octobre 2016, le portier de la sélection iranienne avait dégagé le ballon de la main à distance record de 61,26m lors d’un match de qualification pour la Coupe du monde 2018 face à la Corée du Sud.\n

", + "content": "Le gardien de but de l’Iran et de Boavista, Alireza Beiranvand, est entré dans l’histoire du football en inscrivant son nom dans le Guinness des Records. Le 11 octobre 2016, le portier de la sélection iranienne avait dégagé le ballon de la main à distance record de 61,26m lors d’un match de qualification pour la Coupe du monde 2018 face à la Corée du Sud.\n

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/le-gardien-l-iran-dans-le-livre-des-records-grace-au-degagement-a-la-main-le-plus-long-de-l-histoire_AD-202111250450.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 21:50:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 17:23:43 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Xi Jinping's War on Tibetan Buddhism", - "description": "Beijing wants future lamas and monks to learn the faith only in Mandarin.", - "content": "Beijing wants future lamas and monks to learn the faith only in Mandarin.", - "category": "PAID", - "link": "https://www.wsj.com/articles/xi-jinping-war-on-tibetan-buddhism-lanugage-china-monks-education-unity-sixth-plenum-11637269866", + "title": "Juventus: la colère et les larmes de Ronaldo après l'élimination contre Porto en Ligue des champions", + "description": "Dans la série documentaire All or Nothing: Juventus d'Amazon Prime Video, Cristiano Ronaldo apparaît en larmes à la suite de l'élimination du club italien face au FC Porto lors de l'édition 2020-2021 de la Ligue des champions.

", + "content": "Dans la série documentaire All or Nothing: Juventus d'Amazon Prime Video, Cristiano Ronaldo apparaît en larmes à la suite de l'élimination du club italien face au FC Porto lors de l'édition 2020-2021 de la Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/juventus-la-colere-et-les-larmes-de-ronaldo-apres-l-elimination-contre-porto-en-ligue-des-champions_AV-202111250449.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:27:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 17:22:07 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "On Reconciliation Bill, Senate Moderates Hide Behind Joe Manchin and Kyrsten Sinema", - "description": "Sens. Maggie Hassan, Mark Kelly and Catherine Cortez Masto have been awfully quiet. All are up for re-election in 2022.", - "content": "Sens. Maggie Hassan, Mark Kelly and Catherine Cortez Masto have been awfully quiet. All are up for re-election in 2022.", - "category": "PAID", - "link": "https://www.wsj.com/articles/reconciliation-bill-moderates-let-joe-manchin-kyrsten-sinema-hassan-kelly-build-back-better-11637276328", + "title": "Barça: toujours blessé, Pedri ne devrait pas rejouer avant 2022", + "description": "Absent des terrains depuis fin septembre en raison d'une blessure à une cuisse, Pedri va manquer encore plusieurs matchs. Selon la presse espagnole, le jeune milieu du FC Barcelone ne retrouvera les terrains qu'en début d'année prochaine.

", + "content": "Absent des terrains depuis fin septembre en raison d'une blessure à une cuisse, Pedri va manquer encore plusieurs matchs. Selon la presse espagnole, le jeune milieu du FC Barcelone ne retrouvera les terrains qu'en début d'année prochaine.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/liga/barca-toujours-blesse-pedri-ne-devrait-pas-rejouer-avant-2022_AV-202111250442.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:25:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 17:16:28 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "America Slowly Learns to Live With Covid", - "description": "Shots are an achievement but not a miracle, and other realities with which we’re coming to terms.", - "content": "Shots are an achievement but not a miracle, and other realities with which we’re coming to terms.", - "category": "PAID", - "link": "https://www.wsj.com/articles/america-slowly-learns-to-live-with-covid-vaccines-shots-flu-fauci-antivax-infection-11637275001", + "title": "Les pronos hippiques du vendredi 26 novembre 2021", + "description": "Le Quinté+ du vendredi 26 novembre est programmé sur l’hippodrome de Vincennes dans la discipline du trot. Retrouvez ci-dessous nos pronostics pour cette course ainsi que notre pari du jour et notre pari de folie dans deux autres courses au menu de la journée.

", + "content": "Le Quinté+ du vendredi 26 novembre est programmé sur l’hippodrome de Vincennes dans la discipline du trot. Retrouvez ci-dessous nos pronostics pour cette course ainsi que notre pari du jour et notre pari de folie dans deux autres courses au menu de la journée.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/paris-hippique/les-pronos-hippiques-du-vendredi-26-novembre-2021_AN-202111250439.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:43:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 17:12:25 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "John Deere, Inflation Bellwether", - "description": "The company’s union workers win automatic cost-of-living increases, which should raise alarms at the Federal Reserve.", - "content": "The company’s union workers win automatic cost-of-living increases, which should raise alarms at the Federal Reserve.", - "category": "PAID", - "link": "https://www.wsj.com/articles/john-deere-inflation-bellwether-united-auto-workers-union-wages-11637276050", + "title": "XV de France: Labit entretient le flou sur la concurrence entre Ntamack et Jalibert", + "description": "Invité sur le plateau du Super Moscato Show jeudi sur RMC, Laurent Labit, l’entraîneur du XV de France en charge des arrières, n’a pas levé le voile sur les intentions à terme du staff des Bleus au sujet du poste d’ouvreur. La concurrence est féroce entre Romain Ntamack et Matthieu Jalibert.

", + "content": "Invité sur le plateau du Super Moscato Show jeudi sur RMC, Laurent Labit, l’entraîneur du XV de France en charge des arrières, n’a pas levé le voile sur les intentions à terme du staff des Bleus au sujet du poste d’ouvreur. La concurrence est féroce entre Romain Ntamack et Matthieu Jalibert.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/rugby/tests-matchs/xv-de-france-labit-entretient-le-flou-sur-la-concurrence-entre-ntamack-et-jalibert_AV-202111250415.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:39:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 16:40:37 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Congress Needs to Get Back to Regular Order", - "description": "Reconciliation wasn’t meant to be the vehicle for social change.", - "content": "Reconciliation wasn’t meant to be the vehicle for social change.", - "category": "PAID", - "link": "https://www.wsj.com/articles/congress-needs-order-filibuster-reconciliation-spending-build-back-better-cbo-byrd-rule-11637270597", + "title": "Galatasaray-OM: Marseille avec Gerson et Dieng", + "description": "L'OM se déplace ce jeudi soir sur le terrain de Galatasaray en Ligue Europa (18h45, RMC Sport 1) avec l'interdiction ou presque de perdre. Pour ce match capital, Marseille sera privé de Dimitri Payet et Valentin Rongier, suspendus.

", + "content": "L'OM se déplace ce jeudi soir sur le terrain de Galatasaray en Ligue Europa (18h45, RMC Sport 1) avec l'interdiction ou presque de perdre. Pour ce match capital, Marseille sera privé de Dimitri Payet et Valentin Rongier, suspendus.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/galatasaray-om-marseille-avec-gerson-et-dieng_AV-202111250406.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:29:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 16:30:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Democrats Turn a Blind Eye to Connecticut's Juvenile Crime Wave", - "description": "The state desperately needs a special session of the Legislature to address it, but Gov. Lamont refuses.", - "content": "The state desperately needs a special session of the Legislature to address it, but Gov. Lamont refuses.", - "category": "PAID", - "link": "https://www.wsj.com/articles/democrats-connecticut-juvenile-crime-gun-violence-homicide-shootings-murder-lamont-11637345153", + "title": "Manchester United aurait un accord avec Rangnick pour devenir le prochain coach", + "description": "Selon les informations de The Athletic, Ralf Rangnick serait tombé d'accord avec Manchester United pour prendre la suite d'Ole Gunnar Solskjaer. Il s'agirait d'un contrat de six mois pour le technicien allemand, avec ensuite deux ans dans un rôle de consultant.

", + "content": "Selon les informations de The Athletic, Ralf Rangnick serait tombé d'accord avec Manchester United pour prendre la suite d'Ole Gunnar Solskjaer. Il s'agirait d'un contrat de six mois pour le technicien allemand, avec ensuite deux ans dans un rôle de consultant.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/premier-league/manchester-united-aurait-un-accord-avec-rangnick-pour-devenir-le-prochain-coach_AV-202111250387.html", "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:24:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 16:01:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "On China, Women's Tennis Beats the NBA", - "description": "The WTA calls for an investigation into a charge of sexual assault.", - "content": "The WTA calls for an investigation into a charge of sexual assault.", - "category": "PAID", - "link": "https://www.wsj.com/articles/on-china-womens-tennis-association-beats-the-nba-peng-shuai-steve-simon-11637191294", + "title": "Le projet de mi-temps de 25 minutes en football est retoqué", + "description": "Le projet de prolonger la durée de la mi-temps de 15 à 25 minutes a été retoqué par l’International Football Association Board (IFAB) ce jeudi. Parmi les autres dossiers l’ordre du jour, le principe des cinq remplacements autorisés au cours d’un match pour être adopté définitivement en 2022.

", + "content": "Le projet de prolonger la durée de la mi-temps de 15 à 25 minutes a été retoqué par l’International Football Association Board (IFAB) ce jeudi. Parmi les autres dossiers l’ordre du jour, le principe des cinq remplacements autorisés au cours d’un match pour être adopté définitivement en 2022.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/le-projet-de-mi-temps-de-25-minutes-en-football-est-retoque_AV-202111250385.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:38:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 15:57:36 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Toshiba Split: A Farewell to Poor Japanese Management?", - "description": "Having shed inefficiencies since the 1990s, the corporate environment may be ready for reform.", - "content": "Having shed inefficiencies since the 1990s, the corporate environment may be ready for reform.", - "category": "PAID", - "link": "https://www.wsj.com/articles/toshiba-split-japan-management-division-keiretsu-cross-shareholding-foreign-activist-investor-11637272011", + "title": "Mercato en direct: Zidane, pas encore au PSG", + "description": "La date du 1er janvier, permettant aux joueurs en fin de contrat de s'engager ailleurs, approche à grands pas. Du côté du mercato des entraîneurs, tous les regards sont braqués sur Manchester United, qui travaille sur la succession de Solskjaer. Toutes les infos sont à retrouver dans ce live RMC Sport.

", + "content": "La date du 1er janvier, permettant aux joueurs en fin de contrat de s'engager ailleurs, approche à grands pas. Du côté du mercato des entraîneurs, tous les regards sont braqués sur Manchester United, qui travaille sur la succession de Solskjaer. Toutes les infos sont à retrouver dans ce live RMC Sport.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/mercato-en-direct-les-infos-et-rumeurs-du-25-novembre_LN-202111250337.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:06:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 14:28:58 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Comrade Omarova vs. Margaret Thatcher", - "description": "Some aspiring apparatchiks will say anything to seize power.", - "content": "Some aspiring apparatchiks will say anything to seize power.", - "category": "PAID", - "link": "https://www.wsj.com/articles/comrade-omarova-vs-margaret-thatcher-11637352783", + "title": "Galatasaray-OM en direct: Marseille coule et est éliminé de la Ligue Europa", + "description": "L'OM a été largement dominé sur la pelouse de Galatasaray ce jeudi lors de la 5e journée de Ligue Europa (4-2). Avec la victoire de la Lazio, Marseille est officiellement éliminé de la compétition et tentera d'aller chercher une qualification pour les barrages de la Ligue Europa Conférence lors de la dernière journée.

", + "content": "L'OM a été largement dominé sur la pelouse de Galatasaray ce jeudi lors de la 5e journée de Ligue Europa (4-2). Avec la victoire de la Lazio, Marseille est officiellement éliminé de la compétition et tentera d'aller chercher une qualification pour les barrages de la Ligue Europa Conférence lors de la dernière journée.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/ligue-europa-suivez-le-choc-bouillant-galatasaray-om_LS-202111250316.html", "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:13:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The FBI's Raid on James O'Keefe", - "description": "Justice had better have good reason for seizing a journalist’s records.", - "content": "Justice had better have good reason for seizing a journalist’s records.", - "category": "PAID", - "link": "https://www.wsj.com/articles/the-fbis-raid-on-james-okeefe-project-veritas-department-of-justice-merrick-garland-11637091882", + "title": "Tennis: la Coupe Davis pourrait avoir lieu à Abu Dhabi pendant cinq ans", + "description": "Selon le Telegraph, la société Kosmos, qui organise la Coupe Davis, a trouvé un accord avec les Emirats arabes unis pour que la compétition se déroule à Abu Dhabi les cinq prochaines années.

", + "content": "Selon le Telegraph, la société Kosmos, qui organise la Coupe Davis, a trouvé un accord avec les Emirats arabes unis pour que la compétition se déroule à Abu Dhabi les cinq prochaines années.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/coupe-davis/tennis-la-coupe-davis-pourrait-avoir-lieu-a-abu-dhabi-pendant-cinq-ans_AV-202111250144.html", "creator": "", - "pubDate": "Thu, 18 Nov 2021 18:34:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "pubDate": "Thu, 25 Nov 2021 08:18:56 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: Pochettino renie ses principes avec ses stars, selon Henry", + "description": "Jamie Carragher et Thierry Henry, consultants pour la chaîne américaine CBS Sports, estiment que Mauricio Pochettino ne parvient pas à faire passer son message auprès de ses stars. Le premier le pousse à quitter le PSG, le second trouve qu’il renie ses principes.

", + "content": "Jamie Carragher et Thierry Henry, consultants pour la chaîne américaine CBS Sports, estiment que Mauricio Pochettino ne parvient pas à faire passer son message auprès de ses stars. Le premier le pousse à quitter le PSG, le second trouve qu’il renie ses principes.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-pochettino-renie-ses-principes-avec-ses-stars-selon-thierry-henry_AV-202111250141.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 08:07:59 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Impossible Insurrection of January 6", - "description": "The right couldn’t stage a coup because liberals dominate nearly every institution of American politics and culture. Yet liberals refuse to see it.", - "content": "The right couldn’t stage a coup because liberals dominate nearly every institution of American politics and culture. Yet liberals refuse to see it.", - "category": "PAID", - "link": "https://www.wsj.com/articles/impossible-insurrection-jan-6-capitol-hill-riot-conservative-liberalism-colleges-media-trump-11637344629", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:25:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "title": "Rugby: la licence de Radosavljevic suspendue par la Fédération de rugby à XIII", + "description": "Ludovic Radosavljevic, suspendu six mois pour injures racistes et limogé en septembre par Provence Rugby, souhaitait se reconvertir dans le rugby à XIII au club d’Avignon. Mais la Fédération a suspendu sa licence mercredi.

", + "content": "Ludovic Radosavljevic, suspendu six mois pour injures racistes et limogé en septembre par Provence Rugby, souhaitait se reconvertir dans le rugby à XIII au club d’Avignon. Mais la Fédération a suspendu sa licence mercredi.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/rugby/rugby-la-licence-de-radosavljevic-suspendue-par-la-federation-de-rugby-a-xiii_AN-202111250132.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 07:53:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG. la stat qui fait mal: Navas a touché plus de ballons que Mbappé", + "description": "Signe de l’impuissance parisienne dans la possession de balle face à Manchester City (2-1), Keylor Navas, gardien parisien, a touché plus de ballons que Kylian Mbappé, mercredi en Ligue des champions.

", + "content": "Signe de l’impuissance parisienne dans la possession de balle face à Manchester City (2-1), Keylor Navas, gardien parisien, a touché plus de ballons que Kylian Mbappé, mercredi en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-la-stat-qui-fait-mal-navas-a-touche-plus-de-ballons-que-mbappe_AV-202111250104.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 07:24:19 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Suisse envoie du chocolat à l'Irlande du Nord pour les remercier du nul contre l'Italie", + "description": "Dix jours après la qualification de la Suisse pour la Coupe du monde 2022, en partie grâce au nul entre l'Irlande du Nord et l'Italie (0-0), le sélectionneur helvète, Murat Yakin, s'est mis en scène dans une vidéo où il envoie du chocolat aux Irlandais pour les remercier.

", + "content": "Dix jours après la qualification de la Suisse pour la Coupe du monde 2022, en partie grâce au nul entre l'Irlande du Nord et l'Italie (0-0), le sélectionneur helvète, Murat Yakin, s'est mis en scène dans une vidéo où il envoie du chocolat aux Irlandais pour les remercier.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/coupe-du-monde/qualifications/coupe-du-monde-2022-qualifs-le-selectionneur-suisse-envoie-du-chocolat-a-l-irlande-du-nord_AV-202111250102.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 07:22:38 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: pour Rothen, le trio Messi-Mbappé-Neymar \"n'a pas existé\" face à Manchester City", + "description": "Logiquement battu par Manchester City mercredi soir en Ligue des champions (2-1), le PSG n'a pas réussi à punir les Skyblues en contre, comme au match aller. Pour Jérôme Rothen, cela s'explique en partie parce que le trio offensif Lionel Messi, Kylian Mbappé, Neymar, n'a pas été à la hauteur.

", + "content": "Logiquement battu par Manchester City mercredi soir en Ligue des champions (2-1), le PSG n'a pas réussi à punir les Skyblues en contre, comme au match aller. Pour Jérôme Rothen, cela s'explique en partie parce que le trio offensif Lionel Messi, Kylian Mbappé, Neymar, n'a pas été à la hauteur.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/psg-pour-rothen-le-trio-messi-mbappe-neymar-n-a-pas-existe-face-a-manchester-city_AV-202111250062.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 06:34:27 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: \"Les joueurs connaissent ma situation\", Pochettino réagit encore aux rumeurs sur son avenir", + "description": "Mauricio Pochettino, entraîneur du PSG, a de nouveau été interrogé sur les rumeurs autour de son avenir, mercredi après la défaite contre Manchester City (2-1) en Ligue des champions.

", + "content": "Mauricio Pochettino, entraîneur du PSG, a de nouveau été interrogé sur les rumeurs autour de son avenir, mercredi après la défaite contre Manchester City (2-1) en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/psg-les-joueurs-connaissent-ma-situation-pochettino-reagit-encore-aux-rumeurs-sur-son-avenir_AV-202111250060.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 06:32:53 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: pour Herrera, Manchester City est \"la meilleure équipe du monde avec le ballon\"", + "description": "Ander Herrera, milieu de terrain du PSG, a reconnu la supériorité de Manchester City dans la possession de balle après la victoire des Anglais (2-1) mercredi. Il regrette aussi le manque de réalisme de son équipe.

", + "content": "Ander Herrera, milieu de terrain du PSG, a reconnu la supériorité de Manchester City dans la possession de balle après la victoire des Anglais (2-1) mercredi. Il regrette aussi le manque de réalisme de son équipe.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/psg-pour-herrera-manchester-city-est-la-meilleure-equipe-du-monde-avec-le-ballon_AV-202111250042.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 05:57:38 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: Pochettino note des progrès dans le jeu parisien", + "description": "Mauricio Pochettino, entraîneur du PSG, note des progrès dans le jeu de son équipe malgré la défaite sur le terrain de Manchester City (2-1) en Ligue des champions, mercredi.

", + "content": "Mauricio Pochettino, entraîneur du PSG, note des progrès dans le jeu de son équipe malgré la défaite sur le terrain de Manchester City (2-1) en Ligue des champions, mercredi.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-pochettino-note-des-progres-dans-le-jeu-parisien_AV-202111250030.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 05:34:47 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Real Madrid: la première réaction de Benzema après sa condamnation", + "description": "Karim Benzema a publié un message sur son compte Instagram après son but face à Tiraspol (0-3), mercredi en Ligue des champions, quelques heures après sa condamnation dans l’affaire de la sextape.

", + "content": "Karim Benzema a publié un message sur son compte Instagram après son but face à Tiraspol (0-3), mercredi en Ligue des champions, quelques heures après sa condamnation dans l’affaire de la sextape.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/real-madrid-la-premiere-reaction-de-benzema-apres-sa-condamnation_AV-202111250020.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 05:11:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Real Madrid: Ancelotti a trouvé Benzema \"calme\" après sa condamnation dans l'affaire de la sextape", + "description": "Carlo Ancelotti, entraîneur du Real Madrid, a trouvé Karim Benzema \"calme\" lors de la victoire sur le terrain du Sheriff Tiraspol (0-3), mercredi en Ligue des champions quelques heures après sa condamnation dans l'affaire de la sextape.

", + "content": "Carlo Ancelotti, entraîneur du Real Madrid, a trouvé Karim Benzema \"calme\" lors de la victoire sur le terrain du Sheriff Tiraspol (0-3), mercredi en Ligue des champions quelques heures après sa condamnation dans l'affaire de la sextape.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/real-madrid-ancelotti-a-trouve-benzema-calme-apres-sa-condamnation-dans-l-affaire-de-la-sextape_AD-202111250017.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 04:55:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: Manu Petit dénonce les \"comportements scandaleux\" de certains joueurs parisiens", + "description": "Membre de la Dream Team RMC Sport, Manu Petit ne décolérait pas après la défaite (2-1) des Parisiens à Manchester City en Ligue des champions, agacé par le comportement de certains joueurs pas suffisamment concernés par l’équilibre de l’équipe.

", + "content": "Membre de la Dream Team RMC Sport, Manu Petit ne décolérait pas après la défaite (2-1) des Parisiens à Manchester City en Ligue des champions, agacé par le comportement de certains joueurs pas suffisamment concernés par l’équilibre de l’équipe.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-manu-petit-denonce-les-comportements-scandaleux-de-certains-joueurs-parisiens_AV-202111250016.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 00:18:54 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: la heatmap édifiante de Paris, acculé sur son but", + "description": "Le PSG a obtenu sa qualification pour les 8es de finale de la Ligue des champions ce mercredi en dépit de sa défaite à Manchester City (2-1). La prestation inquiète toutefois avec une domination sans partage des Cityzens. Comme l’atteste la heatmap de Paris.

", + "content": "Le PSG a obtenu sa qualification pour les 8es de finale de la Ligue des champions ce mercredi en dépit de sa défaite à Manchester City (2-1). La prestation inquiète toutefois avec une domination sans partage des Cityzens. Comme l’atteste la heatmap de Paris.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-la-heatmap-inquietante-de-paris-accule-sur-son-but_AV-202111240620.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:57:04 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sheriff-Real: Benzema encore buteur malgré ses démêlés judiciaires", + "description": "Irrésistible depuis le début de la saison, Karim Benzema a marqué pour la quatrième rencontre d'affilée en Ligue des champions au terme d'une journée marquée par sa condamnation dans l'affaire de la sextape pour complicité de tentative de chantage sur Mathieu Valbuena.

", + "content": "Irrésistible depuis le début de la saison, Karim Benzema a marqué pour la quatrième rencontre d'affilée en Ligue des champions au terme d'une journée marquée par sa condamnation dans l'affaire de la sextape pour complicité de tentative de chantage sur Mathieu Valbuena.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/sheriff-real-benzema-encore-buteur-malgre-ses-demeles-judiciaires_AV-202111240619.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:26:08 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bruges-Leipzig: auteur d’un doublé, Nkunku poursuit sa superbe saison", + "description": "Grand artisan du carton de Leipzig à Bruges (5-0) lors de la 5e journée de Ligue des champions, avec un doublé, Christopher Nkunku confirme sa saison de haut niveau. Au point d’intégrer l’équipe de France en 2022 ?

", + "content": "Grand artisan du carton de Leipzig à Bruges (5-0) lors de la 5e journée de Ligue des champions, avec un doublé, Christopher Nkunku confirme sa saison de haut niveau. Au point d’intégrer l’équipe de France en 2022 ?

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/bruges-leipzig-auteur-d-un-double-nkunku-poursuit-sa-superbe-saison_AV-202111240617.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:20:15 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Les paris du 25 novembre sur Galatasaray - Marseille - Ligue Europa", + "description": "Notre pronostic: Marseille ne perd pas à Galatasaray et moins de 2,5 buts dans le match (1.76)

", + "content": "Notre pronostic: Marseille ne perd pas à Galatasaray et moins de 2,5 buts dans le match (1.76)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-les-paris-du-25-novembre-sur-galatasaray-marseille-ligue-europa_AN-202111240374.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:04:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Les paris du 25 novembre sur Monaco - Real Sociedad – Ligue Europa", + "description": "Notre pronostic: Monaco ne perd pas contre la Real Sociedad et les deux équipes marquent (2.25)

", + "content": "Notre pronostic: Monaco ne perd pas contre la Real Sociedad et les deux équipes marquent (2.25)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-les-paris-du-25-novembre-sur-monaco-real-sociedad-ligue-europa_AN-202111240368.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:03:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Les paris du 25 novembre sur Brondby - Lyon – Ligue Europa", + "description": "Notre pronostic: Lyon ne perd pas à Brondby et plus de 2,5 buts dans le match (2.40)

", + "content": "Notre pronostic: Lyon ne perd pas à Brondby et plus de 2,5 buts dans le match (2.40)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-les-paris-du-25-novembre-sur-brondby-lyon-ligue-europa_AN-202111240367.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:02:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Les paris du 25 novembre sur Rennes - Vitesse – Ligue Europa Conférence", + "description": "Notre pronostic: Rennes bat Vitesse Arnhem (1.38)

", + "content": "Notre pronostic: Rennes bat Vitesse Arnhem (1.38)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-les-paris-du-25-novembre-sur-rennes-vitesse-ligue-europa-conference_AN-202111240365.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:01:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: le petit accrochage entre Neymar et Paredes en fin de première période", + "description": "Sur RMC Sport, Emmanuel Petit a poussé un coup de gueule à la mi-temps du choc entre Manchester City et le PSG sur le comportement de certains joueurs parisiens, en prenant pour exemple une réflexion adressée à Neymar par Leandro Paredes.

", + "content": "Sur RMC Sport, Emmanuel Petit a poussé un coup de gueule à la mi-temps du choc entre Manchester City et le PSG sur le comportement de certains joueurs parisiens, en prenant pour exemple une réflexion adressée à Neymar par Leandro Paredes.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-le-petit-accrochage-entre-neymar-et-paredes-en-fin-de-premiere-periode_AV-202111240613.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:00:55 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: \"Je suis très satisfait de tous les joueurs\", assure Pochettino après la défaite", + "description": "Mauricio Pochettino, l'entraîneur du Paris Saint-Germain, a préféré retenir la qualification après la défaite (1-2) plus que logique et méritée du Paris Saint-Germain à l'Etihad Stadium, face à Manchester City.

", + "content": "Mauricio Pochettino, l'entraîneur du Paris Saint-Germain, a préféré retenir la qualification après la défaite (1-2) plus que logique et méritée du Paris Saint-Germain à l'Etihad Stadium, face à Manchester City.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-je-suis-tres-satisfait-de-tous-les-joueurs-assure-pochettino-apres-la-defaite_AV-202111240607.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 22:45:20 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: \"Un bon match dans l’ensemble\", estime Kimpembe malgré la défaite", + "description": "Le défenseur central du PSG, Presnel Kimpembe, a relevé des points positifs de la prestation parisienne, pourtant très inquiétante à l'Etihad Stadium, contre Manchester City (1-2).

", + "content": "Le défenseur central du PSG, Presnel Kimpembe, a relevé des points positifs de la prestation parisienne, pourtant très inquiétante à l'Etihad Stadium, contre Manchester City (1-2).

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-un-bon-match-dans-l-ensemble-estime-kimpembe-malgre-la-defaite_AV-202111240598.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 22:23:52 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions: les adversaires potentiels pour le PSG en huitièmes, avec plusieurs cadors européens", + "description": "Battu par Manchester City mercredi (2-1) mais qualifié pour les huitièmes de finale de la Ligue des champions, le PSG terminera deuxième de sa poule. Avec le risque d'affronter un cador européen en huitièmes.

", + "content": "Battu par Manchester City mercredi (2-1) mais qualifié pour les huitièmes de finale de la Ligue des champions, le PSG terminera deuxième de sa poule. Avec le risque d'affronter un cador européen en huitièmes.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/ligue-des-champions-les-adversaires-potentiels-pour-le-psg-en-huitiemes_AV-202111240594.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 22:17:43 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions: Benzema, Nkunku, Mbappé, Thiago... les principaux buts de mercredi soir", + "description": "Karim Benzema a été l'un des buteurs de la soirée de mercredi en Ligue des champions. L'attaquant tricolore a participé à la victoire (et qualification) du Real Madrid contre le Sheriff Tiraspol (3-0). Dans le même temps, un autre Français, Christopher Nkunku, a profité du carton du RB Leipzig (5-0 contre le Club Bruges) pour s'illustrer.

", + "content": "Karim Benzema a été l'un des buteurs de la soirée de mercredi en Ligue des champions. L'attaquant tricolore a participé à la victoire (et qualification) du Real Madrid contre le Sheriff Tiraspol (3-0). Dans le même temps, un autre Français, Christopher Nkunku, a profité du carton du RB Leipzig (5-0 contre le Club Bruges) pour s'illustrer.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/ligue-des-champions-benzema-nkunku-mbappe-thiago-les-principaux-buts-de-mercredi-soir_AV-202111240586.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 22:04:34 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: battu mais qualifié, Paris abandonne la première place après un match inquiétant", + "description": "Manchester City a battu le Paris Saint-Germain (2-1) au terme d'une rencontre qui a vu les deux équipes se qualifier pour les huitièmes de finale de la Ligue des champions. City est assuré de conserver la première place avant la dernière journée.

", + "content": "Manchester City a battu le Paris Saint-Germain (2-1) au terme d'une rencontre qui a vu les deux équipes se qualifier pour les huitièmes de finale de la Ligue des champions. City est assuré de conserver la première place avant la dernière journée.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-battu-mais-qualifie-paris-abandonne-la-premiere-place-aux-skyblues-apres-un-match-inquietant_AV-202111240583.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:57:23 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: le but de Mbappé après un joli mouvement collectif", + "description": "Largement dominé par Manchester City en première période, le PSG a réussi à ouvrir le score dès le retour des vestiaires grâce à Kylian Mbappé, ce mercredi, en Ligue des champions.

", + "content": "Largement dominé par Manchester City en première période, le PSG a réussi à ouvrir le score dès le retour des vestiaires grâce à Kylian Mbappé, ce mercredi, en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-le-but-de-mbappe-apres-un-joli-mouvement-collectif_AV-202111240573.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:21:15 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire de la sextape: Maracineanu rappelle le \"devoir d'exemplarité des sportifs\"", + "description": "Pour Roxana Maracineanu, ministre déléguée aux Sports, le jugement dans l'affaire de la sextape rappelle que, à ses yeux, les sportifs doivent faire preuve d'un \"devoir d'exemplarité\".

", + "content": "Pour Roxana Maracineanu, ministre déléguée aux Sports, le jugement dans l'affaire de la sextape rappelle que, à ses yeux, les sportifs doivent faire preuve d'un \"devoir d'exemplarité\".

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/equipe-de-france/affaire-de-la-sextape-maracineanu-rappelle-le-devoir-d-exemplarite-des-sportifs_AV-202111240572.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:19:44 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Saint-Etienne: le numéro 24 retiré en hommage à Loïc Perrin", + "description": "En hommage à son ancien capitaine Loïc Perrin, Saint-Etienne a annoncé ce mercredi que le numéro 24 ne serait plus attribué chez les Verts. Un maillot collector a également été lancé.

", + "content": "En hommage à son ancien capitaine Loïc Perrin, Saint-Etienne a annoncé ce mercredi que le numéro 24 ne serait plus attribué chez les Verts. Un maillot collector a également été lancé.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/saint-etienne-le-numero-24-retire-en-hommage-a-loic-perrin_AV-202111240562.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:03:14 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Boxe: Fury voudrait combattre en février ou en mars (mais n'a pas encore d'adversaire)", + "description": "Selon un promoteur britannique, qui a parlé avec Tyson Fury le week-end dernier, le champion du monde WBC des lourds a envie de combattre début 2022, en février ou mars. Mais il lui faut trouver un adversaire.

", + "content": "Selon un promoteur britannique, qui a parlé avec Tyson Fury le week-end dernier, le champion du monde WBC des lourds a envie de combattre début 2022, en février ou mars. Mais il lui faut trouver un adversaire.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/sports-de-combat/boxe/boxe-fury-voudrait-combattre-en-fevrier-ou-en-mars-mais-n-a-pas-encore-d-adversaire_AV-202111240312.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 13:32:57 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "FC Barcelone: Xavi emballé par le profil de Braithwaite", + "description": "Blessé depuis plusieurs mois, Martin Braithwaite pourrait avoir l’occasion de montrer sa valeur à son entraîneur Xavi lorsqu’il reviendra de blessure. Selon Sport, l’ancien milieu du FC Barcelone serait emballé par le profil de l’attaquant danois.

", + "content": "Blessé depuis plusieurs mois, Martin Braithwaite pourrait avoir l’occasion de montrer sa valeur à son entraîneur Xavi lorsqu’il reviendra de blessure. Selon Sport, l’ancien milieu du FC Barcelone serait emballé par le profil de l’attaquant danois.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/liga/fc-barcelone-xavi-emballe-par-le-profil-de-braithwaite_AV-202111240307.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 13:19:56 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Naples: le chirurgien qui a soigné Osimhen parle d'une des \"opérations les plus dures\" de sa carrière", + "description": "Le chirurgien Giampaolo Tartaro, qui a opéré mardi Victor Osimhen, qui souffrait d'une vingtaine de fractures au visage, a détaillé les soins effectués sur l'attaquant de Naples. La reconstruction s'annonce longue pour le Nigérian, qui devrait louper les trois prochains mois de compétition.

", + "content": "Le chirurgien Giampaolo Tartaro, qui a opéré mardi Victor Osimhen, qui souffrait d'une vingtaine de fractures au visage, a détaillé les soins effectués sur l'attaquant de Naples. La reconstruction s'annonce longue pour le Nigérian, qui devrait louper les trois prochains mois de compétition.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/serie-a/naples-le-chirurgien-qui-a-soigne-osimhen-parle-d-une-des-operations-les-plus-dures-de-sa-carriere_AV-202111240301.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:58:29 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tottenham: restrictions alimentaires, entraînements, Emerson apprend à \"souffrir\" avec Conte", + "description": "Arrivé en fin de mercato en provenance du FC Barcelone, Emerson Royal n’a pas vraiment connu des débuts idylliques avec Tottenham. Après le départ de Nuno Espirito Santo, c’est Antonio Conte qui a pris le relais. Dans une interview à Sky Sports, le latéral droit dévoile les méthodes de l’Italien.

", + "content": "Arrivé en fin de mercato en provenance du FC Barcelone, Emerson Royal n’a pas vraiment connu des débuts idylliques avec Tottenham. Après le départ de Nuno Espirito Santo, c’est Antonio Conte qui a pris le relais. Dans une interview à Sky Sports, le latéral droit dévoile les méthodes de l’Italien.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/premier-league/tottenham-restrictions-alimentaires-entrainements-emerson-apprend-a-souffrir-avec-conte_AV-202111240295.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:44:35 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue Europa en direct: les confs de Marseille, Lyon et Monaco", + "description": "Suivez en direct les conférences de presse de Lyon, Marseille et Monaco avant leurs matchs comptant pour la 5e journée de la Ligue Europa, jeudi.

", + "content": "Suivez en direct les conférences de presse de Lyon, Marseille et Monaco avant leurs matchs comptant pour la 5e journée de la Ligue Europa, jeudi.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/ligue-europa-en-direct-les-confs-de-marseille-lyon-et-monaco_LN-202111240293.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:43:02 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Barça-Benfica: la réaction hallucinée de Jesus face au raté énorme de Seferovic", + "description": "Jorge Jesus, entraîneur du Benfica Lisbonne, s’est effondré au sol de dépit après le gros raté de son attaquant Haris Seferovic à la fin du match sur le terrain du FC Barcelone (0-0), mardi en Ligue des champions.

", + "content": "Jorge Jesus, entraîneur du Benfica Lisbonne, s’est effondré au sol de dépit après le gros raté de son attaquant Haris Seferovic à la fin du match sur le terrain du FC Barcelone (0-0), mardi en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/barca-benfica-la-reaction-hallucinee-de-jesus-face-au-rate-enorme-de-seferovic_AV-202111240289.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:30:47 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Coupe Davis: le coup de gueule des capitaines d'équipe, dont Grosjean", + "description": "La phase de groupes de la Coupe Davis commence ce jeudi pour l'équipe de France de Sébastien Grosjean, qui affrontera la République Tchèque. L'ensemble des capitaines de la poule C, où se trouve aussi la Grande-Bretagne, a protesté contre le choix de garder Innsbruck en tant que ville-hôte, en Autriche, qui imposera un huis clos pour les rencontres.

", + "content": "La phase de groupes de la Coupe Davis commence ce jeudi pour l'équipe de France de Sébastien Grosjean, qui affrontera la République Tchèque. L'ensemble des capitaines de la poule C, où se trouve aussi la Grande-Bretagne, a protesté contre le choix de garder Innsbruck en tant que ville-hôte, en Autriche, qui imposera un huis clos pour les rencontres.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/coupe-davis/coupe-davis-le-coup-des-gueule-des-capitaines-d-equipes-dont-grosjean_AV-202111240286.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:21:48 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mercato: le plan de Dortmund pour convaincre Haaland de rester", + "description": "Convoité par les plus grands clubs européens, Erling Haaland sera l’une des principales attractions du mercato estival. Mais le Borussia Dortmund ne désespère pas de garder l'attaquant norvégien. Selon Sky Germany, le club allemand aurait un plan pour conserver le joueur.

", + "content": "Convoité par les plus grands clubs européens, Erling Haaland sera l’une des principales attractions du mercato estival. Mais le Borussia Dortmund ne désespère pas de garder l'attaquant norvégien. Selon Sky Germany, le club allemand aurait un plan pour conserver le joueur.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/mercato-le-plan-de-dortmund-pour-convaincre-haaland-de-rester_AV-202111240263.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:46:29 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Coupe du monde 2022: tollé en Norvège après l'arrestation de deux reporters au Qatar", + "description": "Deux reporters de la télévision norvégienne ont été temporairement détenus au Qatar, où ils effectuaient un reportage sur la préparation de la Coupe du monde 2022. Ce qui a provoqué une vague d'indignation au pays.

", + "content": "Deux reporters de la télévision norvégienne ont été temporairement détenus au Qatar, où ils effectuaient un reportage sur la préparation de la Coupe du monde 2022. Ce qui a provoqué une vague d'indignation au pays.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/coupe-du-monde/coupe-du-monde-2022-tolle-en-norvege-apres-l-arrestation-de-deux-reporters-au-qatar_AD-202111240256.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:32:14 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: avant Paris, des Skyblues en pleine confiance", + "description": "Battu au match aller par le PSG (2-0), Manchester City est dans une très grande forme avant de recevoir le club parisien ce mercredi soir en Ligue des champions (21h, RMC Sport 1). Et ce malgré l'absence de Kevin de Bruyne, et toujours de véritable numéro 9.

", + "content": "Battu au match aller par le PSG (2-0), Manchester City est dans une très grande forme avant de recevoir le club parisien ce mercredi soir en Ligue des champions (21h, RMC Sport 1). Et ce malgré l'absence de Kevin de Bruyne, et toujours de véritable numéro 9.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-avant-paris-des-skyblues-en-pleine-confiance_AV-202111240250.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:22:53 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Disparition de Peng Shuai: l’UE demande \"des preuves vérifiables\" et une enquête \"transparente\"", + "description": "Disparue pendant plusieurs jours, Peng Shuai a récemment donné signe de vie sur les réseaux sociaux de journalistes chinois. L’Union Européenne a annoncé vouloir des preuves de la part des autorités de Chine sur la liberté de mouvement de la joueuse de tennis. Mais aussi une enquête sur l’agression sexuelle dont elle dit avoir été victime par l’ancien vice Premier ministre Zhang Gaoli.

", + "content": "Disparue pendant plusieurs jours, Peng Shuai a récemment donné signe de vie sur les réseaux sociaux de journalistes chinois. L’Union Européenne a annoncé vouloir des preuves de la part des autorités de Chine sur la liberté de mouvement de la joueuse de tennis. Mais aussi une enquête sur l’agression sexuelle dont elle dit avoir été victime par l’ancien vice Premier ministre Zhang Gaoli.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/disparition-de-peng-shuai-l-ue-demande-des-preuves-verifiables-et-une-enquete-transparente_AV-202111240247.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:15:46 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari basket de Stephen Brun du 24 novembre - NBA", + "description": "Mon pronostic : au moins 25pts pour Tatum et Durant, 9 passes pour Harden lors de Boston - Brooklyn (3.65) !

", + "content": "Mon pronostic : au moins 25pts pour Tatum et Durant, 9 passes pour Harden lors de Boston - Brooklyn (3.65) !

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-basket-de-stephen-brun-du-24-novembre-nba_AN-202111240244.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:13:08 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: touché à l'entraînement, Verratti vers un forfait", + "description": "Sorti touché de l'entraînement à Manchester mardi soir, Marco Verratti est incertain pour la rencontre de Ligue des champions ce mercredi (21h sur RMC Sport 1) face à City. Le milieu italien du PSG a effectué samedi dernier son retour sur les terrains. Georginio Wijnaldum n’a lui non plus pas terminé l’entraînement mardi soir.

", + "content": "Sorti touché de l'entraînement à Manchester mardi soir, Marco Verratti est incertain pour la rencontre de Ligue des champions ce mercredi (21h sur RMC Sport 1) face à City. Le milieu italien du PSG a effectué samedi dernier son retour sur les terrains. Georginio Wijnaldum n’a lui non plus pas terminé l’entraînement mardi soir.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-touche-a-l-entrainement-verratti-vers-un-forfait_AV-202111240240.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:05:29 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire de la sextape: Benzema \"reste sélectionnable\" malgré sa condamnation, insiste Le Graët", + "description": "Noël Le Graët, président de la Fédération française de football (FFF), a réaffirmé sa position sur Karim Benzema, malgré sa condamnation dans l’affaire de la sextape: l’attaquant reste sélectionnable avec l’équipe de France.

", + "content": "Noël Le Graët, président de la Fédération française de football (FFF), a réaffirmé sa position sur Karim Benzema, malgré sa condamnation dans l’affaire de la sextape: l’attaquant reste sélectionnable avec l’équipe de France.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/equipe-de-france/affaire-de-la-sextape-benzema-reste-selectionnable-malgre-sa-condamnation-insiste-le-graet_AV-202111240233.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:55:52 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG en direct: deux joueurs vers un forfait côté parisien", + "description": "Le PSG peut assurer sa qualification pour les huitièmes de finale de la Ligue des champions ce mercredi soir, sur la pelouse de son plus grand rival du groupe, Manchester City. Un choc à suivre à 21h sur RMC Sport.

", + "content": "Le PSG peut assurer sa qualification pour les huitièmes de finale de la Ligue des champions ce mercredi soir, sur la pelouse de son plus grand rival du groupe, Manchester City. Un choc à suivre à 21h sur RMC Sport.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/ligue-des-champions-suivez-en-direct-le-choc-manchester-city-psg_LS-202111240229.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:47:18 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire de la sextape: Valbuena est \"soulagé\" par le jugement selon son avocat", + "description": "Me Didier Domat, avocat de Mathieu Valbuena, a indiqué ce mercredi que son client est \"soulage\" après la condamnation des cinq prévenus, dont Karim Benzema, dans l'affaire de la sextape. Le tribunal correctionnel de Versailles a prononcé une peine d'un an d'emprisonnement avec sursis et 75.000 d'amende pour le joueur du Real Madrid, tout en reconnaissant le statut de victime de Valbuena.

", + "content": "Me Didier Domat, avocat de Mathieu Valbuena, a indiqué ce mercredi que son client est \"soulage\" après la condamnation des cinq prévenus, dont Karim Benzema, dans l'affaire de la sextape. Le tribunal correctionnel de Versailles a prononcé une peine d'un an d'emprisonnement avec sursis et 75.000 d'amende pour le joueur du Real Madrid, tout en reconnaissant le statut de victime de Valbuena.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/affaire-de-la-sextape-mathieu-valbuena-est-soulage-par-le-jugement-selon-son-avocat_AV-202111240226.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:42:21 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Coupe Davis: Gasquet et Mannarino préférés à Gaston en équipe de France", + "description": "Sébastien Grosjean, capitaine de l’équipe de France de Coupe Davis, a annoncé sa sélection pour l’édition 2021, ce mercredi. Richard Gasquet et Adrian Mannarino en font partie à l’inverse d’Hugo Gaston, qui sort d’un beau parcours à Paris-Bercy.

", + "content": "Sébastien Grosjean, capitaine de l’équipe de France de Coupe Davis, a annoncé sa sélection pour l’édition 2021, ce mercredi. Richard Gasquet et Adrian Mannarino en font partie à l’inverse d’Hugo Gaston, qui sort d’un beau parcours à Paris-Bercy.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/coupe-davis/coupe-davis-gasquet-prefere-a-gaston-en-equipe-de-france_AV-202111240216.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:28:10 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Violences dans les stades: une communication difficile à gérer pour les clubs", + "description": "Interview avec Jérôme Touboul, ancien journaliste à L'Equipe et à la communication du PSG, directeur d'une agence de communication pour comprendre comment les clubs peuvent faire face au phénomène.

", + "content": "Interview avec Jérôme Touboul, ancien journaliste à L'Equipe et à la communication du PSG, directeur d'une agence de communication pour comprendre comment les clubs peuvent faire face au phénomène.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/violences-dans-les-stades-une-communication-difficile-a-gerer-pour-les-clubs_AN-202111240210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:23:58 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester United: Valverde, Emery… les dernières pistes pour le poste d’entraîneur", + "description": "De nouvelles pistes émergent pour occuper le poste de manager de Manchester United après l’éviction d’Ole Gunnar Solskjaer, le week-end dernier. Les Espagnols Unai Emery et Ernesto Valverde sont cités.

", + "content": "De nouvelles pistes émergent pour occuper le poste de manager de Manchester United après l’éviction d’Ole Gunnar Solskjaer, le week-end dernier. Les Espagnols Unai Emery et Ernesto Valverde sont cités.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/manchester-united-valverde-emery-les-dernieres-pistes-pour-le-poste-d-entraineur_AV-202111240200.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:12:17 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari football d'Eric Di Meco du 24 novembre - Ligue des Champions", + "description": "Mon pronostic : victoire de City, Sterling et Mbappé buteurs (13.00) !

", + "content": "Mon pronostic : victoire de City, Sterling et Mbappé buteurs (13.00) !

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-football-d-eric-di-meco-du-24-novembre-ligue-des-champions_AN-202111240199.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:11:52 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari football de Lionel Charbonnier du 24 novembre - Ligue des Champions", + "description": "Mon pronostic : City ne perd pas, les deux équipes marquent, Mbappé buteur (4.10) !

", + "content": "Mon pronostic : City ne perd pas, les deux équipes marquent, Mbappé buteur (4.10) !

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-football-de-lionel-charbonnier-du-24-novembre-ligue-des-champions_AN-202111240193.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:01:16 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Equipe de France: Pour Benzema, un ciel Bleu malgré la condamnation", + "description": "Karim Benzema a été condamné a un an de prison avec sursis et 75.000 euros d'amende dans l'affaire de la sextape. Mais son avenir en sélection qu'il vient de retrouver n'est pas menacé.

", + "content": "Karim Benzema a été condamné a un an de prison avec sursis et 75.000 euros d'amende dans l'affaire de la sextape. Mais son avenir en sélection qu'il vient de retrouver n'est pas menacé.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/equipe-de-france/equipe-de-france-pour-benzema-un-ciel-bleu-malgre-la-condamnation_AD-202111240191.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:51:03 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Chelsea-Juventus: Rabiot moqué et vivement critiqué par la presse italienne", + "description": "La prestation d’Adrien Rabiot lors de Chelsea-Juventus (4-0), mardi en Ligue des champions, est sévèrement critiquée par la presse italienne, ce mercredi matin. Pour la Gazzetta, le Français a été le plus mauvais joueur.

", + "content": "La prestation d’Adrien Rabiot lors de Chelsea-Juventus (4-0), mardi en Ligue des champions, est sévèrement critiquée par la presse italienne, ce mercredi matin. Pour la Gazzetta, le Français a été le plus mauvais joueur.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/chelsea-juventus-rabiot-moque-et-vivement-critique-par-la-presse-italienne_AV-202111240187.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:45:55 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Galatasaray-OM: Sampaoli convoque un minot pour remplacer Payet, suspendu", + "description": "L'OM a rendez-vous sur la pelouse de Galatasaray ce jeudi (18h45), pour la cinquième journée de Ligue Europa, importante en vue de la qualification. Jorge Sampaoli ne pourra pas compter sur Dimitri Payet et Valentin Rongier, tous les deux suspendus. En l'absence du milieu offensif, le technicien argentin a convoqué Jonathan Pitou, un \"minot\" de 17 ans.

", + "content": "L'OM a rendez-vous sur la pelouse de Galatasaray ce jeudi (18h45), pour la cinquième journée de Ligue Europa, importante en vue de la qualification. Jorge Sampaoli ne pourra pas compter sur Dimitri Payet et Valentin Rongier, tous les deux suspendus. En l'absence du milieu offensif, le technicien argentin a convoqué Jonathan Pitou, un \"minot\" de 17 ans.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/europa-league/galatasaray-om-sampaoli-convoque-un-minot-pour-remplacer-payet-suspendu_AV-202111240186.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:45:08 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Benzema condamné dans l'affaire de la sextape: ses avocats, \"sidérés\", vont faire appel", + "description": "Les avocats de Karim Benzema ont annoncé qu’ils allaient faire appel de la condamnation de Karim Benzema à un an de prison avec sursis et 75.000 euros d’amende dans l’affaire du chantage à la sextape. Ils accusent le coup après ce jugement mais assurent qu’il sera innocenté.

", + "content": "Les avocats de Karim Benzema ont annoncé qu’ils allaient faire appel de la condamnation de Karim Benzema à un an de prison avec sursis et 75.000 euros d’amende dans l’affaire du chantage à la sextape. Ils accusent le coup après ce jugement mais assurent qu’il sera innocenté.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/equipe-de-france/benzema-condamne-dans-l-affaire-de-la-sextape-ses-avocats-sideres-vont-faire-appel_AV-202111240181.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:35:17 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: Paris qualifié pour les huitièmes de Ligue des champions si...", + "description": "Le PSG se déplace ce mercredi (21h) sur la pelouse de Manchester City, pour la cinquième journée de la phase de groupes de Ligue des champions. Plusieurs options existent pour que le PSG se qualifie directement pour les huitièmes de finale à l'issue de sa rencontre à l'Etihad Stadium.

", + "content": "Le PSG se déplace ce mercredi (21h) sur la pelouse de Manchester City, pour la cinquième journée de la phase de groupes de Ligue des champions. Plusieurs options existent pour que le PSG se qualifie directement pour les huitièmes de finale à l'issue de sa rencontre à l'Etihad Stadium.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-paris-qualifie-pour-les-huitiemes-de-ligue-des-champions-si_AV-202111240175.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:18:50 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Procès de la sextape: Karim Benzema reconnu coupable et condamné à un an avec sursis", + "description": "Le tribunal a rendu son jugement sur cinq hommes, dont Karim Benzema, accusés d'avoir tenté d’obtenir de l’argent de la part du footballeur Mathieu Valbuena après la découverte d'une vidéo de ses ébats.

", + "content": "Le tribunal a rendu son jugement sur cinq hommes, dont Karim Benzema, accusés d'avoir tenté d’obtenir de l’argent de la part du footballeur Mathieu Valbuena après la découverte d'une vidéo de ses ébats.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/societe/proces-de-la-sextape-karim-benzema-reconnu-coupable_AN-202111240163.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 08:59:59 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Real: Ancelotti agace les fans d'Everton avec une comparaison automobile peu flatteuse", + "description": "Revenu à la tête du Real Madrid cet été, Carlo Ancelotti a comparé son équipe à une voiture de course Ferrari. Le \"Mister\" en a profité, avec ironie, pour dire qu'il préfère être au volant d'un véhicule de la célèbre marque au cheval cabré plutôt que d'une Fiat 500. Le sous-entendu n'a pas été très apprécié par tous les fans d'Everton, où le technicien italien se trouvait la saison dernière.

", + "content": "Revenu à la tête du Real Madrid cet été, Carlo Ancelotti a comparé son équipe à une voiture de course Ferrari. Le \"Mister\" en a profité, avec ironie, pour dire qu'il préfère être au volant d'un véhicule de la célèbre marque au cheval cabré plutôt que d'une Fiat 500. Le sous-entendu n'a pas été très apprécié par tous les fans d'Everton, où le technicien italien se trouvait la saison dernière.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/liga/real-ancelotti-agace-les-fans-d-everton-avec-une-comparaison-automobile-peu-flatteuse_AV-202111240142.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 08:18:11 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester United: Carrick dédie la victoire en Ligue des champions à Solskjaer", + "description": "Michael Carrick, nommé entraîneur intérimaire de Manchester United, a dédié la victoire des Red Devils à Villarreal (2-0) en Ligue des champions mardi, à Ole Gunnar Solskjaer, démis de ses fonctions le week-end dernier.

", + "content": "Michael Carrick, nommé entraîneur intérimaire de Manchester United, a dédié la victoire des Red Devils à Villarreal (2-0) en Ligue des champions mardi, à Ole Gunnar Solskjaer, démis de ses fonctions le week-end dernier.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-united-carrick-dedie-la-victoire-en-ligue-des-champions-a-solskjaer_AV-202111240138.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 08:09:21 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire de la sextape en direct: Benzema reste \"sélectionnable\", maintient Le Graët", + "description": "Le tribunal correctionnel de Versailles rend son jugement ce mercredi vers 9h30 dans l'affaire du chantage à la sextape contre Mathieu Valbuena. Il dira si Karim Benzema est coupable ou non de complicité de tentative de chantage.

", + "content": "Le tribunal correctionnel de Versailles rend son jugement ce mercredi vers 9h30 dans l'affaire du chantage à la sextape contre Mathieu Valbuena. Il dira si Karim Benzema est coupable ou non de complicité de tentative de chantage.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/affaire-de-la-sextape-en-direct-benzema-va-savoir-le-verdict-rendu-ce-mercredi_LN-202111240101.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 07:12:02 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Transat Jacques Vabre: la victoire pour Cammas et Caudrelier", + "description": "Franck Cammas et Charles Caudrelier (Gitana) ont remporté ce mardi la 15e édition de la Transat Jacques-Vabre, dans la catégorie Ultim, la plus prestigieuse, en franchissant la ligne d'arrivée en Martinique.

", + "content": "Franck Cammas et Charles Caudrelier (Gitana) ont remporté ce mardi la 15e édition de la Transat Jacques-Vabre, dans la catégorie Ultim, la plus prestigieuse, en franchissant la ligne d'arrivée en Martinique.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/voile/transat-jacques-vabre-la-victoire-pour-cammas-et-caudrelier_AN-202111230282.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 14:20:16 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: \"Il est dépassé par les événements\", confie l’avocat du lanceur de la bouteille", + "description": "L’avocat du supporter qui a lancé une bouteille d’eau sur Dimitri Payet lors d'Ol-OM explique le geste de son client. Ce dernier regrette son attitude.

", + "content": "L’avocat du supporter qui a lancé une bouteille d’eau sur Dimitri Payet lors d'Ol-OM explique le geste de son client. Ce dernier regrette son attitude.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-il-est-depasse-par-les-evenements-confie-l-avocat-du-lanceur-de-bouteilles_AV-202111230277.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:59:32 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: Guardiola redoute l’imprévisibilité de Messi", + "description": "Pep Guardiola, manager de Manchester City, se réjouit de retrouver Lionel Messi, mercredi lors du choc face au PSG (21h, sur RMC Sport 1) en Ligue des champions même s’il le redoute.

", + "content": "Pep Guardiola, manager de Manchester City, se réjouit de retrouver Lionel Messi, mercredi lors du choc face au PSG (21h, sur RMC Sport 1) en Ligue des champions même s’il le redoute.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-guardiola-redoute-l-imprevisibilite-de-messi_AV-202111230271.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:30:32 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: le message de Lyon aux supporters lésés par l'interruption du match", + "description": "L'OL s'est rapproché des supporters, présents au Groupama Stadium dimanche, pour annoncer des mesures commerciales à venir, une fois que la sort de la rencontre OL-OM, interrompue, sera fixé.

", + "content": "L'OL s'est rapproché des supporters, présents au Groupama Stadium dimanche, pour annoncer des mesures commerciales à venir, une fois que la sort de la rencontre OL-OM, interrompue, sera fixé.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-le-message-de-lyon-aux-supporters-leses-par-l-interruption-du-match_AV-202111230267.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:10:58 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire Hamraoui: le message d’Eric Abidal à sa femme après sa demande de divorce", + "description": "Eric Abidal a publié un message sur les réseaux sociaux, ce mardi, en direction de sa femme, qui a demandé le divorce il y a quatre jours après avoir appris la liaison de son époux avec Kheira Hamraoui, la joueuse du PSG agressée le 4 novembre dernier.

", + "content": "Eric Abidal a publié un message sur les réseaux sociaux, ce mardi, en direction de sa femme, qui a demandé le divorce il y a quatre jours après avoir appris la liaison de son époux avec Kheira Hamraoui, la joueuse du PSG agressée le 4 novembre dernier.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/feminin/affaire-hamraoui-le-message-d-eric-abidal-a-sa-femme-apres-sa-demande-de-divorce_AV-202111230259.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:41:42 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Equipe de France, basket: Benitez et Kamagate dans la liste", + "description": "En vue des qualifications pour la Coupe du monde 2023, l’Equipe de France de basket jouera ce vendredi face au Monténégro et lundi prochain contre la Hongrie. Alors que trois joueurs des Bleus sont absents, le sélectionneur Vincent Collet a choisi de rester sur sa liste de base en n’appelant personne pour les remplacer.

", + "content": "En vue des qualifications pour la Coupe du monde 2023, l’Equipe de France de basket jouera ce vendredi face au Monténégro et lundi prochain contre la Hongrie. Alors que trois joueurs des Bleus sont absents, le sélectionneur Vincent Collet a choisi de rester sur sa liste de base en n’appelant personne pour les remplacer.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/basket/equipe-de-france-basket-benitez-et-kamagate-dans-la-liste_AV-202111230257.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:38:31 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mercato: le Barça de plus en plus inquiet pour la prolongation de Dembélé", + "description": "En fin de contrat à l’issue de la saison, l’avenir d’Ousmane Dembélé au FC Barcelone est toujours aussi incertain. Si les Catalans souhaitent prolonger leur attaquant, les dirigeants seraient de plus en plus inquiets sur ce dossier, surtout à cause de l’agent du joueur qui inciterait son poulain à partir selon Mundo Deportivo.

", + "content": "En fin de contrat à l’issue de la saison, l’avenir d’Ousmane Dembélé au FC Barcelone est toujours aussi incertain. Si les Catalans souhaitent prolonger leur attaquant, les dirigeants seraient de plus en plus inquiets sur ce dossier, surtout à cause de l’agent du joueur qui inciterait son poulain à partir selon Mundo Deportivo.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/liga/mercato-le-barca-de-plus-en-plus-inquiet-pour-la-prolongation-de-dembele_AV-202111230252.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:27:54 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Supporter du SC Bastia éborgné à Reims: un policier renvoyé aux assises", + "description": "Six ans après les faits, le policier accusé d'avoir éborgné Maxime Beux, le soir du 13 février 2016 lors d’affrontements entre des supporters du SC Bastia et des policiers à Reims, devrait faire face à la justice dans les prochains mois.

", + "content": "Six ans après les faits, le policier accusé d'avoir éborgné Maxime Beux, le soir du 13 février 2016 lors d’affrontements entre des supporters du SC Bastia et des policiers à Reims, devrait faire face à la justice dans les prochains mois.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/supporter-du-sc-bastia-eborgne-a-reims-un-policier-renvoye-aux-assises_AV-202111230247.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:16:04 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Boxe: Ali-Foreman, revivez le mythe comme si vous y étiez (Fighter Club)", + "description": "Il y a un peu plus de quarante-sept ans, le 30 octobre 1974, Kinshasa accueillait un championnat du monde des poids lourds qui allait entrer dans la légende: le champion George Foreman contre le challenger qui veut reconquérir le trône Muhammad Ali. Un combat à jamais gravé dans l’histoire de la boxe, pour tout ce qu’il représente, que le RMC Fighter Club vous propose de revivre via trois épisodes exceptionnels.

", + "content": "Il y a un peu plus de quarante-sept ans, le 30 octobre 1974, Kinshasa accueillait un championnat du monde des poids lourds qui allait entrer dans la légende: le champion George Foreman contre le challenger qui veut reconquérir le trône Muhammad Ali. Un combat à jamais gravé dans l’histoire de la boxe, pour tout ce qu’il représente, que le RMC Fighter Club vous propose de revivre via trois épisodes exceptionnels.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/sports-de-combat/boxe/boxe-ali-foreman-revivez-le-mythe-comme-si-vous-y-etiez-fighter-club_AV-202111230240.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:03:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari football de Coach Courbis du 23 novembre - Ligue des Champions", + "description": "Mon pronostic : Lille bat Salzbourg (2.60) !

", + "content": "Mon pronostic : Lille bat Salzbourg (2.60) !

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-football-de-coach-courbis-du-23-novembre-ligue-des-champions_AN-202111230230.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:51:25 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions: les clubs qui peuvent se qualifier pour les huitièmes ce mardi", + "description": "Quatre équipes ont déjà validé leur billet pour la phase à élimination directe qui débutera en février, et cinq autres pourraient les rejoindre dès ce mardi.

", + "content": "Quatre équipes ont déjà validé leur billet pour la phase à élimination directe qui débutera en février, et cinq autres pourraient les rejoindre dès ce mardi.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/ligue-des-champions-les-clubs-qui-peuvent-se-qualifier-pour-les-huitiemes-ce-mardi_AV-202111230224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:35:05 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari basket de Stephen Brun du 23 novembre - NBA", + "description": "Mon pronostic : les Lakers gagnent à New York (2.35) !

", + "content": "Mon pronostic : les Lakers gagnent à New York (2.35) !

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-basket-de-stephen-brun-du-23-novembre-nba_AN-202111230219.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:22:03 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "JO de Paris 2024: la justice autorise la reprise des travaux d’une piscine d’entraînement", + "description": "En juillet 2024, les Jeux olympiques auront lieu à Paris. Des travaux sont effectués pour préparer idéalement ce grand événement sportif. Depuis quelques semaines, les travaux concernant une piscine d’entraînement à Aubervilliers avaient été suspendus. Mais ce mardi, la cour administrative de Paris a levé cette suspension.

", + "content": "En juillet 2024, les Jeux olympiques auront lieu à Paris. Des travaux sont effectués pour préparer idéalement ce grand événement sportif. Depuis quelques semaines, les travaux concernant une piscine d’entraînement à Aubervilliers avaient été suspendus. Mais ce mardi, la cour administrative de Paris a levé cette suspension.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/jeux-olympiques/jo-de-paris-2024-la-justice-autorise-la-reprise-des-travaux-d-une-piscine-d-entrainement_AV-202111230215.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:14:51 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "AS Rome: Afena-Gyan dément tout notion de racisme à son encontre dans une vidéo du club", + "description": "Le jeune joueur de l’AS Rome, Felix Afena-Gyan (18 ans), a réfuté toute intention de racisme son égard après la diffusion d’une vidéo où il se fait offrir des chaussures par José Mourinho, son entraîneur au sein du club italien.

", + "content": "Le jeune joueur de l’AS Rome, Felix Afena-Gyan (18 ans), a réfuté toute intention de racisme son égard après la diffusion d’une vidéo où il se fait offrir des chaussures par José Mourinho, son entraîneur au sein du club italien.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/serie-a/as-rome-afena-gyan-dement-tout-notion-de-racisme-a-son-encontre-dans-une-video-du-club_AN-202111230210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:10:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Volley, LAM: \"Si nous ne sommes pas écoutés, nous ne jouerons pas\", menace Bazin", + "description": "La 14e journée du championnat de France de volley (LAM) le 29 décembre est en danger face à la levée de bouclier des joueurs organisés autour de leur syndicat, ProSmash. Le président de ce groupement, Yannick Bazin (passeur du Nantes-Rezé) explique l’exaspération des volleyeurs et propose une solution.

", + "content": "La 14e journée du championnat de France de volley (LAM) le 29 décembre est en danger face à la levée de bouclier des joueurs organisés autour de leur syndicat, ProSmash. Le président de ce groupement, Yannick Bazin (passeur du Nantes-Rezé) explique l’exaspération des volleyeurs et propose une solution.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/volley/volley-lam-si-nous-ne-sommes-pas-ecoutes-nous-ne-jouerons-pas-menace-bazin_AV-202111230200.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:48:39 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Barça: la maison de Fati cambriolée avec des membres de sa famille à l’intérieur", + "description": "Selon La Vanguardia, le domicile d’Ansu Fati a fait l’objet d’un cambriolage, samedi dernier, lors du derby entre le Barça et l’Espanyol Barcelone en Liga (1-0). L’attaquant de 19 ans se trouvait au Camp Nou mais certains de ses proches étaient sur place.

", + "content": "Selon La Vanguardia, le domicile d’Ansu Fati a fait l’objet d’un cambriolage, samedi dernier, lors du derby entre le Barça et l’Espanyol Barcelone en Liga (1-0). L’attaquant de 19 ans se trouvait au Camp Nou mais certains de ses proches étaient sur place.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/liga/barca-la-maison-de-fati-cambriolee-avec-des-membres-de-sa-famille-a-l-interieur_AV-202111230197.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:44:50 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: grande première pour Sergio Ramos dans le groupe", + "description": "Comme attendu, Sergio Ramos apparaît pour la première fois dans le groupe du PSG depuis sa signature l’été dernier, pour affronter Manchester City, mercredi (21h, sur RMC Sport 1) en Ligue des champions.

", + "content": "Comme attendu, Sergio Ramos apparaît pour la première fois dans le groupe du PSG depuis sa signature l’été dernier, pour affronter Manchester City, mercredi (21h, sur RMC Sport 1) en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-grande-premiere-pour-sergio-ramos-dans-le-groupe_AV-202111230192.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:42:06 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: Darmanin promet des décisions rapides, notamment sur le volet sécurité", + "description": "Le ministre de l'Intérieur, Gérald Darmanin, et la ministre déléguée aux Sports, Roxana Maracineanu, en compagnie des instances du football français, ont évoqué ce mardi les incidents survenu à Lyon et les moyens d'y mettre fin pour le reste de la saison.

", + "content": "Le ministre de l'Intérieur, Gérald Darmanin, et la ministre déléguée aux Sports, Roxana Maracineanu, en compagnie des instances du football français, ont évoqué ce mardi les incidents survenu à Lyon et les moyens d'y mettre fin pour le reste de la saison.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-darmanin-promet-des-decisions-rapides-notamment-sur-le-volet-securite_AV-202111230189.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:40:05 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "XV de France: Castex positif au coronavirus, pas d'inquiétude chez les Bleus", + "description": "Jean Castex, le Premier ministre français, a été testé positif au coronavirus lundi moins de 48 heures après avoir félicité les joueurs du XV de France dans le vestiaire après le match face aux All Blacks. Ce qui ne suscite pas d'inquiétude particulière.

", + "content": "Jean Castex, le Premier ministre français, a été testé positif au coronavirus lundi moins de 48 heures après avoir félicité les joueurs du XV de France dans le vestiaire après le match face aux All Blacks. Ce qui ne suscite pas d'inquiétude particulière.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/rugby/tests-matchs/xv-de-france-castex-positif-au-coronavirus-apres-avoir-felicite-les-bleus-le-top-14-impacte_AV-202111230163.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:48:43 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester United: Jorge Mendes aurait poussé pour le licenciement de Solskjaer", + "description": "Selon plusieurs médias anglais, l’agent de Cristiano Ronaldo, Jorge Mendes, a joué un rôle - plus que décisif ? - dans le renvoi du Norvégien Ole Gunnar Solskjaer.

", + "content": "Selon plusieurs médias anglais, l’agent de Cristiano Ronaldo, Jorge Mendes, a joué un rôle - plus que décisif ? - dans le renvoi du Norvégien Ole Gunnar Solskjaer.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/premier-league/manchester-united-jorge-mendes-aurait-pousse-pour-le-licenciement-de-solskjaer_AV-202111230160.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:42:51 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lille-Salzbourg: comment le Losc peut faire un grand pas vers les 8es", + "description": "Le Losc reçoit Salzbourg, ce mardi, lors de l’avant-dernière journée de la Ligue des champions (21h sur RMC Sport 1). Même s’il l’emporte, le club nordiste ne peut pas encore valider sa place en 8es de finale. Mais il peut déjà s’assurer de prolonger son aventure européenne.

", + "content": "Le Losc reçoit Salzbourg, ce mardi, lors de l’avant-dernière journée de la Ligue des champions (21h sur RMC Sport 1). Même s’il l’emporte, le club nordiste ne peut pas encore valider sa place en 8es de finale. Mais il peut déjà s’assurer de prolonger son aventure européenne.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/lille-salzbourg-les-dogues-peuvent-faire-un-grand-pas-vers-les-8es_AV-202111230151.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:31:37 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Disparition de Peng Shuai: la Chine appelle à cesser de \"monter en épingle\" l'affaire", + "description": "Le porte-parole du ministère chinois des Affaires étrangères a exhorté les responsables politiques étrangers inquiets du sort de Shuai Peng à arrêter toute forme de pression politique sur le régime.

", + "content": "Le porte-parole du ministère chinois des Affaires étrangères a exhorté les responsables politiques étrangers inquiets du sort de Shuai Peng à arrêter toute forme de pression politique sur le régime.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/wta/disparition-de-peng-shuai-la-chine-appelle-a-cesser-de-monter-en-epingle-l-affaire_AV-202111230136.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 08:50:31 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: Messi répète qu’il reviendra un jour au Barça", + "description": "Lionel Messi, l'attaquant du PSG, a de nouveau répété son souhait de revenir un jour au FC Barcelone qu’il a quitté l’été dernier pour Paris.

", + "content": "Lionel Messi, l'attaquant du PSG, a de nouveau répété son souhait de revenir un jour au FC Barcelone qu’il a quitté l’été dernier pour Paris.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-messi-repete-qu-il-reviendra-un-jour-au-barca_AV-202111230125.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 08:21:48 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lille-Salzbourg: sur quelle chaîne regarder ce match crucial de Ligue des champions", + "description": "Le LOSC peut faire un grand pas vers la qualification en huitièmes de finale de la Ligue des champions en cas de victoire ce mardi soir (21h), face à Salzbourg. Un match à suivre sur RMC Sport 1.

", + "content": "Le LOSC peut faire un grand pas vers la qualification en huitièmes de finale de la Ligue des champions en cas de victoire ce mardi soir (21h), face à Salzbourg. Un match à suivre sur RMC Sport 1.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/lille-salzbourg-sur-quelle-chaine-regarder-ce-match-crucial-de-ligue-des-champions_AV-202111230123.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 08:20:02 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue 1: \"Heureusement que j’ai emmené mon fils au rugby plutôt qu’au football\", la charge de Maracineanu contre les clubs", + "description": "Invitée sur RMC ce mardi, Roxana Maracineanu, ministre déléguée des Sports, a adressé une grosse charge aux clubs de football les taxant de laxisme avec les supporters, quelques heures avant une réunion entre les acteurs du sport et plusieurs ministres.

", + "content": "Invitée sur RMC ce mardi, Roxana Maracineanu, ministre déléguée des Sports, a adressé une grosse charge aux clubs de football les taxant de laxisme avec les supporters, quelques heures avant une réunion entre les acteurs du sport et plusieurs ministres.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-heureusement-que-j-ai-emmene-mon-fils-plutot-au-rugby-qu-au-football-la-charge-de-maracineanu-contre-les-clubs_AV-202111230111.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:59:22 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Coupe du monde 2022: Ibrahimovic confie avoir frappé intentionnellement Azpilicueta", + "description": "L’attaquant suédois Zlatan Ibrahimovic persiste et signe, César Azpilicueta méritait le terrible coup d’épaule que lui a asséné l’attaquant milanais. Si c’était à refaire, il recommencerait, assure-t-il au Guardian.

", + "content": "L’attaquant suédois Zlatan Ibrahimovic persiste et signe, César Azpilicueta méritait le terrible coup d’épaule que lui a asséné l’attaquant milanais. Si c’était à refaire, il recommencerait, assure-t-il au Guardian.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/coupe-du-monde/coupe-du-monde-2022-ibrahimovic-confie-avoir-frappe-intentionnellement-azpilicueta_AV-202111230096.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:39:43 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM en direct: les clubs ont rendez-vous au ministère de l’Intérieur", + "description": "Les ministres de l'Intérieur et ceux chargés des Sports rencontrent ce mardi les instances du football français pour voir \"ce qu'il faut faire\" après les incidents survenus dimanche soir lors du match OL-OM à Lyon.

", + "content": "Les ministres de l'Intérieur et ceux chargés des Sports rencontrent ce mardi les instances du football français pour voir \"ce qu'il faut faire\" après les incidents survenus dimanche soir lors du match OL-OM à Lyon.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-en-direct-les-clubs-ont-rendez-vous-au-ministere-de-l-interieur_LN-202111230091.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:29:32 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "AC Milan: Zlatan estime le niveau technique de la Premier League surcoté", + "description": "Dans une longue interview accordée au Guardian, Zlatan Ibrahimovic évoque de nombreux sujets, dont le niveau technique de la Premier League qu’il estime surcoté en comparaison à celui de l’Espagne, de l’Italie ou de la France.

", + "content": "Dans une longue interview accordée au Guardian, Zlatan Ibrahimovic évoque de nombreux sujets, dont le niveau technique de la Premier League qu’il estime surcoté en comparaison à celui de l’Espagne, de l’Italie ou de la France.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/premier-league/ac-milan-zlatan-estime-le-niveau-technique-de-la-premier-league-surcote_AV-202111230060.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 06:46:45 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: Messi ravi d’évoluer au sein d’un vestiaire \"très soudé\"", + "description": "Lionel Messi est revenu pour Marca sur ses premiers mois au Paris Saint-Germain et notamment son intégration au vestiaire du club de la capitale. Un vestiaire à l'accent très sud-américain.

", + "content": "Lionel Messi est revenu pour Marca sur ses premiers mois au Paris Saint-Germain et notamment son intégration au vestiaire du club de la capitale. Un vestiaire à l'accent très sud-américain.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/psg-messi-ravi-d-evoluer-au-sein-d-un-vestiaire-tres-soude_AV-202111230055.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 06:42:10 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: Messi vit comme \"un spectacle\" d’être aux côtés de Sergio Ramos", + "description": "Longtemps adversaires avec le Real Madrid et le FC Barcelone, Lionel Messi et Sergio Ramos se côtoient désormais au PSG. Un \"spectacle\" pour l’Argentin qui confie vouer du respect pour le défenseur espagnol.

", + "content": "Longtemps adversaires avec le Real Madrid et le FC Barcelone, Lionel Messi et Sergio Ramos se côtoient désormais au PSG. Un \"spectacle\" pour l’Argentin qui confie vouer du respect pour le défenseur espagnol.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-messi-vit-comme-un-spectacle-d-etre-aux-cotes-de-sergio-ramos_AV-202111230032.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:58:42 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Real Madrid: les louanges de Vinicius pour Benzema", + "description": "Dans une interview accordée à la Cadena Ser, Vincius Junior loue son association avec Karim Benzema au sein de l’attaque madrilène. Il vote pour que le Français soit Ballon d’or.

", + "content": "Dans une interview accordée à la Cadena Ser, Vincius Junior loue son association avec Karim Benzema au sein de l’attaque madrilène. Il vote pour que le Français soit Ballon d’or.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/liga/real-madrid-les-louanges-de-vinicius-pour-benzema_AV-202111230020.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:38:15 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "NBA: LeBron James prend un match, Stewart deux après leur accrochage", + "description": "LeBron James a écopé d'un match de suspension pour avoir asséné un coup au visage du joueur de Detroit, Isaiah Stewart, qui a écopé d'une sanction de deux matchs pour sa réaction.

", + "content": "LeBron James a écopé d'un match de suspension pour avoir asséné un coup au visage du joueur de Detroit, Isaiah Stewart, qui a écopé d'une sanction de deux matchs pour sa réaction.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/basket/nba/nba-le-bron-james-suspendu-un-match-pour-son-coup-sur-stewart_AV-202111230009.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:08:04 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Transat Jacques-Vabre: Rogues et Souben s'imposent en Ocean Fifty", + "description": "Sébastien Rogues et Matthieu Souben (Primonial) ont coupé la ligne d'arrivée en premier de la Transart Jacques-Vabre, dans la nuit de lundi à mardi en Martinique.

", + "content": "Sébastien Rogues et Matthieu Souben (Primonial) ont coupé la ligne d'arrivée en premier de la Transart Jacques-Vabre, dans la nuit de lundi à mardi en Martinique.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/voile/transat-jacques-vabre-rogues-et-souben-s-imposent-en-ocean-fifty_AV-202111230007.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 04:51:25 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions: \"Cela peut être un moment très important\", Lille au pied du mur à Salzbourg", + "description": "Le LOSC a l'occasion de faire un grand pas vers la qualification en affrontant Salzbourg mardi soir en Ligue des champions. un match à suivre sur RMC Sport, coup d'envoi à 21h.

", + "content": "Le LOSC a l'occasion de faire un grand pas vers la qualification en affrontant Salzbourg mardi soir en Ligue des champions. un match à suivre sur RMC Sport, coup d'envoi à 21h.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/ligue-des-champions-cela-peut-etre-un-moment-tres-important-lille-au-pied-du-mur-salzbourg_AV-202111220570.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:28:45 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mercato: Zidane au PSG? \"Ça ne me parait pas impossible\", glisse Fred Hermel", + "description": "Selon Fred Hermel, spécialiste du foot espagnol pour RMC Sport, Zinedine Zidane a clairement dit non à Manchester United, pour succéder à Ole Gunnar Solskjaer. En revanche, le technicien français pourrait bien se retrouver, un jour, sur le banc du PSG.

", + "content": "Selon Fred Hermel, spécialiste du foot espagnol pour RMC Sport, Zinedine Zidane a clairement dit non à Manchester United, pour succéder à Ole Gunnar Solskjaer. En revanche, le technicien français pourrait bien se retrouver, un jour, sur le banc du PSG.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/mercato-zidane-au-psg-ca-ne-me-parait-pas-impossible-glisse-fred-hermel_AV-202111220568.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:18:11 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tennis: Après les polémiques l'ATP revoit la règle sur les pauses-toilettes", + "description": "Les pauses de Novak Djokovic avaient notamment suscité une levée de bouclier.

", + "content": "Les pauses de Novak Djokovic avaient notamment suscité une levée de bouclier.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/tennis-apres-les-polemiques-l-atp-revoit-la-regle-sur-les-pauses-toilettes_AD-202111220566.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:12:18 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Les paris sur Lille – Salzbourg du 23 novembre – Ligue des Champions", + "description": "Notre pronostic : Lille ne perd pas face à Salzbourg et moins de 3,5 buts (1.88)

", + "content": "Notre pronostic : Lille ne perd pas face à Salzbourg et moins de 3,5 buts (1.88)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-les-paris-sur-lille-salzbourg-du-23-novembre-ligue-des-champions_AN-202111220315.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:06:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari de folie du 23 novembre – Ligue des Champions", + "description": "Notre pronostic : match nul entre Villarreal et Manchester United et les deux équipes marquent (3.80)

", + "content": "Notre pronostic : match nul entre Villarreal et Manchester United et les deux équipes marquent (3.80)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-de-folie-du-23-novembre-ligue-des-champions_AN-202111220314.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:05:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari sûr du 23 novembre – Ligue des Champions", + "description": "Notre pronostic : le Bayern Munich s’impose sur la pelouse du Dinamo Kiev et au moins deux buts dans la rencontre (1.33)

", + "content": "Notre pronostic : le Bayern Munich s’impose sur la pelouse du Dinamo Kiev et au moins deux buts dans la rencontre (1.33)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-sur-du-23-novembre-ligue-des-champions_AN-202111220312.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:04:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari à l’extérieur du 23 novembre – Ligue des Champions", + "description": "Notre pronostic : l’Atalanta s’impose sur la pelouse des Young Boys Berne (1.80)

", + "content": "Notre pronostic : l’Atalanta s’impose sur la pelouse des Young Boys Berne (1.80)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-a-l-exterieur-du-23-novembre-ligue-des-champions_AN-202111220311.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:03:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari à domicile du 23 novembre – Ligue des Champions", + "description": "Notre pronostic : le FC Séville bat Wolfsbourg (1.73)

", + "content": "Notre pronostic : le FC Séville bat Wolfsbourg (1.73)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-a-domicile-du-23-novembre-ligue-des-champions_AN-202111220310.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:02:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le buteur du 23 novembre – Ligue des Champions", + "description": "Notre pronostic : Depay (Barcelone) marque face au Benfica Lisbonne (2.20)

", + "content": "Notre pronostic : Depay (Barcelone) marque face au Benfica Lisbonne (2.20)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-buteur-du-23-novembre-ligue-des-champions_AN-202111220308.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:01:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PRONOS PARIS RMC Le pari football d’Eric Di Meco du 23 novembre – Ligue des Champions", + "description": "Mon pronostic : Chelsea s’impose par au moins deux buts d’écart face à la Juventus (2.65)

", + "content": "Mon pronostic : Chelsea s’impose par au moins deux buts d’écart face à la Juventus (2.65)

", + "category": "", + "link": "https://rmcsport.bfmtv.com/pari-sportif/pronos-paris-rmc-le-pari-football-d-eric-di-meco-du-23-novembre-ligue-des-champions_AN-202111220307.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:00:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Platini se paye ceux qui ne jurent que par les statistiques dans le football", + "description": "Dans une interview fleuve la revue de l'After, l'ancien numéro 10 des Bleus revient sur les dérives du football actuelle.

", + "content": "Dans une interview fleuve la revue de l'After, l'ancien numéro 10 des Bleus revient sur les dérives du football actuelle.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/platini-se-paye-ceux-qui-ne-jurent-que-par-les-statistiques-dans-le-football_AV-202111220564.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 22:59:23 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions: Messi voit le PSG parmi les favoris, mais évoque des manques", + "description": "Dans une interview accordée à Marca, et dont le quotidien espagnol a diffusé ce lundi soir des extraits, Lionel Messi évoque notamment le statut du PSG en Ligue des champions. S'il classe son équipe parmi les favoris pour le titre, l'Argentin estime que celle-ci doit encore progresser.

", + "content": "Dans une interview accordée à Marca, et dont le quotidien espagnol a diffusé ce lundi soir des extraits, Lionel Messi évoque notamment le statut du PSG en Ligue des champions. S'il classe son équipe parmi les favoris pour le titre, l'Argentin estime que celle-ci doit encore progresser.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/ligue-des-champions-messi-voit-le-psg-parmi-les-favoris-mais-evoque-des-manques_AV-202111220553.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 22:34:23 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: un arbitre italien avec des souvenirs contrastés pour Paris", + "description": "L’UEFA a désigné Daniele Orsato pour diriger le choc entre Manchester City et le PSG, mercredi à l’Etihad Stadium (21h sur RMC Sport 1), en Ligue des champions. L’arbitre italien de 45 ans a souvent croisé Paris dans le passé. Avec un souvenir douloureux, mais aussi de belles victoires. A Manchester notamment…

", + "content": "L’UEFA a désigné Daniele Orsato pour diriger le choc entre Manchester City et le PSG, mercredi à l’Etihad Stadium (21h sur RMC Sport 1), en Ligue des champions. L’arbitre italien de 45 ans a souvent croisé Paris dans le passé. Avec un souvenir douloureux, mais aussi de belles victoires. A Manchester notamment…

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-un-arbitre-italien-avec-des-souvenirs-contrastes-pour-paris_AV-202111220542.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 22:16:05 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue 2: Dijon éteint Auxerre et sort de la zone rouge", + "description": "Dijon remonte à la 12e place. Auxerre tombe à la troisième place.

", + "content": "Dijon remonte à la 12e place. Auxerre tombe à la troisième place.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-2/ligue-2-dijon-eteint-auxerre-et-sort-de-la-zone-rouge_AD-202111220539.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 22:08:31 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OL-OM: le car des Marseillais visé par des jets de projectiles après la rencontre", + "description": "INFO RMC SPORT - Le car de l'OM a été dimanche soir la cible de jets de projectiles après le match arrêté contre l'OL, et après avoir déposé les joueurs marseillais à l'aéroport.

", + "content": "INFO RMC SPORT - Le car de l'OM a été dimanche soir la cible de jets de projectiles après le match arrêté contre l'OL, et après avoir déposé les joueurs marseillais à l'aéroport.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ol-om-le-car-des-marseillais-vise-par-des-jets-de-projectiles-apres-la-rencontre_AV-202111220531.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 21:43:26 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Argentine: une ex-liaison de Maradona accuse d'abus la star et son entourage", + "description": "Elle accuse notamment l'ancien numéro 10 argentin disparu l'année dernière de viols.

", + "content": "Elle accuse notamment l'ancien numéro 10 argentin disparu l'année dernière de viols.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/argentine-une-ex-liaison-de-maradona-accuse-d-abus-la-star-et-son-entourage_AD-202111220529.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 21:41:56 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mercato: Bounedjah dans le viseur du Barça? La réponse de Xavi", + "description": "Alors qu'une rumeur faisait état d'un intérêt du Barça pour l'attaquant algérien d'Al Sadd, Baghdad Bounedjah, Xavi a éteint cette piste ce lundi, louant les qualités du joueur mais niant tout intérêt pour lui.

", + "content": "Alors qu'une rumeur faisait état d'un intérêt du Barça pour l'attaquant algérien d'Al Sadd, Baghdad Bounedjah, Xavi a éteint cette piste ce lundi, louant les qualités du joueur mais niant tout intérêt pour lui.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/mercato-bounedjah-dans-le-viseur-du-barca-la-reponse-de-xavi_AV-202111220522.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 21:16:54 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OL-OM: \"J'ai maintenant peur d'effectuer des corners à l'extérieur\", explique Payet", + "description": "Le meneur de jeu marseillais Dimitri Payet touché par un jet de bouteille au Groupama Stadium lors de OL-OM a porté plainte.

", + "content": "Le meneur de jeu marseillais Dimitri Payet touché par un jet de bouteille au Groupama Stadium lors de OL-OM a porté plainte.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ol-om-j-ai-maintenant-peur-quand-d-effectuer-des-corners-a-l-exterieur-explique-payet_AV-202111220510.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 20:46:08 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: Donnarumma appelle ses partenaires \"à souffrir ensemble\" avant le choc", + "description": "A deux jours du déplacement à Manchester City, ce mercredi en Ligue des champions (21h sur RMC Sport 1), Gianluigi Donnarumma a mis en avant le bon état d’esprit qui règne dans le vestiaire du PSG. En exhortant ses coéquipiers à viser la victoire à l’Etihad Stadium.

", + "content": "A deux jours du déplacement à Manchester City, ce mercredi en Ligue des champions (21h sur RMC Sport 1), Gianluigi Donnarumma a mis en avant le bon état d’esprit qui règne dans le vestiaire du PSG. En exhortant ses coéquipiers à viser la victoire à l’Etihad Stadium.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-donnarumma-appelle-ses-partenaires-a-souffrir-ensemble-avant-le-choc_AV-202111220507.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 20:31:57 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: pourquoi le Groupama Stadium n'est pas équipé de filets anti-projectiles", + "description": "Contrairement à plusieurs autres stades français, le Groupama Stadium dans lequel évolue l'OL n'est pas équipé de filets anti-projectiles devant ses virages. Au lendemain des incidents face à l'OM, le directeur général du football Vincent Ponsot s'en est expliqué dans Rothen s'enflamme, sur RMC.

", + "content": "Contrairement à plusieurs autres stades français, le Groupama Stadium dans lequel évolue l'OL n'est pas équipé de filets anti-projectiles devant ses virages. Au lendemain des incidents face à l'OM, le directeur général du football Vincent Ponsot s'en est expliqué dans Rothen s'enflamme, sur RMC.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-pourquoi-le-groupama-stadium-n-est-pas-equipe-de-filets-anti-projectiles_AV-202111220497.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:57:15 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue2: L2: Des incidents avant le match Dijon-Auxerre", + "description": "Les violences ont eu lieu dans un bar proche du stade de Dijon. Il n'y a eu ni blessés, ni interpellations.

", + "content": "Les violences ont eu lieu dans un bar proche du stade de Dijon. Il n'y a eu ni blessés, ni interpellations.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-2/ligue2-l2-des-incidents-avant-le-match-dijon-auxerre_AN-202111220490.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:43:50 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: Di Meco invite la LFP à \"taper fort\" avec de lourdes sanctions", + "description": "Éric Di Meco a suivi avec consternation les incidents qui ont entraîné l’interruption du choc entre l’OM et l’OL, dimanche lors de la 14e journée de Ligue 1. Notre consultant appelle la commission de discipline de la LFP à prendre des sanctions exemplaires, afin d’enrayer la spirale de violences qui perturbe la saison en cours.

", + "content": "Éric Di Meco a suivi avec consternation les incidents qui ont entraîné l’interruption du choc entre l’OM et l’OL, dimanche lors de la 14e journée de Ligue 1. Notre consultant appelle la commission de discipline de la LFP à prendre des sanctions exemplaires, afin d’enrayer la spirale de violences qui perturbe la saison en cours.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-di-meco-invite-la-lfp-a-taper-fort-avec-de-lourdes-sanctions_AV-202111220488.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:39:27 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: les versions contradictoires des différents acteurs", + "description": "Un match interrompu, puis annoncé sur le point de reprendre par le speaker du stade, puis définitivement arrêté, deux clubs qui ne décrivent pas les mêmes discussions en coulisses, le préfet et la LFP qui règlent leurs comptes... Difficile de savoir ce qu'il s'est réellement passé après les incidents d'OL-OM, dimanche soir en Ligue 1, tant les versions des différents acteurs divergent.

", + "content": "Un match interrompu, puis annoncé sur le point de reprendre par le speaker du stade, puis définitivement arrêté, deux clubs qui ne décrivent pas les mêmes discussions en coulisses, le préfet et la LFP qui règlent leurs comptes... Difficile de savoir ce qu'il s'est réellement passé après les incidents d'OL-OM, dimanche soir en Ligue 1, tant les versions des différents acteurs divergent.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-les-versions-contradictoires-des-differents-acteurs_AV-202111220486.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:23:21 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: Les mesures que pourraient réclamer les clubs face à la violence dans les stades", + "description": "Après les incidents navrants qui ont conduit l'arbitre à interrompre le match de Ligue 1 OL-OM dès la deuxième minute, les dirigeants de clubs et la LFP ont rendez-vous au ministère de l'Intérieur. Et ils attendent des mesures.

", + "content": "Après les incidents navrants qui ont conduit l'arbitre à interrompre le match de Ligue 1 OL-OM dès la deuxième minute, les dirigeants de clubs et la LFP ont rendez-vous au ministère de l'Intérieur. Et ils attendent des mesures.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-les-mesures-que-pourraient-reclamer-les-clubs-face-a-la-violence-dans-les-stades_AV-202111220478.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:08:28 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OL-OM: la moue d’Henry écoutant Aulas devient un mème", + "description": "Les incidents qui ont entraîné l’interruption d’OL-OM, dimanche lors de la 14e journée de Ligue 1, ont été commentés en direct par Thierry Henry sur Amazon Prime Video. Et l’ancien attaquant des Bleus a semblé assez décontenancé par les explications de Jean-Michel Aulas. Au point de voir sa moue détournée en masse sur les réseaux.

", + "content": "Les incidents qui ont entraîné l’interruption d’OL-OM, dimanche lors de la 14e journée de Ligue 1, ont été commentés en direct par Thierry Henry sur Amazon Prime Video. Et l’ancien attaquant des Bleus a semblé assez décontenancé par les explications de Jean-Michel Aulas. Au point de voir sa moue détournée en masse sur les réseaux.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ol-om-la-moue-d-henry-ecoutant-aulas-devient-un-meme_AV-202111220469.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:54:26 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Transat Jacques-Vabre: Une arrivée sous haute tension sociale", + "description": "L'arrivée du premier bateau, prévue ce lundi soir à Fort-de-France, se déroule en pleine grève générale.

", + "content": "L'arrivée du premier bateau, prévue ce lundi soir à Fort-de-France, se déroule en pleine grève générale.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/voile/transat-jacques-vabre-une-arrivee-sous-haute-tension-sociale_AN-202111220454.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:25:36 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Fifa The Best: trois Français parmi les nommés pour le prix de meilleur joueur du monde", + "description": "Les onze joueurs nommés pour le prix Fifa The Best 2021 ont été dévoilés ce lundi. Trois Français en font partie: Karim Benzema, N’Golo Kanté et Kylian Mbappé. La cérémonie aura lieu le 17 janvier à Zürich.

", + "content": "Les onze joueurs nommés pour le prix Fifa The Best 2021 ont été dévoilés ce lundi. Trois Français en font partie: Karim Benzema, N’Golo Kanté et Kylian Mbappé. La cérémonie aura lieu le 17 janvier à Zürich.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/fifa-the-best-trois-francais-parmi-les-nommes-pour-le-prix-de-meilleur-joueur-du-monde_AD-202111220431.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:59:12 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: Ramos pour la première fois dans le groupe", + "description": "Sergio Ramos sera dans le groupe du PSG pour le déplacement à Manchester City, mercredi, en Ligue des champions (21h sur RMC Sport 1). Une grande première pour le défenseur espagnol de 35 ans, perturbé par des problèmes physiques depuis son arrivée l’été dernier.

", + "content": "Sergio Ramos sera dans le groupe du PSG pour le déplacement à Manchester City, mercredi, en Ligue des champions (21h sur RMC Sport 1). Une grande première pour le défenseur espagnol de 35 ans, perturbé par des problèmes physiques depuis son arrivée l’été dernier.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-ramos-pour-la-premiere-fois-dans-le-groupe_AV-202111220420.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:49:11 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: A quoi joue Mauricio Pochettino ?", + "description": "Après les rumeurs de l'été envoyant Mauricio Pochettino au Real Madrid, deuxième épisode avec maintenant Manchester United.

", + "content": "Après les rumeurs de l'été envoyant Mauricio Pochettino au Real Madrid, deuxième épisode avec maintenant Manchester United.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/clubs/paris-saint-germain/psg-a-quoi-joue-mauricio-pochettino_AV-202111220405.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:24:05 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: ce que l'on sait du lanceur présumé de la bouteille sur Payet", + "description": "Soupçonné d'avoir lancé la bouteille d'eau qui a percuté Dimitri Payet dimanche soir lors d'OL-OM en Ligue 1, et donc d'avoir entraîné l'arrêt prématuré de la rencontre, un homme de 32 ans a été interpellé. Sa garde à vue a été prolongée.

", + "content": "Soupçonné d'avoir lancé la bouteille d'eau qui a percuté Dimitri Payet dimanche soir lors d'OL-OM en Ligue 1, et donc d'avoir entraîné l'arrêt prématuré de la rencontre, un homme de 32 ans a été interpellé. Sa garde à vue a été prolongée.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-ce-que-l-on-sait-du-lanceur-presume-de-la-bouteille-sur-payet_AV-202111220396.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:12:52 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents d’OL-OM: Aulas s’insurge contre un possible retrait de points", + "description": "Au lendemain des incidents d’OL-OM, Jean-Michel Aulas s’est exprimé ce lundi devant quelques médias, dont l’AFP. Le président des Gones en a profité pour répondre notamment à une question sur un éventuel retrait de points contre son club.

", + "content": "Au lendemain des incidents d’OL-OM, Jean-Michel Aulas s’est exprimé ce lundi devant quelques médias, dont l’AFP. Le président des Gones en a profité pour répondre notamment à une question sur un éventuel retrait de points contre son club.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-d-ol-om-aulas-s-insurge-contre-un-possible-retrait-de-points_AV-202111220394.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:12:05 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OL-OM: mis en cause, le préfet du Rhône donne sa version et dénonce la volte-face de l’arbitre", + "description": "Invité de BFM Lyon ce lundi soir, le préfet de région Pascal Mailhos a apporté un nouvel éclairage sur l'imbroglio qui a conduit à l'arrêt définitif du match OL-OM dimanche soir. Dimitri Payet a été victime d'un jet de projectile, obligeant l'arbitre à interrompre la rencontre.

", + "content": "Invité de BFM Lyon ce lundi soir, le préfet de région Pascal Mailhos a apporté un nouvel éclairage sur l'imbroglio qui a conduit à l'arrêt définitif du match OL-OM dimanche soir. Dimitri Payet a été victime d'un jet de projectile, obligeant l'arbitre à interrompre la rencontre.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ol-om-mis-en-cause-le-prefet-du-rhone-donne-sa-version-et-denonce-la-volte-face-de-l-arbitre_AV-202111220387.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:59:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: le revirement de l’arbitre, l’interpellation du supporter… le déroulé des faits selon le camp lyonnais", + "description": "Un certain flou entoure l’interruption du match entre l’OL et l’OM, dimanche au Groupama Stadium, lors de la 14e journée de Ligue 1. Après deux heures tergiversations et l’annonce d’une reprise, Ruddy Buquet a finalement acté l’arrêt définitif de la rencontre. Voici la version des Gones à propos de cette triste soirée.

", + "content": "Un certain flou entoure l’interruption du match entre l’OL et l’OM, dimanche au Groupama Stadium, lors de la 14e journée de Ligue 1. Après deux heures tergiversations et l’annonce d’une reprise, Ruddy Buquet a finalement acté l’arrêt définitif de la rencontre. Voici la version des Gones à propos de cette triste soirée.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-le-revirement-de-l-arbitre-l-interpellation-du-supporter-le-deroule-des-faits-selon-le-camp-lyonnais_AV-202111220383.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:54:04 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "MMA: Pourquoi Khamzat Chimaev est le nouveau phénomène de l’UFC (Fighter Club)", + "description": "Arrivé comme un ouragan à l’UFC à l’été 2020, avec deux victoires dans deux catégories en dix jours, Khamzat Chimaev a connu un an d’arrêt en raison d’un Covid compliqué. Mais sa démonstration pour son retour dans la cage, fin octobre, a rappelé combien le Suédois d’origine tchétchène était un talent spécial. Avec un évident potentiel de nouvelle superstar de l’UFC. Le RMC Fighter Club vous propose une plongée en profondeur dans la carrière de celui qui fait fantasmer le monde du MMA.

", + "content": "Arrivé comme un ouragan à l’UFC à l’été 2020, avec deux victoires dans deux catégories en dix jours, Khamzat Chimaev a connu un an d’arrêt en raison d’un Covid compliqué. Mais sa démonstration pour son retour dans la cage, fin octobre, a rappelé combien le Suédois d’origine tchétchène était un talent spécial. Avec un évident potentiel de nouvelle superstar de l’UFC. Le RMC Fighter Club vous propose une plongée en profondeur dans la carrière de celui qui fait fantasmer le monde du MMA.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/sports-de-combat/mma/mma-pourquoi-khamzat-chimaev-est-le-nouveau-phenomene-de-l-ufc-fighter-club_AV-202111220372.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:40:38 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: Mbappé malade et absent de l'entraînement, à deux jours de Manchester City", + "description": "Kylian Mbappé n'était pas présent à l'entraînement du PSG ce lundi matin, deux jours avant le choc contre Manchester City en Ligue des champions (mercredi, 21h sur RMC Sport 1). L'attaquant parisien est malade, mais la situation n'est a priori pas inquiétante.

", + "content": "Kylian Mbappé n'était pas présent à l'entraînement du PSG ce lundi matin, deux jours avant le choc contre Manchester City en Ligue des champions (mercredi, 21h sur RMC Sport 1). L'attaquant parisien est malade, mais la situation n'est a priori pas inquiétante.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/psg-mbappe-malade-et-absent-de-l-entrainement-a-deux-jours-de-manchester-city_AV-202111220371.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:38:54 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: \"Quand un acteur est touché, le match ne peut pas reprendre\", estime Labrune, président de la LFP", + "description": "Dans une interview à L'Equipe, le président de la LFP, Vincent Labrune, est revenu sur les incidents observés dimanche soir lors d'OL-OM en Ligue 1. \"Choqué\" par les événements et la longueur du processus ayant conduit à l'arrêt du match, le dirigeant prône l'interruption systématique des rencontres dans de telles situations. Sur les mesures de fond, il renvoie toutefois la balle aux pouvoirs publics...

", + "content": "Dans une interview à L'Equipe, le président de la LFP, Vincent Labrune, est revenu sur les incidents observés dimanche soir lors d'OL-OM en Ligue 1. \"Choqué\" par les événements et la longueur du processus ayant conduit à l'arrêt du match, le dirigeant prône l'interruption systématique des rencontres dans de telles situations. Sur les mesures de fond, il renvoie toutefois la balle aux pouvoirs publics...

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-quand-un-acteur-est-touche-le-match-ne-peut-pas-reprendre-estime-labrune-president-de-la-lfp_AV-202111220339.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:47:14 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Incidents OL-OM: le speaker du Groupama Stadium livre sa version", + "description": "Le speaker du Groupama Stadium a expliqué sur Twitter pourquoi il avait annoncé la reprise du match OL-OM avant d’indiquer l’inverse, et d’en prononcer l’arrêt définitif.

", + "content": "Le speaker du Groupama Stadium a expliqué sur Twitter pourquoi il avait annoncé la reprise du match OL-OM avant d’indiquer l’inverse, et d’en prononcer l’arrêt définitif.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/incidents-ol-om-le-speaker-du-groupama-stadium-livre-sa-version_AV-202111220333.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:39:07 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Serie A: qui est Felix Afena-Gyan, le jeune attaquant de 18 ans de la Roma", + "description": "Auteur d'un doublé avec l'AS Roma dimanche face au Genoa, Felix Afena-Gyan est l'un des attaquants les plus prometteurs du club italien.

", + "content": "Auteur d'un doublé avec l'AS Roma dimanche face au Genoa, Felix Afena-Gyan est l'un des attaquants les plus prometteurs du club italien.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/serie-a/serie-a-qui-est-felix-afena-gyan-le-jeune-attaquant-de-18-ans-de-la-roma_AV-202111220326.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:13:56 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un ancien joueur d’Everton aux 260 matchs en Premier League signe en… 2e division départementale dans les Deux-Sèvres", + "description": "Louzy, petit commune de 1400 habitants dans les Deux-Sèvres, et dont le club évolue en deuxième division départementale, vient d'enregistrer un renfort de poids avec l'arrivée de sa nouvelle star: Tony Hibbert, ancien joueur d'Everton, près de 300 matches de Premier League au compteur.

", + "content": "Louzy, petit commune de 1400 habitants dans les Deux-Sèvres, et dont le club évolue en deuxième division départementale, vient d'enregistrer un renfort de poids avec l'arrivée de sa nouvelle star: Tony Hibbert, ancien joueur d'Everton, près de 300 matches de Premier League au compteur.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/un-ancien-joueur-d-everton-signe-en-2e-division-departementale-dans-les-deux-sevres_AV-202111220323.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:06:04 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mercato en direct: Xavi évoque la rumeur Bounedjah au Barça", + "description": "A un peu plus d'un mois de l'ouverture du mercato d'hiver (du 1er au 31 janvier 2022), suivez toutes les informations et rumeurs du marché des transferts en direct.

", + "content": "A un peu plus d'un mois de l'ouverture du mercato d'hiver (du 1er au 31 janvier 2022), suivez toutes les informations et rumeurs du marché des transferts en direct.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/mercato-en-direct-les-infos-et-rumeurs-du-22-novembre_LN-202111220138.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 08:55:12 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OL-OM en direct: \"J'ai maintenant peur de tirer les corners à l'extérieur\" explique Payet", + "description": "La 14e journée de Ligue 1 s'achève ce dimanche par l'Olympico entre l'OL et l'OM, à Lyon (20h45). Un match bouillant, d'autant que les deux équipes sont rivales pour les places européennes et proposent un jeu plaisant.

", + "content": "La 14e journée de Ligue 1 s'achève ce dimanche par l'Olympico entre l'OL et l'OM, à Lyon (20h45). Un match bouillant, d'autant que les deux équipes sont rivales pour les places européennes et proposent un jeu plaisant.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-suivez-en-direct-le-bouillant-olympico-ol-om_LS-202111210021.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Monaco-Lille: l'ASM arrache un point, de gros regrets pour le LOSC", + "description": "Jonathan David a eu beau marqué un doublé ce vendredi en ouverture de la 14e journée de Ligue 1, son équipe de Lille s'est contentée d'un nul à Monaco (2-2). En infériorité numérique, les Monégasques ont égalisé grâce à Krépin Diatta et Wissam Ben Yedder.

", + "content": "Jonathan David a eu beau marqué un doublé ce vendredi en ouverture de la 14e journée de Ligue 1, son équipe de Lille s'est contentée d'un nul à Monaco (2-2). En infériorité numérique, les Monégasques ont égalisé grâce à Krépin Diatta et Wissam Ben Yedder.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/monaco-lille-l-asm-arrache-un-point-de-gros-regrets-pour-le-losc_AV-202111190501.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 22:09:20 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": true, + "tags": [] + }, + { + "title": "Bundesliga: deuxième défaite pour le Bayern, le championnat relancé", + "description": "Sans Coman mais avec Hernandez, Upamecano et Pavard, le Bayern Munich a concédé sa deuxième défaite de la saison en Bundesliga face à Augsbourg 2-1 ce vendredi soir, en ouverture de la 12e journée du championnat allemand.

", + "content": "Sans Coman mais avec Hernandez, Upamecano et Pavard, le Bayern Munich a concédé sa deuxième défaite de la saison en Bundesliga face à Augsbourg 2-1 ce vendredi soir, en ouverture de la 12e journée du championnat allemand.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/bundesliga/bundesliga-deuxieme-defaite-pour-le-bayern-le-championnat-relance_AD-202111190493.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 21:50:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Disparition de Peng Shuai: des photos de la joueuse postées sur les réseaux sociaux chinois", + "description": "Disparue depuis le 2 novembre après avoir accusé un ancien haut dirigeant chinois de l’avoir violée, la joueuse de tennis Peng Shuai est apparue sur des photos qu’elle aurait envoyées à une amie via le réseau social chinois WeChat. Mais le doute demeure quant à la date de ces clichés. Et sa disparition reste inquiétante.

", + "content": "Disparue depuis le 2 novembre après avoir accusé un ancien haut dirigeant chinois de l’avoir violée, la joueuse de tennis Peng Shuai est apparue sur des photos qu’elle aurait envoyées à une amie via le réseau social chinois WeChat. Mais le doute demeure quant à la date de ces clichés. Et sa disparition reste inquiétante.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/disparition-de-peng-shuai-des-photos-de-la-joueuse-postees-sur-les-reseaux-sociaux-chinois_AV-202111190490.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 21:30:59 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Disparition de Peng Shuai: prêt à boycotter la Chine, Mahut dénonce le silence de l'ITF et du CIO", + "description": "Nicolas Mahut a réaffirmé ce vendredi sa volonté de boycotter les tournois en Chine si aucune nouvelle rassurante n’est publiée autour de Peng Shuai. Associé à Pierre-Hugues Herbert, le spécialiste du double a taclé la Fédération internationale de tennis et le CIO pour leur inaction.

", + "content": "Nicolas Mahut a réaffirmé ce vendredi sa volonté de boycotter les tournois en Chine si aucune nouvelle rassurante n’est publiée autour de Peng Shuai. Associé à Pierre-Hugues Herbert, le spécialiste du double a taclé la Fédération internationale de tennis et le CIO pour leur inaction.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/disparition-de-peng-shuai-mahut-denonce-le-silence-de-l-itf-et-du-cio-avant-les-jo-en-chine_AV-202111190488.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 21:19:55 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Premier League: Howe va rater son premier match avec Newcastle", + "description": "Eddie Howe ne sera pas sur le banc de Newcastle samedi face à Brentford, pour son premier match en tant qu'entraîneur des Magpies. Fraîchement nommé, l'ancien coach de Bournemouth est positif au Covid-19.

", + "content": "Eddie Howe ne sera pas sur le banc de Newcastle samedi face à Brentford, pour son premier match en tant qu'entraîneur des Magpies. Fraîchement nommé, l'ancien coach de Bournemouth est positif au Covid-19.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/premier-league/premier-league-howe-va-rater-son-premier-match-avec-newcastle_AD-202111190486.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 21:05:12 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comment l’image de la Ligue 1 s’est bonifiée selon Thierry Henry", + "description": "Le meilleur buteur de l’histoire de l’équipe de France, et actuel consultant pour Amazon Prime Vidéo, Thierry Henry a expliqué pourquoi la Ligue 1 suscite davantage d’intérêt depuis quelques années.

", + "content": "Le meilleur buteur de l’histoire de l’équipe de France, et actuel consultant pour Amazon Prime Vidéo, Thierry Henry a expliqué pourquoi la Ligue 1 suscite davantage d’intérêt depuis quelques années.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/comment-l-image-de-la-ligue-1-s-est-bonifiee-selon-thierry-henry_AV-202111190481.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 20:50:25 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Uruguay: le sélectionneur Tabarez viré après une mauvaise série", + "description": "L’Uruguay a officialisé ce vendredi la fin du contrat d’Oscar Tabarez. Sélectionneur depuis 2006, le technicien de 74 ans paie une série de quatre défaites consécutives et la septième place de la Celeste lors des éliminatoires sud-américains pour le Mondial 2022.

", + "content": "L’Uruguay a officialisé ce vendredi la fin du contrat d’Oscar Tabarez. Sélectionneur depuis 2006, le technicien de 74 ans paie une série de quatre défaites consécutives et la septième place de la Celeste lors des éliminatoires sud-américains pour le Mondial 2022.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/coupe-du-monde/qualifications/uruguay-le-selectionneur-tabarez-vire-apres-une-mauvaise-serie_AV-202111190476.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 20:14:39 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Euroleague: nouvelle défaite pour Monaco, surclassé par l'Efes", + "description": "L’AS Monaco a été largement dominée par les Turcs d’Efes Anadolu Istanbul 98-77 ce vendredi lors de la 11e journée d'Euroleague.

", + "content": "L’AS Monaco a été largement dominée par les Turcs d’Efes Anadolu Istanbul 98-77 ce vendredi lors de la 11e journée d'Euroleague.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/basket/euroligue/euroleague-nouvelle-defaite-pour-monaco-surclasse-par-anadolu_AD-202111190471.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:54:26 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "France-Nouvelle-Zélande: comment les Bleus abordent \"le grand défi\" face aux Blacks", + "description": "A l’image de leur capitaine Antoine Dupont, les joueurs du XV de France ont déjà la tête au Stade de France où ils défieront la Nouvelle-Zélande samedi soir pour leur troisième test-match d’automne. Le défi est immense mais les Bleus veulent croire en un exploit.

", + "content": "A l’image de leur capitaine Antoine Dupont, les joueurs du XV de France ont déjà la tête au Stade de France où ils défieront la Nouvelle-Zélande samedi soir pour leur troisième test-match d’automne. Le défi est immense mais les Bleus veulent croire en un exploit.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/rugby/tests-matchs/france-nouvelle-zelande-comment-les-bleus-abordent-le-grand-defi-face-aux-blacks_AV-202111190463.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:08:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Monaco-Lille en direct: mené 2-0, l'ASM arrache le nul, les Lillois peuvent s'en vouloir", + "description": "La 14e journée de Ligue 1 débute par un scénario renversant ce vendredi: mené 2-0, Monaco arrache le nul face à des Lillois qui ont arrêté de jouer après la pause.

", + "content": "La 14e journée de Ligue 1 débute par un scénario renversant ce vendredi: mené 2-0, Monaco arrache le nul face à des Lillois qui ont arrêté de jouer après la pause.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-suivez-le-match-monaco-lille-en-direct_LS-202111190455.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:06:54 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tennis: \"très préoccupés\" par le sort de Peng Shuai, les Etats-Unis réclament une \"preuve vérifiable\"", + "description": "La disparition de Peng Shuai, joueuse de tennis chinoise qui a accusé publiquement un ancien haut dirigeant de son pays de viol, inquiète fortement la Maison Blanche. Washington réclame une \"preuve vérifiable\" concernant la sécurité de la joueuse et se dit \"très préoccupé\".

", + "content": "La disparition de Peng Shuai, joueuse de tennis chinoise qui a accusé publiquement un ancien haut dirigeant de son pays de viol, inquiète fortement la Maison Blanche. Washington réclame une \"preuve vérifiable\" concernant la sécurité de la joueuse et se dit \"très préoccupé\".

", + "category": "", + "link": "https://rmcsport.bfmtv.com/tennis/tennis-tres-preoccupes-par-le-sort-de-peng-shuai-les-etats-unis-reclament-une-preuve-verifiable_AV-202111190446.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:53:06 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Prix de Bretagne : Première étape sur la route du Prix d'Amérique", + "description": "Première course qualificative pour le Prix d'Amérique, le Prix de Bretagne est programmé ce dimanche 21 novembre sur l'hippodrome de Vincennes avec notamment au départ Face Time Bourbon, le vainqueur des deux dernières éditions du Championnat du Monde de Trot attelé.

", + "content": "Première course qualificative pour le Prix d'Amérique, le Prix de Bretagne est programmé ce dimanche 21 novembre sur l'hippodrome de Vincennes avec notamment au départ Face Time Bourbon, le vainqueur des deux dernières éditions du Championnat du Monde de Trot attelé.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/paris-hippique/prix-de-bretagne-premiere-etape-sur-la-route-du-prix-d-amerique_AN-202111190443.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:38:00 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: Donnarumma-Navas, une concurrence saine… jusqu’à quand?", + "description": "Gianluigi Donnarumma malade et forfait, c'est Keylor Navas qui sera titulaire au poste de gardien du PSG, samedi soir face à Nantes (17h). Les deux hommes sont en concurrence depuis le début de la saison, sans hiérarchie établie. Une concurrence saine pour l'instant.

", + "content": "Gianluigi Donnarumma malade et forfait, c'est Keylor Navas qui sera titulaire au poste de gardien du PSG, samedi soir face à Nantes (17h). Les deux hommes sont en concurrence depuis le début de la saison, sans hiérarchie établie. Une concurrence saine pour l'instant.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-donnarumma-navas-une-concurrence-saine-jusqu-a-quand_AV-202111190432.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:08:56 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue 1: la DNCG maintient ses sanctions contre l’OM", + "description": "Comme au mois de juillet, la DNCG, le gendarme financier du football français, a décidé de maintenir l’encadrement de la masse salariale et des indemnités de transferts de l’Olympique de Marseille.

", + "content": "Comme au mois de juillet, la DNCG, le gendarme financier du football français, a décidé de maintenir l’encadrement de la masse salariale et des indemnités de transferts de l’Olympique de Marseille.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-la-dncg-maintient-ses-sanctions-contre-l-om_AV-202111190419.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:49:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester United: Solskjaer veut voir la trêve internationale comme un coup de boost", + "description": "Toujours très menacé à la tête de Manchester United, l’entraîneur des Red Devils Ole Gunnar Solskjaer estime que la trêve internationale a été bénéfique pour ses joueurs sur le plan mental. Confirmation attendue samedi après-midi sur la pelouse de Watford en Premier League.

", + "content": "Toujours très menacé à la tête de Manchester United, l’entraîneur des Red Devils Ole Gunnar Solskjaer estime que la trêve internationale a été bénéfique pour ses joueurs sur le plan mental. Confirmation attendue samedi après-midi sur la pelouse de Watford en Premier League.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/premier-league/manchester-united-solskjaer-veut-voir-la-treve-internationale-comme-un-coup-de-boost_AV-202111190406.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:32:49 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Barça: la mise en garde de Xavi à De Jong, dont il attend beaucoup plus", + "description": "Loin de son meilleur niveau en ce début de saison, Frenkie de Jong a été invité par son nouvel entraîneur Xavi à se montrer plus décisif. Le nouvel homme fort du FC Barcelone estime que le jeune milieu néerlandais a le potentiel pour passer un cap.

", + "content": "Loin de son meilleur niveau en ce début de saison, Frenkie de Jong a été invité par son nouvel entraîneur Xavi à se montrer plus décisif. Le nouvel homme fort du FC Barcelone estime que le jeune milieu néerlandais a le potentiel pour passer un cap.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/liga/barca-la-mise-en-garde-de-xavi-a-de-jong-dont-il-attend-beaucoup-plus_AV-202111190387.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:03:12 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "NBA: Kanter clashe LeBron James sur la Chine", + "description": "Le Turc Enes Kanter a taclé la position de LeBron James concernant la Chine. Le pivot turc regrette l’hypocrisie supposée de la star entre sa défense des luttes sociales et son goût pour l’argent.

", + "content": "Le Turc Enes Kanter a taclé la position de LeBron James concernant la Chine. Le pivot turc regrette l’hypocrisie supposée de la star entre sa défense des luttes sociales et son goût pour l’argent.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/basket/nba/nba-kanter-clashe-le-bron-james-sur-la-chine_AV-202111190381.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:54:34 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bayern: non vacciné, Kimmich absent face au Dynamo Kiev", + "description": "Cas contact, le milieu de terrain du Bayern Munich Joshua Kimmich, non vacciné, sera absent vendredi face à Augsbourg en Bundesliga et mardi face au Dynamo Kiev en Ligue des champions.

", + "content": "Cas contact, le milieu de terrain du Bayern Munich Joshua Kimmich, non vacciné, sera absent vendredi face à Augsbourg en Bundesliga et mardi face au Dynamo Kiev en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/bayern-non-vaccine-kimmich-absent-face-au-dynamo-kiev_AD-202111190347.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:11:57 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: Neymar dans le groupe contre Nantes, pas Marquinhos, ni Ramos", + "description": "Outre le forfait de Gianluigi Donnarumma, malade, le PSG devra aussi composer sans son capitaine Marquinhos pour affronter le FC Nantes ce samedi pour le compte de la 14e journée de Ligue 1. Neymar, qui était revenu blessé de la sélection brésilienne, est dans le groupe de Mauricio Pochettino.

", + "content": "Outre le forfait de Gianluigi Donnarumma, malade, le PSG devra aussi composer sans son capitaine Marquinhos pour affronter le FC Nantes ce samedi pour le compte de la 14e journée de Ligue 1. Neymar, qui était revenu blessé de la sélection brésilienne, est dans le groupe de Mauricio Pochettino.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-neymar-dans-le-groupe-contre-nantes-pas-marquinhos_AV-202111190328.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:45:12 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "F1: privé de baquet en 2022, le Français Théo Pourchaire va rester en Formule 2", + "description": "Barré par la nomination du Chinois Guanyu Zhou chez Alfa Romeo lors de la saison 2022 de Formule 1, le pilote français Théo Pourchaire (18 ans) n’effectuera pas ses grands débuts en F1 l’année prochaine. Frédéric Vasseur, patron de l'écurie suisse, a annoncé ce vendredi qu'il restera encore en F2 la saison prochaine.

", + "content": "Barré par la nomination du Chinois Guanyu Zhou chez Alfa Romeo lors de la saison 2022 de Formule 1, le pilote français Théo Pourchaire (18 ans) n’effectuera pas ses grands débuts en F1 l’année prochaine. Frédéric Vasseur, patron de l'écurie suisse, a annoncé ce vendredi qu'il restera encore en F2 la saison prochaine.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/auto-moto/f1/f1-prive-de-baquet-en-2022-le-francais-theo-pourchaire-va-rester-en-formule-2_AV-202111190325.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:42:40 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Transat Jacques-Vabre: l'idée pleine d'humour de Beyou pour une arrivée groupée", + "description": "Troisième de la Transat Jacques-Vabre, avec Christopher Pratt sur Charal, Jérémie Beyou a envoyé un petit message amusant à la direction de course ce vendredi matin, pour essayer de préserver l’arrivée groupée des différentes classes de bateaux en Martinique.

", + "content": "Troisième de la Transat Jacques-Vabre, avec Christopher Pratt sur Charal, Jérémie Beyou a envoyé un petit message amusant à la direction de course ce vendredi matin, pour essayer de préserver l’arrivée groupée des différentes classes de bateaux en Martinique.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/voile/transat-jacques-vabre-le-message-ironique-de-beyou-pour-esperer-l-arrivee-groupee_AV-202111190324.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:38:55 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OM: Ünder vers un forfait contre l’OL", + "description": "Cengiz Ünder s’est entraîné à part ce vendredi, avant le match de l’OM contre l'OL dimanche. Forfait avec la sélection turque, l’ailier marseillais sera probablement absent pour le choc de la 14e journée de Ligue 1.

", + "content": "Cengiz Ünder s’est entraîné à part ce vendredi, avant le match de l’OM contre l'OL dimanche. Forfait avec la sélection turque, l’ailier marseillais sera probablement absent pour le choc de la 14e journée de Ligue 1.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/om-under-vers-un-forfait-contre-l-ol_AV-202111190317.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:24:49 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Atlético: finalement, Griezmann pourra affronter l'AC Milan", + "description": "Diego Simeone pourra compter sur Antoine Griezmann pour le choc de Ligue des champions mercredi entre l'Atlético de Madrid et l'AC Milan. L'UEFA a décidé de réduire la suspension du Français après son rouge reçu contre Liverpool.

", + "content": "Diego Simeone pourra compter sur Antoine Griezmann pour le choc de Ligue des champions mercredi entre l'Atlético de Madrid et l'AC Milan. L'UEFA a décidé de réduire la suspension du Français après son rouge reçu contre Liverpool.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/atletico-finalement-griezmann-pourra-affronter-l-ac-milan_AV-202111190314.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:16:01 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OM: Payet n'a pas tiré un trait sur l'équipe de France", + "description": "Performant et régulier avec l'OM depuis plusieurs mois, Dimitri Payet est l'un des meilleurs joueurs de Ligue 1 cette saison. De quoi envisager un retour chez les Bleus, trois ans après sa dernière sélection? Le Réunionnais ne s'interdit rien, mais n'en fait pas une fixette non plus.

", + "content": "Performant et régulier avec l'OM depuis plusieurs mois, Dimitri Payet est l'un des meilleurs joueurs de Ligue 1 cette saison. De quoi envisager un retour chez les Bleus, trois ans après sa dernière sélection? Le Réunionnais ne s'interdit rien, mais n'en fait pas une fixette non plus.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/om-payet-n-a-pas-tire-un-trait-sur-l-equipe-de-france_AV-202111190298.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:47:46 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG: positif au coronavirus, De Bruyne manquera le choc", + "description": "Testé positif au Covid-19 à son retour de sélection, Kevin De Bruyne est contraint de respecter dix jours d'isolement. Le Belge est donc forfait pour le duel Manchester City-PSG programmé mercredi en Ligue des champions.

", + "content": "Testé positif au Covid-19 à son retour de sélection, Kevin De Bruyne est contraint de respecter dix jours d'isolement. Le Belge est donc forfait pour le duel Manchester City-PSG programmé mercredi en Ligue des champions.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-des-champions/manchester-city-psg-positif-au-coronavirus-de-bruyne-manquera-le-choc_AV-202111190297.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:43:43 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "PSG: Pochettino optimiste pour Neymar et Ramos avant Nantes", + "description": "Sergio Ramos et Neymar ont des chances d'être convoqués pour le match de la 14e journée de Ligue 1 entre le PSG et le FC Nantes, ce samedi (17h). Mauricio Pochettino a donné des nouvelles positives des deux joueurs en conférence de presse.

", + "content": "Sergio Ramos et Neymar ont des chances d'être convoqués pour le match de la 14e journée de Ligue 1 entre le PSG et le FC Nantes, ce samedi (17h). Mauricio Pochettino a donné des nouvelles positives des deux joueurs en conférence de presse.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/psg-pochettino-optimiste-pour-neymar-et-ramos-avant-nantes_AV-202111190281.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 13:54:13 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "F1: Mercedes débouté, pas de réexamen de l'incident Hamilton-Verstappen au Brésil", + "description": "La défense de Max Verstappen (Red Bull) contre la tentative de dépassement de Lewis Hamilton (Mercedes) au GP du Brésil de Formule 1 ne sera pas réexaminée. Le recours de Mercedes a été rejeté, ont indiqué vendredi les commissaires de la FIA.

", + "content": "La défense de Max Verstappen (Red Bull) contre la tentative de dépassement de Lewis Hamilton (Mercedes) au GP du Brésil de Formule 1 ne sera pas réexaminée. Le recours de Mercedes a été rejeté, ont indiqué vendredi les commissaires de la FIA.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/auto-moto/f1/f1-mercedes-deboute-pas-de-reexamen-de-l-incident-hamilton-verstappen-au-bresil_AV-202111190280.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 13:53:29 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OM: Sampaoli aimerait des joueurs confirmés au mercato", + "description": "Interrogé ce vendredi sur d'éventuels besoins lors du mercato hivernal, l'entraîneur de l'OM Jorge Sampaoli a fait passer un message à ses dirigeants en expliquant qu'il n'avait pas assez de joueurs confirmés à disposition. En reconnaissant toutefois qu'il n'est pas toujours possible d'obtenir ce que l'on désire.

", + "content": "Interrogé ce vendredi sur d'éventuels besoins lors du mercato hivernal, l'entraîneur de l'OM Jorge Sampaoli a fait passer un message à ses dirigeants en expliquant qu'il n'avait pas assez de joueurs confirmés à disposition. En reconnaissant toutefois qu'il n'est pas toujours possible d'obtenir ce que l'on désire.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/om-sampaoli-aimerait-des-joueurs-confirmes-au-mercato_AV-202111190279.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 13:50:56 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mercato en direct: Angers a son nouveau coordinateur sportif", + "description": "Le mercato d'hiver va ouvrir ses portes le 1er janvier, une date qui permettra aussi aux joueurs en fin de contrat en juin de négocier librement avec le club de leurs choix. Suivez toutes les informations et rumeurs en direct.

", + "content": "Le mercato d'hiver va ouvrir ses portes le 1er janvier, une date qui permettra aussi aux joueurs en fin de contrat en juin de négocier librement avec le club de leurs choix. Suivez toutes les informations et rumeurs en direct.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/transferts/mercato-en-direct-les-infos-et-les-rumeurs-du-18-novembre-2021_LN-202111180054.html", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 06:27:23 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue 1 en direct: masse salariale et transferts encadrés pour l'OM", + "description": "Fin de la trêve internationale et reprise de la Ligue 1 ce week-end, avec une 14e journée de championnat qui débute vendredi par Monaco-Lille. Retrouvez toutes les informations et déclarations à ne pas manquer avant les matchs.

", + "content": "Fin de la trêve internationale et reprise de la Ligue 1 ce week-end, avec une 14e journée de championnat qui débute vendredi par Monaco-Lille. Retrouvez toutes les informations et déclarations à ne pas manquer avant les matchs.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/ligue-1/ligue-1-en-direct-toutes-les-infos-avant-la-14e-journee_LN-202111170121.html", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 08:10:21 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire Hamraoui en direct: le message d'Eric Abidal à sa femme après sa demande de divorce", + "description": "Suivez toutes les informations en direct sur la rocambolesque agression dont a été victime la joueuse du PSG, Kheira Hamraoui.

", + "content": "Suivez toutes les informations en direct sur la rocambolesque agression dont a été victime la joueuse du PSG, Kheira Hamraoui.

", + "category": "", + "link": "https://rmcsport.bfmtv.com/football/affaire-hamraoui-diallo-en-direct-toutes-les-infos_LN-202111110108.html", + "creator": "", + "pubDate": "Thu, 11 Nov 2021 08:43:53 GMT", + "folder": "00.03 News/Sport - FR", + "feed": "RMC Sport", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/Sport - FR", + "name": "RMC Sport" + }, + { + "title": "SO FOOT.com", + "subtitle": "", + "link": "https://www.sofoot.com/", + "image": "", + "description": "Le site de l'actualité football, vue autrement. Un contenu original et décalé, un suivi pas à pas de l'actu foot en France, en Europe, dans le monde entier et ailleurs.", + "items": [ + { + "title": "Pronostic Nice Metz : Analyse, cotes et prono du match de Ligue 1", + "description": "

Nice retrouve son jeu face à Metz

\n
\nCandidat au podium, l'OGC Nice doit se montrer plus constant dans ses performances. En effet, les Aiglons…
", + "content": "

Nice retrouve son jeu face à Metz

\n
\nCandidat au podium, l'OGC Nice doit se montrer plus constant dans ses performances. En effet, les Aiglons…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-nice-metz-analyse-cotes-et-prono-du-match-de-ligue-1-507474.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T22:46:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Leicester et les Rangers se remettent en marche", + "description": "Leicester s'est idéalement replacé dans la course à la qualification en s'emparant de la première place de son groupe, à une journée du verdict de cette phase de poules. Les Foxes ont maîtrisé le Legia Varsovie (3-1) dans le sillage de James Maddison, buteur et passeur. Le PSV Eindhoven, les Rangers et l'Olympiakos ont eux aussi fait la loi devant leur public, s'imposant respectivement face au SK Sturm Graz (2-0), au Sparta Prague (2-0) et à Fenerbahçe (1-0). Les Grecs peuvent encore espérer passer devant l'Eintracht Francfort, qui n'a pas réussi à se défaire d'Antwerp (2-2).Dernier avant la cinquième journée, Leicester est désormais en pole position dans le groupe C. Les Foxes ont enfoncé un peu plus Foxes ont enfoncé un peu plus

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/monaco-glace-la-real-sociedad-et-composte-son-billet-507454.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lyon déroule à Brøndby ", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/lyon-deroule-a-br-c3-b8ndby-507439.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Villarreal Barcelone : Analyse, cotes et prono du match de Liga", + "description": "

Barcelone confirme ses progrès à Villarreal

\n
\nLa 15e journée de Liga nous offre une affiche entre deux formations qui disputent la Ligue des…
", + "content": "

Barcelone confirme ses progrès à Villarreal

\n
\nLa 15e journée de Liga nous offre une affiche entre deux formations qui disputent la Ligue des…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-villarreal-barcelone-analyse-cotes-et-prono-du-match-de-liga-507473.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T20:34:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Juventus Atalanta Bergame : Analyse, cotes et prono du match de Serie A", + "description": "

Réaction attendue de la Juventus face à l'Atalanta

\n
\nImpressionnante de domination sur la Serie A pendant de nombreuses saisons, la Juventus connaît…
", + "content": "

Réaction attendue de la Juventus face à l'Atalanta

\n
\nImpressionnante de domination sur la Serie A pendant de nombreuses saisons, la Juventus connaît…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-juventus-atalanta-bergame-analyse-cotes-et-prono-du-match-de-serie-a-507471.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T20:25:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Arsenal Newcastle : Analyse, cotes et prono du match de Premier League", + "description": "

Arsenal rebondit de suite face à Newcastle

\n
\nAprès avoir connu une entame de championnat compliquée avec une dernière place au soir de la…
", + "content": "

Arsenal rebondit de suite face à Newcastle

\n
\nAprès avoir connu une entame de championnat compliquée avec une dernière place au soir de la…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-arsenal-newcastle-analyse-cotes-et-prono-du-match-de-premier-league-507469.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T20:18:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Lille Nantes : Analyse, cotes et prono du match de Ligue 1", + "description": "

Un Lille – Nantes avec des buts de chaque côté

\n
\nChampion surprise la saison passée devant le Paris Saint-Germain, Lille devrait connaître un…
", + "content": "

Un Lille – Nantes avec des buts de chaque côté

\n
\nChampion surprise la saison passée devant le Paris Saint-Germain, Lille devrait connaître un…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-lille-nantes-analyse-cotes-et-prono-du-match-de-ligue-1-507468.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T19:56:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Monaco - Real Sociedad", + "description": "96' : C'EST FINI ! Monaco s'impose 2-1 face à la Real Sociedad et se qualifie pour les ...", + "content": "96' : C'EST FINI ! Monaco s'impose 2-1 face à la Real Sociedad et se qualifie pour les ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-monaco-real-sociedad-507453.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Brøndby - Lyon", + "description": "96' : TERMINE ! 5/5 POUR L'OL !
\n
\nEn jouant une mi-temps, et grâce à un grand Cherki, l'OL ...", + "content": "96' : TERMINE ! 5/5 POUR L'OL !
\n
\nEn jouant une mi-temps, et grâce à un grand Cherki, l'OL ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-br-c3-b8ndby-lyon-507437.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tapé par Galatasaray, l'OM ne verra pas la suite de la C3", + "description": "Objectif C4 pour Marseille, cogné à Istanbul (4-2).

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/tape-par-galatasaray-l-om-ne-verra-pas-la-suite-de-la-c3-507488.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T19:44:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rennes frustré par le Vitesse Arnhem, mais qualifié en huitièmes de finale", + "description": "Triplé de Laborde pour du beurre (3-3)... Mais qualif' en poche !

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/rennes-frustre-par-le-vitesse-arnhem-mais-qualifie-en-huitiemes-de-finale-507484.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T19:39:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Lazio engloutit le Lokomotiv, Leverkusen s'arrache face au Celtic ", + "description": "Avec sa victoire face au Lokomotiv Moscou (0-3), la Lazio a assuré sa qualification et l'élimination de Marseille. Dans le groupe G, le Bayer Lervekusen et le Real Betis ont également fait le nécessaire pour voir la suite de la compétition.Pendant que Marseille se faisait trimbaler par Galatasaray, la Lazio a tué…", + "content": "Pendant que Marseille se faisait trimbaler par Galatasaray, la Lazio a tué…", + "category": "", + "link": "https://www.sofoot.com/la-lazio-engloutit-le-lokomotiv-leverkusen-s-arrache-face-au-celtic-507487.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T19:38:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "DERNIER WEEK-END : 10€ offerts GRATOS en EXCLU pour parier sans pression !", + "description": "10€ à récupérer totalement gratuitement, c'est a priori bientôt fini chez ZEbet. Pour en profiter, il suffit de rentrer le code SOFOOT10EUROS

10€ offerts sans sortir sa CB chez ZEbet

\n
\nVous voulez obtenir 10€ sans verser le moindre centime pour parier sans pression ?
\n

", + "content": "

10€ offerts sans sortir sa CB chez ZEbet

\n
\nVous voulez obtenir 10€ sans verser le moindre centime pour parier sans pression ?
\n


", + "category": "", + "link": "https://www.sofoot.com/dernier-week-end-10e-offerts-gratos-en-exclu-pour-parier-sans-pression-507490.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T18:42:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La FIFA va tester le hors-jeu automatisé lors de la Coupe arabe", + "description": "La prochaine étape, c'est quoi ? Des joueurs bioniques ?
\n
\nLe football ne cesse de se révolutionner. Après l'arrivée de la goal-line technology, puis de la VAR ces dernières…

", + "content": "La prochaine étape, c'est quoi ? Des joueurs bioniques ?
\n
\nLe football ne cesse de se révolutionner. Après l'arrivée de la goal-line technology, puis de la VAR ces dernières…

", + "category": "", + "link": "https://www.sofoot.com/la-fifa-va-tester-le-hors-jeu-automatise-lors-de-la-coupe-arabe-507482.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T17:33:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Rennes - Vitesse Arnhem", + "description": "97' : Allez, je vous quitte sur cette joie de dernière minutes. Prenez soin de vous, bisous ...", + "content": "97' : Allez, je vous quitte sur cette joie de dernière minutes. Prenez soin de vous, bisous ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-rennes-vitesse-arnhem-507483.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T17:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Galatasaray - Marseille", + "description": "97' : FIN DE LA BOUCHERIE ! La C3, c'est déjà fini pour l'OM. La marche était visiblement trop ...", + "content": "97' : FIN DE LA BOUCHERIE ! La C3, c'est déjà fini pour l'OM. La marche était visiblement trop ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-galatasaray-marseille-507481.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T17:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Revenu sur les terrains, André Onana, gardien de l'Ajax, confirme son départ imminent", + "description": "Petite piqûre de rappel.
\n
\nUne page va se tourner du côté de l'Ajax.
", + "content": "Petite piqûre de rappel.
\n
\nUne page va se tourner du côté de l'Ajax.
", + "category": "", + "link": "https://www.sofoot.com/revenu-sur-les-terrains-andre-onana-gardien-de-l-ajax-confirme-son-depart-imminent-507480.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T16:50:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Antoine Kombouaré \"très affecté\" par le jet de bouteille sur Dimitri Payet lors de Lyon-Marseille", + "description": "Une bouteille d'eau, beaucoup de conséquences.
\n
\nComme bon nombre de ses confrères cette semaine, Antoine Kombouaré a été interrogé sur les incidents
", + "content": "Une bouteille d'eau, beaucoup de conséquences.
\n
\nComme bon nombre de ses confrères cette semaine, Antoine Kombouaré a été interrogé sur les incidents
", + "category": "", + "link": "https://www.sofoot.com/antoine-kombouare-tres-affecte-par-le-jet-de-bouteille-sur-dimitri-payet-lors-de-lyon-marseille-507478.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T16:34:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nick Mwendwa, président de la fédération kényane, acquitté", + "description": "Il peut finalement garder l'argent.
\n
\nLe président de la fédération kényane de football, Nick Mwendwa, a été acquitté dans une affaire de corruption. Arrêté le 12 novembre, il…

", + "content": "Il peut finalement garder l'argent.
\n
\nLe président de la fédération kényane de football, Nick Mwendwa, a été acquitté dans une affaire de corruption. Arrêté le 12 novembre, il…

", + "category": "", + "link": "https://www.sofoot.com/nick-mwendwa-president-de-la-federation-kenyane-acquitte-507470.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T16:27:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ralf Rangnick serait en pole position pour débarquer à Manchester United", + "description": "
La rumeur Rudi Garcia prend du plomb dans l'aile.
\n
\nDirecteur…

", + "content": "La rumeur Rudi Garcia prend du plomb dans l'aile.
\n
\nDirecteur…

", + "category": "", + "link": "https://www.sofoot.com/ralf-rangnick-serait-en-pole-position-pour-debarquer-a-manchester-united-507477.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T16:18:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pour Christophe Galtier (Nice), il faut \"nettoyer les tribunes\"", + "description": "Tous unis contre la bêtise.
\n
\nAprès les incidents survenus ce dimanche à Lyon et depuis le début de saison,…

", + "content": "Tous unis contre la bêtise.
\n
\nAprès les incidents survenus ce dimanche à Lyon et depuis le début de saison,…

", + "category": "", + "link": "https://www.sofoot.com/pour-christophe-galtier-nice-il-faut-nettoyer-les-tribunes-507476.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T15:50:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Championship : Paul Heckingbottom revient sur le banc de Sheffield United", + "description": "Started from the Heckingbottom.
\n
\nFaire du neuf avec du vieux. C'est ce que va tenter Sheffield United, en plein naufrage cette saison. Non pas que le nouvel entraîneur soit…

", + "content": "Started from the Heckingbottom.
\n
\nFaire du neuf avec du vieux. C'est ce que va tenter Sheffield United, en plein naufrage cette saison. Non pas que le nouvel entraîneur soit…

", + "category": "", + "link": "https://www.sofoot.com/championship-paul-heckingbottom-revient-sur-le-banc-de-sheffield-united-507475.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T15:40:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mino Raiola : \"La FIFA ? C'est une mafia\"", + "description": "L'hôpital, la charité...
\n
\nDans un monde du football où agents et avocats mandataires ont une influence grandissante, la FIFA tente depuis plusieurs mois de contrer l'importance de ces…

", + "content": "L'hôpital, la charité...
\n
\nDans un monde du football où agents et avocats mandataires ont une influence grandissante, la FIFA tente depuis plusieurs mois de contrer l'importance de ces…

", + "category": "", + "link": "https://www.sofoot.com/mino-raiola-la-fifa-c-est-une-mafia-507467.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T15:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un rapport parlementaire préconise la création d'un organe de contrôle et d'une taxe sur les transferts en Premier League", + "description": "Éthique projet.
\n
\nEn perpétuelle agitation, la Premier League pourrait connaître des changements radicaux au printemps prochain. À la suite de la tentative d'évasion de certains clubs…

", + "content": "Éthique projet.
\n
\nEn perpétuelle agitation, la Premier League pourrait connaître des changements radicaux au printemps prochain. À la suite de la tentative d'évasion de certains clubs…

", + "category": "", + "link": "https://www.sofoot.com/un-rapport-parlementaire-preconise-la-creation-d-un-organe-de-controle-et-d-une-taxe-sur-les-transferts-en-premier-league-507472.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T15:16:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mikel Arteta veut Arsène Wenger à ses côtés à Arsenal", + "description": "Le retour du patron ?
\n
\nParti d'Arsenal en mai 2018, Arsène Wenger reste bien sûr le plus grand entraîneur de l'histoire des Canonniers. Si l'intéressé,
", + "content": "Le retour du patron ?
\n
\nParti d'Arsenal en mai 2018, Arsène Wenger reste bien sûr le plus grand entraîneur de l'histoire des Canonniers. Si l'intéressé,
", + "category": "", + "link": "https://www.sofoot.com/mikel-arteta-veut-arsene-wenger-a-ses-cotes-a-arsenal-507465.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T14:31:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Footgate : Dejan Veljković premier repenti de l'histoire de la justice belge", + "description": "Des nouvelles des magouilles en Belgique.
\n
\nDejan Veljković, agent de joueurs serbe basé en Belgique, est devenu ce jeudi le premier \"repenti\" de la justice belge de l'histoire, dans…

", + "content": "Des nouvelles des magouilles en Belgique.
\n
\nDejan Veljković, agent de joueurs serbe basé en Belgique, est devenu ce jeudi le premier \"repenti\" de la justice belge de l'histoire, dans…

", + "category": "", + "link": "https://www.sofoot.com/footgate-dejan-veljkovic-premier-repenti-de-l-histoire-de-la-justice-belge-507459.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T14:16:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Athletic Bilbao Grenade : Analyse, cotes et prono du match de Liga", + "description": "

L'Athletic Bilbao maître à San Mamés face à Grenade

\n
\nCalé dans le ventre mou du classement de Liga, l'Athletic Bilbao a perdu de sa superbe et…
", + "content": "

L'Athletic Bilbao maître à San Mamés face à Grenade

\n
\nCalé dans le ventre mou du classement de Liga, l'Athletic Bilbao a perdu de sa superbe et…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-athletic-bilbao-grenade-analyse-cotes-et-prono-du-match-de-liga-507466.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T13:49:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Lens Angers : Analyse, cotes et prono du match de Ligue 1", + "description": "

Lens repart de l'avant face à Angers

\n
\nDe retour en Ligue 1 la saison dernière, le Racing Club de Lens avait été l'une des très bonnes…
", + "content": "

Lens repart de l'avant face à Angers

\n
\nDe retour en Ligue 1 la saison dernière, le Racing Club de Lens avait été l'une des très bonnes…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-lens-angers-analyse-cotes-et-prono-du-match-de-ligue-1-507464.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T13:43:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Stuttgart Mayence : Analyse, cotes et prono du match de Bundesliga", + "description": "

Mayence, la bonne opération face à Stuttgart

\n
\nDe retour dans l'élite du foot allemand l'an passé, Stuttgart avait réalisé un exercice…
", + "content": "

Mayence, la bonne opération face à Stuttgart

\n
\nDe retour dans l'élite du foot allemand l'an passé, Stuttgart avait réalisé un exercice…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-stuttgart-mayence-analyse-cotes-et-prono-du-match-de-bundesliga-507463.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T13:32:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Cagliari Salernitana : Analyse, cotes et prono du match de Serie A", + "description": "

Cagliari domine la Salernitana

\n
\nLa 14e journée de Serie A s'ouvre avec une affiche entre deux équipes mal classées, Cagliari et la Salernitana.…
", + "content": "

Cagliari domine la Salernitana

\n
\nLa 14e journée de Serie A s'ouvre avec une affiche entre deux équipes mal classées, Cagliari et la Salernitana.…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-cagliari-salernitana-analyse-cotes-et-prono-du-match-de-serie-a-507462.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T13:21:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ultra de l'OM : \"Une fois en meute, nous sommes habités\"", + "description": "Julien* est supporter de l'OM. Même plus que ça, à son sens : il est un ultra de l'OM, et ce, depuis une quinzaine d'années. Une activité, une passion ou un mode de vie (c'est selon) qui a conduit ce trentenaire à rencontrer un monde uni par des liens sacrés, mais aussi, par ses dérives et ses risques, à être interdit de stade pendant un an. Et forcément, l'agression de Dimitri Payet au Groupama Stadium et la condamnation du supporter lyonnais a fait ressurgir quelques souvenirs et de quoi le faire réagir. Témoignage d'un ultra parmi d'autres.Dimanche soir, les supporters marseillais n'étaient pas autorisés à se rendre à Lyon. Depuis ton salon, quelle était ta réaction au moment de l'incident qui a mené à…", + "content": "Dimanche soir, les supporters marseillais n'étaient pas autorisés à se rendre à Lyon. Depuis ton salon, quelle était ta réaction au moment de l'incident qui a mené à…", + "category": "", + "link": "https://www.sofoot.com/ultra-de-l-om-une-fois-en-meute-nous-sommes-habites-507407.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Brentford FC ne changera pas de maillot domicile pour la saison prochaine", + "description": "Brentford a créé le maillot 2021-2022-2023.
\n
\nDepuis 2012, les Bees changent d'envergure au fil des saisons. Et si leurs méthodes peu orthodoxes en matière de recrutement,…

", + "content": "Brentford a créé le maillot 2021-2022-2023.
\n
\nDepuis 2012, les Bees changent d'envergure au fil des saisons. Et si leurs méthodes peu orthodoxes en matière de recrutement,…

", + "category": "", + "link": "https://www.sofoot.com/le-brentford-fc-ne-changera-pas-de-maillot-domicile-pour-la-saison-prochaine-507458.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T12:31:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Robin Le Normand (Real Sociedad) : \"Le défi, c'est de jouer en équipe de France\"", + "description": "Voilà un Normand bien conquérant.
\n
\nArrivé en Espagne à l'âge de 20 ans, après un passage chez les jeunes à Brest, Robin Le Normand s'impose aujourd'hui comme un élément…

", + "content": "Voilà un Normand bien conquérant.
\n
\nArrivé en Espagne à l'âge de 20 ans, après un passage chez les jeunes à Brest, Robin Le Normand s'impose aujourd'hui comme un élément…

", + "category": "", + "link": "https://www.sofoot.com/robin-le-normand-real-sociedad-le-defi-c-est-de-jouer-en-equipe-de-france-507460.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T12:26:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jorge Mendes à nouveau inquiété par une enquête pour blanchiment d'argent", + "description": "Jorge de la jungle.
\n
\nEn mars 2020, plusieurs dizaines de perquisitions étaient venues émailler le…

", + "content": "Jorge de la jungle.
\n
\nEn mars 2020, plusieurs dizaines de perquisitions étaient venues émailler le…

", + "category": "", + "link": "https://www.sofoot.com/jorge-mendes-a-nouveau-inquiete-par-une-enquete-pour-blanchiment-d-argent-507448.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T12:19:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": " Tactique : que retenir de ce Manchester City-PSG ?", + "description": "Arrivé à Manchester avec un sapin pour boucher l'axe en phase défensive, le PSG est reparti avec des épines dans les poches de l'Etihad Stadium. Lâchés défensivement par leur trio offensif, déconnecté sans et même parfois avec ballon, les Parisiens ont progressivement laissé City déballer son plan et ses mécanismes rodés. Et finalement, les hommes de Guardiola, plus créatifs qu'à l'aller, ont récolté ce qu'ils ont semé.\"Ils font tout le temps ça, tout le temps...\" Mercredi soir, Marquinhos est reparti de Manchester avec un menu golden : des yeux fatigués, des maux de tête et une lassitude que le…", + "content": "\"Ils font tout le temps ça, tout le temps...\" Mercredi soir, Marquinhos est reparti de Manchester avec un menu golden : des yeux fatigués, des maux de tête et une lassitude que le…", + "category": "", + "link": "https://www.sofoot.com/tactique-que-retenir-de-ce-manchester-city-psg-507457.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T12:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kilos de marijuana, armes à feu : le bilan de la perquisition des Boixos Nois à Barcelone", + "description": "Mais ils voulaient faire fumer des éléphants ?
\n
\nDix-huit maisons perquisitionnées en plus des locaux du groupe, sept membres des \"Boixos Nois\" (frange radicale de supporters…

", + "content": "Mais ils voulaient faire fumer des éléphants ?
\n
\nDix-huit maisons perquisitionnées en plus des locaux du groupe, sept membres des \"Boixos Nois\" (frange radicale de supporters…

", + "category": "", + "link": "https://www.sofoot.com/kilos-de-marijuana-armes-a-feu-le-bilan-de-la-perquisition-des-boixos-nois-a-barcelone-507452.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T11:51:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Joško Gvardiol touché par un projectile lors de Bruges-Leipzig", + "description": "La bêtise n'a pas de frontière.
\n
\nDouze petites minutes, c'est le temps qu'il aura fallu pour que l'un des spectateurs du stade Jan-Breydel de Bruges, certainement inspiré par
", + "content": "La bêtise n'a pas de frontière.
\n
\nDouze petites minutes, c'est le temps qu'il aura fallu pour que l'un des spectateurs du stade Jan-Breydel de Bruges, certainement inspiré par
", + "category": "", + "link": "https://www.sofoot.com/josko-gvardiol-touche-par-un-projectile-lors-de-bruges-leipzig-507455.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T11:22:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "EuroMillions vendredi 26 novembre 2021 : 163 millions d'€ à gagner !", + "description": "163 millions d'euros à gagner à l'EuroMillions vendredi, cagnotte record de 27 millions d'euros au LOTO samedi. Le week-end sera aussi chargé en foot que chez la FDJ

EuroMillions du vendredi 26 novembre 2021 : 163M d'€

\n
\nLe jackpot de l'EuroMillions affiche 163 millions d'euros ce vendredi 26 novembre…
", + "content": "

EuroMillions du vendredi 26 novembre 2021 : 163M d'€

\n
\nLe jackpot de l'EuroMillions affiche 163 millions d'euros ce vendredi 26 novembre…
", + "category": "", + "link": "https://www.sofoot.com/euromillions-vendredi-26-novembre-2021-163-millions-d-e-a-gagner-507456.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T11:13:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Junior Messias, l'ancien livreur de frigo devenu héros du Milan", + "description": "Alors que l'AC Milan était à trois minutes d'une élimination peu reluisante en Ligue des champions, il a surgi. Héros inattendu, buteur surprise, Junior Messias a offert aux Rossoneri une victoire attendue depuis huit ans, relançant les espoirs de qualification. L'histoire est folle : le bonhomme, arrivé du Brésil en 2011, a longtemps travaillé sur les chantiers et en tant que livreur de frigo.Il y a deux façons d'expliquer à un jeune footballeur ce que signifient sacrifice et abnégation. On peut, d'une part, lui parler de la réalité d'un centre de formation : les…", + "content": "Il y a deux façons d'expliquer à un jeune footballeur ce que signifient sacrifice et abnégation. On peut, d'une part, lui parler de la réalité d'un centre de formation : les…", + "category": "", + "link": "https://www.sofoot.com/junior-messias-l-ancien-livreur-de-frigo-devenu-heros-du-milan-507450.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T11:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "John Fleck (Sheffield United) est sorti de l'hôpital après s'être effondré contre Reading", + "description": "Des nouvelles rassurantes.
\n
\nUne grosse frayeur a traversé les tribunes du Madejski Stadium de Reading lors de la rencontre opposant le club local à Sheffield United, en Championship. À…

", + "content": "Des nouvelles rassurantes.
\n
\nUne grosse frayeur a traversé les tribunes du Madejski Stadium de Reading lors de la rencontre opposant le club local à Sheffield United, en Championship. À…

", + "category": "", + "link": "https://www.sofoot.com/john-fleck-sheffield-united-est-sorti-de-l-hopital-apres-s-etre-effondre-contre-reading-507451.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T10:27:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Quand Rhys Healey (Toulouse FC) se livre sur ses goûts musicaux", + "description": "Don't stop him now.
\n
\nRhys Healey s'est livré dans une vidéo publiée par son club, le Toulouse FC, sur ses goûts musicaux. Le meilleur buteur de Ligue 2, auteur d'un quadruplé…

", + "content": "Don't stop him now.
\n
\nRhys Healey s'est livré dans une vidéo publiée par son club, le Toulouse FC, sur ses goûts musicaux. Le meilleur buteur de Ligue 2, auteur d'un quadruplé…

", + "category": "", + "link": "https://www.sofoot.com/quand-rhys-healey-toulouse-fc-se-livre-sur-ses-gouts-musicaux-507449.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T10:14:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "C3 : Prolonger le plaisir", + "description": "Toujours invaincus depuis le début de la compétition, l'Olympique de Marseille, l'AS Monaco et l'Olympique lyonnais entament le sprint final de la phase de groupes de Ligue Europa avec ambition. Carton plein et 100% de qualifiés ? L'espoir est permis, mais il faudra d'abord passer cette cinquième et avant-dernière journée sans encombre. Go !

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/c3-prolonger-le-plaisir-507443.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T10:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La DNCG garde la masse salariale des Girondins de Bordeaux sous contrôle", + "description": "La DNCG ne veut pas lâcher Bordeaux.
\n
\nAprès un premier passage cet été qui a suivi le rachat des Girondins par le Luxembourgeois Gérard Lopez, le gendarme financier du foot français…

", + "content": "La DNCG ne veut pas lâcher Bordeaux.
\n
\nAprès un premier passage cet été qui a suivi le rachat des Girondins par le Luxembourgeois Gérard Lopez, le gendarme financier du foot français…

", + "category": "", + "link": "https://www.sofoot.com/la-dncg-garde-la-masse-salariale-des-girondins-de-bordeaux-sous-controle-507446.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T09:06:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le numéro 24 de Loïc Perrin retiré à l'AS Saint-Étienne", + "description": "470 matchs et fidèle toute sa carrière au même club.
\n
\nLoïc Perrin est une légende du côté du Forez. Après qu'il a passé dix-sept saisons professionnelles à l'AS Saint-Étienne,…

", + "content": "470 matchs et fidèle toute sa carrière au même club.
\n
\nLoïc Perrin est une légende du côté du Forez. Après qu'il a passé dix-sept saisons professionnelles à l'AS Saint-Étienne,…

", + "category": "", + "link": "https://www.sofoot.com/le-numero-24-de-loic-perrin-retire-a-l-as-saint-etienne-507444.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T08:44:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après sa qualification pour la Coupe du monde, la Suisse remercie l'Irlande du Nord avec du chocolat", + "description": "Après l'effort vient le réconfort.
\n
\nLes joueurs nord-irlandais vont avoir le droit de faire une petite pause dans leur régime avec ce joli cadeau de la sélection suisse. Qualifiée…

", + "content": "Après l'effort vient le réconfort.
\n
\nLes joueurs nord-irlandais vont avoir le droit de faire une petite pause dans leur régime avec ce joli cadeau de la sélection suisse. Qualifiée…

", + "category": "", + "link": "https://www.sofoot.com/apres-sa-qualification-pour-la-coupe-du-monde-la-suisse-remercie-l-irlande-du-nord-avec-du-chocolat-507445.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T08:31:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jet de projectile : les victimes racontent", + "description": "Touché à la tête par une bouteille jetée des tribunes à Lyon dimanche soir, le capitaine marseillais Dimitri Payet a semblé atteint psychologiquement après cette agression. Étrangement, ce genre d'événements s'est tellement banalisé dans le sport ces dernières années que les autres victimes considèrent cette violence comme faisant partie intégrante du football.Pendant que Smaïl Bouabdellah, Johan Micoud, David Astorga et Thibault Le Rol s'occupaient de meubler l'antenne de Prime Video pendant deux longues heures d'attente, Thierry Henry semblait…", + "content": "Pendant que Smaïl Bouabdellah, Johan Micoud, David Astorga et Thibault Le Rol s'occupaient de meubler l'antenne de Prime Video pendant deux longues heures d'attente, Thierry Henry semblait…", + "category": "", + "link": "https://www.sofoot.com/jet-de-projectile-les-victimes-racontent-507409.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Didier Domi : \"Tu peux être dominé et subir, mais pas comme ça...\"", + "description": "Latéral gauche formé au Paris Saint-Germain et passé par le club de la capitale de 1994 à 1998, puis de 2001 à 2003, Didier Domi revient sur la prestation du PSG suite à la défaite du club parisien sur la pelouse de Manchester City en Ligue des champions (2-1).Quelle analyse fais-tu de cette première défaite du PSG en Ligue des champions cette année ?
\nQuand tu es entraîneur, tu analyses toujours les quatre ou cinq…
", + "content": "Quelle analyse fais-tu de cette première défaite du PSG en Ligue des champions cette année ?
\nQuand tu es entraîneur, tu analyses toujours les quatre ou cinq…
", + "category": "", + "link": "https://www.sofoot.com/didier-domi-tu-peux-etre-domine-et-subir-mais-pas-comme-ca-507441.html", + "creator": "SO FOOT", + "pubDate": "2021-11-25T00:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester City-PSG : le bâton pour se faire battre", + "description": "Cette victoire de Manchester City face au PSG (2-1) en Ligue des champions a rappelé deux choses : que malgré la défaite du match aller, le collectif des Citizens est plus costaud que celui des Parisiens. Et que Lionel Messi aime pratiquer la marche sur gazon.Sur les genoux, Kylian Mbappé fait semblant de conduire une voiture, ou de jouer à Mario Kart, avec son nouveau meilleur ami Achraf Hakimi. Le tableau d'affichage du stade indique la…", + "content": "Sur les genoux, Kylian Mbappé fait semblant de conduire une voiture, ou de jouer à Mario Kart, avec son nouveau meilleur ami Achraf Hakimi. Le tableau d'affichage du stade indique la…", + "category": "", + "link": "https://www.sofoot.com/manchester-city-psg-le-baton-pour-se-faire-battre-507440.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T23:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pedro Gonçalves, le petit prince du Sporting", + "description": "Auteur d'un doublé lors de la belle victoire face au Borussia Dortmund (3-1), Pedro Gonçalves a été l'un des grands artisans de la qualification en huitièmes de finale des champions du Portugal. Une confirmation après un cru 2020-2021 exceptionnel.Lorsque le speaker du stade José-Alvalade annonce la sortie du numéro 28 du Sporting, le public lisboète ne tarde pas à applaudir et à entonner des chants à gorge déployée. Pas parce que le…", + "content": "Lorsque le speaker du stade José-Alvalade annonce la sortie du numéro 28 du Sporting, le public lisboète ne tarde pas à applaudir et à entonner des chants à gorge déployée. Pas parce que le…", + "category": "", + "link": "https://www.sofoot.com/pedro-goncalves-le-petit-prince-du-sporting-507438.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:59:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Marquinhos : \"Le plus important, c'était de se qualifier\"", + "description": "L'heure du bilan.
\n
\nInterrogé par Canal+ au sortir de la défaite des siens face à Manchester City (2-1), Marquinhos justifie le revers parisien par les \"différentes stratégies…

", + "content": "L'heure du bilan.
\n
\nInterrogé par Canal+ au sortir de la défaite des siens face à Manchester City (2-1), Marquinhos justifie le revers parisien par les \"différentes stratégies…

", + "category": "", + "link": "https://www.sofoot.com/marquinhos-le-plus-important-c-etait-de-se-qualifier-507435.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:49:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les notes du PSG face à Manchester City", + "description": "Dominés de bout en bout par les Skyblues, les Parisiens ont failli faire le coup parfait, mais ont finalement rompu (2-1). Navas et Mbappé ont cru au hold-up, mais ont été rattrapés par la patrouille des Citizens.

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/les-notes-du-psg-face-a-manchester-city-507383.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:15:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kimpembe : \"La solution ? Bloc médian, coulisser\"", + "description": "C'est pourtant simple !
\n
\nComme tous ses coéquipiers, Presnel Kimpembe, auteur d'une prestation honorable face à Manchester City, était forcément \"déçu\" après la défaite…

", + "content": "C'est pourtant simple !
\n
\nComme tous ses coéquipiers, Presnel Kimpembe, auteur d'une prestation honorable face à Manchester City, était forcément \"déçu\" après la défaite…

", + "category": "", + "link": "https://www.sofoot.com/kimpembe-la-solution-bloc-median-coulisser-507436.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:13:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Real Madrid glace le Sheriff et file en huitièmes", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/le-real-madrid-glace-le-sheriff-et-file-en-huitiemes-507434.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:12:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les notes de Manchester City face au PSG", + "description": "Une fois n'est pas coutume, Jesus a encore sauvé son peuple. Ses apôtres Riyad, Bernardo et İlkay l'ont bien aidé dans sa mission.

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/les-notes-de-manchester-city-face-au-psg-507433.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Milan arrache la victoire contre l'Atlético et reste en vie", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/milan-arrache-la-victoire-contre-l-atletico-et-reste-en-vie-507431.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Sporting élimine Dortmund et file en huitièmes", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/le-sporting-elimine-dortmund-et-file-en-huitiemes-507428.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Liverpool enchaîne une cinquième victoire contre Porto", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/liverpool-enchaine-une-cinquieme-victoire-contre-porto-507426.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Leipzig détruit Bruges, doublé de Christopher Nkunku", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/leipzig-detruit-bruges-double-de-christopher-nkunku-507425.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T21:56:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le PSG écrabouillé 2-1 à Manchester City", + "description": "Dominateur de la tête et des épaules tout au long de la rencontre, Manchester City a pris sa revanche sur le PSG, deux mois après sa défaite au Parc des Princes. Menés au score sur un but de Mbappé, les Citizens ont renversé la table grâce à Sterling et Gabriel Jesus. Les voilà assurés de terminer en tête de cette poule A, tandis que Paris est qualifié en deuxième position.

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/le-psg-ecrabouille-2-1-a-manchester-city-507427.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T21:55:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'Inter vient à bout du Shakhtar grâce à un doublé de Džeko", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/l-inter-vient-a-bout-du-shakhtar-grace-a-un-double-de-dzeko-507430.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Atlético - AC Milan", + "description": "95' : FINITO ! Le Milan est venu à bout de cette crispante équipe rojiblanca. La dernière ...", + "content": "95' : FINITO ! Le Milan est venu à bout de cette crispante équipe rojiblanca. La dernière ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-atletico-ac-milan-507424.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Haller renverse Beşiktaş à lui seul", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/haller-renverse-besiktas-a-lui-seul-507422.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Manchester City - Paris S-G", + "description": "90' : Et c'est TER-MI-NE !
\n
\nMalgré un léger sursaut d'orgueil, Paris était en-dessous ce soir ...", + "content": "90' : Et c'est TER-MI-NE !
\n
\nMalgré un léger sursaut d'orgueil, Paris était en-dessous ce soir ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-manchester-city-paris-s-g-507432.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T19:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Naples surpris sur le terrain du Spartak Moscou", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/naples-surpris-sur-le-terrain-du-spartak-moscou-507423.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T17:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La DFL répond négativement à la demande d'Helge Leonhardt (Erzgebirge Aue) d'arrêter les championnats", + "description": "La fête n'est pas finie.
\n
\nAlors que les cas de Covid-19 flambent en Allemagne, le président du club de deuxième division Erzgebirge Aue, Helge Leonhardt, a fait part de son inquiétude…

", + "content": "La fête n'est pas finie.
\n
\nAlors que les cas de Covid-19 flambent en Allemagne, le président du club de deuxième division Erzgebirge Aue, Helge Leonhardt, a fait part de son inquiétude…

", + "category": "", + "link": "https://www.sofoot.com/la-dfl-repond-negativement-a-la-demande-d-helge-leonhardt-erzgebirge-aue-d-arreter-les-championnats-507421.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T17:20:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Youth League : les U19 du Paris Saint-Germain se qualifient pour le prochain tour après leur victoire sur Manchester City", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/youth-league-les-u19-du-paris-saint-germain-se-qualifient-pour-le-prochain-tour-apres-leur-victoire-sur-manchester-city-507418.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T17:08:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Karim Benzema reconnu coupable : Mathieu Valbuena \"soulagé\" selon son avocat", + "description": "Petit Vélo souffle enfin.
\n
\nC'est l'événement de ce mercredi : Karim Benzema a officiellement été
", + "content": "Petit Vélo souffle enfin.
\n
\nC'est l'événement de ce mercredi : Karim Benzema a officiellement été
", + "category": "", + "link": "https://www.sofoot.com/karim-benzema-reconnu-coupable-mathieu-valbuena-soulage-selon-son-avocat-507420.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T16:59:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "25 ultras de la Juve interdits de stade après le derby contre le Torino", + "description": "Une sanction à la hauteur.
\n
\nVingt-cinq membres de groupes ultras de la Juventus (\"Tradizione Antichi Valori\" et \"Bravi Ragazzi\") sont désormais interdits de stade pour des…

", + "content": "Une sanction à la hauteur.
\n
\nVingt-cinq membres de groupes ultras de la Juventus (\"Tradizione Antichi Valori\" et \"Bravi Ragazzi\") sont désormais interdits de stade pour des…

", + "category": "", + "link": "https://www.sofoot.com/25-ultras-de-la-juve-interdits-de-stade-apres-le-derby-contre-le-torino-507417.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T16:47:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La CAF inquiète pour l'organisation de la CAN 2022 au Cameroun", + "description": "La vérité de juin n'est pas celle de novembre.
\n
\nIl y a six mois, Véron Mosengo-Omba, secrétaire général de la Confédération africaine de football,
", + "content": "La vérité de juin n'est pas celle de novembre.
\n
\nIl y a six mois, Véron Mosengo-Omba, secrétaire général de la Confédération africaine de football,
", + "category": "", + "link": "https://www.sofoot.com/la-caf-inquiete-pour-l-organisation-de-la-can-2022-au-cameroun-507414.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T16:35:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Luís Figo : \"La Superligue est morte\"", + "description": "Luís le fossoyeur.
\n
\nRécemment, Florentino Pérez et Andrea Agnelli sont…

", + "content": "Luís le fossoyeur.
\n
\nRécemment, Florentino Pérez et Andrea Agnelli sont…

", + "category": "", + "link": "https://www.sofoot.com/luis-figo-la-superligue-est-morte-507416.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T16:13:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En District dans le Nord, une équipe fait souffler l'arbitre dans le ballon après la défaite", + "description": "De l'Allier au Nord en passant par l'Allier au Nord en passant par Il n'y a pas qu'en France que ça part en vrille.
\n
\nCe samedi, le football écossais nous a offert une histoire pour le moins rocambolesque. Déjà averti, Funso Ojo, milieu de terrain…

", + "content": "Il n'y a pas qu'en France que ça part en vrille.
\n
\nCe samedi, le football écossais nous a offert une histoire pour le moins rocambolesque. Déjà averti, Funso Ojo, milieu de terrain…

", + "category": "", + "link": "https://www.sofoot.com/aberdeen-une-enquete-contre-funso-ojo-apres-un-nouvel-incident-avec-un-supporter-adverse-507413.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T15:14:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'AS Saint-Étienne invite ses supporters à choisir son nouveau logo ", + "description": "L'heure du choix a sonné.
\n
\nDans quelques jours, l'AS Saint-Étienne révèlera son nouveau logo. Celui-ci sera choisi par tous les supporters et supportrices des Verts via
", + "content": "L'heure du choix a sonné.
\n
\nDans quelques jours, l'AS Saint-Étienne révèlera son nouveau logo. Celui-ci sera choisi par tous les supporters et supportrices des Verts via
", + "category": "", + "link": "https://www.sofoot.com/l-as-saint-etienne-invite-ses-supporters-a-choisir-son-nouveau-logo-507411.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T14:52:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Belgique : le racisme et l'homophobie décomplexés d'un club amateur, le KVV Duffel, sur TikTok", + "description": "Si les clubs amateurs s'y mettent...
\n
\nLe club du KVV Duffel, dernier de son championnat en sixième division belge, a innové dans la bêtise et fait monter le niveau d'un cran. L'équipe…

", + "content": "Si les clubs amateurs s'y mettent...
\n
\nLe club du KVV Duffel, dernier de son championnat en sixième division belge, a innové dans la bêtise et fait monter le niveau d'un cran. L'équipe…

", + "category": "", + "link": "https://www.sofoot.com/belgique-le-racisme-et-l-homophobie-decomplexes-d-un-club-amateur-le-kvv-duffel-sur-tiktok-507408.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T14:35:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bientôt des mi-temps de 25 minutes comme au Superbowl ?", + "description": "Ça va faire du bruit.
\n
\nC'est le genre de point évoqué à la fin des réunions. Celui qui n'est pas au programme, qui devrait être le moins intéressant, mais qui oblige tout le…

", + "content": "Ça va faire du bruit.
\n
\nC'est le genre de point évoqué à la fin des réunions. Celui qui n'est pas au programme, qui devrait être le moins intéressant, mais qui oblige tout le…

", + "category": "", + "link": "https://www.sofoot.com/bientot-des-mi-temps-de-25-minutes-comme-au-superbowl-507410.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T14:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Appel rejeté pour Fabrizio Miccoli, condamné à 3 ans et demi de prison ferme en Italie", + "description": "Miccoli piégé.
\n
\nL'ancien attaquant italien Fabrizio Miccoli a écopé d'une peine de trois ans et demi de prison ferme en Italie pour \"extorsion aggravée au moyen de méthode…

", + "content": "Miccoli piégé.
\n
\nL'ancien attaquant italien Fabrizio Miccoli a écopé d'une peine de trois ans et demi de prison ferme en Italie pour \"extorsion aggravée au moyen de méthode…

", + "category": "", + "link": "https://www.sofoot.com/appel-rejete-pour-fabrizio-miccoli-condamne-a-3-ans-et-demi-de-prison-ferme-en-italie-507400.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T13:34:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'avocat de Karim Benzema, Me Antoine Vey, dénonce \"une sanction totalement disproportionnée\"", + "description": "Le sursis ne lui va pas.
\n
\nCe mercredi matin,
", + "content": "Le sursis ne lui va pas.
\n
\nCe mercredi matin,
", + "category": "", + "link": "https://www.sofoot.com/l-avocat-de-karim-benzema-me-antoine-vey-denonce-une-sanction-totalement-disproportionnee-507405.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T13:04:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Benzema, pour l'exemple", + "description": "Karim Benzema a été condamné à un an de prison avec sursis et 75 000 euros d'amende. Il a décidé de faire appel puisque son avocat Me Sylvain Cormier rejette cette \" peine très sévère, injuste et sans preuve \". Le feuilleton n'est donc pas terminé sur le plan judiciaire. Toutefois cette première décision du tribunal clarifie le flou qui existait depuis qu'avait éclaté \" l'affaire de la sextape \", sans pour autant résorber les fractures qui se cristallisent autour de l'attaquant du Real Madrid.Le tribunal correctionnel de Versailles a été pour une fois très clair, indiquant que Karim Benzema (qui ne s'est Le début de saison a rappelé que Neymar n'avait plus son coup de rein destructeur. Et si l'heure était pour lui de se réinventer et de reculer sur le terrain ? Car ne nous mentons pas, le Brésilien en regista à la Andrea Pirlo est une alternative plus que prometteuse.Il est toujours difficile de faire des bilans en cours de saison. Mais après plus de trois mois de compétition, il est toutefois possible de tirer quelques enseignements de ce PSG new look. Exemple…", + "content": "Il est toujours difficile de faire des bilans en cours de saison. Mais après plus de trois mois de compétition, il est toutefois possible de tirer quelques enseignements de ce PSG new look. Exemple…", + "category": "", + "link": "https://www.sofoot.com/et-si-neymar-devait-jouer-en-numero-6-507389.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rudi Garcia pour s'installer sur le banc de Manchester United ?", + "description": "On ne l'avait pas vu venir, celle-ci.
\n
\n15 août 2020. Rudi Garcia traumatise Manchester City (3-1), grand favori pour accéder au dernier carré de la Ligue des champions. Malheureusement…

", + "content": "On ne l'avait pas vu venir, celle-ci.
\n
\n15 août 2020. Rudi Garcia traumatise Manchester City (3-1), grand favori pour accéder au dernier carré de la Ligue des champions. Malheureusement…

", + "category": "", + "link": "https://www.sofoot.com/rudi-garcia-pour-s-installer-sur-le-banc-de-manchester-united-507406.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T12:59:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'AC Ajaccio se considère comme \"le parfait bouc émissaire pour la commission de discipline\"", + "description": "Les Corses dérangent, énième épisode.
\n
\nAlors que les événements survenus dimanche soir à Décines lors…

", + "content": "Les Corses dérangent, énième épisode.
\n
\nAlors que les événements survenus dimanche soir à Décines lors…

", + "category": "", + "link": "https://www.sofoot.com/l-ac-ajaccio-se-considere-comme-le-parfait-bouc-emissaire-pour-la-commission-de-discipline-507404.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T11:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Marco Verratti et Georginio Wijnaldum (PSG) finalement incertains pour affronter Manchester City", + "description": "C'était trop beau pour être vrai.
\n
\nAlors que tout le monde pensait que Mauricio Pochettino allait disposer d'un effectif au grand complet pour le déplacement sur la pelouse de…

", + "content": "C'était trop beau pour être vrai.
\n
\nAlors que tout le monde pensait que Mauricio Pochettino allait disposer d'un effectif au grand complet pour le déplacement sur la pelouse de…

", + "category": "", + "link": "https://www.sofoot.com/marco-verratti-et-georginio-wijnaldum-psg-finalement-incertains-pour-affronter-manchester-city-507403.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T11:37:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Noël Le Graët confirme que Karim Benzema \"reste sélectionnable\" en équipe de France", + "description": "Un problème Benzema ? Quel problème Benzema ?
\n
\n\"Benzema ne sera pas exclu par rapport à une éventuelle sanction judiciaire\",
", + "content": "Un problème Benzema ? Quel problème Benzema ?
\n
\n\"Benzema ne sera pas exclu par rapport à une éventuelle sanction judiciaire\",
", + "category": "", + "link": "https://www.sofoot.com/noel-le-graet-confirme-que-karim-benzema-reste-selectionnable-en-equipe-de-france-507401.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T11:09:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Découvrez le grand et beau livre So Foot sur Zidane : roulettes, tonsure et première étoile", + "description": "Après Diego Maradona, So Foot s'attaque à une autre légende, le plus grand numéro 10 français (derrière Michel ?), avec un livre d'anecdotes, de belles photos et d'articles inédits de 200 pages retraçant son histoire : Zidane - Roulettes, tonsure et première étoile.
\n
\nGrâcieux, discret, simple, fougueux, extraterrestre, timide, violent, idolâtré, patriote, brillant, amoureux, présidentiable, aérien,…

", + "content": "
\n
\nGrâcieux, discret, simple, fougueux, extraterrestre, timide, violent, idolâtré, patriote, brillant, amoureux, présidentiable, aérien,…

", + "category": "", + "link": "https://www.sofoot.com/decouvrez-le-grand-et-beau-livre-so-foot-sur-zidane-roulettes-tonsure-et-premiere-etoile-507066.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T10:41:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Declan Rice (West Ham) tape un freestyle de rap dans un Space sur Twitter", + "description": "Quand on n'est pas qualifié en Ligue des champions, on s'occupe autrement.
\n
\nSur Twitter, l'événement phare de ce mardi soir n'était ni
", + "content": "Quand on n'est pas qualifié en Ligue des champions, on s'occupe autrement.
\n
\nSur Twitter, l'événement phare de ce mardi soir n'était ni
", + "category": "", + "link": "https://www.sofoot.com/declan-rice-west-ham-tape-un-freestyle-de-rap-dans-un-space-sur-twitter-507397.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T10:39:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Leicester Legia Varsovie : Analyse, cotes et prono du match de Ligue Europa", + "description": "

Leicester se relance face au Legia Varsovie

\n
\nCe groupe C d'Europa League est certainement l'un des plus ouverts. En effet, les 4 équipes du groupe…
", + "content": "

Leicester se relance face au Legia Varsovie

\n
\nCe groupe C d'Europa League est certainement l'un des plus ouverts. En effet, les 4 équipes du groupe…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-leicester-legia-varsovie-analyse-cotes-et-prono-du-match-de-ligue-europa-507399.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T10:33:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Monaco Real Sociedad : Analyse, cotes et prono du match de Ligue Europa", + "description": "

Monaco conserve sa 1re place face à la Real Sociedad

\n
\nDans ce groupe B de l'Europa League, quasiment tous les scenarii sont encore…
", + "content": "

Monaco conserve sa 1re place face à la Real Sociedad

\n
\nDans ce groupe B de l'Europa League, quasiment tous les scenarii sont encore…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-monaco-real-sociedad-analyse-cotes-et-prono-du-match-de-ligue-europa-507398.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T10:18:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Rennes Vitesse Arnhem : Analyse, cotes et prono du match de Ligue Europa Conférence", + "description": "

Rennes à pleine Vitesse

\n
\nInvaincu lors de ses 11 dernières rencontres toutes compétitions confondues, Rennes affiche sur cette période un…
", + "content": "

Rennes à pleine Vitesse

\n
\nInvaincu lors de ses 11 dernières rencontres toutes compétitions confondues, Rennes affiche sur cette période un…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-rennes-vitesse-arnhem-analyse-cotes-et-prono-du-match-de-ligue-europa-conference-507396.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T10:17:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Bröndby Lyon : Analyse, cotes et prono du match de Ligue Europa", + "description": "

Lyon enchaîne à Bröndby

\n
\nCette opposition entre Brondby et l'Olympique Lyonnais met aux prises les deux extrémités du groupe, puisque le club…
", + "content": "

Lyon enchaîne à Bröndby

\n
\nCette opposition entre Brondby et l'Olympique Lyonnais met aux prises les deux extrémités du groupe, puisque le club…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-brondby-lyon-analyse-cotes-et-prono-du-match-de-ligue-europa-507395.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T10:01:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Carlo Ancelotti : \"Pour entraîner, c'est mieux d'avoir une Ferrari qu'une Fiat 500\"", + "description": "Et la Formule 1, c'est mieux que le karting, c'est ça ?
\n
\nRevenu cet été au Real Madrid, Carlo Ancelotti réussit pour l'instant un début de saison idéal avec les Merengues.…

", + "content": "Et la Formule 1, c'est mieux que le karting, c'est ça ?
\n
\nRevenu cet été au Real Madrid, Carlo Ancelotti réussit pour l'instant un début de saison idéal avec les Merengues.…

", + "category": "", + "link": "https://www.sofoot.com/carlo-ancelotti-pour-entrainer-c-est-mieux-d-avoir-une-ferrari-qu-une-fiat-500-507393.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T09:58:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Galatasaray OM : Analyse, cotes et prono du match de Ligue Europa", + "description": "

L'OM joue le coup à fond à Galatasaray

\n
\nDans ce groupe E d'Europa League, les quatres formations peuvent encore espérer se qualifier :…
", + "content": "

L'OM joue le coup à fond à Galatasaray

\n
\nDans ce groupe E d'Europa League, les quatres formations peuvent encore espérer se qualifier :…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-galatasaray-om-analyse-cotes-et-prono-du-match-de-ligue-europa-507394.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T09:47:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire de la sextape : Karim Benzema jugé coupable et condamné à un an de prison avec sursis", + "description": "Le verdict est tombé.
\n
\nLe tribunal correctionnel de Versailles a reconnu Karim Benzema coupable de \"complicité de délit de tentative de chantage\" et l'a condamné à un an…

", + "content": "Le verdict est tombé.
\n
\nLe tribunal correctionnel de Versailles a reconnu Karim Benzema coupable de \"complicité de délit de tentative de chantage\" et l'a condamné à un an…

", + "category": "", + "link": "https://www.sofoot.com/affaire-de-la-sextape-karim-benzema-juge-coupable-et-condamne-a-un-an-de-prison-avec-sursis-507392.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T09:35:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jorge Jesus (Benfica) dévasté par l'occasion ratée de Haris Seferović face au FC Barcelone", + "description": "En voici un qui vient d'être rhabillé pour l'hiver.
\n
\nHaris Seferović a dû passer une sale soirée après son raté seul face à Marc-André ter Stegen dans les derniers souffles
", + "content": "En voici un qui vient d'être rhabillé pour l'hiver.
\n
\nHaris Seferović a dû passer une sale soirée après son raté seul face à Marc-André ter Stegen dans les derniers souffles
", + "category": "", + "link": "https://www.sofoot.com/jorge-jesus-benfica-devaste-par-l-occasion-ratee-de-haris-seferovic-face-au-fc-barcelone-507391.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T09:22:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samir Nasri ne serait pas surpris de voir Zinédine Zidane sur le banc du PSG", + "description": "L'ex-nouveau Zidane valide Zidane.
\n
\nSi la presse anglaise évoque avec insistance une arrivée de Mauricio Pochettino - actuellement en poste au PSG - vers Manchester United, la rumeur…

", + "content": "L'ex-nouveau Zidane valide Zidane.
\n
\nSi la presse anglaise évoque avec insistance une arrivée de Mauricio Pochettino - actuellement en poste au PSG - vers Manchester United, la rumeur…

", + "category": "", + "link": "https://www.sofoot.com/samir-nasri-ne-serait-pas-surpris-de-voir-zinedine-zidane-sur-le-banc-du-psg-507390.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T08:17:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comment choisir son but de foot ?", + "description": "Pliable, fixe, poteaux carrés ou ronds... Choisir son but de foot peut rapidement devenir un véritable casse-tête. Pour en terminer avec les cages formées par deux simples pulls ou sacs à dos, voici donc un guide absolu des buts de football parmi ceux proposés par le site Netsportique.fr.
\n

Gamme \"QUICKFIRE…", + "content": "

Gamme \"QUICKFIRE…", + "category": "", + "link": "https://www.sofoot.com/comment-choisir-son-but-de-foot-505861.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T05:35:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "LFP, FFF, Darmanin : le jeu de la bouteille", + "description": "Les instances du foot - sauf les représentants des supporters - dont la LFP et la FFF se sont réunies ce mardi 23 novembre, au ministère de l'Intérieur (le choix du lieu a son importance) en compagnie des ministres de la Justice et des Sports. L'objectif était clairement de proposer une réponse coordonnée à la multiplication des incidents et des débordements, couronnée donc dimanche soir par un jet d'une bouteille sur Dimitri Payet. Seule question : concrètement, qu'est-ce que cela va vraiment changer ?Pour l'instant, nous demeurons surtout dans la communication et la gestion de crise. La ministre des Sports Roxana Maracineanu l'a presque confessé au micro de RMC, rappelant une précédente…", + "content": "Pour l'instant, nous demeurons surtout dans la communication et la gestion de crise. La ministre des Sports Roxana Maracineanu l'a presque confessé au micro de RMC, rappelant une précédente…", + "category": "", + "link": "https://www.sofoot.com/lfp-fff-darmanin-le-jeu-de-la-bouteille-507371.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les clés de Manchester City-PSG", + "description": "Manchester City et le PSG s'apprêtent à en découdre pour la quatrième fois déjà en 2021 ce mercredi soir à l'Etihad Stadium (21h). En jeu : une qualification pour les huitièmes de finale de la Ligue des champions et une grosse option pour la première place du groupe A. Neymar, Messi, Mbappé, Verratti, Guardiola, Foden et même Grealish, le choc s'annonce titanesque. En voici les clés.
\t\t\t\t\t
", + "content": "
\t\t\t\t\t
", + "category": "", + "link": "https://www.sofoot.com/les-cles-de-manchester-city-psg-507364.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Roi David", + "description": "Une nouvelle fois buteur ce mardi soir face à Salzbourg (1-0) en Ligue des champions, Jonathan David confirme son rôle d'homme providentiel de l'attaque lilloise depuis le début de saison. Si le LOSC est à un match d'une qualif en C1, il le doit en (grande) partie à son buteur canadien.Qu'il semble loin, le temps où Jonathan David était qualifié d'attaquant aussi intéressant que maladroit. En l'espace d'un an, le gamin canadien a brûlé toutes les étapes plus vite les…", + "content": "Qu'il semble loin, le temps où Jonathan David était qualifié d'attaquant aussi intéressant que maladroit. En l'espace d'un an, le gamin canadien a brûlé toutes les étapes plus vite les…", + "category": "", + "link": "https://www.sofoot.com/le-roi-david-507388.html", + "creator": "SO FOOT", + "pubDate": "2021-11-24T00:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Merci le LOSC !", + "description": "À une journée de la fin de la phase de poules, Lille pointe à la première place de son groupe et peut rêver d'un ticket pour les huitièmes de finale de Ligue des champions. En attendant une possible récompense à Wolfsburg dans quinze jours, le LOSC a le mérite de se montrer à la hauteur dans une compétition que l'on pensait trop grande pour lui.Il faut croire que cette équipe du LOSC est taillée pour les soirées de gala. À la peine en championnat, où ils ont connu plusieurs cruelles déconvenues depuis le début de saison, les Dogues…", + "content": "Il faut croire que cette équipe du LOSC est taillée pour les soirées de gala. À la peine en championnat, où ils ont connu plusieurs cruelles déconvenues depuis le début de saison, les Dogues…", + "category": "", + "link": "https://www.sofoot.com/merci-le-losc-507387.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T23:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le boss, c'est Chelsea ! ", + "description": "On attendait une finale pour la première place du groupe H à Stamford Bridge entre Chelsea et la Juventus ? On a assisté à un attaque-défense. La faute à des Blues flamboyants et supérieurs dans tous les compartiments du jeu, qui ont torturé une équipe turinoise soudain rappelée à ses limites du moment et repartie de Londres avec un message à transmettre au reste de l'Europe : le tenant du titre a bien l'intention de le rester.Seize occasions à sept, 21 tirs à 8, 8 tentatives cadrées à 2, 13 corners à 3, 20 centres à 6 : voici donc, en chiffres, le détail de l'ultra-domination de Chelsea ce mardi soir à Stamford…", + "content": "Seize occasions à sept, 21 tirs à 8, 8 tentatives cadrées à 2, 13 corners à 3, 20 centres à 6 : voici donc, en chiffres, le détail de l'ultra-domination de Chelsea ce mardi soir à Stamford…", + "category": "", + "link": "https://www.sofoot.com/le-boss-c-est-chelsea-507384.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T23:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Gourvennec : \"L'histoire, on l'écrit\" ", + "description": "Gourvennec est en passe de gagner son pari européen.
\n
\nAvec la victoire de son LOSC face à Salzbourg (1-0) ce mardi soir à domicile, Jocelyn Gourvennec s'est montré globalement…

", + "content": "Gourvennec est en passe de gagner son pari européen.
\n
\nAvec la victoire de son LOSC face à Salzbourg (1-0) ce mardi soir à domicile, Jocelyn Gourvennec s'est montré globalement…

", + "category": "", + "link": "https://www.sofoot.com/gourvennec-l-histoire-on-l-ecrit-507385.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'Atalanta arrache un point sur le fil à Berne", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/l-atalanta-arrache-un-point-sur-le-fil-a-berne-507374.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:10:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Séville maîtrise Wolfsburg et se relance", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/seville-maitrise-wolfsburg-et-se-relance-507381.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:05:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les notes de l'épisode 12 de Koh-Lanta La Légende", + "description": "Deux éliminés, un gâteau au chocolat et à la banane, une épreuve d'immunité mythique qui aurait mérité un commentaire de Patrick Montel. C'était l'épisode 12 de Koh-Lanta La Légende, voici les notes.

La tribu réunifiée

\n
\n
\n
\nOn lui parle de gâteau…


", + "content": "

La tribu réunifiée

\n
\n
\n
\nOn lui parle de gâteau…


", + "category": "", + "link": "https://www.sofoot.com/les-notes-de-l-episode-12-de-koh-lanta-la-legende-507360.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:05:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les notes de Lille face à Salzbourg ", + "description": "Jonathan David et Reinildo ont bien fait le travail pour permettre à Lille de s'imposer et de prendre la tête de son groupe. Leurs coéquipiers n'ont pas été nuls non plus.

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/les-notes-de-lille-face-a-salzbourg-507382.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Zénith frustre Malmö", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/le-zenith-frustre-malmo-507380.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Chelsea broie la Juve et tamponne son ticket", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/chelsea-broie-la-juve-et-tamponne-son-ticket-507379.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lille terrasse Salzbourg", + "description": "Disciplinés et délivrés par un nouveau but de Jonathan David, les Lillois se sont emparés de la tête du groupe G en faisant vaciller le Red Bull Salzbourg, ce mardi au stade Pierre-Mauroy (1-0). Une deuxième victoire consécutive en C1 pour le champion de France en titre qui fait honneur à son statut et qui toque plus que jamais à la porte des huitièmes de finale de la Ligue des champions.

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/lille-terrasse-salzbourg-507378.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Barça et Benfica dos à dos", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/le-barca-et-benfica-dos-a-dos-507377.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Koh-Lanta, la légende épisode 12", + "description": "Koh-Lanta c'est comme les dîners avec la belle-mère : une semaine de pause, parfois ça fait du bien. Le demi-épisode du soir promet de conclure l'arc entamé dans l'épisode onze, avec une épreuve d'immunité et le Conseil. C'est tout, direz-vous ? Soyons d'accord : ça paraît suspect. Préparez le popcorn.23h05 : Bon les petits potes, on se quitte sur ces promesses de nouvelle épreuve éliminatoire la semaine prochaine après un épisode aussi grand que Frédéric Sammaritano. J'ai envie de…", + "content": "23h05 : Bon les petits potes, on se quitte sur ces promesses de nouvelle épreuve éliminatoire la semaine prochaine après un épisode aussi grand que Frédéric Sammaritano. J'ai envie de…", + "category": "", + "link": "https://www.sofoot.com/en-direct-koh-lanta-la-legende-episode-12-507372.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T20:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ronaldo et Sancho punissent Villarreal au bout de l'ennui", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/ronaldo-et-sancho-punissent-villarreal-au-bout-de-l-ennui-507369.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T19:50:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Lille - RB Salzbourg", + "description": "97' : Fin de chantier ! Lille s'impose contre le RB Salzbourg (1-0) grâce à un but de l'artiste ...", + "content": "97' : Fin de chantier ! Lille s'impose contre le RB Salzbourg (1-0) grâce à un but de l'artiste ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-lille-rb-salzbourg-507376.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Chelsea - Juventus", + "description": "95' : ON N'IRA PAS PLUS LOIN ! Quelle fessée donnée par les champions d'Europe face à cette ...", + "content": "95' : ON N'IRA PAS PLUS LOIN ! Quelle fessée donnée par les champions d'Europe face à cette ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-chelsea-juventus-507375.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Bayern bousculé, mais vainqueur à Kiev", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/le-bayern-bouscule-mais-vainqueur-a-kiev-507366.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Barcelone - Benfica ", + "description": "96' : ET C'EST TERMINÉ !!!! 0-0 entre le Barça et Benfica. Un score logique tant personne ...", + "content": "96' : ET C'EST TERMINÉ !!!! 0-0 entre le Barça et Benfica. Un score logique tant personne ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-barcelone-benfica-507362.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bafé Gomis, Moussa Marega et Leonardo Jardim champions d'Asie !", + "description": "

Al-Hilal 2-0 Pohang Steelers

\nButs : Al-Dawsari (1re) et Marega (63e)
\n
\nDéjà vainqueur en 2019, Bafétimbi Gomis…

", + "content": "

Al-Hilal 2-0 Pohang Steelers

\nButs : Al-Dawsari (1re) et Marega (63e)
\n
\nDéjà vainqueur en 2019, Bafétimbi Gomis…

", + "category": "", + "link": "https://www.sofoot.com/bafe-gomis-moussa-marega-et-leonardo-jardim-champions-d-asie-507370.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T18:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ryan Babel va sortir un album de rap autobiographique", + "description": "Vivement le Tour de Babel !
\n
\nL'ancien joueur de Liverpool et international néerlandais s'est confié au

", + "content": "Vivement le Tour de Babel !
\n
\nL'ancien joueur de Liverpool et international néerlandais s'est confié au


", + "category": "", + "link": "https://www.sofoot.com/ryan-babel-va-sortir-un-album-de-rap-autobiographique-507368.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T17:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Olivier Létang élu meilleur président d'Europe par Tuttosport", + "description": "Olivier dans les temps.
\n
\nAprès avoir décerné, sans grande surprise,
le Golden Boy 2021 à Pedri ce…

", + "content": "Olivier dans les temps.
\n
\nAprès avoir décerné, sans grande surprise, le Golden Boy 2021 à Pedri ce…

", + "category": "", + "link": "https://www.sofoot.com/olivier-letang-elu-meilleur-president-d-europe-par-tuttosport-507365.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T17:15:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Victor Osimhen forfait pour la CAN 2022", + "description": "Gros mal de crâne pour le Nigeria.
\n
\nSorti à la 55e minute du choc entre l'Inter Milan et le Napoli (3-2) après un duel aérien avec Milan Škriniar, Victor Osimhen sera…

", + "content": "Gros mal de crâne pour le Nigeria.
\n
\nSorti à la 55e minute du choc entre l'Inter Milan et le Napoli (3-2) après un duel aérien avec Milan Škriniar, Victor Osimhen sera…

", + "category": "", + "link": "https://www.sofoot.com/victor-osimhen-forfait-pour-la-can-2022-507363.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T17:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'ex-entraîneur du Werder Brême empêtré dans une sombre histoire de carnaval", + "description": "Sale histoire.
\n
\nTrois jours après avoir présenté sa démission du poste d'entraîneur du…

", + "content": "Sale histoire.
\n
\nTrois jours après avoir présenté sa démission du poste d'entraîneur du…

", + "category": "", + "link": "https://www.sofoot.com/l-ex-entraineur-du-werder-breme-empetre-dans-une-sombre-histoire-de-carnaval-507361.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T16:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Six mois de prison avec sursis et cinq ans d'interdiction de stade pour le lanceur de bouteille", + "description": "À bon entendeur.
\n
\nAlors que l'audience des incidents survenus à la suite de l'Olympico touchait à sa fin ce mercredi après-midi, la président du tribunal correctionnel de Lyon a…

", + "content": "À bon entendeur.
\n
\nAlors que l'audience des incidents survenus à la suite de l'Olympico touchait à sa fin ce mercredi après-midi, la président du tribunal correctionnel de Lyon a…

", + "category": "", + "link": "https://www.sofoot.com/six-mois-de-prison-avec-sursis-et-cinq-ans-d-interdiction-de-stade-pour-le-lanceur-de-bouteille-507367.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T16:15:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jesse Marsch et Péter Gulácsi testés positifs à la Covid-19", + "description": "Les bulletins de santé sont de retour.
\n
\nPour le RB Leipzig, actuel dernier du groupe A avec un petit point, loin derrière Manchester City et le Paris Saint-Germain, une victoire à…

", + "content": "Les bulletins de santé sont de retour.
\n
\nPour le RB Leipzig, actuel dernier du groupe A avec un petit point, loin derrière Manchester City et le Paris Saint-Germain, une victoire à…

", + "category": "", + "link": "https://www.sofoot.com/jesse-marsch-et-peter-gulacsi-testes-positifs-a-la-covid-19-507359.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T15:15:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Une panne mécanique vient gâcher le match d'une équipe de Régional 2 ", + "description": "Le vrai coup de la panne.
\n
\nEn déplacement ce samedi à Perpignan afin d'y affronter le Perpignan Sporting Nord pour le compte de la 7e journée de Régional 2, l'USA Pezens…

", + "content": "Le vrai coup de la panne.
\n
\nEn déplacement ce samedi à Perpignan afin d'y affronter le Perpignan Sporting Nord pour le compte de la 7e journée de Régional 2, l'USA Pezens…

", + "category": "", + "link": "https://www.sofoot.com/une-panne-mecanique-vient-gacher-le-match-d-une-equipe-de-regional-2-507354.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T15:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La vente de l'ASSE finalement repoussée", + "description": "Retour à la case départ.
\n
\nDepuis plusieurs semaines, les dirigeants de Saint-Étienne s'activaient en coulisses afin de trouver les futurs repreneurs du club. Le cabinet d'audit KPMG,…

", + "content": "Retour à la case départ.
\n
\nDepuis plusieurs semaines, les dirigeants de Saint-Étienne s'activaient en coulisses afin de trouver les futurs repreneurs du club. Le cabinet d'audit KPMG,…

", + "category": "", + "link": "https://www.sofoot.com/la-vente-de-l-asse-finalement-repoussee-507358.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T14:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire Hamraoui : le message d'excuse d'Éric Abidal à sa femme", + "description": "Attention, cette séquence d'autoflagellation peut heurter les âmes sensibles.
\n
\n\"Hayet Abidal pardonne-moi. Peu importe ta décision, tu resteras à mes yeux la femme de ma vie, et…

", + "content": "Attention, cette séquence d'autoflagellation peut heurter les âmes sensibles.
\n
\n\"Hayet Abidal pardonne-moi. Peu importe ta décision, tu resteras à mes yeux la femme de ma vie, et…

", + "category": "", + "link": "https://www.sofoot.com/affaire-hamraoui-le-message-d-excuse-d-eric-abidal-a-sa-femme-507351.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T14:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Club Bruges Leipzig : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

Des buts entre le Club Bruges et Leipzig

\n
\nDans un groupe qui comprend Manchester City et le Paris Saint-Germain, le Club Bruges et Leipzig étaient…
", + "content": "

Des buts entre le Club Bruges et Leipzig

\n
\nDans un groupe qui comprend Manchester City et le Paris Saint-Germain, le Club Bruges et Leipzig étaient…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-club-bruges-leipzig-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507355.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T13:51:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Sporting Borussia Dortmund : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

Le Sporting profite des absences du Borussia Dortmund

\n
\nCette opposition entre le Sporting Lisbonne et le Borussia Dortmund est très importante dans…
", + "content": "

Le Sporting profite des absences du Borussia Dortmund

\n
\nCette opposition entre le Sporting Lisbonne et le Borussia Dortmund est très importante dans…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-sporting-borussia-dortmund-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507349.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T13:38:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Atlético Madrid Milan AC : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

L'Atlético Madrid enfonce un Milan AC presque résigné

\n
\nL'Atletico Madrid et le Milan AC jouent un match très important dans le cadre de la…
", + "content": "

L'Atlético Madrid enfonce un Milan AC presque résigné

\n
\nL'Atletico Madrid et le Milan AC jouent un match très important dans le cadre de la…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-atletico-madrid-milan-ac-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507353.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T13:35:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un joueur reçoit un scalpel pendant le Clásico en Colombie", + "description": "OL-OM, c'est de l'eau.
\n
\nLors du Clásico du championnat de Colombie, entre l'Atlético Nacional de Medellín et le Millonarios FC de Bogota, l'ambiance était électrique. Et les ultras…

", + "content": "OL-OM, c'est de l'eau.
\n
\nLors du Clásico du championnat de Colombie, entre l'Atlético Nacional de Medellín et le Millonarios FC de Bogota, l'ambiance était électrique. Et les ultras…

", + "category": "", + "link": "https://www.sofoot.com/un-joueur-recoit-un-scalpel-pendant-le-clasico-en-colombie-507352.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T13:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Des jeunes du Stade rennais viennent jouer dans un centre pénitentiaire", + "description": "Mi-temps au mitard.
\n
\nHabituées au centre d'entraînement de La Piverdière, les jeunes pousses du Stade rennais se sont délocalisées, le temps d'un après-midi. Deux matchs ont été…

", + "content": "Mi-temps au mitard.
\n
\nHabituées au centre d'entraînement de La Piverdière, les jeunes pousses du Stade rennais se sont délocalisées, le temps d'un après-midi. Deux matchs ont été…

", + "category": "", + "link": "https://www.sofoot.com/des-jeunes-du-stade-rennais-viennent-jouer-dans-un-centre-penitentiaire-507350.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tiago Djaló au centre des attentions", + "description": "Solide depuis la blessure de Sven Botman mi-octobre, Tiago Djaló rassure son monde et postule pour s'installer durablement au sein de la charnière lilloise à court-terme. Cela tombe bien, le LOSC a besoin de lui dès ce mardi soir face à Salzbourg (21h) en Ligue des champions.
\t\t\t\t\t
", + "content": "
\t\t\t\t\t
", + "category": "", + "link": "https://www.sofoot.com/tiago-djalo-au-centre-des-attentions-507347.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le plus grand Tabárez du monde", + "description": "Au terme de quinze ans d'excellents et loyaux services, Óscar Tabárez a tiré sa révérence. Poussé vers la sortie par sa fédération, l'Uruguayen paie un mauvais début de campagne qualificative à la Coupe du monde 2022. Un final triste, mais inéluctable, pour l'homme qui a ramené la Celeste au sommet.Le 19 novembre dernier, l'ère Tabárez touchait officiellement à sa fin. Celle d'un professionnel de 74 ans, en poste depuis le 7 mars 2006 et assis sur le banc national 194 matchs durant. Mais…", + "content": "Le 19 novembre dernier, l'ère Tabárez touchait officiellement à sa fin. Celle d'un professionnel de 74 ans, en poste depuis le 7 mars 2006 et assis sur le banc national 194 matchs durant. Mais…", + "category": "", + "link": "https://www.sofoot.com/le-plus-grand-tabarez-du-monde-507329.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sergio Ramos dans le groupe parisien pour affronter Manchester City", + "description": "Hallelujah !
\n
\nIl aura donc fallu attendre 139 jours pour voir Sergio Ramos être convoqué dans le groupe du Paris Saint-Germain. Et le colosse de 35 ans a bien choisi son moment, puisque…

", + "content": "Hallelujah !
\n
\nIl aura donc fallu attendre 139 jours pour voir Sergio Ramos être convoqué dans le groupe du Paris Saint-Germain. Et le colosse de 35 ans a bien choisi son moment, puisque…

", + "category": "", + "link": "https://www.sofoot.com/sergio-ramos-dans-le-groupe-parisien-pour-affronter-manchester-city-507340.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T12:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'AS Roma au cœur d'une polémique raciste à cause des chaussures d'Afena-Gyan", + "description": "Décidément, tout va beaucoup trop vite avec Afena-Gyan.
\n
\nAprès avoir…

", + "content": "Décidément, tout va beaucoup trop vite avec Afena-Gyan.
\n
\nAprès avoir…

", + "category": "", + "link": "https://www.sofoot.com/l-as-roma-au-coeur-d-une-polemique-raciste-a-cause-des-chaussures-d-afena-gyan-507342.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T12:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Darmanin donne deux semaines pour trouver des solutions en tribune", + "description": "On n'est plus à quinze jours près.
\n
\nGérald Darmanin, le ministre de l'Intérieur, a décidé qu'une deuxième réunion était nécessaire pour tenter de trouver des solutions et…

", + "content": "On n'est plus à quinze jours près.
\n
\nGérald Darmanin, le ministre de l'Intérieur, a décidé qu'une deuxième réunion était nécessaire pour tenter de trouver des solutions et…

", + "category": "", + "link": "https://www.sofoot.com/darmanin-donne-deux-semaines-pour-trouver-des-solutions-en-tribune-507345.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T11:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pochettino, l'appel du large", + "description": "Même si les résultats comptables sont brillants avant d'aller défier Manchester City, le PSG de Mauricio Pochettino ne fait pas rêver. Pis, il agace. Et l'avenir du coach argentin, arrivé en janvier dernier, pourrait vite s'écrire loin du Parc des Princes tant les rumeurs d'un départ vers Manchester United se font insistantes après celles de l'été dernier le renvoyant à Tottenham. D'autant que dans le même temps, le nom de Zinédine Zidane rôde dans les couloirs de Doha et que l'Argentin, en deux récentes interviews, a salement amoché son club. Paris, ton univers impitoyable.
\t\t\t\t\t
", + "content": "
\t\t\t\t\t
", + "category": "", + "link": "https://www.sofoot.com/pochettino-l-appel-du-large-507339.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T11:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Sheriff Tiraspol Real Madrid : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

Le Real Madrid prend sa revanche face au Sheriff Tiraspol

\n
\nParti sur les chapeaux de roue, le Sheriff Tiraspol a remporté ses deux premiers matchs de…
", + "content": "

Le Real Madrid prend sa revanche face au Sheriff Tiraspol

\n
\nParti sur les chapeaux de roue, le Sheriff Tiraspol a remporté ses deux premiers matchs de…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-sheriff-tiraspol-real-madrid-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507346.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T11:27:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Liverpool FC Porto : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

Liverpool en contrôle face à Porto

\n
\nEn ayant réalisé un parcours parfait avec 4 victoires lors des 4 premières journées, Liverpool a fait coup…
", + "content": "

Liverpool en contrôle face à Porto

\n
\nEn ayant réalisé un parcours parfait avec 4 victoires lors des 4 premières journées, Liverpool a fait coup…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-liverpool-fc-porto-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507344.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T11:12:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Inter Milan Shakhtar Donetsk : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

L'Inter assure la qualif' face au Shakhtar

\n
\nChampion d'Italie en titre, l'Inter était mal parti dans cette campagne de Ligue des Champions. En…
", + "content": "

L'Inter assure la qualif' face au Shakhtar

\n
\nChampion d'Italie en titre, l'Inter était mal parti dans cette campagne de Ligue des Champions. En…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-inter-milan-shakhtar-donetsk-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507343.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T11:01:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Besiktas Ajax Amsterdam : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

L'Ajax enchaîne contre le Besiktas

\n
\nCe match entre le Besiktas et l'Ajax revêt peu d'importance puisque les Turcs sont quasiment assurés de…
", + "content": "

L'Ajax enchaîne contre le Besiktas

\n
\nCe match entre le Besiktas et l'Ajax revêt peu d'importance puisque les Turcs sont quasiment assurés de…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-besiktas-ajax-amsterdam-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507341.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T10:52:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le FC Porto suspecté de fraude fiscale ", + "description": "Frappé cet été par l'affaire Carton rouge en même temps que l'affaire Carton rouge en même temps que À défaut de responsables, le foot français a trouvé son coupable.
\n
\nLe syndicat des joueurs de football a réagi à ce qu'il s'est passé au Groupama Stadium ce dimanche soir avec le…

", + "content": "À défaut de responsables, le foot français a trouvé son coupable.
\n
\nLe syndicat des joueurs de football a réagi à ce qu'il s'est passé au Groupama Stadium ce dimanche soir avec le…

", + "category": "", + "link": "https://www.sofoot.com/l-unfp-porte-plainte-a-son-tour-contre-l-agresseur-de-payet-507336.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T10:15:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Manchester City PSG : Analyse, cotes et prono du match de Ligue des Champions", + "description": "Dernier jour pour récupérer le bonus exceptionnel de Winamax : 150€ offerts direct au lieu de 100€ ! Après le carton plein sur le dernier match des Bleus, retrouvez notre pronostic sur l'énorme affiche Manchester City - PSG !

Déposez 150€ et misez direct avec 300€ sur Manchester City - PSG

\n
\n
\nDERNIERS JOURS :

", + "content": "

Déposez 150€ et misez direct avec 300€ sur Manchester City - PSG

\n
\n
\nDERNIERS JOURS :


", + "category": "", + "link": "https://www.sofoot.com/pronostic-manchester-city-psg-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507338.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T10:12:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Maradona accusé de \"trafic d'être humain, privation de liberté, réduction en servitude, coups et blessures\"", + "description": "Sombre histoire pour El Pibe de Oro.
\n
\nC'est par le biais de l'ONG argentine Fondation pour la paix que Mavys Álvarez Rego a réitéré
", + "content": "Sombre histoire pour El Pibe de Oro.
\n
\nC'est par le biais de l'ONG argentine Fondation pour la paix que Mavys Álvarez Rego a réitéré
", + "category": "", + "link": "https://www.sofoot.com/maradona-accuse-de-trafic-d-etre-humain-privation-de-liberte-reduction-en-servitude-coups-et-blessures-507335.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T10:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Roxana Maracineanu : \"Le club doit être responsable de son groupe de supporters, ça me paraît évident\"", + "description": "Ou comment demander à un président de club de faire son travail.
\n
\nTrès remontée après les incidents ayant éclaté lors de l'Olympico, la ministre déléguée des Sports Roxana…

", + "content": "Ou comment demander à un président de club de faire son travail.
\n
\nTrès remontée après les incidents ayant éclaté lors de l'Olympico, la ministre déléguée des Sports Roxana…

", + "category": "", + "link": "https://www.sofoot.com/roxana-maracineanu-le-club-doit-etre-responsable-de-son-groupe-de-supporters-ca-me-parait-evident-507334.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T09:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La patronne de Chelsea nommée meilleure directrice du football européen", + "description": "Aulas en bouffe son chapeau.
\n
\nConsidérée comme l'une des femmes les plus influentes de la planète football, Marina Granovskaia a été récompensée d'un travail de longue haleine.…

", + "content": "Aulas en bouffe son chapeau.
\n
\nConsidérée comme l'une des femmes les plus influentes de la planète football, Marina Granovskaia a été récompensée d'un travail de longue haleine.…

", + "category": "", + "link": "https://www.sofoot.com/la-patronne-de-chelsea-nommee-meilleure-directrice-du-football-europeen-507333.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T09:15:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Messi : \"Je suis heureux que Mbappé soit resté à Paris cette année\"", + "description": "Une MNM sans cacahuète ? Quel intérêt...
\n
\nAvec 7 buts et 7 passes décisives, Mbappé est bien un des seuls éléments offensifs du Paris Saint-Germain à faire l'unanimité. Il aura…

", + "content": "Une MNM sans cacahuète ? Quel intérêt...
\n
\nAvec 7 buts et 7 passes décisives, Mbappé est bien un des seuls éléments offensifs du Paris Saint-Germain à faire l'unanimité. Il aura…

", + "category": "", + "link": "https://www.sofoot.com/messi-je-suis-heureux-que-mbappe-soit-reste-a-paris-cette-annee-507332.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T08:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Felix Afena-Gyan a bien reçu les chaussures promises par Mourinho", + "description": "Un homme de parole.
\n
\n\" J'avais promis à Felix que s'il disputait un bon match ce soir, je lui achèterais une paire de chaussures qu'il adore. Mais elle coûte presque 800 euros.…

", + "content": "Un homme de parole.
\n
\n\" J'avais promis à Felix que s'il disputait un bon match ce soir, je lui achèterais une paire de chaussures qu'il adore. Mais elle coûte presque 800 euros.…

", + "category": "", + "link": "https://www.sofoot.com/felix-afena-gyan-a-bien-recu-les-chaussures-promises-par-mourinho-507330.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T08:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Zlatan Ibrahimović : \"Chaque jour quand je me réveille, j'ai mal partout\"", + "description": "Il est humain !
\n
\nÀ 40 balais, malgré son tendon d'Achille et un genou en compote, Zlatan continue de faire le show sur les pelouses européennes, en témoigne
", + "content": "Il est humain !
\n
\nÀ 40 balais, malgré son tendon d'Achille et un genou en compote, Zlatan continue de faire le show sur les pelouses européennes, en témoigne
", + "category": "", + "link": "https://www.sofoot.com/zlatan-ibrahimovic-chaque-jour-quand-je-me-reveille-j-ai-mal-partout-507331.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T08:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lille joue gros face à Salzbourg", + "description": "Pour son dernier rendez-vous à domicile de la phase de groupes de Ligue des champions 2021-2022, le LOSC accueille le Red Bull Salzbourg qui est l'actuel leader de ce groupe G. Une victoire face aux Autrichiens permettrait au LOSC d'effacer la débâcle de l'aller, d'oublier les galères en championnat, et surtout de croire plus que jamais à une qualification pour les huitièmes de C1.
", + "content": "
", + "category": "", + "link": "https://www.sofoot.com/lille-joue-gros-face-a-salzbourg-507327.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Karim Adeyemi, la menace fantasque", + "description": "Double buteur et bourreau du LOSC au match aller (2-1), Karim Adeyemi devrait encore bien embêter la défense lilloise ce mardi. L'attaquant aux trois nationalités, viré par le Bayern dans sa jeunesse, est la nouvelle pépite du RB Salzburg, qui n'en finit pas de créer des monstres.
\t\t\t\t\t
", + "content": "
\t\t\t\t\t
", + "category": "", + "link": "https://www.sofoot.com/karim-adeyemi-la-menace-fantasque-507318.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sexismo No", + "description": "Ce sont des remarques sur leur physique, des insultes et des commentaires dégradants reçus presque quotidiennement : quinze journalistes espagnoles ont témoigné, dans les colonnes du journal Sport, pour faire part de leur ras-le-bol.Être journaliste sportive, en Espagne ? \"C'est compliqué\", glisse Laia Bonals, du quotidien catalan Ara. \"Surtout si tu parles de football, précise Maria Tikas, qui…", + "content": "Être journaliste sportive, en Espagne ? \"C'est compliqué\", glisse Laia Bonals, du quotidien catalan Ara. \"Surtout si tu parles de football, précise Maria Tikas, qui…", + "category": "", + "link": "https://www.sofoot.com/sexismo-no-507180.html", + "creator": "SO FOOT", + "pubDate": "2021-11-23T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dijon se paye Auxerre et décroche la couronne de Bourgogne", + "description": "

", + "content": "

", + "category": "", + "link": "https://www.sofoot.com/dijon-se-paye-auxerre-et-decroche-la-couronne-de-bourgogne-507328.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T21:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Dijon - Auxerre", + "description": "90' : ET C'EST FINI !
\n
\nDijon remporte le derby bourguignon et fait un immense bond de six places ...", + "content": "90' : ET C'EST FINI !
\n
\nDijon remporte le derby bourguignon et fait un immense bond de six places ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-dijon-auxerre-507326.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T19:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Gourvennec : \"On sait ce qu'une victoire face à Salzbourg nous apporterait\"", + "description": "Gourvennec est ambitieux avant son rendez-vous de gala.
\n
\nPrésent en conférence de presse avant la réception du Red Bull Salzbourg ce mardi soir en Ligue des champions au stade…

", + "content": "Gourvennec est ambitieux avant son rendez-vous de gala.
\n
\nPrésent en conférence de presse avant la réception du Red Bull Salzbourg ce mardi soir en Ligue des champions au stade…

", + "category": "", + "link": "https://www.sofoot.com/gourvennec-on-sait-ce-qu-une-victoire-face-a-salzbourg-nous-apporterait-507324.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T19:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "DERNIERS JOURS de l'EXCLU : 20€ offerts SANS SORTIR LA CB pour parier sur la Ligue des Champions !", + "description": "Vous voulez parier cette semaine sans déposer d'argent ? En EXCLU, NetBet vous offre 20€ sans sortir votre CB ! De quoi parier sereinement sur la Ligue des Champions de la semaine

EXCLU : 20€ offerts GRATOS chez NetBet

\n
\nVous voulez obtenir 20€ sans verser d'argent pour parier ?
\n

", + "content": "

EXCLU : 20€ offerts GRATOS chez NetBet

\n
\nVous voulez obtenir 20€ sans verser d'argent pour parier ?
\n


", + "category": "", + "link": "https://www.sofoot.com/derniers-jours-de-l-exclu-20e-offerts-sans-sortir-la-cb-pour-parier-sur-la-ligue-des-champions-507284.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T18:28:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Lille Salzbourg : Analyse, cotes et prono du match de Ligue des Champions", + "description": "Après le
carton plein sur le dernier match des Bleus, retrouvez notre pronostic sur Lille - Salzbourg avec 10€ à récupérer sans sortir d'argent chez ZEbet

10€ gratuits pour parier sur ce Lille - RB Salzbourg !

\n
\nVous voulez obtenir 10€ sans verser le moindre centime pour parier sans pression ?
\n

", + "content": "

10€ gratuits pour parier sur ce Lille - RB Salzbourg !

\n
\nVous voulez obtenir 10€ sans verser le moindre centime pour parier sans pression ?
\n

", + "category": "", + "link": "https://www.sofoot.com/pronostic-lille-salzbourg-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507287.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T18:27:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le patron de Lyca Mobile nouvel actionnaire du Paris FC", + "description": "Le Paris FC, Atlas officiel de la Ligue 2 BKT.
\n
\nMalgré une 5e place en Ligue 2, le PFC peut se consoler en accueillant un nouvel actionnaire, puisque l'Anglo-Sri Lankais…

", + "content": "Le Paris FC, Atlas officiel de la Ligue 2 BKT.
\n
\nMalgré une 5e place en Ligue 2, le PFC peut se consoler en accueillant un nouvel actionnaire, puisque l'Anglo-Sri Lankais…

", + "category": "", + "link": "https://www.sofoot.com/le-patron-de-lyca-mobile-nouvel-actionnaire-du-paris-fc-507322.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T17:08:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le best of des buts amateurs du week-end des 20 et 21 novembre 2021", + "description": "Comme chaque début de semaine, retrouvez grâce au Vrai Foot Day et à l'application Rematch les plus belles vidéos de foot amateur filmées chaque week-end depuis le bord du terrain.Sans plus attendre, voici la sélection concoctée par la journée qui met en avant le foot…", + "content": "Sans plus attendre, voici la sélection concoctée par la journée qui met en avant le foot…", + "category": "", + "link": "https://www.sofoot.com/le-best-of-des-buts-amateurs-du-week-end-des-20-et-21-novembre-2021-507311.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T16:40:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Karl-Heinz Rummenigge regrette le départ de David Alaba", + "description": "Arrivé en Bavière en 2008, David Alaba a quitté son cocon l'été dernier pour devenir un élément essentiel de la défense du Real Madrid. Son départ semble d'ailleurs être toujours dans la…", + "content": "Arrivé en Bavière en 2008, David Alaba a quitté son cocon l'été dernier pour devenir un élément essentiel de la défense du Real Madrid. Son départ semble d'ailleurs être toujours dans la…", + "category": "", + "link": "https://www.sofoot.com/karl-heinz-rummenigge-regrette-le-depart-de-david-alaba-507321.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T16:38:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Une manifestation contre le Mondial au Qatar avant Strasbourg-Reims", + "description": "La lutte continue.
\n
\nPour le collectif Maquis Alsace-Lorraine, impossible de rester indifférent face aux morts sur les chantiers de la Coupe du monde 2022 au Qatar.
", + "content": "La lutte continue.
\n
\nPour le collectif Maquis Alsace-Lorraine, impossible de rester indifférent face aux morts sur les chantiers de la Coupe du monde 2022 au Qatar.
", + "category": "", + "link": "https://www.sofoot.com/une-manifestation-contre-le-mondial-au-qatar-avant-strasbourg-reims-507316.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T15:35:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vincent Labrune \"choqué que l'on mette deux heures pour prendre une décision\"", + "description": "Le patron sort du bois.
\n
\nAprès la soirée cauchemar de ce dimanche au Groupama Stadium, la Ligue sort du silence ce lundi par l'intermédiaire de son président. Vincent Labrune a…

", + "content": "Le patron sort du bois.
\n
\nAprès la soirée cauchemar de ce dimanche au Groupama Stadium, la Ligue sort du silence ce lundi par l'intermédiaire de son président. Vincent Labrune a…

", + "category": "", + "link": "https://www.sofoot.com/vincent-labrune-choque-que-l-on-mette-deux-heures-pour-prendre-une-decision-507315.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T15:09:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Grifo reconnaît avoir simulé lors du match contre Francfort", + "description": "Alors que Fribourg était en difficulté sur sa pelouse contre l'Eintracht Francfort (0-2), le club de la Forêt-Noire pensait obtenir un penalty, de prime abord plutôt généreux. Accroché dans la…", + "content": "Alors que Fribourg était en difficulté sur sa pelouse contre l'Eintracht Francfort (0-2), le club de la Forêt-Noire pensait obtenir un penalty, de prime abord plutôt généreux. Accroché dans la…", + "category": "", + "link": "https://www.sofoot.com/grifo-reconnait-avoir-simule-lors-du-match-contre-francfort-507308.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T14:41:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un supporter de Fenerbahçe succombe après le but vainqueur face à Galatasaray", + "description": "De battre son cœur s'est arrêté.
\n
\nEn douchant les 52 000 spectateurs de la Türk Telecom Arena, l'antre du Galatasaray, dans les derniers souffles de la rencontre, Miguel Crespo ne…

", + "content": "De battre son cœur s'est arrêté.
\n
\nEn douchant les 52 000 spectateurs de la Türk Telecom Arena, l'antre du Galatasaray, dans les derniers souffles de la rencontre, Miguel Crespo ne…

", + "category": "", + "link": "https://www.sofoot.com/un-supporter-de-fenerbahce-succombe-apres-le-but-vainqueur-face-a-galatasaray-507313.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T14:03:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mais qui est Felix Afena-Gyan, le chouchou de Mourinho ?", + "description": "Arrivé en Italie en mars 2021, promu en Primavera en avril, débarqué en équipe première en octobre, puis lancé dans le grand bain dans la foulée, Felix Afena-Gyan n'en finit plus de griller les étapes. Dimanche soir, il a même inscrit ses deux premiers buts en Serie A, face au Genoa. José Mourinho se frotte les mains : il tient là une pépite qu'il couve délicatement.Que s'est-il passé le 19 janvier 2003 ? José Mourinho et son FC Porto se déplaçaient sur la pelouse de Belenenses. Menés 1-0 à la pause, les Dragons se réveillent en seconde période. Jorge…", + "content": "Que s'est-il passé le 19 janvier 2003 ? José Mourinho et son FC Porto se déplaçaient sur la pelouse de Belenenses. Menés 1-0 à la pause, les Dragons se réveillent en seconde période. Jorge…", + "category": "", + "link": "https://www.sofoot.com/mais-qui-est-felix-afena-gyan-le-chouchou-de-mourinho-507297.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T14:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "EuroMillions mardi 23 novembre 2021 : 145 millions d'€ à gagner !", + "description": "L'EuroMillions de ce mardi 23 novembre est à 145 millions d'euros. Une somme incroyable, payée par le PSG pour s'offrir Kylian Mbappé à l'été 2017

EuroMillions du mardi 23 novembre 2021 : 145M d'€

\n
\nLe jackpot de l'EuroMillions affiche 145 millions d'euros ce mardi 23 novembre 2021.…
", + "content": "

EuroMillions du mardi 23 novembre 2021 : 145M d'€

\n
\nLe jackpot de l'EuroMillions affiche 145 millions d'euros ce mardi 23 novembre 2021.…
", + "category": "", + "link": "https://www.sofoot.com/euromillions-mardi-23-novembre-2021-145-millions-d-e-a-gagner-507312.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T13:58:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Groupama Stadium à huis clos en attendant les mesures définitives", + "description": "
Le (premier) verdict est tombé.
\n
\nAu lendemain de la suspension du match entre l'OL et l'OM après trois minutes de jeu, la commission de discipline s'est réunie afin de donner les…

", + "content": "Le (premier) verdict est tombé.
\n
\nAu lendemain de la suspension du match entre l'OL et l'OM après trois minutes de jeu, la commission de discipline s'est réunie afin de donner les…

", + "category": "", + "link": "https://www.sofoot.com/le-groupama-stadium-a-huis-clos-en-attendant-les-mesures-definitives-507314.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T13:48:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Young Boys Berne Atalanta Bergame : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

L'Atalanta bat encore les Young Boys de Berne

\n
\nMeilleure équipe du championnat suisse ces dernières saisons, les Young Boys de Berne ont remporté un…
", + "content": "

L'Atalanta bat encore les Young Boys de Berne

\n
\nMeilleure équipe du championnat suisse ces dernières saisons, les Young Boys de Berne ont remporté un…
", + "category": "", + "link": "https://www.sofoot.com/pronostic-young-boys-berne-atalanta-bergame-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507310.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T13:32:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aulas, Jean-Michel à peu près", + "description": "Au cours d'une nouvelle soirée désastreuse pour l'image du football français, Jean-Michel Aulas a perdu une occasion de prendre de la hauteur et d'élever le débat, comme son homologue niçois Jean-Pierre Rivère trois mois auparavant. Il était pourtant légitime d'attendre autre chose de la part d'un des plus grands présidents de l'histoire de notre championnat.Un peu plus de deux heures après l'interruption du match entre Lyon et Marseille et…", + "content": "Un peu plus de deux heures après l'interruption du match entre Lyon et Marseille et…", + "category": "", + "link": "https://www.sofoot.com/aulas-jean-michel-a-peu-pres-507295.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ole Gunnar Solskjær-MU : l'idylle désenchantée", + "description": "La lourde défaite contre Watford (4-1) ce week-end aura été celle de trop pour Ole Gunnar Solskjær, démis de ses fonctions par les dirigeants de Manchester United dimanche matin. Une issue inéluctable pour le coach norvégien qui aura passé presque trois ans sur le banc des Red Devils malgré une crédibilité proche du néant. Paradoxe.Cette fois, le couperet est tombé. Épargné de justesse par la direction de Manchester United après Vous vous êtes inscrits à la SoFoot Ligue, mais vous ne savez pas quelle équipe choisir pour ne pas finir la semaine avec 0 point ? Rassurez-vous, nous sommes là pour vous aider.
  • Pour s'inscrire à la SO FOOT LIGUE, c'est par ici.
    \n
    \n


  • ", + "content": "
  • Pour s'inscrire à la SO FOOT LIGUE, c'est par ici.
    \n
    \n


  • ", + "category": "", + "link": "https://www.sofoot.com/sofoot-ligue-nos-conseils-pour-faire-vos-picks-de-la-semaine-13-507299.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T12:30:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comment Zidane a sauvé le festival Marrakech du Rire de Jamel", + "description": "Mercredi dernier est sorti un grand et beau livre So Foot. Après Diego Maradona, So Foot s'est s'attaqué à une autre légende, le plus grand numéro 10 français de l'histoire (derrière Michel…", + "content": "Mercredi dernier est sorti un grand et beau livre So Foot. Après Diego Maradona, So Foot s'est s'attaqué à une autre légende, le plus grand numéro 10 français de l'histoire (derrière Michel…", + "category": "", + "link": "https://www.sofoot.com/comment-zidane-a-sauve-le-festival-marrakech-du-rire-de-jamel-507305.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T12:26:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dimitri Payet porte plainte contre X et sera examiné par un médecin du travail", + "description": "Le feuilleton continue après les incidents survenus ce dimanche au Groupama Stadium. Ce lundi, les événements basculent…", + "content": "Le feuilleton continue après les incidents survenus ce dimanche au Groupama Stadium. Ce lundi, les événements basculent…", + "category": "", + "link": "https://www.sofoot.com/dimitri-payet-porte-plainte-contre-x-et-sera-examine-par-un-medecin-du-travail-507309.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T12:07:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Séville Wolfsbourg : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

    Le FC Séville au pied du mur face à Wolfsbourg

    \n
    \nAnnoncé comme le favori de ce groupe G, le FC Séville se retrouve actuellement en dernière position…
    ", + "content": "

    Le FC Séville au pied du mur face à Wolfsbourg

    \n
    \nAnnoncé comme le favori de ce groupe G, le FC Séville se retrouve actuellement en dernière position…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-seville-wolfsbourg-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507307.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:49:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un Français termine meilleur buteur de D3 suédoise", + "description": "La carrière de Yoann Fellrath est de celles qu'on qualifie de tortueuses, chaotiques. Passé par Tarbes en National 2 ou Bourgoin-Jallieu en National 3, c'est en troisième division suédoise que…", + "content": "La carrière de Yoann Fellrath est de celles qu'on qualifie de tortueuses, chaotiques. Passé par Tarbes en National 2 ou Bourgoin-Jallieu en National 3, c'est en troisième division suédoise que…", + "category": "", + "link": "https://www.sofoot.com/un-francais-termine-meilleur-buteur-de-d3-suedoise-507303.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:37:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le PSG vers une centième composition différente à la suite", + "description": "Incroyable, mais vrai.
    \n
    \nMercredi soir face à Manchester City, le Paris Saint-Germain pourrait voir son onze de départ modifié une centième fois de suite d'après un petit calcul de…

    ", + "content": "Incroyable, mais vrai.
    \n
    \nMercredi soir face à Manchester City, le Paris Saint-Germain pourrait voir son onze de départ modifié une centième fois de suite d'après un petit calcul de…

    ", + "category": "", + "link": "https://www.sofoot.com/le-psg-vers-une-centieme-composition-differente-a-la-suite-507304.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:36:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Barcelone Benfica : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

    L'effet Xavi se poursuit pour Barcelone face au Benfica

    \n
    \nDans ce groupe E de la Ligue des Champions, le Bayern Munich a déjà assuré sa place pour…
    ", + "content": "

    L'effet Xavi se poursuit pour Barcelone face au Benfica

    \n
    \nDans ce groupe E de la Ligue des Champions, le Bayern Munich a déjà assuré sa place pour…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-barcelone-benfica-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507306.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:34:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Malmö Zenit Saint-Pétersbourg : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

    Le Zenit assure sa 3e place à Malmö

    \n
    \nCette affiche entre Malmö et le Zenit ne devrait pas avoir d'impact sur le résultat final du…
    ", + "content": "

    Le Zenit assure sa 3e place à Malmö

    \n
    \nCette affiche entre Malmö et le Zenit ne devrait pas avoir d'impact sur le résultat final du…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-malmo-zenit-saint-petersbourg-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507302.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:25:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Chelsea Juventus : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

    Chelsea prend sa revanche face à la Juventus

    \n
    \nCe choc entre Chelsea et la Juventus est un peu galvaudé car les deux formations sont quasiment assurées…
    ", + "content": "

    Chelsea prend sa revanche face à la Juventus

    \n
    \nCe choc entre Chelsea et la Juventus est un peu galvaudé car les deux formations sont quasiment assurées…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-chelsea-juventus-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507301.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:19:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Dynamo Kiev Bayern Munich : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

    Le Bayern Munich poursuit son sans-faute face au Dynamo Kiev

    \n
    \nDernier de ce groupe de Ligue des Champions, le Dynamo Kiev abat peut-être sa dernière…
    ", + "content": "

    Le Bayern Munich poursuit son sans-faute face au Dynamo Kiev

    \n
    \nDernier de ce groupe de Ligue des Champions, le Dynamo Kiev abat peut-être sa dernière…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-dynamo-kiev-bayern-munich-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507298.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:17:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Troyes est le club français à avoir utilisé le plus de joueurs depuis un an", + "description": "44-26. Non, ce n'est pas le résultat de la sublime victoire du XV de France face aux All Blacks samedi dernier (pas loin, 40-25). Ce n'est pas non plus le nombre de minutes qu'il a fallu…", + "content": "44-26. Non, ce n'est pas le résultat de la sublime victoire du XV de France face aux All Blacks samedi dernier (pas loin, 40-25). Ce n'est pas non plus le nombre de minutes qu'il a fallu…", + "category": "", + "link": "https://www.sofoot.com/troyes-est-le-club-francais-a-avoir-utilise-le-plus-de-joueurs-depuis-un-an-507300.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:13:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rhys Healey, le serial buteur du TFC", + "description": "Quel meilleur moment qu'un choc au sommet pour briller ? Rhys Healey l'a bien compris, lui qui a porté le Téfécé ce samedi face à Sochaux. Pour le plus grand bonheur du Stadium de Toulouse, qui a pleinement adopté son serial buteur anglais. C'est bien simple : depuis le début de saison, le globe-trotter britannique martyrise les défenses de Ligue 2 chaque week-end au sein de la meilleure attaque du championnat.\"Your defense is terrified, Healey's on fire !\" Les plus de 15 000 supporters venus au Stadium pour la réception de Sochaux ce samedi n'ont eu qu'une chanson sur les lèvres, histoire de…", + "content": "\"Your defense is terrified, Healey's on fire !\" Les plus de 15 000 supporters venus au Stadium pour la réception de Sochaux ce samedi n'ont eu qu'une chanson sur les lèvres, histoire de…", + "category": "", + "link": "https://www.sofoot.com/rhys-healey-le-serial-buteur-du-tfc-507255.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T11:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Villarreal Manchester United : Analyse, cotes et prono du match de Ligue des Champions", + "description": "

    Villareal résiste à Man United

    \n
    \nDans ce groupe F de la Ligue des Champions, 3 équipes se sont détachées pour décrocher leurs places en…
    ", + "content": "

    Villareal résiste à Man United

    \n
    \nDans ce groupe F de la Ligue des Champions, 3 équipes se sont détachées pour décrocher leurs places en…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-villarreal-manchester-united-analyse-cotes-et-prono-du-match-de-ligue-des-champions-507294.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T10:54:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dimitri Payet absent de l'entraînement", + "description": "En état de choc.
    \n
    \nDimitri Payet ne s'est décidément pas remis de ce qu'il a vécu au Groupama Stadium dimanche soir lors de
    ", + "content": "En état de choc.
    \n
    \nDimitri Payet ne s'est décidément pas remis de ce qu'il a vécu au Groupama Stadium dimanche soir lors de
    ", + "category": "", + "link": "https://www.sofoot.com/dimitri-payet-absent-de-l-entrainement-507293.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T10:54:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pedri désigné Golden Boy 2021", + "description": "L'eau mouille et le feu brûle.
    \n
    \nAbsent des terrains depuis plusieurs semaines en raison d'une blessure musculaire à la jambe gauche, Pedri a reçu ce lundi un beau lot de consolation.…

    ", + "content": "L'eau mouille et le feu brûle.
    \n
    \nAbsent des terrains depuis plusieurs semaines en raison d'une blessure musculaire à la jambe gauche, Pedri a reçu ce lundi un beau lot de consolation.…

    ", + "category": "", + "link": "https://www.sofoot.com/pedri-designe-golden-boy-2021-507296.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T10:42:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Une ancienne légende d'Everton signe en D2", + "description": "Louzy, commune de 1400 habitants, à sa nouvelle star.
    \n
    \nOn est d'accord, Tony Hibbert ne dira pas grand-chose aux jeunes admirateurs du ballon rond. Un petit tour sur sa fiche…

    ", + "content": "Louzy, commune de 1400 habitants, à sa nouvelle star.
    \n
    \nOn est d'accord, Tony Hibbert ne dira pas grand-chose aux jeunes admirateurs du ballon rond. Un petit tour sur sa fiche…

    ", + "category": "", + "link": "https://www.sofoot.com/une-ancienne-legende-d-everton-signe-en-d2-507292.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T10:38:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ruddy Buquet n'avait pas autorisé l'annonce du speaker", + "description": "Vite, appelez Scooby-Doo.
    \n
    \nMais qui a bien pu envoyer le speaker annoncer aux supporters la reprise du match après l'interruption d'OL-OM dimanche soir ? En tout cas, ce n'est…

    ", + "content": "Vite, appelez Scooby-Doo.
    \n
    \nMais qui a bien pu envoyer le speaker annoncer aux supporters la reprise du match après l'interruption d'OL-OM dimanche soir ? En tout cas, ce n'est…

    ", + "category": "", + "link": "https://www.sofoot.com/ruddy-buquet-n-avait-pas-autorise-l-annonce-du-speaker-507290.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T10:04:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OL-OM : le fameux \"acte isolé\" en vidéo", + "description": "Question de point de vue.
    \n
    \nAprès l'interruption du match Lyon-Marseille dimanche soir pour un jet de bouteille, Jean-Michel Aulas et le speaker de l'OL ont évoqué à plusieurs reprises…

    ", + "content": "Question de point de vue.
    \n
    \nAprès l'interruption du match Lyon-Marseille dimanche soir pour un jet de bouteille, Jean-Michel Aulas et le speaker de l'OL ont évoqué à plusieurs reprises…

    ", + "category": "", + "link": "https://www.sofoot.com/ol-om-le-fameux-acte-isole-en-video-507289.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T09:58:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Elche remercie Fran Escribá ", + "description": "Fekir a fait déborder le vase.
    \n
    \nEnglué dans les profondeurs de la Liga (18e au classement avec deux victoires en 14 matchs), Elche ne s'en sort pas. Ce dimanche, le club de…

    ", + "content": "Fekir a fait déborder le vase.
    \n
    \nEnglué dans les profondeurs de la Liga (18e au classement avec deux victoires en 14 matchs), Elche ne s'en sort pas. Ce dimanche, le club de…

    ", + "category": "", + "link": "https://www.sofoot.com/elche-remercie-fran-escriba-507291.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T09:55:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Napoli sans Victor Osimhen pendant plusieurs semaines", + "description": "Sale soirée pour le Napoli.
    \n
    \nBattus pour la première fois de la saison par l'Inter (3-2), les Napolitains…

    ", + "content": "Sale soirée pour le Napoli.
    \n
    \nBattus pour la première fois de la saison par l'Inter (3-2), les Napolitains…

    ", + "category": "", + "link": "https://www.sofoot.com/le-napoli-sans-victor-osimhen-pendant-plusieurs-semaines-507288.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T09:50:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mourinho va offrir des chaussures à 800 euros à Felix Afena", + "description": "Pourquoi chercher des leviers psychologiques quand un simple cadeau suffit.
    \n
    \n\"J'avais promis à Felix que s'il disputait un bon match ce soir, je lui achèterais une paire de…

    ", + "content": "Pourquoi chercher des leviers psychologiques quand un simple cadeau suffit.
    \n
    \n\"J'avais promis à Felix que s'il disputait un bon match ce soir, je lui achèterais une paire de…

    ", + "category": "", + "link": "https://www.sofoot.com/mourinho-va-offrir-des-chaussures-a-800-euros-a-felix-afena-507286.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T09:34:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Raúl Jiménez : \"Je dois encore plus profiter du football\"", + "description": "Séquence émotion.
    \n
    \nVoilà près d'un an que le pire a été évité à l'Emirates Stadium. Ce 29 novembre 2020, lors d'un duel avec David Luiz, Raúl Jiménez s'écroulait
    ", + "content": "Séquence émotion.
    \n
    \nVoilà près d'un an que le pire a été évité à l'Emirates Stadium. Ce 29 novembre 2020, lors d'un duel avec David Luiz, Raúl Jiménez s'écroulait
    ", + "category": "", + "link": "https://www.sofoot.com/raul-jimenez-je-dois-encore-plus-profiter-du-football-507285.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T08:35:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La blessure de Renato Sanches l'a empêché de signer au Barça l'été dernier", + "description": "Les ligaments croisés, tout ça, tout ça ?
    \n
    \nSimplement titularisé à six reprises cette saison en Ligue 1, Renato Sanches peine à retrouver l'étincelant niveau de jeu qu'il a parfois…

    ", + "content": "Les ligaments croisés, tout ça, tout ça ?
    \n
    \nSimplement titularisé à six reprises cette saison en Ligue 1, Renato Sanches peine à retrouver l'étincelant niveau de jeu qu'il a parfois…

    ", + "category": "", + "link": "https://www.sofoot.com/la-blessure-de-renato-sanches-l-a-empeche-de-signer-au-barca-l-ete-dernier-507283.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T08:09:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "LOTO du lundi 22 novembre 2021 : 25 millions d'€ à gagner !", + "description": "25 millions d'euros sont à gagner au LOTO ce lundi 22 novembre 2021. Un montant incroyable pour la loterie française

    LOTO du lundi 22 novembre 2021 : 25 Millions d'€

    \n
    \nLa cagnotte du LOTO de ce lundi 22 novembre 2021 affiche un montant énorme de 25 millions…
    ", + "content": "

    LOTO du lundi 22 novembre 2021 : 25 Millions d'€

    \n
    \nLa cagnotte du LOTO de ce lundi 22 novembre 2021 affiche un montant énorme de 25 millions…
    ", + "category": "", + "link": "https://www.sofoot.com/loto-du-lundi-22-novembre-2021-25-millions-d-e-a-gagner-507231.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T08:02:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Maracineanu : \"Les dirigeants doivent arrêter de se cacher derrière leur petit doigt\"", + "description": "Le bal de l'indignation se poursuit.
    \n
    \nLes intolérables événements survenus ce dimanche soir au Groupama…

    ", + "content": "Le bal de l'indignation se poursuit.
    \n
    \nLes intolérables événements survenus ce dimanche soir au Groupama…

    ", + "category": "", + "link": "https://www.sofoot.com/maracineanu-les-dirigeants-doivent-arreter-de-se-cacher-derriere-leur-petit-doigt-507282.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T07:37:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tribunes au bord de la crise de nerf : la faute à qui ?", + "description": "Cet Olympico constitue le sixième incident grave, depuis le début de la saison. Avec, en ligne de mire, des tribunes françaises qui semblent au bord de la crise de nerfs et renvoient souvent une image décevante voire inquiétante. Mais quelles sont les solutions pour sortir de cette spirale, tant les causes de cette répétition de débordements de violence semblent échapper à tout le monde ?L'image est terrible. Dimitri Payet recevant, en pleine tête, une bouteille d'eau. Tout le monde se souvient de ce qu'il avait déjà subi, à Nice. Sa réaction, en balançant en retour…", + "content": "L'image est terrible. Dimitri Payet recevant, en pleine tête, une bouteille d'eau. Tout le monde se souvient de ce qu'il avait déjà subi, à Nice. Sa réaction, en balançant en retour…", + "category": "", + "link": "https://www.sofoot.com/tribunes-au-bord-de-la-crise-de-nerf-la-faute-a-qui-507280.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ces trois infos du week-end vont vous étonner", + "description": "Parce qu'il n'y a pas que les championnats du Big Five dans la vie, So Foot vous propose de découvrir trois informations qui, à coup sûr, avaient échappé à votre vigilance durant le week-end. Au menu de ce lundi : un monument polonais en péril, une dernière minute folle en D2 japonaise et une revanche savoureuse outre-Atlantique.

    ", + "content": "

    ", + "category": "", + "link": "https://www.sofoot.com/ces-trois-infos-du-week-end-vont-vous-etonner-507268.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Quiz : Ils ont marqué autant que Lionel Messi en Ligue 1 après 14 journées", + "description": "Lionel Messi aura donc attendu la quatorzième journée de Ligue 1, et la venue du FC Nantes au Parc des Princes (3-1), pour débloquer son compteur dans le championnat de France. Un premier but qui permet à la Pulga d'inscrire son nom au classement des buteurs et d'ainsi rejoindre 77 autres joueurs qui, comme lui, n'ont marqué qu'un seul pion depuis le début de la saison. Saurez-vous les retrouver ?", + "category": "", + "link": "https://www.sofoot.com/quiz-ils-ont-marque-autant-que-lionel-messi-en-ligue-1-apres-14-journees-507265.html", + "creator": "SO FOOT", + "pubDate": "2021-11-22T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un stade, peu de lumières", + "description": "Le craquage d'un supporter lyonnais, dès la troisième minute de jeu, a complètement ruiné un dimanche soir qui s'annonçait palpitant. Si les fans rhodaniens s'étaient déjà distingués par certains comportements plus que discutables en Coupe d'Europe, les antécédents de débordements en Ligue 1 ne sont pas nombreux. Malgré tout, Aulas, qui avait réclamé de lourdes sanctions après Nice-OM, devrait être pris à son propre jeu. Même s'il assure qu'il ne s'agit pas du tout d'un cas similaire.\" Je fais partie des gens qui pensent que la seule sanction possible pour freiner cet état de fait, que ce soit au niveau des joueurs, des dirigeants, des supporters, c'est la pénalité en…", + "content": "\" Je fais partie des gens qui pensent que la seule sanction possible pour freiner cet état de fait, que ce soit au niveau des joueurs, des dirigeants, des supporters, c'est la pénalité en…", + "category": "", + "link": "https://www.sofoot.com/un-stade-peu-de-lumieres-507279.html", + "creator": "SO FOOT", + "pubDate": "2021-11-21T23:01:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lyon-Marseille : la cible Dimitri Payet", + "description": "Venu à Lyon pour croiser le fer avec son meilleur ennemi et donner de l'amour pendant 90 minutes, Dimitri Payet n'en a passé que deux sur le terrain... Avant de devoir rentrer à l'infirmerie, après avoir reçu une bouteille en plein sur le crâne. Une triste habitude pour le Réunionnais, qui symbolise malgré lui le bourbier actuel dans les tribunes de Ligue 1.On s'en léchait déjà les babines : Dimitri Payet face à Lucas Paquetá, les deux meneurs de jeu des Olympiques à leurs sommets en ce moment, face à face au Parc OL en prime time ce…", + "content": "On s'en léchait déjà les babines : Dimitri Payet face à Lucas Paquetá, les deux meneurs de jeu des Olympiques à leurs sommets en ce moment, face à face au Parc OL en prime time ce…", + "category": "", + "link": "https://www.sofoot.com/lyon-marseille-la-cible-dimitri-payet-507272.html", + "creator": "SO FOOT", + "pubDate": "2021-11-21T22:59:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "OL-OM : la soirée qui a mis en lumière la lâcheté du foot français", + "description": "En faisant poireauter l'ensemble des acteurs et des suiveurs de ce Lyon-Marseille, interrompu après l'agression de Dimitri Payet par les tribunes, les instances et autres dirigeants du foot français ont donné à voir une preuve terrible de leur incompétence face à ces situations de crise, mais aussi de leur lâcheté au moment d'assumer les conséquences.Il est environ 20h50 quand les caméras se braquent sur Dimitri Payet, le visage enfoui dans la pelouse du Groupama Stadium de Lyon, les mains pressant son crâne endolori. Déjà ciblé par des…", + "content": "Il est environ 20h50 quand les caméras se braquent sur Dimitri Payet, le visage enfoui dans la pelouse du Groupama Stadium de Lyon, les mains pressant son crâne endolori. Déjà ciblé par des…", + "category": "", + "link": "https://www.sofoot.com/ol-om-la-soiree-qui-a-mis-en-lumiere-la-lachete-du-foot-francais-507276.html", + "creator": "SO FOOT", + "pubDate": "2021-11-21T22:55:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ruddy Buquet, arbitre d'OL-OM : \"Ma décision sportive a toujours été de ne pas reprendre le match\"", + "description": "Cette triste soirée de dimanche aura eu le mérite de nous offrir une scène rare : la prise de parole publique d'un arbitre pour donner son point de vue.
    \n
    \nEn l'occurrence, Ruddy Buquet…

    ", + "content": "Cette triste soirée de dimanche aura eu le mérite de nous offrir une scène rare : la prise de parole publique d'un arbitre pour donner son point de vue.
    \n
    \nEn l'occurrence, Ruddy Buquet…

    ", + "category": "", + "link": "https://www.sofoot.com/ruddy-buquet-arbitre-d-ol-om-ma-decision-sportive-a-toujours-ete-de-ne-pas-reprendre-le-match-507278.html", + "creator": "SO FOOT", + "pubDate": "2021-11-21T22:22:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Monaco et Lille font du surplace", + "description": "Menée du fait d'un doublé éclair de Jonathan David et réduite à 10 en seconde période, l'ASM est pourtant parvenue à tenir en échec Lille au stade Louis-II (2-2). Une bonne dose de frustration pour les deux formations qui font du surplace en milieu de tableau. Une nouvelle fois, le LOSC a eu les occasions de sceller un précieux succès et ne les a pas saisies.

    ", + "content": "

    ", + "category": "", + "link": "https://www.sofoot.com/monaco-et-lille-font-du-surplace-507197.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T22:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Angers Lorient : Analyse, cotes et prono du match de Ligue 1", + "description": "

    Un Angers – Lorient avec des buts de chaque côté

    \n
    \nAprès 13 journées de Ligue 1, Angers se trouve dans la première partie de tableau à la…
    ", + "content": "

    Un Angers – Lorient avec des buts de chaque côté

    \n
    \nAprès 13 journées de Ligue 1, Angers se trouve dans la première partie de tableau à la…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-angers-lorient-analyse-cotes-et-prono-du-match-de-ligue-1-507185.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T21:36:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Augsbourg surprend le Bayern", + "description": "

    ", + "content": "

    ", + "category": "", + "link": "https://www.sofoot.com/augsbourg-surprend-le-bayern-507196.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T21:32:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Brest Lens : Analyse, cotes et prono du match de Ligue 1", + "description": "

    Lens sur sa lancée à Brest

    \n
    \nL'an passé, le Stade Brestois a difficilement fini la saison se sauvant lors des dernières journées. Lors du mercato,…
    ", + "content": "

    Lens sur sa lancée à Brest

    \n
    \nL'an passé, le Stade Brestois a difficilement fini la saison se sauvant lors des dernières journées. Lors du mercato,…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-brest-lens-analyse-cotes-et-prono-du-match-de-ligue-1-507183.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T21:25:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Strasbourg Reims : Analyse, cotes et prono du match de Ligue 1", + "description": "

    Strasbourg – Reims : le Crémant prend le dessus sur le Champagne

    \n
    \nDepuis son retour en Ligue 1, le Racing Club Strasbourg a connu de bons moments avec…
    ", + "content": "

    Strasbourg – Reims : le Crémant prend le dessus sur le Champagne

    \n
    \nDepuis son retour en Ligue 1, le Racing Club Strasbourg a connu de bons moments avec…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-strasbourg-reims-analyse-cotes-et-prono-du-match-de-ligue-1-507182.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T21:14:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Troyes Saint-Etienne : Analyse, cotes et prono du match de Ligue 1", + "description": "

    Un Troyes – Saint-Etienne avec des buts de chaque côté

    \n
    \nChampion de Ligue 2 en titre, Troyes a retrouvé l'élite du football français.…
    ", + "content": "

    Un Troyes – Saint-Etienne avec des buts de chaque côté

    \n
    \nChampion de Ligue 2 en titre, Troyes a retrouvé l'élite du football français.…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-troyes-saint-etienne-analyse-cotes-et-prono-du-match-de-ligue-1-507181.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T20:56:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Clermont Nice : Analyse, cotes et prono du match de Ligue 1", + "description": "

    Nice se relance à Clermont

    \n
    \nBien parti dans cette saison de Ligue 1, Clermont avait remporté ses deux premiers matchs face à Bordeaux et Troyes avant…
    ", + "content": "

    Nice se relance à Clermont

    \n
    \nBien parti dans cette saison de Ligue 1, Clermont avait remporté ses deux premiers matchs face à Bordeaux et Troyes avant…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-clermont-nice-analyse-cotes-et-prono-du-match-de-ligue-1-507179.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T20:31:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En direct : Monaco - Lille", + "description": "96' : THE END !
    \n
    \nVite mené 0-2, l'ASM arrache finalement un nul mérité au regard des 60 ...", + "content": "96' : THE END !
    \n
    \nVite mené 0-2, l'ASM arrache finalement un nul mérité au regard des 60 ...", + "category": "", + "link": "https://www.sofoot.com/en-direct-monaco-lille-507191.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T19:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Griezmann pourra finalement jouer contre l'AC Milan", + "description": "Emoji Samba. Emoji Samba. Smiley cœur. Smiley cœur. Typiquement le genre d'enchaînement qui indique qu'Antoine Griezmann vient d'apprendre une bonne nouvelle. Pour le champion du monde,…", + "content": "Emoji Samba. Emoji Samba. Smiley cœur. Smiley cœur. Typiquement le genre d'enchaînement qui indique qu'Antoine Griezmann vient d'apprendre une bonne nouvelle. Pour le champion du monde,…", + "category": "", + "link": "https://www.sofoot.com/griezmann-pourra-finalement-jouer-contre-l-ac-milan-507190.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T16:53:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Affaire Hamraoui : Hayet Abidal demande le divorce", + "description": "Hayet Abidal a annoncé par l'intermédiaire de son avocate matrimoniale à Barcelone, Maître Jennifer Losada, entamer une procédure de divorce contre son époux, Éric Abidal. Sur la Alors que cette journée de Ligue 1 est placée sous le signe de la protection de…", + "content": "Alors que cette journée de Ligue 1 est placée sous le signe de la protection de…", + "category": "", + "link": "https://www.sofoot.com/la-fff-annonce-des-mesures-supplementaires-pour-la-protection-des-mineurs-507186.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T16:34:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La police abat un jeune joueur en Argentine ", + "description": "L'Argentine est sous tension après la mort de Lucas Gonzalez (17 ans), joueur de Barracas Central (D2 argentine). Le quotidien espagnol Marca rapporte que l'Argentin a succombé après avoir…", + "content": "L'Argentine est sous tension après la mort de Lucas Gonzalez (17 ans), joueur de Barracas Central (D2 argentine). Le quotidien espagnol Marca rapporte que l'Argentin a succombé après avoir…", + "category": "", + "link": "https://www.sofoot.com/la-police-abat-un-jeune-joueur-en-argentine-507189.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T16:33:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Metz Bordeaux : Analyse, cotes et prono du match de Ligue 1", + "description": "

    Bordeaux va chercher un résultat à Metz

    \n
    \nA pareille époque l'an passé, le FC Metz réalisait un exercice intéressant, pointant dans la première…
    ", + "content": "

    Bordeaux va chercher un résultat à Metz

    \n
    \nA pareille époque l'an passé, le FC Metz réalisait un exercice intéressant, pointant dans la première…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-metz-bordeaux-analyse-cotes-et-prono-du-match-de-ligue-1-507165.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T16:13:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Inter Milan Naples : Analyse, cotes et prono du match de Serie A", + "description": "

    L'Inter ne veut pas laisser s'échapper Naples

    \n
    \nCe dimanche, l'Inter champion en titre reçoit l'actuel leader de Serie A, le Napoli. Actuellement,…
    ", + "content": "

    L'Inter ne veut pas laisser s'échapper Naples

    \n
    \nCe dimanche, l'Inter champion en titre reçoit l'actuel leader de Serie A, le Napoli. Actuellement,…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-inter-milan-naples-analyse-cotes-et-prono-du-match-de-serie-a-507163.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T15:56:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Clermont va collaborer avec un musée d'art", + "description": "Dans un communiqué publié sur son site, le Clermont Foot a annoncé allier ses forces avec le musée d'art Roger-Quilliot (MARQ) afin de promouvoir les liens entre culture et football. L'exposition…", + "content": "Dans un communiqué publié sur son site, le Clermont Foot a annoncé allier ses forces avec le musée d'art Roger-Quilliot (MARQ) afin de promouvoir les liens entre culture et football. L'exposition…", + "category": "", + "link": "https://www.sofoot.com/clermont-va-collaborer-avec-un-musee-d-art-507184.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T15:18:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pour Conte, Ndombele doit \"travailler beaucoup plus dur que les autres\"", + "description": "Commencée en juillet 2019, l'histoire entre Tanguy Ndombele et Tottenham n'a jamais vraiment été au beau fixe. Si le Français montre par moments toute l'étendue de son potentiel, il n'a…", + "content": "Commencée en juillet 2019, l'histoire entre Tanguy Ndombele et Tottenham n'a jamais vraiment été au beau fixe. Si le Français montre par moments toute l'étendue de son potentiel, il n'a…", + "category": "", + "link": "https://www.sofoot.com/pour-conte-ndombele-doit-travailler-beaucoup-plus-dur-que-les-autres-507173.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T15:04:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "De Bruyne positif au coronavirus", + "description": "Mauvaise nouvelle pour City.
    \n
    \nLors de la traditionnelle conférence de presse d'avant-match pour le compte de la 12e journée de Premier League opposant Manchester City à…

    ", + "content": "Mauvaise nouvelle pour City.
    \n
    \nLors de la traditionnelle conférence de presse d'avant-match pour le compte de la 12e journée de Premier League opposant Manchester City à…

    ", + "category": "", + "link": "https://www.sofoot.com/de-bruyne-positif-au-coronavirus-507178.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T14:42:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Payet n'a pas dit adieu aux Bleus", + "description": "1135 jours. Il faut remonter au 11 octobre 2018 pour retrouver trace d'un match de Dimitri Payet en équipe de France. Plus de trois ans après sa dernière sélection (un 2-2 à Guingamp contre…", + "content": "1135 jours. Il faut remonter au 11 octobre 2018 pour retrouver trace d'un match de Dimitri Payet en équipe de France. Plus de trois ans après sa dernière sélection (un 2-2 à Guingamp contre…", + "category": "", + "link": "https://www.sofoot.com/payet-n-a-pas-dit-adieu-aux-bleus-507177.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T14:39:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Lyon OM : Analyse, cotes et prono du match de Ligue 1 + 150€ direct offerts chez Winamax", + "description": "Après le carton plein sur le dernier match des Bleus, retour des championnats ce week-end avec un Olympico qui promet. Retrouvez notre pronostic sur Lyon - OM avec le nouveau bonus Winamax : 150€ offerts direct !

    Déposez 150€ et misez direct avec 300€ sur Lyon - OM

    \n
    \n
    \nNOUVEAU :

    ", + "content": "

    Déposez 150€ et misez direct avec 300€ sur Lyon - OM

    \n
    \n
    \nNOUVEAU :


    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-lyon-om-analyse-cotes-et-prono-du-match-de-ligue-1-150e-direct-offerts-chez-winamax-507172.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T14:21:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Orelsan se verrait bien ambassadeur du Stade Malherbe de Caen ", + "description": "\"J'rejoins mon père au stade, on prend deux buts, on prend deux bières. J'rentre chez moi, j'allume FIFA, j'reprends Malherbe, j'continue d'perdre.\" Sur les 57 minutes et 43…", + "content": "\"J'rejoins mon père au stade, on prend deux buts, on prend deux bières. J'rentre chez moi, j'allume FIFA, j'reprends Malherbe, j'continue d'perdre.\" Sur les 57 minutes et 43…", + "category": "", + "link": "https://www.sofoot.com/orelsan-se-verrait-bien-ambassadeur-du-stade-malherbe-de-caen-507174.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T14:05:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peter Bosz a encore \"mal à la tête\" depuis la claque infligée par Rennes", + "description": "Hamari Traoré, plus grand livreur de migraine de la Ligue 1.
    \n
    \n\"Oui, j'ai revisionné le match contre Rennes et ça fait mal à la tête. Je ne comprends pas la route qu'on a…

    ", + "content": "Hamari Traoré, plus grand livreur de migraine de la Ligue 1.
    \n
    \n\"Oui, j'ai revisionné le match contre Rennes et ça fait mal à la tête. Je ne comprends pas la route qu'on a…

    ", + "category": "", + "link": "https://www.sofoot.com/peter-bosz-a-encore-mal-a-la-tete-depuis-la-claque-infligee-par-rennes-507175.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T14:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Markus Anfang (Werder Brême) soupçonné d'avoir utilisé un faux certificat de vaccination", + "description": "Depuis les prémices de l'émancipation malheureuse du coronavirus, les plus grands championnats d'Europe ne laissent plus rien au hasard en matière de mesures sanitaires. Présenter un pass…", + "content": "Depuis les prémices de l'émancipation malheureuse du coronavirus, les plus grands championnats d'Europe ne laissent plus rien au hasard en matière de mesures sanitaires. Présenter un pass…", + "category": "", + "link": "https://www.sofoot.com/markus-anfang-werder-breme-soupconne-d-avoir-utilise-un-faux-certificat-de-vaccination-507171.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T13:13:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La voie royale du FC Versailles", + "description": "Seule équipe encore invaincue sur les quatre premières divisions françaises, le FC Versailles 78 vit un début de saison de rêve sur le plan sportif en tête du groupe A de National 2. En coulisses pourtant, les dernières semaines ont été mouvementées : le président historique, Daniel Voisin, a claqué la porte après 25 ans au club, tandis que Jean-Luc Arribart est arrivé en tant que directeur général de la récente SAS créée par les nouveaux actionnaires. Le début d'une nouvelle ère ?À l'instar des géants que sont le SSC Naples, l'AC Milan, Porto ou le Sporting Portugal, le FC Versailles 78 n'a lui non plus toujours pas connu la défaite en championnat depuis le début de…", + "content": "À l'instar des géants que sont le SSC Naples, l'AC Milan, Porto ou le Sporting Portugal, le FC Versailles 78 n'a lui non plus toujours pas connu la défaite en championnat depuis le début de…", + "category": "", + "link": "https://www.sofoot.com/la-voie-royale-du-fc-versailles-507145.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Konrad de la Fuente, redécollage imminent ", + "description": "Sensation de l'été à Marseille, Konrad de la Fuente a légèrement disparu des radars au début de l'automne, un peu à l'image de l'OM de Sampaoli. Sauf qu'aujourd'hui, l'ailier américain revient peu à peu sur le devant de la scène. Avant de faire du soccer un sport reconnu de tous aux States ?
    \t\t\t\t\t
    ", + "content": "
    \t\t\t\t\t
    ", + "category": "", + "link": "https://www.sofoot.com/konrad-de-la-fuente-redecollage-imminent-507137.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Looking for Momo", + "description": "Il s'appelle Momo, il joue attaquant de pointe, en Ardèche, dans l'équipe des vétérans du Foot Loisirs 1994. Jusque-là, rien de bien étonnant. Oui, mais voilà : Momo a 80 ans. Pas de quoi empêcher ce retraité encore bien fringuant de tâter le cuir, tous les jeudis, de marquer quelques buts et d'imiter le King Cantona lorsqu'il fait trembler les filets. Pas un hasard pour un homme qui, au fond, n'a jamais vécu bien loin des terrains.\"Lorsque je parle du club autour de moi, la première chose que j'évoque, c'est Momo.\" Quand il évoque le Foot Loisirs 1994, l'association de foot dont il gère la communication en…", + "content": "\"Lorsque je parle du club autour de moi, la première chose que j'évoque, c'est Momo.\" Quand il évoque le Foot Loisirs 1994, l'association de foot dont il gère la communication en…", + "category": "", + "link": "https://www.sofoot.com/looking-for-momo-506890.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T13:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La collection de tirages photo So Foot de novembre 2021 est arrivée !", + "description": "En collaboration avec l'agence photographique Icon Sport, So Foot vous propose, chaque mois, une sélection renouvelée de photographies exclusives de football en édition ultra limitée, onze tirages par taille, sur la nouvelle boutique maison :
    boutique.so. Brouillard en novembre, l'hiver sera tendre. La preuve avec quatre nouveaux tirages en édition limitée : la bicyclette de Rooney contre City, Zinédine période Juventus, le Parc des princes by night et l'arrêt de Dudek face à Shevchenko en 2005.
    \n
    \n


    ", + "content": "
    \n
    \n


    ", + "category": "", + "link": "https://www.sofoot.com/la-collection-de-tirages-photo-so-foot-de-novembre-2021-est-arrivee-506666.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T12:36:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Podcast Alternative Football (épisode 13) avec Paul de Saint-Sernin comme invité sur le sujet \"l'humour et le football\"", + "description": "Le football est un jeu simple, dont beaucoup parlent, mais un univers complexe, que peu connaissent vraiment. Dans Alternative Football, le podcast hors terrain de So Foot, vous en découvrirez les rouages, avec ses principaux acteurs. Dans chaque épisode, Édouard Cissé, ancien milieu de terrain du PSG, de l'OM ou de Monaco désormais entrepreneur en plus d'être consultant pour Prime Video, et Matthieu Lille-Palette, vice-président d'Opta, s'entretiendront avec un invité sur un thème précis. Pendant une mi-temps, temps nécessaire pour redéfinir totalement votre grille de compréhension.Si on peut rire de tout, mais pas avec tout le monde, peut-on rire avec les footballeurs ? Si oui, comment ? Vaste question à laquelle ils ne sont que peu à s'être frottés. Dernier…", + "content": "Si on peut rire de tout, mais pas avec tout le monde, peut-on rire avec les footballeurs ? Si oui, comment ? Vaste question à laquelle ils ne sont que peu à s'être frottés. Dernier…", + "category": "", + "link": "https://www.sofoot.com/podcast-alternative-football-episode-13-avec-paul-de-saint-sernin-comme-invite-sur-le-sujet-l-humour-et-le-football-507168.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T12:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Premier League conclut un nouvel accord de diffusion aux USA ", + "description": "Business is business.
    \n
    \n
    Pourtant frappé par une crise institutionnelle avec en…

    ", + "content": "Business is business.
    \n
    \nPourtant frappé par une crise institutionnelle avec en…

    ", + "category": "", + "link": "https://www.sofoot.com/la-premier-league-conclut-un-nouvel-accord-de-diffusion-aux-usa-507167.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T11:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pochettino : \"On veut tous faire du beau jeu et gagner 5-0\"", + "description": "Troyes (2-1), Metz (1-2), Angers (2-1), Lille (2-1), Troyes (2-1) et plus récemment Bordeaux (2-3), les copies rendues par les joueurs du Paris Saint-Germain cette saison se suivent et se…", + "content": "Troyes (2-1), Metz (1-2), Angers (2-1), Lille (2-1), Troyes (2-1) et plus récemment Bordeaux (2-3), les copies rendues par les joueurs du Paris Saint-Germain cette saison se suivent et se…", + "category": "", + "link": "https://www.sofoot.com/pochettino-on-veut-tous-faire-du-beau-jeu-et-gagner-5-0-507166.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T10:36:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Khalida Popal et Kim Kardashian ont aidé à l'évacuation de joueuses afghanes", + "description": "Les opérations de sauvetage continuent en Afghanistan.
    \n
    \nKhalida Popal, ancienne capitaine de l'équipe d'Afghanistan de football, a organisé une grande opération d'évacuation ce jeudi…

    ", + "content": "Les opérations de sauvetage continuent en Afghanistan.
    \n
    \nKhalida Popal, ancienne capitaine de l'équipe d'Afghanistan de football, a organisé une grande opération d'évacuation ce jeudi…

    ", + "category": "", + "link": "https://www.sofoot.com/khalida-popal-et-kim-kardashian-ont-aide-a-l-evacuation-de-joueuses-afghanes-507164.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T10:12:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Giovanni van Bronckhorst nommé aux Rangers ", + "description": "Laissé vacant depuis le départ de Steven Gerrard vers Aston Villa, le banc des Rangers vient de trouver un nouvel occupant. En effet, les Gers ont décidé ce jeudi de nommer Giovanni van…", + "content": "Laissé vacant depuis le départ de Steven Gerrard vers Aston Villa, le banc des Rangers vient de trouver un nouvel occupant. En effet, les Gers ont décidé ce jeudi de nommer Giovanni van…", + "category": "", + "link": "https://www.sofoot.com/giovanni-van-bronckhorst-nomme-aux-rangers-507162.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T10:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "50 ouvriers sont morts accidentellement au Qatar en 2020", + "description": "6500 : c'est le nombre de morts provoquées en dix ans par les chantiers de la Coupe du monde 2022 au Qatar L'EuroMillions de ce vendredi 19 novembre est à 131 millions d'euros. Une somme qui vous permettrait d'acheter quasiment le club de Ligue 1 de votre choix, ou plus simplement de devenir l'une des 500 plus grosses richesses de France

    EuroMillions du vendredi 19 novembre 2021 : 131M d'€

    \n
    \nLe jackpot de l'EuroMillions affiche 131 millions d'euros ce vendredi 19 novembre…
    ", + "content": "

    EuroMillions du vendredi 19 novembre 2021 : 131M d'€

    \n
    \nLe jackpot de l'EuroMillions affiche 131 millions d'euros ce vendredi 19 novembre…
    ", + "category": "", + "link": "https://www.sofoot.com/euromillions-vendredi-19-novembre-2021-131-millions-d-e-a-gagner-507117.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T09:10:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "LOTO du samedi 20 novembre 2021 : 24 millions d'€ à gagner !", + "description": "Gros week-end de foot mais aussi gros week-end FDJ avec un gros EuroMillions et un énorme LOTO avec 24 millions d'euros à gagner ce samedi 20 novembre 2021

    LOTO du samedi 20 novembre 2021 : 24 Millions d'€

    \n
    \nLe LOTO de ce samedi 20 novembre 2021 est de 24 millions d'euros.
    \nSi quelqu'un…

    ", + "content": "

    LOTO du samedi 20 novembre 2021 : 24 Millions d'€

    \n
    \nLe LOTO de ce samedi 20 novembre 2021 est de 24 millions d'euros.
    \nSi quelqu'un…

    ", + "category": "", + "link": "https://www.sofoot.com/loto-du-samedi-20-novembre-2021-24-millions-d-e-a-gagner-507160.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T09:06:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bob Bradley quitte le Los Angeles FC", + "description": "Dream of Californication.
    \n
    \nBob Bradley restera comme le premier entraîneur de l'histoire du Los Angeles FC. Une franchise née en 2018 et intégrée cette même saison en MLS.…

    ", + "content": "Dream of Californication.
    \n
    \nBob Bradley restera comme le premier entraîneur de l'histoire du Los Angeles FC. Une franchise née en 2018 et intégrée cette même saison en MLS.…

    ", + "category": "", + "link": "https://www.sofoot.com/bob-bradley-quitte-le-los-angeles-fc-507159.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T09:06:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lucas Paquetá joueur du mois d'octobre en Ligue 1", + "description": "Incontournable au milieu de terrain à Lyon, Lucas Paquetá a marché sur la Ligue 1 au mois d'octobre. Aussi élégant sur la pelouse que son cuir chevelu, le Brésilien succède à Kylian Mbappé…", + "content": "Incontournable au milieu de terrain à Lyon, Lucas Paquetá a marché sur la Ligue 1 au mois d'octobre. Aussi élégant sur la pelouse que son cuir chevelu, le Brésilien succède à Kylian Mbappé…", + "category": "", + "link": "https://www.sofoot.com/lucas-paqueta-joueur-du-mois-d-octobre-en-ligue-1-507158.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T08:52:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "225 millions de plus pour le Real dans la rénovation de son stade", + "description": "La rénovation de Santiago Bernabéu commence à réellement devenir un casse-tête pour le Real Madrid. Le projet avait été initié en 2019 avec une jolie enveloppe de 575 millions d'euros pour…", + "content": "La rénovation de Santiago Bernabéu commence à réellement devenir un casse-tête pour le Real Madrid. Le projet avait été initié en 2019 avec une jolie enveloppe de 575 millions d'euros pour…", + "category": "", + "link": "https://www.sofoot.com/225-millions-de-plus-pour-le-real-dans-la-renovation-de-son-stade-507157.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T08:22:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sanction réduite pour un club brésilien dans une affaire de racisme", + "description": "Le club de Brusque au Brésil a pu voir ce jeudi sa sanction réduite dans une affaire de racisme qui concerne son ancien président Antonio Petermann. Ce dernier a avoué avoir émis des propos…", + "content": "Le club de Brusque au Brésil a pu voir ce jeudi sa sanction réduite dans une affaire de racisme qui concerne son ancien président Antonio Petermann. Ce dernier a avoué avoir émis des propos…", + "category": "", + "link": "https://www.sofoot.com/sanction-reduite-pour-un-club-bresilien-dans-une-affaire-de-racisme-507156.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T07:50:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jimmy Cabot, ça brûle", + "description": "Arrivé à Angers en septembre 2020, Jimmy Cabot, 27 ans, a vécu une première saison difficile dans le Maine-et-Loire avant de changer de look pour une autre vie à la suite de l'arrivée de Gérald Baticle. Repositionné piston droit par le coach arrivé cet été sur le banc du SCO, le Savoyard donne aujourd'hui la leçon aux habitués des couloirs et fonce dans tout le pays avec un statut improbable de meilleur tacleur de Ligue 1. Entre vieilles pannes de réveil, amour de la pétanque et développement personnel, portrait d'un homme complet.Un jour de juin, alors que le monde du foot a la tête à l'Euro et que ceux qui se fichent du foot tentent de comprendre quelque chose aux changements d'humeur du ciel, des hommes suent. Ils sont…", + "content": "Un jour de juin, alors que le monde du foot a la tête à l'Euro et que ceux qui se fichent du foot tentent de comprendre quelque chose aux changements d'humeur du ciel, des hommes suent. Ils sont…", + "category": "", + "link": "https://www.sofoot.com/jimmy-cabot-ca-brule-507127.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T05:05:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le nouveau défi de Samuel Eto'o", + "description": "Samuel Eto'o a officiellement déposé sa candidature à l'élection à la présidence de la Fédération camerounaise de football (FECAFOOT) le mercredi 17 novembre, en vue du scrutin du 11 décembre. L'ancien capitaine des Lions indomptables, qui bénéficie d'un important soutien populaire et médiatique, est déterminé à aller jusqu'au bout, malgré les tentatives de l'actuel président pour l'inciter à se retirer.Kinshasa était le dimanche 14 novembre \"the place to be\" du football africain, à l'occasion du match décisif entre la RD Congo et le Bénin, comptant pour la 6e journée de…", + "content": "Kinshasa était le dimanche 14 novembre \"the place to be\" du football africain, à l'occasion du match décisif entre la RD Congo et le Bénin, comptant pour la 6e journée de…", + "category": "", + "link": "https://www.sofoot.com/le-nouveau-defi-de-samuel-eto-o-507133.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ces activistes strasbourgeois ont un plan pour faire annuler la Coupe du monde 2022", + "description": "Ils ne voulaient pas rester indifférents aux milliers de morts recensés depuis l'attribution de la compétition au Qatar. Le collectif Maquis Alsace-Lorraine se lance dans un projet fou : faire annuler le prochain Mondial, en incitant personnellement les joueurs à boycotter l'événement.\" Depuis que je suis enfant, les footballeurs sont mes idoles. C'est pour ça que j'y crois, ils m'ont toujours fait rêver, ils ne peuvent pas me décevoir\", confie Ariel*, qui est à…", + "content": "\" Depuis que je suis enfant, les footballeurs sont mes idoles. C'est pour ça que j'y crois, ils m'ont toujours fait rêver, ils ne peuvent pas me décevoir\", confie Ariel*, qui est à…", + "category": "", + "link": "https://www.sofoot.com/ces-activistes-strasbourgeois-ont-un-plan-pour-faire-annuler-la-coupe-du-monde-2022-507132.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T05:00:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Nancy Rodez : Analyse, cotes et prono du match de Ligue 2", + "description": "

    Nancy en regain de forme avant Rodez

    \n
    \nLanterne rouge de Ligue 2, Nancy a connu une entame de championnat très compliquée avec notamment 5 défaites…
    ", + "content": "

    Nancy en regain de forme avant Rodez

    \n
    \nLanterne rouge de Ligue 2, Nancy a connu une entame de championnat très compliquée avec notamment 5 défaites…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-nancy-rodez-analyse-cotes-et-prono-du-match-de-ligue-2-507155.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T02:48:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Nîmes Quevilly Rouen : Analyse, cotes et prono du match de Ligue 2", + "description": "

    Nîmes enchaine face à Quevilly Rouen

    \n
    \nRelégué de Ligue 1 après avoir vécu un exercice difficile, Nîmes a vu plusieurs cadres quitter le navire…
    ", + "content": "

    Nîmes enchaine face à Quevilly Rouen

    \n
    \nRelégué de Ligue 1 après avoir vécu un exercice difficile, Nîmes a vu plusieurs cadres quitter le navire…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-nimes-quevilly-rouen-analyse-cotes-et-prono-du-match-de-ligue-2-507154.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T02:43:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Le Havre Amiens : Analyse, cotes et prono du match de Ligue 2", + "description": "

    Le Havre ambitieux face à Amiens

    \n
    \nDécevant ces dernières saisons, Le Havre se monte nettement plus intéressant lors de ce nouvel exercice alors que…
    ", + "content": "

    Le Havre ambitieux face à Amiens

    \n
    \nDécevant ces dernières saisons, Le Havre se monte nettement plus intéressant lors de ce nouvel exercice alors que…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-le-havre-amiens-analyse-cotes-et-prono-du-match-de-ligue-2-507153.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T02:37:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Caen Paris FC : Analyse, cotes et prono du match de Ligue 2", + "description": "

    Le Paris FC enfonce Caen

    \n
    \nSauvé lors de la dernière journée l'an passé, le Stade Malherbe de Caen avait en revanche parfaitement lancé ce nouvel…
    ", + "content": "

    Le Paris FC enfonce Caen

    \n
    \nSauvé lors de la dernière journée l'an passé, le Stade Malherbe de Caen avait en revanche parfaitement lancé ce nouvel…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-caen-paris-fc-analyse-cotes-et-prono-du-match-de-ligue-2-507152.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T02:26:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Pau Guingamp : Analyse, cotes et prono du match de Ligue 2", + "description": "

    Pau - Guingamp : L'En Avant tombe dans le piège palois

    \n
    \nPromu en Ligue 2 l'an passé, Pau a souffert pour se maintenir et est resté en L2 grâce à…
    ", + "content": "

    Pau - Guingamp : L'En Avant tombe dans le piège palois

    \n
    \nPromu en Ligue 2 l'an passé, Pau a souffert pour se maintenir et est resté en L2 grâce à…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-pau-guingamp-analyse-cotes-et-prono-du-match-de-ligue-2-507151.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T02:12:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Rennes Montpellier : Analyse, cotes et prono du match de Ligue 1", + "description": "

    Rennes enchaîne face à Montpellier

    \n
    \nLe Stade Rennais s'est installé ces dernières saisons comme l'un des candidats aux places européennes. Il y…
    ", + "content": "

    Rennes enchaîne face à Montpellier

    \n
    \nLe Stade Rennais s'est installé ces dernières saisons comme l'un des candidats aux places européennes. Il y…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-rennes-montpellier-analyse-cotes-et-prono-du-match-de-ligue-1-507150.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T02:02:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Bastia Niort : Analyse, cotes et prono du match de Ligue 2", + "description": "

    Bastia solide à domicile face à Niort

    \n
    \nChampion de National l'an passé, Bastia a donc été promu en Ligue 2. Le club corse connaît un retour…
    ", + "content": "

    Bastia solide à domicile face à Niort

    \n
    \nChampion de National l'an passé, Bastia a donc été promu en Ligue 2. Le club corse connaît un retour…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-bastia-niort-analyse-cotes-et-prono-du-match-de-ligue-2-507149.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T00:52:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Valenciennes Grenoble : Analyse, cotes et prono du match de Ligue 2", + "description": "

    Valenciennes, la mal-être avant Grenoble

    \n
    \nAprès avoir connu de fortes tensions entre supporters et dirigeants la saison dernière, Valenciennes vit des…
    ", + "content": "

    Valenciennes, la mal-être avant Grenoble

    \n
    \nAprès avoir connu de fortes tensions entre supporters et dirigeants la saison dernière, Valenciennes vit des…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-valenciennes-grenoble-analyse-cotes-et-prono-du-match-de-ligue-2-507148.html", + "creator": "SO FOOT", + "pubDate": "2021-11-19T00:45:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pronostic Lazio Juventus : Analyse, cotes et prono du match de Serie A", + "description": "

    La Lazio résiste à la Juve

    \n
    \nCe samedi dans le cadre de la 13e journée de Premier League, la Lazio reçoit la Juventus Turin. Les hommes de…
    ", + "content": "

    La Lazio résiste à la Juve

    \n
    \nCe samedi dans le cadre de la 13e journée de Premier League, la Lazio reçoit la Juventus Turin. Les hommes de…
    ", + "category": "", + "link": "https://www.sofoot.com/pronostic-lazio-juventus-analyse-cotes-et-prono-du-match-de-serie-a-507147.html", + "creator": "SO FOOT", + "pubDate": "2021-11-18T23:44:00Z", + "folder": "00.03 News/Sport - FR", + "feed": "SoFoot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/Sport - FR", + "name": "SoFoot" + }, + { + "title": "BBC News - World", + "subtitle": "", + "link": "https://www.bbc.co.uk/news/", + "image": "https://news.bbcimg.co.uk/nol/shared/img/bbc_news_120x60.gif", + "description": "BBC News - World", + "items": [ + { + "title": "Turkey: Police fire tear gas at women's rights march", + "description": "It comes months after Turkey withdrew from a treaty to combat violence against women.", + "content": "It comes months after Turkey withdrew from a treaty to combat violence against women.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59423301?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 22:46:50 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Death toll soars to 52 in Russian coal mine accident - reports", + "description": "A search for survivors after an accident in a Siberian mine turns to tragedy, with rescuers among the dead.", + "content": "A search for survivors after an accident in a Siberian mine turns to tragedy, with rescuers among the dead.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59421319?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 22:22:30 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Channel migrants: PM calls on France to take back people who make crossing", + "description": "A returns agreement would have an \"immediate\" impact on the number of crossings, Boris Johnson says.", + "content": "A returns agreement would have an \"immediate\" impact on the number of crossings, Boris Johnson says.", + "category": "", + "link": "https://www.bbc.co.uk/news/uk-59423245?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 21:10:03 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Macy's Thanksgiving Parade: Baby Yoda and Snoopy delight crowds", + "description": "Thousands turn out to enjoy the annual parade with millions more watching on television.", + "content": "Thousands turn out to enjoy the annual parade with millions more watching on television.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59423297?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:20:05 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UAE general accused of torture elected Interpol president", + "description": "Ahmed al-Raisi was chosen despite facing claims of complicity in torture by UAE security forces.", + "content": "Ahmed al-Raisi was chosen despite facing claims of complicity in torture by UAE security forces.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-middle-east-59417409?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 13:26:14 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Frank Turner says he's reconciled with trans parent", + "description": "The musician tells The Guardian his estranged father is \"a lot more considerate\" since transitioning.", + "content": "The musician tells The Guardian his estranged father is \"a lot more considerate\" since transitioning.", + "category": "", + "link": "https://www.bbc.co.uk/news/entertainment-arts-59414834?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 09:39:23 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Channel migrants: UK and France agree need for action after boat deaths", + "description": "After at least 27 people die in the Channel, Boris Johnson and Emmanuel Macron say cooperation is needed.", + "content": "After at least 27 people die in the Channel, Boris Johnson and Emmanuel Macron say cooperation is needed.", + "category": "", + "link": "https://www.bbc.co.uk/news/uk-59412329?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 08:07:40 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Solomon Islands: Australia sends peacekeeping troops amid riots", + "description": "Violent riots have rocked the Pacific Island nation for a second straight day.", + "content": "Violent riots have rocked the Pacific Island nation for a second straight day.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-59412000?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 07:44:18 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia: LGBTQ advocates blast religious discrimination bill", + "description": "The new bill has raised concerns that it could pave the way for discriminatory hiring practices", + "content": "The new bill has raised concerns that it could pave the way for discriminatory hiring practices", + "category": "", + "link": "https://www.bbc.co.uk/news/world-australia-59411999?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 07:00:53 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Parambir Singh: Missing India police officer reappears after months", + "description": "Parambir Singh, the former police chief of Mumbai, is facing multiple charges of extortion.", + "content": "Parambir Singh, the former police chief of Mumbai, is facing multiple charges of extortion.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59412299?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 06:14:54 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "US restricts trade with a dozen more Chinese technology firms", + "description": "The move comes as tensions grow between the US and China over the status of Taiwan and trade issues.", + "content": "The move comes as tensions grow between the US and China over the status of Taiwan and trade issues.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-59412139?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 03:42:49 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kavala: The case that set Turkey on collision course with the West", + "description": "Osman Kavala has not been convicted but his detention has set Turkey's leader on a collision course.", + "content": "Osman Kavala has not been convicted but his detention has set Turkey's leader on a collision course.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59385194?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 01:52:15 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tripura: Fear and hope after anti-Muslim violence", + "description": "Weeks after mosques and Muslim properties were attacked, life is slowly getting back to normal in Tripura.", + "content": "Weeks after mosques and Muslim properties were attacked, life is slowly getting back to normal in Tripura.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59398367?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 01:11:31 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Allahabad high court: Outrage as court reduces child sex abuse sentence", + "description": "There’s been outrage in India after the Allahabad high court reduces the jail term of a sex offender.", + "content": "There’s been outrage in India after the Allahabad high court reduces the jail term of a sex offender.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59401179?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 01:09:29 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Beatles outtakes in new Peter Jackson film", + "description": "The Lord of The Rings director has restored more than 50 hours of footage.", + "content": "The Lord of The Rings director has restored more than 50 hours of footage.", + "category": "", + "link": "https://www.bbc.co.uk/news/entertainment-arts-59409077?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 00:02:12 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Russian troop build-up: View from Ukraine front line", + "description": "BBC correspondent Abdujalil Abdurasulov visits eastern Ukraine as soldiers watch Russia's nearby movements.", + "content": "BBC correspondent Abdujalil Abdurasulov visits eastern Ukraine as soldiers watch Russia's nearby movements.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59402658?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 00:01:43 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What I learnt eating at 8,000 Chinese restaurants", + "description": "David R Chan's decades of dining at 8,000 Chinese eateries has taught him about America and himself.", + "content": "David R Chan's decades of dining at 8,000 Chinese eateries has taught him about America and himself.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59356176?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:25:31 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ahmaud Arbery: Three US men guilty of murdering black jogger", + "description": "Ahmaud Arbery was chased and shot in a case that became a rallying cry to racial justice protesters.", + "content": "Ahmaud Arbery was chased and shot in a case that became a rallying cry to racial justice protesters.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59411030?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:34:07 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Inside Dunkirk's new migrant camp", + "description": "Last week French police officers evicted up to 1,500 people from a camp in Dunkirk.", + "content": "Last week French police officers evicted up to 1,500 people from a camp in Dunkirk.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59410982?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:28:40 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "JPMorgan boss 'regrets' China joke amid backlash", + "description": "Jamie Dimon has apologised after saying that his Wall Street bank would outlast China's ruling party.", + "content": "Jamie Dimon has apologised after saying that his Wall Street bank would outlast China's ruling party.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-59409508?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 19:56:44 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mike Tyson: Malawi asks former boxer to be cannabis ambassador", + "description": "A minister has written a letter to the former boxer, who has invested in a cannabis farm in the US.", + "content": "A minister has written a letter to the former boxer, who has invested in a cannabis farm in the US.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59406196?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 18:31:54 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Germany: African diaspora with 'a voice' in politics", + "description": "How can the \"voice\" of African diaspora help build relations between Germany and Africa?", + "content": "How can the \"voice\" of African diaspora help build relations between Germany and Africa?", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59405846?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 14:49:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Climate change causing albatross divorce, says study", + "description": "There are more bird break-ups in warmer years, a study of 15,500 breeding pairs finds.", + "content": "There are more bird break-ups in warmer years, a study of 15,500 breeding pairs finds.", + "category": "", + "link": "https://www.bbc.co.uk/news/newsbeat-59401921?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 13:00:26 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple sues Israeli spyware firm NSO Group", + "description": "Apple is the latest in a string of firms and governments to go after the hacking tool firm.", + "content": "Apple is the latest in a string of firms and governments to go after the hacking tool firm.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-59393823?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:56:02 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ethiopia's Haile Gebrselassie and Feyisa Lilesa ready to join Tigray war", + "description": "Haile Gebrselassie and Feyisa Lilesa back the PM's call to go to the front line of the Tigray war.", + "content": "Haile Gebrselassie and Feyisa Lilesa back the PM's call to go to the front line of the Tigray war.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59393463?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:47:04 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Wisconsin: Child becomes sixth fatality in car-ramming", + "description": "An eight-year-old boy is the latest person to die after a car ploughed into a crowd in Wisconsin.", + "content": "An eight-year-old boy is the latest person to die after a car ploughed into a crowd in Wisconsin.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59396999?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:25:20 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sweden votes in Magdalena Andersson as first female PM", + "description": "Before MPs backed Magdalena Andersson, Sweden was the only Nordic state never to have a woman as PM.", + "content": "Before MPs backed Magdalena Andersson, Sweden was the only Nordic state never to have a woman as PM.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59400539?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:40:54 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Karim Benzema: French footballer guilty in sex tape blackmail case", + "description": "The Real Madrid striker is convicted of conspiring to blackmail fellow footballer Mathieu Valbuena.", + "content": "The Real Madrid striker is convicted of conspiring to blackmail fellow footballer Mathieu Valbuena.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59399701?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:24:01 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China: Photographer sorry for 'small eyes' Dior picture", + "description": "Some Chinese netizens found her photo insulting and racist as it showed a woman with small eyes.", + "content": "Some Chinese netizens found her photo insulting and racist as it showed a woman with small eyes.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-china-59397737?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:20:46 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kerala adoption row: A mother's search for her missing baby in India", + "description": "A mother's search for a missing baby in India has caused outrage and whipped up a political storm.", + "content": "A mother's search for a missing baby in India has caused outrage and whipped up a political storm.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59306355?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:05:30 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sri Lanka attacks: 23,000 charges filed against suspects as trial begins", + "description": "The list of charges and witnesses could mean a trial that takes up to 10 years, lawyers warn.", + "content": "The list of charges and witnesses could mean a trial that takes up to 10 years, lawyers warn.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-59397642?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 08:51:12 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Blast off for Nasa mission to strike space rock", + "description": "The spacecraft is set to crash into an object called Dimorphos in September 2022.", + "content": "The spacecraft is set to crash into an object called Dimorphos in September 2022.", + "category": "", + "link": "https://www.bbc.co.uk/news/science-environment-59399510?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 07:57:01 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia power plant demolition sees giant chimneys tumble to ground", + "description": "Huge amounts of metal and concrete will be recycled after the demolition of an old coal power plant.", + "content": "Huge amounts of metal and concrete will be recycled after the demolition of an old coal power plant.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-australia-59397899?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 05:48:30 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Waukesha Christmas Parade: Dancing grannies and boy among victims", + "description": "An eight-year-old boy is the latest victim to succumb to injuries in the Waukesha Christmas parade car-ramming.", + "content": "An eight-year-old boy is the latest victim to succumb to injuries in the Waukesha Christmas parade car-ramming.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59382870?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 03:01:05 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Colombia peace deal: The families displaced five years on", + "description": "Five years after a peace deal came into force in Colombia, violence by armed gangs is again on the rise.", + "content": "Five years after a peace deal came into force in Colombia, violence by armed gangs is again on the rise.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-latin-america-59386282?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 01:26:47 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Uganda suicide attacks: Inside view of the IS-linked ADF rebels", + "description": "An ex-fighter tells the BBC how the ADF, an IS affiliate, has been able to strike at Uganda's heart.", + "content": "An ex-fighter tells the BBC how the ADF, an IS affiliate, has been able to strike at Uganda's heart.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59380311?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 01:24:38 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Farm laws: Sikhs being targeted by fake social media profiles", + "description": "A total of 80 accounts have been suspended following a report into the network.", + "content": "A total of 80 accounts have been suspended following a report into the network.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59338245?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 00:54:56 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rescuing the Afghanistan girls' football team", + "description": "The mission to rescue the national Afghan girls' football team from the Taliban.", + "content": "The mission to rescue the national Afghan girls' football team from the Taliban.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-59394170?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 00:10:38 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Walgreens, CVS, and Walmart fuelled opioid crisis, Ohio jury finds", + "description": "A federal court finds Walgreens, CVS and Walmart helped create an oversupply of addictive painkillers.", + "content": "A federal court finds Walgreens, CVS and Walmart helped create an oversupply of addictive painkillers.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-59396041?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 22:59:50 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kevin Strickland exonerated after 42 years in Missouri prison", + "description": "Kevin Strickland was arrested at age 18 and convicted of a triple murder he did not commit.", + "content": "Kevin Strickland was arrested at age 18 and convicted of a triple murder he did not commit.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59396598?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 22:17:06 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bulgarian holiday bus tragedy hits young nation", + "description": "There is little since North Macedonia's 1991 declaration of independence to compare to this.", + "content": "There is little since North Macedonia's 1991 declaration of independence to compare to this.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59395495?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 20:48:18 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Yalda Hakim: My return to Afghanistan", + "description": "The BBC's Yalda Hakim - who was born in Afghanistan - reports on the impact of 100 days of Taliban rule.", + "content": "The BBC's Yalda Hakim - who was born in Afghanistan - reports on the impact of 100 days of Taliban rule.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-middle-east-59385469?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 15:53:08 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Meredith Kercher: Student's killer Rudy Guede ends sentence", + "description": "Rudy Guede was the only person convicted of the 2007 murder of the exchange student in Perugia in Italy.", + "content": "Rudy Guede was the only person convicted of the 2007 murder of the exchange student in Perugia in Italy.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59388718?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 14:15:15 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peng Shuai: China says tennis star case maliciously hyped up", + "description": "As questions remain over the tennis star's wellbeing, China insists it is not a diplomatic matter.", + "content": "As questions remain over the tennis star's wellbeing, China insists it is not a diplomatic matter.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-china-59385519?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:10:06 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mexican nursery's lottery win turns into nightmare", + "description": "Parents who won almost $1m are being threatened by a gang demanding they use the money to buy guns.", + "content": "Parents who won almost $1m are being threatened by a gang demanding they use the money to buy guns.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-latin-america-59386281?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:22:58 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ethiopia's Tigray conflict: PM Abiy Ahmed vows to lead from the war front", + "description": "Abiy Ahmed has said he will go to the front line to face Tigrayan rebels in the country's civil war.", + "content": "Abiy Ahmed has said he will go to the front line to face Tigrayan rebels in the country's civil war.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59386181?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:21:39 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Afghanistan: 100 days of Taliban rule", + "description": "BBC reporter Yalda Hakim visits Kabul to look at four key areas of concern in Afghanistan.", + "content": "BBC reporter Yalda Hakim visits Kabul to look at four key areas of concern in Afghanistan.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-59381294?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:08:09 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Uber makes its first step into the cannabis market", + "description": "Customers will be able to place orders on the app then pick them up at nearby stores within an hour.", + "content": "Customers will be able to place orders on the app then pick them up at nearby stores within an hour.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-59342016?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:03:42 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dozens killed in Bulgaria bus crash, including children", + "description": "At least 45 die, including children, after a bus crashes and catches fire in western Bulgaria.", + "content": "At least 45 die, including children, after a bus crashes and catches fire in western Bulgaria.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59383852?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 06:57:29 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia declares La Niña weather event has begun", + "description": "The phenomenon can lead to significant weather changes in different parts of the world.", + "content": "The phenomenon can lead to significant weather changes in different parts of the world.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-australia-59383008?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:19:41 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Greenland's Inuits seek Denmark compensation over failed social experiment", + "description": "Six surviving Greenlanders are part of a group of 22 children taken for \"re-education\" in 1951.", + "content": "Six surviving Greenlanders are part of a group of 22 children taken for \"re-education\" in 1951.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59382793?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 04:29:13 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse says his case 'has nothing to do with race'", + "description": "\"I support the BLM movement,\" says the teen, who was acquitted of shooting three during racial unrest.", + "content": "\"I support the BLM movement,\" says the teen, who was acquitted of shooting three during racial unrest.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59382788?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 03:08:48 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia missing campers: Man arrested over pair's disappearance", + "description": "Carol Clay and Russell Hill vanished in March last year during a camping trip in Victoria.", + "content": "Carol Clay and Russell Hill vanished in March last year during a camping trip in Victoria.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-australia-59383007?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 02:31:24 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dart: Mission to smack Dimorphos asteroid set for launch", + "description": "A spacecraft is set to launch on a mission to nudge an asteroid off course.", + "content": "A spacecraft is set to launch on a mission to nudge an asteroid off course.", + "category": "", + "link": "https://www.bbc.co.uk/news/science-environment-59327293?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 01:41:20 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kevin Spacey to pay $31m to studio after abuse claims", + "description": "The actor was ordered to pay $31m (£23.2) to the House of Cards studio after sexual abuse claims.", + "content": "The actor was ordered to pay $31m (£23.2) to the House of Cards studio after sexual abuse claims.", + "category": "", + "link": "https://www.bbc.co.uk/news/entertainment-arts-59378553?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 00:26:04 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China bans Namewee's viral pop song Fragile", + "description": "Fragile mocks Beijing and “little pinks”, a term referring to young nationalists who rush to the defence of the Chinese government.", + "content": "Fragile mocks Beijing and “little pinks”, a term referring to young nationalists who rush to the defence of the Chinese government.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-china-59379880?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 00:11:48 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Six ways shoebox-sized satellites are trying to change the world", + "description": "The CubeSat began as an educational tool but is now helping out humanity", + "content": "The CubeSat began as an educational tool but is now helping out humanity", + "category": "", + "link": "https://www.bbc.co.uk/news/world-59346457?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 00:10:20 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How child sex abuse rose during pandemic in India", + "description": "The demand and distribution of abuse imagery shot up in India as lockdowns confined people to their homes.", + "content": "The demand and distribution of abuse imagery shot up in India as lockdowns confined people to their homes.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59173473?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 00:09:09 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Can South Africa embrace renewable energy from the sun?", + "description": "South Africa's main electricity company Eskom plans to switch from using coal to renewable energy.", + "content": "South Africa's main electricity company Eskom plans to switch from using coal to renewable energy.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-58971281?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 00:06:46 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ethiopia's Tigray conflict: What are Facebook and Twitter doing about hate speech?", + "description": "Critics say social media firms are not doing enough to curb online hate speech around Ethiopia's war.", + "content": "Critics say social media firms are not doing enough to curb online hate speech around Ethiopia's war.", + "category": "", + "link": "https://www.bbc.co.uk/news/59251942?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 00:05:12 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Iran nuclear programme: Threat of Israeli strike grows", + "description": "As Iran's nuclear programme forges ahead, some see Israel running out of options to thwart it.", + "content": "As Iran's nuclear programme forges ahead, some see Israel running out of options to thwart it.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-middle-east-59322152?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 00:03:48 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Wisconsin witnesses recount how SUV mowed down parade-goers", + "description": "\"Little girls flying through the air.\" Witnesses recount the Waukesha Christmas parade horror.", + "content": "\"Little girls flying through the air.\" Witnesses recount the Waukesha Christmas parade horror.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59382797?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 22:48:47 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Wisconsin: Waukesha Police Chief chokes up while naming Christmas parade incident victims", + "description": "At least five people, aged between 52 and 81, were killed when a vehicle ploughed into a Christmas parade.", + "content": "At least five people, aged between 52 and 81, were killed when a vehicle ploughed into a Christmas parade.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59381928?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 21:13:11 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Wisconsin: Driver 'intentionally' mowed down people at parade", + "description": "At least five people, aged 52 to 81, were killed when an SUV ploughed into a Christmas celebration.", + "content": "At least five people, aged 52 to 81, were killed when an SUV ploughed into a Christmas celebration.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59378571?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 21:13:01 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Austrian Chancellor: 'You don’t only have rights, you have obligations'", + "description": "Austria's chancellor regrets jabs will be mandatory, but current low rates are \"too little, too late\".", + "content": "Austria's chancellor regrets jabs will be mandatory, but current low rates are \"too little, too late\".", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59378552?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 21:08:52 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peppa Pig and losing notes: UK PM's bizarre speech", + "description": "Boris Johnson is questioned by a reporter after talking about Peppa Pig World at a business conference.", + "content": "Boris Johnson is questioned by a reporter after talking about Peppa Pig World at a business conference.", + "category": "", + "link": "https://www.bbc.co.uk/news/uk-59381775?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:23:16 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Germany Covid: Health minister's stark warning to get jabbed", + "description": "As Germany battles a fourth Covid wave, the health minister gives a stark warning to get vaccinated.", + "content": "As Germany battles a fourth Covid wave, the health minister gives a stark warning to get vaccinated.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59378548?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:17:02 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jerome Powell nominated to stay as US Federal Reserve chair", + "description": "President Biden opts for continuity by nominating Jerome Powell to remain head of the central bank.", + "content": "President Biden opts for continuity by nominating Jerome Powell to remain head of the central bank.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-59340779?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:14:39 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid in Kenya: Government gives 20 million a month to get vaccinated", + "description": "Although less than 10% of Kenyans are vaccinated, the government wants to avoid a surge over Christmas.", + "content": "Although less than 10% of Kenyans are vaccinated, the government wants to avoid a surge over Christmas.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59367726?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 14:55:37 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cuba congratulates Venezuela on poll before result was out", + "description": "Cuba's president tweeted about the results before there had been an official announcement.", + "content": "Cuba's president tweeted about the results before there had been an official announcement.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-latin-america-59331696?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 14:18:28 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Crowd trouble threatens future of French football, says sports minister", + "description": "France's sports minister says repeated crowd trouble at Ligue 1 matches is putting the \"survival\" of French football \"at stake\".", + "content": "France's sports minister says repeated crowd trouble at Ligue 1 matches is putting the \"survival\" of French football \"at stake\".", + "category": "", + "link": "https://www.bbc.co.uk/sport/football/59374778?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 13:51:31 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peng Shuai: WTA says concerns remain for Chinese tennis star after IOC call", + "description": "Peng Shuai disappeared from the public eye after making sex assault allegations against a Chinese official.", + "content": "Peng Shuai disappeared from the public eye after making sex assault allegations against a Chinese official.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-china-59372058?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:23:17 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Far-right candidate through to Chile presidential run-off", + "description": "Voters will have to choose between far-right candidate José Antonio Kast and left-winger Gabriel Boric.", + "content": "Voters will have to choose between far-right candidate José Antonio Kast and left-winger Gabriel Boric.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-latin-america-59331695?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 11:41:24 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid vaccines: How fast is progress around the world?", + "description": "Charts and maps tracking the progress of Covid vaccination programmes.", + "content": "Charts and maps tracking the progress of Covid vaccination programmes.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-56237778?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 11:32:20 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "American Music Awards: BTS and Taylor Swift take top awards", + "description": "The K-pop band win artist of the year, while Taylor Swift picks up a record-breaking 34th award.", + "content": "The K-pop band win artist of the year, while Taylor Swift picks up a record-breaking 34th award.", + "category": "", + "link": "https://www.bbc.co.uk/news/entertainment-arts-59372518?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:50:25 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "War photographer: 'Telling people's stories gives me hope'", + "description": "Claire Thomas says she couldn't help people in Iraq and Afghanistan, but she could tell their stories.", + "content": "Claire Thomas says she couldn't help people in Iraq and Afghanistan, but she could tell their stories.", + "category": "", + "link": "https://www.bbc.co.uk/news/uk-wales-59332407?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:43:45 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'I never expected my wedding song to be a global hit'", + "description": "Nimco Happy, the Somali singer of the viral TikTok hit Isii Nafta (I love you more than my life), reacts to her new-found fame.", + "content": "Nimco Happy, the Somali singer of the viral TikTok hit Isii Nafta (I love you more than my life), reacts to her new-found fame.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59369575?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 07:38:55 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The 99-year-old cyclist who has won a world silver medal", + "description": "How a former World War Two pilot came second in a cycling competition for older people.", + "content": "How a former World War Two pilot came second in a cycling competition for older people.", + "category": "", + "link": "https://www.bbc.co.uk/news/business-59317505?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 00:09:08 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "TB Joshua's widow and the battle for his Nigerian church", + "description": "Five months after the death of the prominent Nigerian televangelist, services have resumed.", + "content": "Five months after the death of the prominent Nigerian televangelist, services have resumed.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59295624?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 00:08:48 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why schools are failing children on climate change", + "description": "Experts say it's time for India's schools to start teaching climate change as a distinct subject.", + "content": "Experts say it's time for India's schools to start teaching climate change as a distinct subject.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59173478?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 00:06:36 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kunsthaus Zurich: Looted art claims pose questions for Swiss museum", + "description": "Emil Bührle's impressionist art collection raises problems for Zurich's big, extended Kunsthaus.", + "content": "Emil Bührle's impressionist art collection raises problems for Zurich's big, extended Kunsthaus.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59320514?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 00:04:04 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Beirut blast: UN ignored plea for port disaster evidence", + "description": "Letters to the UN chief's office requesting key information have gone unanswered, the BBC has found.", + "content": "Letters to the UN chief's office requesting key information have gone unanswered, the BBC has found.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-middle-east-59290301?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 00:00:53 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid: Water cannons and tear gas fired at protesters in Belgium", + "description": "Belgium is the latest country to face unrest over new Covid-19 measures, with anger spreading across Europe.", + "content": "Belgium is the latest country to face unrest over new Covid-19 measures, with anger spreading across Europe.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59368718?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 18:11:55 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "ICYMI: Snowboarding baby goes viral and motocross rider front flips off a cliff", + "description": "Snowboarding baby, Wang Yuji, goes viral in China and others stories you may have missed this week.", + "content": "Snowboarding baby, Wang Yuji, goes viral in China and others stories you may have missed this week.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-59346367?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 12:02:37 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ole Gunnar Solskjaer: What went wrong at Man Utd?", + "description": "Ole Gunnar Solskjaer leaves Old Trafford after a slump in form - but was it all down to him?", + "content": "Ole Gunnar Solskjaer leaves Old Trafford after a slump in form - but was it all down to him?", + "category": "", + "link": "https://www.bbc.co.uk/sport/football/59364799?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 10:38:53 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Barcelona tackles roaming wild boar problem", + "description": "Pop star Shakira is just one of the city's residents to have had problems with the animals.", + "content": "Pop star Shakira is just one of the city's residents to have had problems with the animals.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59352740?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 00:04:35 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse: Who is US teen cleared of protest killings?", + "description": "The suspect shot three men, two of whom were armed, during racial unrest in Wisconsin.", + "content": "The suspect shot three men, two of whom were armed, during racial unrest in Wisconsin.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-53934109?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 22:43:21 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Belarus's Lukashenko tells BBC: We may have helped migrants into EU", + "description": "In an exclusive interview, Alexander Lukashenko says it was \"absolutely possible\" migrants had help.", + "content": "In an exclusive interview, Alexander Lukashenko says it was \"absolutely possible\" migrants had help.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59343815?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 22:24:03 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse: US teenager cleared over Kenosha killings", + "description": "Kyle Rittenhouse killed two men and injured a third at racial justice protests in Kenosha, Wisconsin.", + "content": "Kyle Rittenhouse killed two men and injured a third at racial justice protests in Kenosha, Wisconsin.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59352228?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 21:46:02 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peng Shuai: US 'deeply concerned' over Chinese tennis star", + "description": "Peng Shuai, 35, has not been heard from since she accused a top Chinese official of sexual assault.", + "content": "Peng Shuai, 35, has not been heard from since she accused a top Chinese official of sexual assault.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-china-59327679?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 21:31:12 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "In pictures: British Columbia devastated by catastrophic floods", + "description": "The flooding in Canada's west may be the most expensive natural disaster in the country's history.", + "content": "The flooding in Canada's west may be the most expensive natural disaster in the country's history.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59352803?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 21:24:22 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "DR Congo data leak: Millions transferred to Joseph Kabila allies", + "description": "Family and friends of former DR Congo President Joseph Kabila are named by Africa's biggest data leak.", + "content": "Family and friends of former DR Congo President Joseph Kabila are named by Africa's biggest data leak.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59343922?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:57:59 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kamala Harris: First woman to get US presidential powers (briefly)", + "description": "Vice-President Kamala Harris briefly took control during Joe Biden's routine health check.", + "content": "Vice-President Kamala Harris briefly took control during Joe Biden's routine health check.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59352170?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:44:18 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Austria to go into full lockdown as Covid surges", + "description": "As well as Monday's lockdown, the chancellor says vaccinations will be compulsory from February.", + "content": "As well as Monday's lockdown, the chancellor says vaccinations will be compulsory from February.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59343650?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:49:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Belarus president tells BBC: ‘We won’t stop the migrants’", + "description": "In an exclusive interview, President Lukashenko tells the BBC it’s “absolutely possible” his forces helped migrants cross into Poland.", + "content": "In an exclusive interview, President Lukashenko tells the BBC it’s “absolutely possible” his forces helped migrants cross into Poland.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-59353683?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:43:52 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Africa is the future, says US. But what will change?", + "description": "US Secretary of State Antony Blinken talks of partnerships and avoids condescending lectures of the past.", + "content": "US Secretary of State Antony Blinken talks of partnerships and avoids condescending lectures of the past.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-africa-59327059?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:43:28 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Elijah McClain family to receive $15m settlement from Colorado", + "description": "Elijah McClain was put in a chokehold and injected with ketamine after being stopped by police.", + "content": "Elijah McClain was put in a chokehold and injected with ketamine after being stopped by police.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59351260?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:05:58 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "US House votes to pass $1.9tn social spending plan", + "description": "The Build Back Better Act now heads to the Senate, where it faces significant hurdles.", + "content": "The Build Back Better Act now heads to the Senate, where it faces significant hurdles.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59351261?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:03:01 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Brazil: Amazon sees worst deforestation levels in 15 years", + "description": "The figures come after Brazil promised to end the practice by 2030 during the COP climate summit.", + "content": "The figures come after Brazil promised to end the practice by 2030 during the COP climate summit.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-latin-america-59341770?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 09:47:31 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Farm laws: India PM Narendra Modi repeals controversial reforms", + "description": "Indian PM Narendra Modi has announced the repeal of controversial farm laws.", + "content": "Indian PM Narendra Modi has announced the repeal of controversial farm laws.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59342627?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 07:09:18 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Viewpoint: When Hindus and Muslims joined hands to riot", + "description": "What can 100-year-old riots, where Hindus and Muslims fought on the same side, teach us?", + "content": "What can 100-year-old riots, where Hindus and Muslims fought on the same side, teach us?", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-india-59174930?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 01:12:24 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why France's Zemmour is dredging up World War Two", + "description": "The TV pundit is a likely presidential candidate but his views on wartime history are controversial.", + "content": "The TV pundit is a likely presidential candidate but his views on wartime history are controversial.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59329974?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 01:09:48 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Malaysian transgender woman Nur Sajat: 'I had to run away'", + "description": "Transgender woman Nur Sajat fled Malaysia after being charged with insulting Islam.", + "content": "Transgender woman Nur Sajat fled Malaysia after being charged with insulting Islam.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-59286774?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 01:02:11 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Afghanistan: The teenage girls returning to school under the Taliban", + "description": "The BBC's John Simpson visits Bamiyan and finds some girls are attending secondary school in Afghanistan.", + "content": "The BBC's John Simpson visits Bamiyan and finds some girls are attending secondary school in Afghanistan.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-asia-59340356?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 00:26:02 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australian school food van: 'I didn't believe in myself until I got this job'", + "description": "An Australian school is using a food van to help struggling students explore new avenues.", + "content": "An Australian school is using a food van to help struggling students explore new avenues.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-australia-59257766?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 00:16:16 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ros Atkins on... the missing Chinese tennis star Peng Shuai", + "description": "Questions remain about the whereabouts of Peng Shuai, after she accused a top Chinese government official of sexual assault.", + "content": "Questions remain about the whereabouts of Peng Shuai, after she accused a top Chinese government official of sexual assault.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-59341755?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 00:08:34 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The doctor fleeing Tennessee over Covid", + "description": "The former head of the US state's vaccine rollout has been forced out after threats and taunts.", + "content": "The former head of the US state's vaccine rollout has been forced out after threats and taunts.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-us-canada-59335010?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 21:34:49 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The family of asylum-seekers trapped on Europe’s edge", + "description": "A BBC team filmed a couple and their two-year-old daughter as they attempted to cross the Bosnia-Croatia border into the EU in search of asylum for the 40th time.", + "content": "A BBC team filmed a couple and their two-year-old daughter as they attempted to cross the Bosnia-Croatia border into the EU in search of asylum for the 40th time.", + "category": "", + "link": "https://www.bbc.co.uk/news/world-europe-59325777?at_medium=RSS&at_campaign=KARANGA", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 05:59:26 GMT", + "folder": "00.03 News/News - EN", + "feed": "BBC Worldwide", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - EN", + "name": "BBC Worldwide" + }, + { + "title": "Lifehacker", + "subtitle": "", + "link": "https://lifehacker.com", + "image": null, + "description": "Do everything better", + "items": [ + { + "title": "How to Decide Whether to Board or Bring Your Pet on a Holiday Road Trip", + "description": "

    Many people think of their furry, four-legged friends as being part of their family, so it can be hard to leave them for the holidays. But with holiday travel being hectic enough on its own, it’s not always clear whether to add your mutt to the mix.

    Read more...

    ", + "content": "

    Many people think of their furry, four-legged friends as being part of their family, so it can be hard to leave them for the holidays. But with holiday travel being hectic enough on its own, it’s not always clear whether to add your mutt to the mix.

    Read more...

    ", + "category": "jessica bell", + "link": "https://lifehacker.com/how-to-decide-whether-to-board-or-bring-your-pet-on-a-h-1848117313", + "creator": "Elizabeth Yuko", + "pubDate": "Thu, 25 Nov 2021 18:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Share Your Dietary Preferences and Restrictions Without Sounding Rude", + "description": "

    Not everyone is on the same page when it comes to food allergies and intolerances, and dietary restrictions and preferences, and that’s never more evident than at a holiday meal. While your immediate family may know you’re vegan or lactose intolerant, that’s not necessarily the case with extended family, friends, or…

    Read more...

    ", + "content": "

    Not everyone is on the same page when it comes to food allergies and intolerances, and dietary restrictions and preferences, and that’s never more evident than at a holiday meal. While your immediate family may know you’re vegan or lactose intolerant, that’s not necessarily the case with extended family, friends, or…

    Read more...

    ", + "category": "diet", + "link": "https://lifehacker.com/how-to-share-your-dietary-preferences-and-restrictions-1848117253", + "creator": "Elizabeth Yuko", + "pubDate": "Thu, 25 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Laziest, Most Efficient Way to Clean Just Before Guests Arrive", + "description": "

    Having people over is always more work than you think it’s going to be. Even if you go in with the intention of keeping it casual, there’s usually the moment about a half hour before guests are set to arrive that you realize that your home—which you initially didn’t think was that bad—actually looks pretty sloppy.

    Read more...

    ", + "content": "

    Having people over is always more work than you think it’s going to be. Even if you go in with the intention of keeping it casual, there’s usually the moment about a half hour before guests are set to arrive that you realize that your home—which you initially didn’t think was that bad—actually looks pretty sloppy.

    Read more...

    ", + "category": "", + "link": "https://lifehacker.com/the-laziest-most-efficient-way-to-clean-just-before-gu-1848117221", + "creator": "Elizabeth Yuko", + "pubDate": "Thu, 25 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Please Don't Bring These Things Up at the Thanksgiving Table", + "description": "

    Hopefully, we all know to avoid politics and religion at holiday social occasions where guests of varying ideological and spiritual leanings have gathered, for a good, festive time. But there are plenty of other verboten subjects and lines of questioning from which you should probably steer clear—that is, unless you…

    Read more...

    ", + "content": "

    Hopefully, we all know to avoid politics and religion at holiday social occasions where guests of varying ideological and spiritual leanings have gathered, for a good, festive time. But there are plenty of other verboten subjects and lines of questioning from which you should probably steer clear—that is, unless you…

    Read more...

    ", + "category": "", + "link": "https://lifehacker.com/please-dont-bring-these-things-up-at-the-thanksgiving-t-1848119290", + "creator": "Sarah Showfety", + "pubDate": "Wed, 24 Nov 2021 21:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Tell If You’re Oversharing (and How to Stop It)", + "description": "

    The line between private and public information has never been more blurred, whether you blame reality TV, social media, or perhaps a global pandemic steadily chipping away at all of our emotional states. Chances are good that at one point or another, you’ve been guilty of oversharing, which the New York Times

    Read more...

    ", + "content": "

    The line between private and public information has never been more blurred, whether you blame reality TV, social media, or perhaps a global pandemic steadily chipping away at all of our emotional states. Chances are good that at one point or another, you’ve been guilty of oversharing, which the New York Times

    Read more...

    ", + "category": "", + "link": "https://lifehacker.com/how-to-tell-if-you-re-oversharing-and-how-to-stop-it-1847937624", + "creator": "Meredith Dietz", + "pubDate": "Wed, 24 Nov 2021 20:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "There Were Billions of T-rexes, and 9 Other Things You Never Knew About Dinosaurs", + "description": "

    Dinosaurs have been extinct for over 65 million years, but scientists just can’t let them rest in their colossal graves. Instead, they’re digging up fossils, conducting research, and otherwise changing our understanding of dinosaur biology and culture. Please enjoy these ten newly discovered facts and theories about…

    Read more...

    ", + "content": "

    Dinosaurs have been extinct for over 65 million years, but scientists just can’t let them rest in their colossal graves. Instead, they’re digging up fossils, conducting research, and otherwise changing our understanding of dinosaur biology and culture. Please enjoy these ten newly discovered facts and theories about…

    Read more...

    ", + "category": "paleontology", + "link": "https://lifehacker.com/10-amazing-things-you-never-knew-about-dinosaurs-1848118855", + "creator": "Stephen Johnson", + "pubDate": "Wed, 24 Nov 2021 20:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Recognize When You're in An Emotional Affair (and What to Do About It)", + "description": "

    The word “affair” makes us think of fiery, passionate, physical flings, but not every affair is an in-person tryst. Some are emotional affairs and, unlike their physical counterparts, they can be trickier to identify. Are you getting way too personal with a colleague? Are you making up excuses to see your kid’s cute…

    Read more...

    ", + "content": "

    The word “affair” makes us think of fiery, passionate, physical flings, but not every affair is an in-person tryst. Some are emotional affairs and, unlike their physical counterparts, they can be trickier to identify. Are you getting way too personal with a colleague? Are you making up excuses to see your kid’s cute…

    Read more...

    ", + "category": "emotional affair", + "link": "https://lifehacker.com/how-to-recognize-when-youre-in-an-emotional-affair-and-1847993221", + "creator": "Lindsey Ellefson", + "pubDate": "Wed, 24 Nov 2021 19:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "So You Bought the Wrong Milk for Your Pumpkin Pie", + "description": "

    Sweetened condensed milk and evaporated milk are two distinct products, but it’s easy to get them confused. They’re both milk that comes in cans, and they’re usually stocked right next to each other, often with the same cute little cow on the label. Grabbing one when you meant to grab the other is not outside of the…

    Read more...

    ", + "content": "

    Sweetened condensed milk and evaporated milk are two distinct products, but it’s easy to get them confused. They’re both milk that comes in cans, and they’re usually stocked right next to each other, often with the same cute little cow on the label. Grabbing one when you meant to grab the other is not outside of the…

    Read more...

    ", + "category": "pumpkin pie", + "link": "https://lifehacker.com/so-you-bought-the-wrong-milk-for-your-pumpkin-pie-1848118315", + "creator": "Claire Lower", + "pubDate": "Wed, 24 Nov 2021 19:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Black Friday Is a Scam", + "description": "

    This isn’t a post about how to avoid scammers on Black Friday (though, there will be plenty of those, so watch out). It’s about how the whole event is an over-hyped, panic-inducing marketing blitz to which we should not subscribe. (You hear me, Big Retail? I don’t believe those LEGOs will only be $9 off for one day.

    Read more...

    ", + "content": "

    This isn’t a post about how to avoid scammers on Black Friday (though, there will be plenty of those, so watch out). It’s about how the whole event is an over-hyped, panic-inducing marketing blitz to which we should not subscribe. (You hear me, Big Retail? I don’t believe those LEGOs will only be $9 off for one day.

    Read more...

    ", + "category": "black friday", + "link": "https://lifehacker.com/black-friday-is-a-scam-1848117218", + "creator": "Sarah Showfety", + "pubDate": "Wed, 24 Nov 2021 18:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Our Favorite Home Improvements You Can Make for Less Than $100", + "description": "

    Home improvement projects can be daunting, both in scale and in cost. But if you’re looking for small ways to make your home more comfortable, more efficient, or safer for you and your guests, you don’t have to go broke. Here are a few of our favorite home improvement projects that will yield big results, even on a…

    Read more...

    ", + "content": "

    Home improvement projects can be daunting, both in scale and in cost. But if you’re looking for small ways to make your home more comfortable, more efficient, or safer for you and your guests, you don’t have to go broke. Here are a few of our favorite home improvement projects that will yield big results, even on a…

    Read more...

    ", + "category": "central heating", + "link": "https://lifehacker.com/our-favorite-home-improvements-you-can-make-for-less-th-1848115216", + "creator": "Becca Lewis", + "pubDate": "Wed, 24 Nov 2021 18:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "You Should Try DuckDuckGo's New Tracker Protection on Android, No Matter What Browser You Use", + "description": "

    We all know that the internet isn’t a “private” place. When you search for something on Google or download a new app, there’s an understanding that some of your data is likely going somewhere. That said, what’s especially creepy about the state of our privacy online is how invisible tracking can be. You can think…

    Read more...

    ", + "content": "

    We all know that the internet isn’t a “private” place. When you search for something on Google or download a new app, there’s an understanding that some of your data is likely going somewhere. That said, what’s especially creepy about the state of our privacy online is how invisible tracking can be. You can think…

    Read more...

    ", + "category": "duckduckgo", + "link": "https://lifehacker.com/you-should-try-duckduckgos-new-tracker-protection-on-an-1848116798", + "creator": "Jake Peterson", + "pubDate": "Wed, 24 Nov 2021 17:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What's New on Paramount Plus in December 2021", + "description": "

    The weirdest thing about the Peak Streaming Era is that there are TV shows that have been running for years that I, a person who reads entertainment websites for fun and listens to podcasts about TV, have never heard of.

    Read more...

    ", + "content": "

    The weirdest thing about the Peak Streaming Era is that there are TV shows that have been running for years that I, a person who reads entertainment websites for fun and listens to podcasts about TV, have never heard of.

    Read more...

    ", + "category": "rugrats", + "link": "https://lifehacker.com/whats-new-on-paramount-plus-in-december-2021-1848117485", + "creator": "Joel Cunningham", + "pubDate": "Wed, 24 Nov 2021 17:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to (Try to) Prevent Your Kid From Melting Down During the Holidays", + "description": "

    As much as we may wax nostalgic about what the holidays were like for us growing up, being a parent during this time of the year isn’t exactly easy. There’s the nonstop sugar, the disruptions to your child’s schedule, the heightened anticipation about presents, and all the other overstimulating festivities.

    Read more...

    ", + "content": "

    As much as we may wax nostalgic about what the holidays were like for us growing up, being a parent during this time of the year isn’t exactly easy. There’s the nonstop sugar, the disruptions to your child’s schedule, the heightened anticipation about presents, and all the other overstimulating festivities.

    Read more...

    ", + "category": "jason kahn", + "link": "https://lifehacker.com/how-to-try-to-prevent-your-kid-from-melting-down-duri-1848115100", + "creator": "Rachel Fairbank", + "pubDate": "Wed, 24 Nov 2021 16:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Everyone Secretly Hates 'Do-Gooders'", + "description": "

    This article from the BBC made me feel so relieved at my loathing of altruists that I can finally say what most of us have been thinking: Selfless people are the absolute worst.

    Read more...

    ", + "content": "

    This article from the BBC made me feel so relieved at my loathing of altruists that I can finally say what most of us have been thinking: Selfless people are the absolute worst.

    Read more...

    ", + "category": "motivation", + "link": "https://lifehacker.com/why-everyone-secretly-hates-do-gooders-1848114786", + "creator": "Stephen Johnson", + "pubDate": "Wed, 24 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Black Friday Food Deals to Sustain You While You Shop", + "description": "

    Although Black Friday isn’t the be-all-end-all shopping day it once was, for some people, hitting the stores at the stroke of midnight, after downing a plate of Thanksgiving leftovers, has become a tradition.

    Read more...

    ", + "content": "

    Although Black Friday isn’t the be-all-end-all shopping day it once was, for some people, hitting the stores at the stroke of midnight, after downing a plate of Thanksgiving leftovers, has become a tradition.

    Read more...

    ", + "category": "black friday", + "link": "https://lifehacker.com/black-friday-food-deals-to-sustain-you-while-you-shop-1848114149", + "creator": "Elizabeth Yuko", + "pubDate": "Wed, 24 Nov 2021 15:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Should You Get a Whoop Band or a Smartwatch?", + "description": "

    If you want an activity tracker, there are a bunch of great choices out there, from budget step trackers to full-featured watches. If you’ve decided you want a ton of data and don’t mind spending extra money for it, that narrows down your options a good bit, but one of the candidates is not quite like the others. So…

    Read more...

    ", + "content": "

    If you want an activity tracker, there are a bunch of great choices out there, from budget step trackers to full-featured watches. If you’ve decided you want a ton of data and don’t mind spending extra money for it, that narrows down your options a good bit, but one of the candidates is not quite like the others. So…

    Read more...

    ", + "category": "whoop", + "link": "https://lifehacker.com/should-you-get-a-whoop-band-or-a-smartwatch-1848110715", + "creator": "Beth Skwarecki", + "pubDate": "Wed, 24 Nov 2021 15:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "These Food Chains Won't Judge You and Will Be Open on Thanksgiving Day", + "description": "

    For many of us, Thanksgiving is centered around a huge meal. But let’s say you don’t feel like spending much, if any, time in the kitchen and would rather be on the couch watching TV with takeout. Or maybe your food prep doesn’t go quite as planned and you need a last-minute backup dinner. Or you’ve realized you…

    Read more...

    ", + "content": "

    For many of us, Thanksgiving is centered around a huge meal. But let’s say you don’t feel like spending much, if any, time in the kitchen and would rather be on the couch watching TV with takeout. Or maybe your food prep doesn’t go quite as planned and you need a last-minute backup dinner. Or you’ve realized you…

    Read more...

    ", + "category": "thanksgiving", + "link": "https://lifehacker.com/these-food-chains-wont-judge-you-and-will-be-open-on-th-1848110919", + "creator": "Emily Long", + "pubDate": "Wed, 24 Nov 2021 14:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Do These Things When You’re so Irritated You’re About to Snap", + "description": "

    It’s always the little things that make me snap. A spouse breathing too loudly, a dish left in the sink, a stranger’s bad parking job: Suddenly my whole day is ruined, and everyone I know is lucky enough to be subjected to my Larry David-like rants.

    Read more...

    ", + "content": "

    It’s always the little things that make me snap. A spouse breathing too loudly, a dish left in the sink, a stranger’s bad parking job: Suddenly my whole day is ruined, and everyone I know is lucky enough to be subjected to my Larry David-like rants.

    Read more...

    ", + "category": "attention deficit hyperactivity disorder", + "link": "https://lifehacker.com/do-these-things-when-you-re-so-irritated-you-re-about-t-1848041707", + "creator": "Meredith Dietz", + "pubDate": "Wed, 24 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Best and Worst Hours to Drive on Thanksgiving, According to AAA", + "description": "

    After a holiday season during which many of us stayed close to home (ahem, 2020), Thanksgiving 2021 is expected to be busy for travel of all kinds. That means highways and airports are likely to be more crowded than at any time in recent memory, and delays and disruptions are inevitable.

    Read more...

    ", + "content": "

    After a holiday season during which many of us stayed close to home (ahem, 2020), Thanksgiving 2021 is expected to be busy for travel of all kinds. That means highways and airports are likely to be more crowded than at any time in recent memory, and delays and disruptions are inevitable.

    Read more...

    ", + "category": "disaster accident", + "link": "https://lifehacker.com/the-best-and-worst-hours-to-drive-on-thanksgiving-acco-1848111343", + "creator": "Emily Long", + "pubDate": "Wed, 24 Nov 2021 13:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What to Do If Your Turkey Is Still Frozen", + "description": "

    Here we are, the day before Thanksgiving, and your turkey is still frozen. It doesn’t matter that multiple food websites have been yelling about turkey thaw times for days—if not weeks—now. There are always a few stragglers who wait until Wednesday or—much worse—Thursday morning.

    Read more...

    ", + "content": "

    Here we are, the day before Thanksgiving, and your turkey is still frozen. It doesn’t matter that multiple food websites have been yelling about turkey thaw times for days—if not weeks—now. There are always a few stragglers who wait until Wednesday or—much worse—Thursday morning.

    Read more...

    ", + "category": "laboratory equipment", + "link": "https://lifehacker.com/what-to-do-if-your-turkey-is-still-frozen-1848113182", + "creator": "Claire Lower", + "pubDate": "Wed, 24 Nov 2021 13:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Set a Formal Thanksgiving Table Like a Sophisticated Adult", + "description": "

    The biggest eating holiday of the year is upon us. You’ve brainstormed the menu, shopped for sweet potatoes and Brussels sprouts, and thawed the turkey. (You have thawed the turkey, right?) With all the fanfare and preparation around the main event, it’s easy to give short shrift to the canvas that will display the…

    Read more...

    ", + "content": "

    The biggest eating holiday of the year is upon us. You’ve brainstormed the menu, shopped for sweet potatoes and Brussels sprouts, and thawed the turkey. (You have thawed the turkey, right?) With all the fanfare and preparation around the main event, it’s easy to give short shrift to the canvas that will display the…

    Read more...

    ", + "category": "spoon", + "link": "https://lifehacker.com/how-to-set-a-formal-thanksgiving-table-like-a-sophistic-1848113001", + "creator": "Sarah Showfety", + "pubDate": "Tue, 23 Nov 2021 22:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Cut Coffee's Bitterness Without Using Sweetener", + "description": "

    When it came to coffee, for ages I was a milk and “Sugar in the Raw” girl. Just one packet at most, or ideally half a packet—but that was the absolute minimum amount of crystals required to make it palatable. (Before that, I vacillated between Sweet ‘n Low and Splenda, two artificial alternatives I was never happy…

    Read more...

    ", + "content": "

    When it came to coffee, for ages I was a milk and “Sugar in the Raw” girl. Just one packet at most, or ideally half a packet—but that was the absolute minimum amount of crystals required to make it palatable. (Before that, I vacillated between Sweet ‘n Low and Splenda, two artificial alternatives I was never happy…

    Read more...

    ", + "category": "excipients", + "link": "https://lifehacker.com/how-to-cut-coffees-bitterness-without-using-sweetener-1848067924", + "creator": "Sarah Showfety", + "pubDate": "Tue, 23 Nov 2021 22:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Still Have Great Sex When You Don't Feel Very Sexy", + "description": "

    Even when you’re not feeling your hottest, your partner in a good relationship is still attracted to you. It can feel unbelievable, but it’s true. It doesn’t matter if you’re feeling uneasy about your looks, if you’re going through a sad period, or you have a health issue—there are plenty of reasons you might feel…

    Read more...

    ", + "content": "

    Even when you’re not feeling your hottest, your partner in a good relationship is still attracted to you. It can feel unbelievable, but it’s true. It doesn’t matter if you’re feeling uneasy about your looks, if you’re going through a sad period, or you have a health issue—there are plenty of reasons you might feel…

    Read more...

    ", + "category": "love", + "link": "https://lifehacker.com/how-to-still-have-great-sex-when-you-dont-feel-very-sex-1848030478", + "creator": "Lindsey Ellefson", + "pubDate": "Tue, 23 Nov 2021 21:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Do You Really Need to Chill Your Pie Dough?", + "description": "

    Everyone knows that a chef’s kiss-worthy pie crust requires cold butter, which is why most recipes recommend chilling the dough twice: Once after mixing, and again after assembling the pie. The downside is that rolling out cold dough sucks, so you’ll have to wait for it to warm up first (or smack it around a little), …

    Read more...

    ", + "content": "

    Everyone knows that a chef’s kiss-worthy pie crust requires cold butter, which is why most recipes recommend chilling the dough twice: Once after mixing, and again after assembling the pie. The downside is that rolling out cold dough sucks, so you’ll have to wait for it to warm up first (or smack it around a little), …

    Read more...

    ", + "category": "pie", + "link": "https://lifehacker.com/do-you-really-need-to-chill-your-pie-dough-1848111393", + "creator": "A.A. Newton", + "pubDate": "Tue, 23 Nov 2021 21:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "When You Should Use LinkedIn's Resume Builder, and When You Shouldn’t", + "description": "

    There’s never a bad time to apply for a new job, but updating your resume can begin to feel like a big task (especially if you’re already overworked). If you’ve got a LinkedIn profile though, you can use what you’ve already written to build and customize a strategic resume, as well as speed up your application…

    Read more...

    ", + "content": "

    There’s never a bad time to apply for a new job, but updating your resume can begin to feel like a big task (especially if you’re already overworked). If you’ve got a LinkedIn profile though, you can use what you’ve already written to build and customize a strategic resume, as well as speed up your application…

    Read more...

    ", + "category": "linkedin", + "link": "https://lifehacker.com/when-you-should-use-linkedins-resume-builder-and-when-1848110383", + "creator": "Pranay Parab", + "pubDate": "Tue, 23 Nov 2021 20:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Two Bottles You Should Bring to Thanksgiving Dinner", + "description": "

    I am too dumb to figure out “analytics” but I suspect “what wine pairs with turkey?” is an oft-Googled search term this time of year. Pinot and Beaujolais are popular options but they are, in my highly valued opinion, not the best bottles to bring to a Thanksgiving or other seasonally festive dinner. That distinction…

    Read more...

    ", + "content": "

    I am too dumb to figure out “analytics” but I suspect “what wine pairs with turkey?” is an oft-Googled search term this time of year. Pinot and Beaujolais are popular options but they are, in my highly valued opinion, not the best bottles to bring to a Thanksgiving or other seasonally festive dinner. That distinction…

    Read more...

    ", + "category": "thanksgiving dinner", + "link": "https://lifehacker.com/the-two-bottles-you-should-bring-to-thanksgiving-dinner-1848106673", + "creator": "Claire Lower", + "pubDate": "Tue, 23 Nov 2021 20:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "19 of the Best Shows Canceled in 2021 (and Where They Might Go Next)", + "description": "

    We currently have more broadcast and cable networks and streaming services that any one person or household or possibly small village could possibly watch, and all of them are desperate for content. That means that shows come and go faster than they used to, but it also means there’s more hope than ever that your…

    Read more...

    ", + "content": "

    We currently have more broadcast and cable networks and streaming services that any one person or household or possibly small village could possibly watch, and all of them are desperate for content. That means that shows come and go faster than they used to, but it also means there’s more hope than ever that your…

    Read more...

    ", + "category": "aretha franklin", + "link": "https://lifehacker.com/19-of-the-best-shows-canceled-in-2021-and-where-they-m-1848068965", + "creator": "Ross Johnson", + "pubDate": "Tue, 23 Nov 2021 19:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Feel Your Feelings (and Why You Should)", + "description": "

    Feeling our feelings—contrary to long-held popular opinion that it is somehow weak—is remarkably hard work. Which is why we engage in frequent avoidance techniques so we don’t have to feel them: drinking, binge-eating, gambling, and staying excessively busy, to name a few. But as it turns out, learning how to feel (…

    Read more...

    ", + "content": "

    Feeling our feelings—contrary to long-held popular opinion that it is somehow weak—is remarkably hard work. Which is why we engage in frequent avoidance techniques so we don’t have to feel them: drinking, binge-eating, gambling, and staying excessively busy, to name a few. But as it turns out, learning how to feel (…

    Read more...

    ", + "category": "jeff guenther", + "link": "https://lifehacker.com/how-to-feel-your-feelings-and-why-you-should-1848110119", + "creator": "Sarah Showfety", + "pubDate": "Tue, 23 Nov 2021 19:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Customize Your Mac's 'Finder' so It Shows You the Things You Actually Need", + "description": "

    Finder is your pathway to all the files on your Mac. Sure, you could (and should) use Spotlight to quickly find and open files. But when it comes to actually managing and working with files, folders, and documents, the Finder app is essential—especially since none of use know how to create a folder hierarchy anymore.

    Read more...

    ", + "content": "

    Finder is your pathway to all the files on your Mac. Sure, you could (and should) use Spotlight to quickly find and open files. But when it comes to actually managing and working with files, folders, and documents, the Finder app is essential—especially since none of use know how to create a folder hierarchy anymore.

    Read more...

    ", + "category": "finder", + "link": "https://lifehacker.com/customize-your-macs-finder-so-it-shows-you-the-things-y-1848108213", + "creator": "Khamosh Pathak", + "pubDate": "Tue, 23 Nov 2021 18:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Discontinued Fast-Food Item Do You Wish With All Your Heart Would Return?", + "description": "

    Inadequate as I am to properly articulate what loss feels like, I turn to the poets. So in the words Edna St. Vincent Millay, “Where you used to be, there is a hole in the world, which I find myself constantly walking around in the daytime, and falling in at night. I miss you like hell.” I am, of course, talking about…

    Read more...

    ", + "content": "

    Inadequate as I am to properly articulate what loss feels like, I turn to the poets. So in the words Edna St. Vincent Millay, “Where you used to be, there is a hole in the world, which I find myself constantly walking around in the daytime, and falling in at night. I miss you like hell.” I am, of course, talking about…

    Read more...

    ", + "category": "taco bell", + "link": "https://lifehacker.com/what-discontinued-fast-food-item-do-you-wish-with-all-y-1848110165", + "creator": "Meredith Dietz", + "pubDate": "Tue, 23 Nov 2021 18:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How (and Why) to Give Cryptocurrency as a Gift This Year", + "description": "

    Considering that it’s one of the few things unaffected by supply chain issues, you might be want to consider gifting friends and family cryptocurrency for the holidays this year. Of course, cryptocurrencies are risky investments due to their volatility, so you’d have to be comfortable with crypto as a “fun” gift that…

    Read more...

    ", + "content": "

    Considering that it’s one of the few things unaffected by supply chain issues, you might be want to consider gifting friends and family cryptocurrency for the holidays this year. Of course, cryptocurrencies are risky investments due to their volatility, so you’d have to be comfortable with crypto as a “fun” gift that…

    Read more...

    ", + "category": "cryptocurrency", + "link": "https://lifehacker.com/how-and-why-to-give-cryptocurrency-as-a-gift-this-yea-1847976113", + "creator": "Mike Winters", + "pubDate": "Tue, 23 Nov 2021 17:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What's New on Netflix in December 2021", + "description": "

    Netflix apparently doesn’t want you to go outside again before 2022, given how much stuff they’re cramming onto their service in December: with new seasons of past breakouts, star-studded original films, comedy specials, and so much reality TV, who needs reality? Reality is depressing!

    Read more...

    ", + "content": "

    Netflix apparently doesn’t want you to go outside again before 2022, given how much stuff they’re cramming onto their service in December: with new seasons of past breakouts, star-studded original films, comedy specials, and so much reality TV, who needs reality? Reality is depressing!

    Read more...

    ", + "category": "netflix", + "link": "https://lifehacker.com/whats-new-on-netflix-in-december-2021-1848110326", + "creator": "Joel Cunningham", + "pubDate": "Tue, 23 Nov 2021 17:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Fix Your Broken Roku", + "description": "

    Is your Roku giving you issues? Maybe you sat down to watch some HBO Max, or started looking forward to Hawkeye on Disney+, but something’s wrong with your Roku. As the holiday breaks approaches, we’re all going to have more time to spend watching TV, but you won’t be able to enjoy it if your Roku apps don’t work.…

    Read more...

    ", + "content": "

    Is your Roku giving you issues? Maybe you sat down to watch some HBO Max, or started looking forward to Hawkeye on Disney+, but something’s wrong with your Roku. As the holiday breaks approaches, we’re all going to have more time to spend watching TV, but you won’t be able to enjoy it if your Roku apps don’t work.…

    Read more...

    ", + "category": "roku", + "link": "https://lifehacker.com/how-to-fix-your-broken-roku-1848109662", + "creator": "Jake Peterson", + "pubDate": "Tue, 23 Nov 2021 16:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Reduce Your Family’s Screen Time (Now That It’s Totally Out of Control)", + "description": "

    In a simpler, more innocent time, limiting screen time was cited by many parents as one of their major parenting concerns. In a 2019 Pew Research Center poll, 71% of parents with a child under the age of 12 said they were concerned about the amount of time their kids spent in front of a screen.

    Read more...

    ", + "content": "

    In a simpler, more innocent time, limiting screen time was cited by many parents as one of their major parenting concerns. In a 2019 Pew Research Center poll, 71% of parents with a child under the age of 12 said they were concerned about the amount of time their kids spent in front of a screen.

    Read more...

    ", + "category": "screen time", + "link": "https://lifehacker.com/how-to-reduce-your-family-s-screen-time-now-that-it-s-1848107784", + "creator": "Rachel Fairbank", + "pubDate": "Tue, 23 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Be Alone on Thanksgiving", + "description": "

    There is no rule that says you have to be with family during the holiday season, but it feels like there is. There are loads of reasons you might find yourself flying solo on Thanksgiving. Maybe your family is toxic. Maybe you don’t have the money to fly home. Maybe you’re burned out and want a year off from all the…

    Read more...

    ", + "content": "

    There is no rule that says you have to be with family during the holiday season, but it feels like there is. There are loads of reasons you might find yourself flying solo on Thanksgiving. Maybe your family is toxic. Maybe you don’t have the money to fly home. Maybe you’re burned out and want a year off from all the…

    Read more...

    ", + "category": "thanksgiving", + "link": "https://lifehacker.com/how-to-be-alone-on-thanksgiving-1848100781", + "creator": "Lindsey Ellefson", + "pubDate": "Tue, 23 Nov 2021 15:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "14 Things Every Home Gym Needs", + "description": "

    There’s a little game I like to play sometimes, and it seems to be popular with other folks who tend to work out at home: What equipment would I buy if I were starting a new home gym from scratch? Or you can play the advanced version: if you already have (insert common items here), what would you buy next?

    Read more...

    ", + "content": "

    There’s a little game I like to play sometimes, and it seems to be popular with other folks who tend to work out at home: What equipment would I buy if I were starting a new home gym from scratch? Or you can play the advanced version: if you already have (insert common items here), what would you buy next?

    Read more...

    ", + "category": "squat", + "link": "https://lifehacker.com/14-things-every-home-gym-needs-1848104799", + "creator": "Beth Skwarecki", + "pubDate": "Tue, 23 Nov 2021 15:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Get Your Kid to Look at Holiday Toy Catalogues in a Way That Is Actually Productive", + "description": "

    The holidays approaching, which means if you have kids and a mailbox, the latter is filling up daily with toy and children’s clothing catalogs. While witnessing your kids’ unbridled excitement at paging through them may generate nostalgia-fueled forgiveness of this influx of direct marketing, such holiday catalogs, if …

    Read more...

    ", + "content": "

    The holidays approaching, which means if you have kids and a mailbox, the latter is filling up daily with toy and children’s clothing catalogs. While witnessing your kids’ unbridled excitement at paging through them may generate nostalgia-fueled forgiveness of this influx of direct marketing, such holiday catalogs, if …

    Read more...

    ", + "category": "toy", + "link": "https://lifehacker.com/how-to-get-your-kid-to-look-at-holiday-toy-catalogues-i-1848104872", + "creator": "Sarah Showfety", + "pubDate": "Tue, 23 Nov 2021 14:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Best Thanksgiving Guests Bring Toilet Paper", + "description": "

    Being a Thanksgiving guest is an easier gig than being a Thanksgiving host, but the best guests always contribute in some fashion. Bringing a side dish the most classic move (bringing a bottle of wine is a close second), but there are lots of practical, non-edible things you can bring if you find yourself invited to a…

    Read more...

    ", + "content": "

    Being a Thanksgiving guest is an easier gig than being a Thanksgiving host, but the best guests always contribute in some fashion. Bringing a side dish the most classic move (bringing a bottle of wine is a close second), but there are lots of practical, non-edible things you can bring if you find yourself invited to a…

    Read more...

    ", + "category": "thanksgiving dinner", + "link": "https://lifehacker.com/the-best-thanksgiving-guests-bring-toilet-paper-1848105840", + "creator": "Claire Lower", + "pubDate": "Tue, 23 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Recognize the Weasley, Smarmy, and Otherwise Loaded Language That People Use Against You", + "description": "

    We’re surrounded with loaded language. Whether it’s mass media, politics, or the people around us, someone is always trying to use words and phrases to support their agenda and to change our minds in bad faith.

    Read more...

    ", + "content": "

    We’re surrounded with loaded language. Whether it’s mass media, politics, or the people around us, someone is always trying to use words and phrases to support their agenda and to change our minds in bad faith.

    Read more...

    ", + "category": "smarmy", + "link": "https://lifehacker.com/how-to-recognize-the-weasley-smarmy-and-otherwise-loa-1848105669", + "creator": "Stephen Johnson", + "pubDate": "Mon, 22 Nov 2021 22:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Choose Between HIIT and Steady Cardio Workouts", + "description": "

    High intensity interval training packs a hard workout into a short period of time, which makes it sound like it should be an efficient, superior way to work out. But HIIT doesn’t have as many advantages as we’re led to believe, and often steady-state cardio is the better option. Let’s look at a few factors to keep in…

    Read more...

    ", + "content": "

    High intensity interval training packs a hard workout into a short period of time, which makes it sound like it should be an efficient, superior way to work out. But HIIT doesn’t have as many advantages as we’re led to believe, and often steady-state cardio is the better option. Let’s look at a few factors to keep in…

    Read more...

    ", + "category": "hiit", + "link": "https://lifehacker.com/how-to-choose-between-hiit-and-steady-cardio-workouts-1848105482", + "creator": "Beth Skwarecki", + "pubDate": "Mon, 22 Nov 2021 22:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Use These Three Ingredients to Easily 'Vegan-ize' Your Favorite Thanksgiving Recipes", + "description": "

    As I’ve mentioned previously, my 2021 Thanksgiving guest list is chockfull vegans, vegetarians, people with dairy allergies, and the lactose intolerant. I am none of those things. I love butter, I love cream, and I love animal fats—but I also love a challenge, so I have been enthusiastically tweaking my recipes to…

    Read more...

    ", + "content": "

    As I’ve mentioned previously, my 2021 Thanksgiving guest list is chockfull vegans, vegetarians, people with dairy allergies, and the lactose intolerant. I am none of those things. I love butter, I love cream, and I love animal fats—but I also love a challenge, so I have been enthusiastically tweaking my recipes to…

    Read more...

    ", + "category": "soups", + "link": "https://lifehacker.com/use-these-three-ingredients-to-easily-vegan-ize-your-fa-1848105033", + "creator": "Claire Lower", + "pubDate": "Mon, 22 Nov 2021 21:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Bloating Actually Is (and How to Prevent It)", + "description": "

    My favorite game to play over the holidays is one in which I am my own competitor, testing my own limits, pushing myself to see how much food I can eat without putting myself in a position of serious discomfort. How do I win? Well, it’s a delicate game that involves careful strategy (and Lactaid). Still, I am not…

    Read more...

    ", + "content": "

    My favorite game to play over the holidays is one in which I am my own competitor, testing my own limits, pushing myself to see how much food I can eat without putting myself in a position of serious discomfort. How do I win? Well, it’s a delicate game that involves careful strategy (and Lactaid). Still, I am not…

    Read more...

    ", + "category": "bloating", + "link": "https://lifehacker.com/what-bloating-actually-is-and-how-to-prevent-it-1848104978", + "creator": "Meredith Dietz", + "pubDate": "Mon, 22 Nov 2021 21:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What's New on Amazon Prime Video in December 2021", + "description": "

    Much as how The Wheel of Time was the result of Jeff Bezos really, really wanting Amazon Prime Video to have its own Game of Thrones, December’s original film offering Being the Ricardos seems the answer to his request that an Amazon-produced film bring home a Best Actress Oscar.

    Read more...

    ", + "content": "

    Much as how The Wheel of Time was the result of Jeff Bezos really, really wanting Amazon Prime Video to have its own Game of Thrones, December’s original film offering Being the Ricardos seems the answer to his request that an Amazon-produced film bring home a Best Actress Oscar.

    Read more...

    ", + "category": "amazon", + "link": "https://lifehacker.com/whats-new-on-amazon-prime-video-in-december-2021-1848104497", + "creator": "Joel Cunningham", + "pubDate": "Mon, 22 Nov 2021 19:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What You Should Do the Last Few Days Before Thanksgiving", + "description": "

    After weeks of preparation and planning, we are just days away from cooking The Bird, as well as all the other sides and pies required by the holiday. I, for one, am excited.

    Read more...

    ", + "content": "

    After weeks of preparation and planning, we are just days away from cooking The Bird, as well as all the other sides and pies required by the holiday. I, for one, am excited.

    Read more...

    ", + "category": "cuisine", + "link": "https://lifehacker.com/what-you-should-do-the-last-few-days-before-thanksgivin-1848104126", + "creator": "Claire Lower", + "pubDate": "Mon, 22 Nov 2021 19:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Leave a Holiday Party Early Without Being Rude", + "description": "

    ‘Tis the season to gather, make merry, and peace out early so you can get into your fleece Snuggie and watch Money Heist before bed? While this may not be the official motto of the holiday season, it sure is for me. I love mingling, toasting, and being festive—up to a point. And that point is usually well before the…

    Read more...

    ", + "content": "

    ‘Tis the season to gather, make merry, and peace out early so you can get into your fleece Snuggie and watch Money Heist before bed? While this may not be the official motto of the holiday season, it sure is for me. I love mingling, toasting, and being festive—up to a point. And that point is usually well before the…

    Read more...

    ", + "category": "party", + "link": "https://lifehacker.com/how-to-leave-a-holiday-party-early-without-being-rude-1848103261", + "creator": "Sarah Showfety", + "pubDate": "Mon, 22 Nov 2021 18:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Do All Those Noises Your AirPods and Beats Make Actually Mean?", + "description": "

    When you pick up your AirPods or your Beats, you expect them to play your favorite music, podcasts, movies, and more. What you might not expect to hear are random, unexplained alert tones. These sounds can be distracting and confusing, and can affect the way your headphones and earbuds function. Here’s what these…

    Read more...

    ", + "content": "

    When you pick up your AirPods or your Beats, you expect them to play your favorite music, podcasts, movies, and more. What you might not expect to hear are random, unexplained alert tones. These sounds can be distracting and confusing, and can affect the way your headphones and earbuds function. Here’s what these…

    Read more...

    ", + "category": "airpods", + "link": "https://lifehacker.com/what-do-all-those-noises-your-airpods-and-beats-make-ac-1848102854", + "creator": "Jake Peterson", + "pubDate": "Mon, 22 Nov 2021 17:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What's New on HBO Max in December 2021", + "description": "

    In early 2003, it seemed like The Matrix was poised to become the next Star Wars—a sci-fi franchise with enough fan enthusiasm and in-universe lore to endure for decades. The first film, a box office hit in 1999 that only became more popular on DVD (becoming one of the first “must-own” titles and arguably, and…

    Read more...

    ", + "content": "

    In early 2003, it seemed like The Matrix was poised to become the next Star Wars—a sci-fi franchise with enough fan enthusiasm and in-universe lore to endure for decades. The first film, a box office hit in 1999 that only became more popular on DVD (becoming one of the first “must-own” titles and arguably, and…

    Read more...

    ", + "category": "hbo max", + "link": "https://lifehacker.com/what-new-on-hbo-max-in-december-2021-1848102760", + "creator": "Joel Cunningham", + "pubDate": "Mon, 22 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Get Instant Notifications When a Specific PS5 Game Goes on Sale", + "description": "

    As console game prices keep heading north, preordering games or buying them on launch date makes less and less financial sense. Especially when the same game could be available for 30% or more off the list price in a few months—by which point those game-breaking bugs will also have been fixed. If you’ve been feeling…

    Read more...

    ", + "content": "

    As console game prices keep heading north, preordering games or buying them on launch date makes less and less financial sense. Especially when the same game could be available for 30% or more off the list price in a few months—by which point those game-breaking bugs will also have been fixed. If you’ve been feeling…

    Read more...

    ", + "category": "wish list", + "link": "https://lifehacker.com/how-to-get-instant-notifications-when-a-specific-ps5-ga-1848101795", + "creator": "Pranay Parab", + "pubDate": "Mon, 22 Nov 2021 15:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Use These Hidden Settings to Organize the Open Windows on Your Mac", + "description": "

    Traditionally, Mac’s window management features have lagged behind Microsoft Windows. And with Windows 11's new Snap Layouts feature, it might seem like Windows is racing forwards yet again—but that’s not entirely the case. The Mac offers pretty good window management features; they’re just not as obvious as the…

    Read more...

    ", + "content": "

    Traditionally, Mac’s window management features have lagged behind Microsoft Windows. And with Windows 11's new Snap Layouts feature, it might seem like Windows is racing forwards yet again—but that’s not entirely the case. The Mac offers pretty good window management features; they’re just not as obvious as the…

    Read more...

    ", + "category": "safari", + "link": "https://lifehacker.com/use-these-hidden-settings-to-organize-the-open-windows-1848095779", + "creator": "Khamosh Pathak", + "pubDate": "Mon, 22 Nov 2021 14:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why You Shouldn't Bake Your Pies in an Air Fryer", + "description": "

    Oven resource management is one of the hardest parts of cooking a Thanksgiving meal. If you’re fresh out of oven space and still have one pie left to bake, it’s only natural to start making eyes at your trusty countertop convection oven. “After all, why not?” you may ask yourself. “Why shouldn’t I bake a pie in my air…

    Read more...

    ", + "content": "

    Oven resource management is one of the hardest parts of cooking a Thanksgiving meal. If you’re fresh out of oven space and still have one pie left to bake, it’s only natural to start making eyes at your trusty countertop convection oven. “After all, why not?” you may ask yourself. “Why shouldn’t I bake a pie in my air…

    Read more...

    ", + "category": "air fryer", + "link": "https://lifehacker.com/why-you-shouldnt-bake-your-pies-in-an-air-fryer-1848093724", + "creator": "A.A. Newton", + "pubDate": "Mon, 22 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Repair Tears in Your Car's Vinyl Seats", + "description": "

    Over time, a vehicle goes through a lot—between things breaking under the hood, scratches and dents on the body, and wear and tear on the interior. This includes rips and holes in the seats, which can happen regardless of whether they’re made out of fabric, leather, or vinyl.

    Read more...

    ", + "content": "

    Over time, a vehicle goes through a lot—between things breaking under the hood, scratches and dents on the body, and wear and tear on the interior. This includes rips and holes in the seats, which can happen regardless of whether they’re made out of fabric, leather, or vinyl.

    Read more...

    ", + "category": "tears", + "link": "https://lifehacker.com/how-to-repair-tears-in-your-cars-vinyl-seats-1848086294", + "creator": "Elizabeth Yuko", + "pubDate": "Sun, 21 Nov 2021 18:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Sealcoat Your Driveway Before Winter", + "description": "

    We’ve reached the time of year when colder, wetter weather is becoming more frequent, but there are still days mild enough to finish last-minute outdoor projects before winter. And if you’ve noticed that each spring, your paved driveway looks a little (or a lot) worse for wear, you may be wondering what you can do to…

    Read more...

    ", + "content": "

    We’ve reached the time of year when colder, wetter weather is becoming more frequent, but there are still days mild enough to finish last-minute outdoor projects before winter. And if you’ve noticed that each spring, your paved driveway looks a little (or a lot) worse for wear, you may be wondering what you can do to…

    Read more...

    ", + "category": "sealcoat", + "link": "https://lifehacker.com/how-to-sealcoat-your-driveway-before-winter-1848086305", + "creator": "Elizabeth Yuko", + "pubDate": "Sun, 21 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why You Need to Clean Your Gas Fireplace (and How to Do It)", + "description": "

    There’s something special about a real, wood-burning fireplace: The scent, the crackling sounds, and watching the logs slowly burn down to glowing embers. But they’re also a hassle, and pretty dirty. Because of that, many people have opted to install gas fireplaces instead.

    Read more...

    ", + "content": "

    There’s something special about a real, wood-burning fireplace: The scent, the crackling sounds, and watching the logs slowly burn down to glowing embers. But they’re also a hassle, and pretty dirty. Because of that, many people have opted to install gas fireplaces instead.

    Read more...

    ", + "category": "fireplace", + "link": "https://lifehacker.com/why-you-need-to-clean-your-gas-fireplace-and-how-to-do-1848086322", + "creator": "Elizabeth Yuko", + "pubDate": "Sun, 21 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Remove Scratches from Glass Windows", + "description": "

    Over time, a lot can happen to your home’s windows—both inside and outside—including scratches. If you happen to notice some scratches on the glass, you may not even be sure how they got there. (Unless you just saw a toddler reach for a pair of keys and go to town scribbling on a window. If so, it’s probably that.)

    Read more...

    ", + "content": "

    Over time, a lot can happen to your home’s windows—both inside and outside—including scratches. If you happen to notice some scratches on the glass, you may not even be sure how they got there. (Unless you just saw a toddler reach for a pair of keys and go to town scribbling on a window. If so, it’s probably that.)

    Read more...

    ", + "category": "woodworking", + "link": "https://lifehacker.com/how-to-remove-scratches-from-glass-windows-1848084784", + "creator": "Elizabeth Yuko", + "pubDate": "Sat, 20 Nov 2021 18:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Get Paid $1,000 to Binge-Watch ’90s Rom-Coms", + "description": "

    Depending on who you ask, the 1990s were the last great decade for romantic comedies. Sure, there were some in the early 2000s too, but the genre—known for cheesy plot lines and setting unrealistic dating expectations for pretty much everyone—sort of fizzled after that.

    Read more...

    ", + "content": "

    Depending on who you ask, the 1990s were the last great decade for romantic comedies. Sure, there were some in the early 2000s too, but the genre—known for cheesy plot lines and setting unrealistic dating expectations for pretty much everyone—sort of fizzled after that.

    Read more...

    ", + "category": "coms", + "link": "https://lifehacker.com/get-paid-1-000-to-binge-watch-90s-rom-coms-1848084770", + "creator": "Elizabeth Yuko", + "pubDate": "Sat, 20 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Keep Your Drains Free From Clogs", + "description": "

    Knowing how to unclog a drain is an important life skill. But what’s even better than successfully unclogging a drain? Not having to do it in the first place. The problem is, many people tend to think of a drain as a way to get rid of things—whether or not our drains are equipped to handle them.

    Read more...

    ", + "content": "

    Knowing how to unclog a drain is an important life skill. But what’s even better than successfully unclogging a drain? Not having to do it in the first place. The problem is, many people tend to think of a drain as a way to get rid of things—whether or not our drains are equipped to handle them.

    Read more...

    ", + "category": "michelle miley", + "link": "https://lifehacker.com/how-to-keep-your-drains-free-from-clogs-1848084736", + "creator": "Elizabeth Yuko", + "pubDate": "Sat, 20 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Snag These Black Friday Video Game Deals Right Now, Without Leaving Your Couch", + "description": "

    It’s a good weekend to stay inside and download some video games. While real-life Black Friday doesn’t happen for another week, PlayStation and Xbox are already running virtual Black Friday sales in their respective online stores, so you can snag some cheap games without waiting in long lines at Wal-Mart. While not…

    Read more...

    ", + "content": "

    It’s a good weekend to stay inside and download some video games. While real-life Black Friday doesn’t happen for another week, PlayStation and Xbox are already running virtual Black Friday sales in their respective online stores, so you can snag some cheap games without waiting in long lines at Wal-Mart. While not…

    Read more...

    ", + "category": "nintendo eshop", + "link": "https://lifehacker.com/snag-these-black-friday-video-game-deals-right-now-wit-1848091968", + "creator": "Stephen Johnson", + "pubDate": "Fri, 19 Nov 2021 22:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Stop Your Family From Buying Too Much Crap for Your Kids (and What to Do When It Happens Anyway)", + "description": "

    It’s the season of giving, but when it comes to kids who have playrooms already overflowing with toys, books, games, and puzzles, the holidays can bring an unwanted influx of stuff adding to the mess you’re already struggling to contain.

    Read more...

    ", + "content": "

    It’s the season of giving, but when it comes to kids who have playrooms already overflowing with toys, books, games, and puzzles, the holidays can bring an unwanted influx of stuff adding to the mess you’re already struggling to contain.

    Read more...

    ", + "category": "gift", + "link": "https://lifehacker.com/how-to-stop-your-family-from-buying-too-much-crap-for-y-1848089246", + "creator": "Sarah Showfety", + "pubDate": "Fri, 19 Nov 2021 22:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Harness the Awesome Power of Your Air Fryer This Thanksgiving", + "description": "

    By this point, pretty much everyone is aware that air fryers are “just small convection ovens” and that they “don’t really fry anything.” But, semantics aside, having a tiny convection oven on your counter is pretty convenient. Air fryers—on the whole—rule, and you can (and should) harness their full power to make…

    Read more...

    ", + "content": "

    By this point, pretty much everyone is aware that air fryers are “just small convection ovens” and that they “don’t really fry anything.” But, semantics aside, having a tiny convection oven on your counter is pretty convenient. Air fryers—on the whole—rule, and you can (and should) harness their full power to make…

    Read more...

    ", + "category": "air fryer", + "link": "https://lifehacker.com/harness-the-awesome-power-of-your-air-fryer-this-thanks-1848091479", + "creator": "Claire Lower", + "pubDate": "Fri, 19 Nov 2021 21:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Finally, Everyone 18 and Older Can Get a Booster Shot", + "description": "

    The FDA authorized Moderna and Pfizer boosters today for everyone aged 18 and older, and the CDC’s advisory panel followed up with a recommendation to match. Bottom line, if you’ve been holding out because you weren’t sure if you’re eligible, you’re now definitely cleared to go get one. The only requirement is that…

    Read more...

    ", + "content": "

    The FDA authorized Moderna and Pfizer boosters today for everyone aged 18 and older, and the CDC’s advisory panel followed up with a recommendation to match. Bottom line, if you’ve been holding out because you weren’t sure if you’re eligible, you’re now definitely cleared to go get one. The only requirement is that…

    Read more...

    ", + "category": "moderna", + "link": "https://lifehacker.com/finally-everyone-18-and-older-can-get-a-booster-shot-1848092156", + "creator": "Beth Skwarecki", + "pubDate": "Fri, 19 Nov 2021 21:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Ultimate Guide to Picking the Right Apple Watch As a Gift", + "description": "

    If you’re buying a gift for someone with an iPhone, it’s likely they have an Apple Watch on their list (if they don’t own one already). Apple Watch is the most popular smartwatch in the world; the only problem is, there are quite a few of them to choose from. Between the Series 3, Series 7, SE, and others, how do you…

    Read more...

    ", + "content": "

    If you’re buying a gift for someone with an iPhone, it’s likely they have an Apple Watch on their list (if they don’t own one already). Apple Watch is the most popular smartwatch in the world; the only problem is, there are quite a few of them to choose from. Between the Series 3, Series 7, SE, and others, how do you…

    Read more...

    ", + "category": "apple", + "link": "https://lifehacker.com/the-ultimate-guide-to-picking-the-right-apple-watch-as-1848084811", + "creator": "Jake Peterson", + "pubDate": "Fri, 19 Nov 2021 20:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Hang Your Holiday Decor Without Destroying Your Home", + "description": "

    From wreaths to string lights, indoors and out, holiday decorations can be a hassle to put up—and they can damage your walls, siding, and doors with unnecessary (and permanent) hardware. Instead, here’s how to decorate easily and breezily without the added holes and permanent hooks, while also better protecting the…

    Read more...

    ", + "content": "

    From wreaths to string lights, indoors and out, holiday decorations can be a hassle to put up—and they can damage your walls, siding, and doors with unnecessary (and permanent) hardware. Instead, here’s how to decorate easily and breezily without the added holes and permanent hooks, while also better protecting the…

    Read more...

    ", + "category": "cable tie", + "link": "https://lifehacker.com/how-to-decorate-for-the-holidays-without-destroying-you-1848089533", + "creator": "Becca Lewis", + "pubDate": "Fri, 19 Nov 2021 19:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Is It Safer to Place Your PS5 or Xbox Series X Vertically or Horizontally?", + "description": "

    The PlayStation 5 and Xbox Series X are big, and you’ll likely need to make room to place one of these consoles in your home theater or on your desk.

    Read more...

    ", + "content": "

    The PlayStation 5 and Xbox Series X are big, and you’ll likely need to make room to place one of these consoles in your home theater or on your desk.

    Read more...

    ", + "category": "xbox", + "link": "https://lifehacker.com/is-it-safer-to-place-your-ps5-or-xbox-series-x-vertical-1848090814", + "creator": "Brendan Hesse", + "pubDate": "Fri, 19 Nov 2021 19:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Add a Little Campari to Your Cranberry Sauce", + "description": "

    Cranberry sauce is probably the easiest Thanksgiving dish you can make from scratch. Add 12 ounces of cranberries to a pot, along with a cup of sugar and a cup of water. Bring to a boil and let simmer until the cranberries pop and reduce into a thick, jelly-like sauce. Put it on turkey and eat it.

    Read more...

    ", + "content": "

    Cranberry sauce is probably the easiest Thanksgiving dish you can make from scratch. Add 12 ounces of cranberries to a pot, along with a cup of sugar and a cup of water. Bring to a boil and let simmer until the cranberries pop and reduce into a thick, jelly-like sauce. Put it on turkey and eat it.

    Read more...

    ", + "category": "cranberry sauce", + "link": "https://lifehacker.com/add-a-little-campari-to-your-cranberry-sauce-1848090704", + "creator": "Claire Lower", + "pubDate": "Fri, 19 Nov 2021 18:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Lock Your Secrets in the Notes App (and Why You Should)", + "description": "

    Searching for data or photo lockers will lead you to many apps. Some of them are genuinely secure—others, less so—but given that you’re dealing with secure data (documents, photos, security codes, or bank details), you maybe don’t want to trust a third-party iPhone app that happens to have a thousand 5-star reviews.…

    Read more...

    ", + "content": "

    Searching for data or photo lockers will lead you to many apps. Some of them are genuinely secure—others, less so—but given that you’re dealing with secure data (documents, photos, security codes, or bank details), you maybe don’t want to trust a third-party iPhone app that happens to have a thousand 5-star reviews.…

    Read more...

    ", + "category": "notes", + "link": "https://lifehacker.com/how-to-lock-your-secrets-in-the-notes-app-and-why-you-1848087825", + "creator": "Khamosh Pathak", + "pubDate": "Fri, 19 Nov 2021 18:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "22 Book-to-TV Adaptations to Look Forward to Binge-Watching in 2022", + "description": "

    Long gone are the days of the monoculture, when everyone settled for watching one of the same three shows every night (because that’s all that was on). Today, the only thing that unifies our viewing habits is how much time we all spend figuring out what to watch—there’s so much good stuff out there, figuring out how…

    Read more...

    ", + "content": "

    Long gone are the days of the monoculture, when everyone settled for watching one of the same three shows every night (because that’s all that was on). Today, the only thing that unifies our viewing habits is how much time we all spend figuring out what to watch—there’s so much good stuff out there, figuring out how…

    Read more...

    ", + "category": "reese witherspoon", + "link": "https://lifehacker.com/22-book-to-tv-adaptations-to-look-forward-to-binge-watc-1848069441", + "creator": "Jeff Somers", + "pubDate": "Fri, 19 Nov 2021 17:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "10 Scientific Advances That Will Actually Make You Hopeful for the Future", + "description": "

    We’ve all had a rough couple of years (decades?), but that doesn’t mean everything will continue to slide downhill. Maybe I’m a foolish optimist, but it’s the holidays, and these 10 technologies and trends make me genuinely hopeful for the future. Maybe we’ll wind up living in the hopeful sci-fi vision of the ‘50s,…

    Read more...

    ", + "content": "

    We’ve all had a rough couple of years (decades?), but that doesn’t mean everything will continue to slide downhill. Maybe I’m a foolish optimist, but it’s the holidays, and these 10 technologies and trends make me genuinely hopeful for the future. Maybe we’ll wind up living in the hopeful sci-fi vision of the ‘50s,…

    Read more...

    ", + "category": "powered exoskeleton", + "link": "https://lifehacker.com/10-scientific-advances-that-will-actually-make-you-hope-1848085674", + "creator": "Stephen Johnson", + "pubDate": "Fri, 19 Nov 2021 17:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "You Can Finally Download Amazon Prime Video Movies and TV Shows on Desktop", + "description": "

    When you’re heading somewhere likely to have spotty internet coverage, downloading your favorite TV shows and movies beforehand is always a solid plan. Most streaming services allow you to do this to some extent, but until recently, you could only download Amazon Prime Video content onto a mobile device. Well, no…

    Read more...

    ", + "content": "

    When you’re heading somewhere likely to have spotty internet coverage, downloading your favorite TV shows and movies beforehand is always a solid plan. Most streaming services allow you to do this to some extent, but until recently, you could only download Amazon Prime Video content onto a mobile device. Well, no…

    Read more...

    ", + "category": "amazon", + "link": "https://lifehacker.com/you-can-finally-download-amazon-prime-video-movies-and-1848088507", + "creator": "Pranay Parab", + "pubDate": "Fri, 19 Nov 2021 16:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Convince Your Stubborn Parents to Stop Eating so Much Junk", + "description": "

    Talking to a friend about health can be hard enough, but talking your parents about any kind of change can feel borderline impossible. Combine these two endeavors, and it can feel like you’re on a fool’s errand.

    Read more...

    ", + "content": "

    Talking to a friend about health can be hard enough, but talking your parents about any kind of change can feel borderline impossible. Combine these two endeavors, and it can feel like you’re on a fool’s errand.

    Read more...

    ", + "category": "addiction medicine", + "link": "https://lifehacker.com/how-to-convince-your-stubborn-parents-to-stop-eating-so-1848086165", + "creator": "Meredith Dietz", + "pubDate": "Fri, 19 Nov 2021 15:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "An Age-by-Age Guide to Gender-Neutral Gifts for Kids", + "description": "

    Now more than ever, there is a push for toy and clothing manufacturers to create gender-neutral options for kids; ones that don’t exclusively push pink, fluffy princess gear on girls, and firetruck-themed everything on boys. Offering unisex products enables children to play and explore outside of traditional gender…

    Read more...

    ", + "content": "

    Now more than ever, there is a push for toy and clothing manufacturers to create gender-neutral options for kids; ones that don’t exclusively push pink, fluffy princess gear on girls, and firetruck-themed everything on boys. Offering unisex products enables children to play and explore outside of traditional gender…

    Read more...

    ", + "category": "crayola", + "link": "https://lifehacker.com/an-age-by-age-guide-to-gender-neutral-gifts-for-kids-1848046071", + "creator": "Sarah Showfety", + "pubDate": "Fri, 19 Nov 2021 15:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Out-of-Touch Adults' Guide to Kid Culture: Why Everyone Is Excited for 'Spider-Man: No Way Home'", + "description": "

    This week, the kids are raging against work, throwing cheese at cars, and enjoying the trailer for the new Spider-Man movie. Youth is wasted on the young.

    Read more...

    ", + "content": "

    This week, the kids are raging against work, throwing cheese at cars, and enjoying the trailer for the new Spider-Man movie. Youth is wasted on the young.

    Read more...

    ", + "category": "spider man", + "link": "https://lifehacker.com/the-out-of-touch-adults-guide-to-kid-culture-why-every-1848087076", + "creator": "Stephen Johnson", + "pubDate": "Fri, 19 Nov 2021 14:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Is the Worst Christmas Gift You've Ever Received?", + "description": "

    You may have noticed we’re in the thick of gift-giving season. Well, I’m not; my shopping is basically done. (Those supply chains will not have their way with me, no they will not.) But as I peruse the list of gifts I have purchased over the past month, I ask myself: Is any of this any good? Does my 11-year-old really

    Read more...

    ", + "content": "

    You may have noticed we’re in the thick of gift-giving season. Well, I’m not; my shopping is basically done. (Those supply chains will not have their way with me, no they will not.) But as I peruse the list of gifts I have purchased over the past month, I ask myself: Is any of this any good? Does my 11-year-old really

    Read more...

    ", + "category": "grandma", + "link": "https://lifehacker.com/what-is-the-worst-christmas-gift-youve-ever-received-1848085069", + "creator": "Meghan Moravcik Walbert", + "pubDate": "Fri, 19 Nov 2021 14:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How (and Why) to Do Two Workouts a Day", + "description": "

    I do two workouts most days: a session on a spin bike in the morning, and weightlifting in the afternoon or evening. But I remember a time when two-a-days sounded like an incredible amount of work, the domain of pro athletes and people who had an unhealthy obsession with exercise. It turns out that doubling up on…

    Read more...

    ", + "content": "

    I do two workouts most days: a session on a spin bike in the morning, and weightlifting in the afternoon or evening. But I remember a time when two-a-days sounded like an incredible amount of work, the domain of pro athletes and people who had an unhealthy obsession with exercise. It turns out that doubling up on…

    Read more...

    ", + "category": "physical exercise", + "link": "https://lifehacker.com/how-and-why-to-do-two-workouts-a-day-1848085429", + "creator": "Beth Skwarecki", + "pubDate": "Thu, 18 Nov 2021 21:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What's New on Hulu in December 2021", + "description": "

    While its original series don’t always have the marquee value of those on rival services, Hulu has quietly been building one of the strongest catalogs of original content in the Peak Streaming era—the recent delights of Only Murders in the Building being but one case in point (pun slightly intended).

    Read more...

    ", + "content": "

    While its original series don’t always have the marquee value of those on rival services, Hulu has quietly been building one of the strongest catalogs of original content in the Peak Streaming era—the recent delights of Only Murders in the Building being but one case in point (pun slightly intended).

    Read more...

    ", + "category": "hulu", + "link": "https://lifehacker.com/whats-new-on-hulu-in-december-2021-1848082809", + "creator": "Joel Cunningham", + "pubDate": "Thu, 18 Nov 2021 20:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "9 Thanksgiving Dishes Your Vegan Guests Will Love", + "description": "

    The traditional Thanksgiving menu is not exactly vegan friendly (or even vegetarian friendly). Nearly every dish contains cream, butter, eggs, or turkey stock, and the whole thing is centered around a large, dead bird.

    Read more...

    ", + "content": "

    The traditional Thanksgiving menu is not exactly vegan friendly (or even vegetarian friendly). Nearly every dish contains cream, butter, eggs, or turkey stock, and the whole thing is centered around a large, dead bird.

    Read more...

    ", + "category": "veganism", + "link": "https://lifehacker.com/9-thanksgiving-dishes-your-vegan-guests-will-love-1848083265", + "creator": "Claire Lower", + "pubDate": "Thu, 18 Nov 2021 19:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Split Bills With Your Roommates Without Pissing Each Other Off", + "description": "

    Split chores. Built-in company. Someone else’s expensive snacks for you to steal in gradual, imperceptible portions. There are a lot of compelling reasons to have roommates, but odds are your decision to live in a shared household is primarily a financial one.

    Read more...

    ", + "content": "

    Split chores. Built-in company. Someone else’s expensive snacks for you to steal in gradual, imperceptible portions. There are a lot of compelling reasons to have roommates, but odds are your decision to live in a shared household is primarily a financial one.

    Read more...

    ", + "category": "rent", + "link": "https://lifehacker.com/how-to-split-bills-with-your-roommates-without-pissing-1848083535", + "creator": "Meredith Dietz", + "pubDate": "Thu, 18 Nov 2021 18:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Get Your Kids to Actually Pick Up After Themselves", + "description": "

    If only the words to the kid’s song were true: Clean up, clean up, everybody everywhere. Clean up, clean up, everybody do their share.

    Read more...

    ", + "content": "

    If only the words to the kid’s song were true: Clean up, clean up, everybody everywhere. Clean up, clean up, everybody do their share.

    Read more...

    ", + "category": "chuck", + "link": "https://lifehacker.com/how-to-get-your-kids-to-actually-pick-up-after-themselv-1848083178", + "creator": "Sarah Showfety", + "pubDate": "Thu, 18 Nov 2021 18:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Stop Your iPhone 12 or 13 From Frequently Dropping Calls", + "description": "

    If your iPhone won’t stop dropping calls, it can be difficult to troubleshoot. After all, you can’t just switch to Cingular Wireless anymore, and without the support of the network with the fewest dropped calls, what are you supposed to do? If your issue is tied to an iPhone 12 or iPhone 13, however, there is a new…

    Read more...

    ", + "content": "

    If your iPhone won’t stop dropping calls, it can be difficult to troubleshoot. After all, you can’t just switch to Cingular Wireless anymore, and without the support of the network with the fewest dropped calls, what are you supposed to do? If your issue is tied to an iPhone 12 or iPhone 13, however, there is a new…

    Read more...

    ", + "category": "iphone", + "link": "https://lifehacker.com/how-to-stop-your-iphone-12-or-13-from-frequently-droppi-1848082613", + "creator": "Jake Peterson", + "pubDate": "Thu, 18 Nov 2021 17:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What's New on Disney Plus in December 2021", + "description": "

    The weird thing about franchise canon is you have to take the good with the bad. This means that Disney/Lucasfilm has spent the better part of the past decade working overtime to fix the parts of the official Star Wars storyline that, uh, don’t really work—retroactively making them at least seem better by retconning…

    Read more...

    ", + "content": "

    The weird thing about franchise canon is you have to take the good with the bad. This means that Disney/Lucasfilm has spent the better part of the past decade working overtime to fix the parts of the official Star Wars storyline that, uh, don’t really work—retroactively making them at least seem better by retconning…

    Read more...

    ", + "category": "lin manuel miranda", + "link": "https://lifehacker.com/whats-new-on-disney-plus-in-december-2021-1848082540", + "creator": "Joel Cunningham", + "pubDate": "Thu, 18 Nov 2021 16:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "You Can Finally Get Real-Time Lyrics on Spotify", + "description": "

    Even with the many music streaming options to choose from these days, Spotify is still the king for millions of users. While the app is enjoying a long, successful run, it hasn’t shined in every category. Real-time lyrics have been notably absent from Spotify’s features for some time now, as competing services like…

    Read more...

    ", + "content": "

    Even with the many music streaming options to choose from these days, Spotify is still the king for millions of users. While the app is enjoying a long, successful run, it hasn’t shined in every category. Real-time lyrics have been notably absent from Spotify’s features for some time now, as competing services like…

    Read more...

    ", + "category": "spotify", + "link": "https://lifehacker.com/you-can-finally-get-real-time-lyrics-on-spotify-1848081872", + "creator": "Jake Peterson", + "pubDate": "Thu, 18 Nov 2021 15:30:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Least Siri Can Do Is Pronounce Your Name Correctly", + "description": "

    Siri is no one’s favorite virtual assistant, and if it’s also always pronouncing your name wrong, it’s doing little to endear itself to you. As recently as iOS 14, you could let Siri know its pronunciation was incorrect, and tell it the correct way to say your (or another contact’s) name. This method has been removed…

    Read more...

    ", + "content": "

    Siri is no one’s favorite virtual assistant, and if it’s also always pronouncing your name wrong, it’s doing little to endear itself to you. As recently as iOS 14, you could let Siri know its pronunciation was incorrect, and tell it the correct way to say your (or another contact’s) name. This method has been removed…

    Read more...

    ", + "category": "siri", + "link": "https://lifehacker.com/the-least-siri-can-do-is-pronounce-your-name-correctly-1848081315", + "creator": "Pranay Parab", + "pubDate": "Thu, 18 Nov 2021 15:00:00 GMT", + "folder": "00.03 News/News - EN", + "feed": "Lifehacker", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - EN", + "name": "Lifehacker" + }, + { + "title": "Nature - Issue - nature.com science feeds", + "subtitle": "", + "link": "http://feeds.nature.com/nature/rss/current", + "image": null, + "description": "Nature is the international weekly journal of science: a magazine style journal that publishes full-length research papers in all disciplines of science, as well as News and Views, reviews, news, features, commentaries, web focuses and more, covering all branches of science and how science impacts upon all aspects of society and life.", + "items": [ + { + "title": "Enhanced fusogenicity and pathogenicity of SARS-CoV-2 Delta P681R mutation", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04266-9", + "creator": "Akatsuki Saito", + "pubDate": "2021-11-25", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Heavily mutated coronavirus variant puts scientists on alert", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03552-w", + "creator": "Ewen Callaway", + "pubDate": "2021-11-25", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Record number of first-time observers get Hubble telescope time", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03538-8", + "creator": "Dalmeet Singh Chawla", + "pubDate": "2021-11-25", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Our lockdown mentoring plan was a lifeline, and it’s still going", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03551-x", + "creator": "Alexa Ruel", + "pubDate": "2021-11-25", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The N501Y spike substitution enhances SARS-CoV-2 infection and transmission", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04245-0", + "creator": "Yang Liu", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Reply to: Spatial scale and the synchrony of ecological disruption", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03760-4", + "creator": "Christopher H. Trisos", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Spatial scale and the synchrony of ecological disruption", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03759-x", + "creator": "Robert K. Colwell", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Neutron beam sheds light on medieval faith and superstition", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03505-3", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The surgical solution to congenital heart defects", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03517-z", + "creator": "Benjamin Plackett", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tidings from an exploding star make astronomers happy", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03508-0", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How jellyfish control their lives", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03510-6", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The 3D print job that keeps quake damage at bay", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03506-2", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to repair a baby’s broken heart", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03518-y", + "creator": "Benjamin Plackett", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Researcher careers under the microscope: salary satisfaction and COVID impacts", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03537-9", + "creator": "Shamini Bundell", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Hard times tear coupled seabirds apart", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03509-z", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Video: Babies with misshapen hearts", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03519-x", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Artificial heavy fermions in a van der Waals heterostructure", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04021-0", + "creator": "Viliam Vaňo", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "ecDNA hubs drive cooperative intermolecular oncogene expression", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04116-8", + "creator": "King L. Hung", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The CLIP1–LTK fusion is an oncogenic driver in non‐small‐cell lung cancer", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04135-5", + "creator": "Hiroki Izumi", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ultrahard bulk amorphous carbon from collapsed fullerene", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03882-9", + "creator": "Yuchen Shang", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Electron-beam energy reconstruction for neutrino oscillation measurements", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04046-5", + "creator": "M. Khachatryan", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Fam72a enforces error-prone DNA repair during antibody diversification", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04093-y", + "creator": "Mélanie Rogier", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aldehyde-driven transcriptional stress triggers an anorexic DNA damage response", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04133-7", + "creator": "Lee Mulderrig", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The human microbiome encodes resistance to the antidiabetic drug acarbose", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04091-0", + "creator": "Jared Balaich", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Contextual inference underlies the learning of sensorimotor repertoires", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04129-3", + "creator": "James B. Heald", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mechanism for the activation of the anaplastic lymphoma kinase receptor", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04140-8", + "creator": "Andrey V. Reshetnyak", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "On-chip electro-optic frequency shifters and beam splitters", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03999-x", + "creator": "Yaowen Hu", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Quantum gas magnifier for sub-lattice-resolved imaging of 3D quantum systems", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04011-2", + "creator": "Luca Asteria", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mechanical forcing of the North American monsoon by orography", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03978-2", + "creator": "William R. Boos", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Synthesis of paracrystalline diamond", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04122-w", + "creator": "Hu Tang", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "IL-27 signalling promotes adipocyte thermogenesis and energy expenditure", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04127-5", + "creator": "Qian Wang", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Colossal angular magnetoresistance in ferrimagnetic nodal-line semiconductors", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04028-7", + "creator": "Junho Seo", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A multi-scale map of cell structure fusing protein images and interactions", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04115-9", + "creator": "Yue Qin", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Distribution control enables efficient reduced-dimensional perovskite LEDs", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03997-z", + "creator": "Dongxin Ma", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Structural basis for ligand reception by anaplastic lymphoma kinase", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04141-7", + "creator": "Tongqing Li", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mechanical actions of dendritic-spine enlargement on presynaptic exocytosis", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04125-7", + "creator": "Hasan Ucar", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "FAM72A antagonizes UNG2 to promote mutagenic repair during antibody maturation", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04144-4", + "creator": "Yuqing Feng", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Want research integrity? Stop the blame game", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03493-4", + "creator": "Malcolm Macleod", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Women and the environment: power on the ground and in academia", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03524-0", + "creator": "Nuria Pistón", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How record wildfires are harming human health", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03496-1", + "creator": "Max Kozlov", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Researchers at risk in Afghanistan need better tools to find help", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03515-1", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Electrons reveal the need for improved neutrino models", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03456-9", + "creator": "Noemi Rocco", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "COVID deaths, gravitational waves and pandemic PhD supervision", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03494-3", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Context is key for learning motor skills", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03028-x", + "creator": "Anne G. E. Collins", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Venetian blinds", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03525-z", + "creator": "Gretchen Tessmer", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Forceful synapses reveal mechanical interactions in the brain", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03516-0", + "creator": "", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to make macroscale non-crystalline diamonds", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-02957-x", + "creator": "Alfonso San-Miguel", + "pubDate": "2021-11-24", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A COVID-19 peptide vaccine for the induction of SARS-CoV-2 T cell immunity", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04232-5", + "creator": "Jonas S. Heitmann", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Support deaf participants at virtual conferences", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03487-2", + "creator": "Denis Meuthen", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Science community steps up to reform open access", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03485-4", + "creator": "Geoffrey Boulton", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "From the archive", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03457-8", + "creator": "", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Earth is headed for well over two degrees of warming", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03507-1", + "creator": "", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ditch gendered terminology for cell division", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03490-7", + "creator": "Peter White", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ahmedabad: local data beat the heat", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03486-3", + "creator": "Priya Dutta", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Artificial intelligence powers protein-folding predictions", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03499-y", + "creator": "Michael Eisenstein", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How burnout and imposter syndrome blight scientific careers", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03042-z", + "creator": "Chris Woolston", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Do vaccines protect against long COVID? What the data say", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03495-2", + "creator": "Heidi Ledford", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "US astronomy has ambitious plans — but it needs global partners", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03514-2", + "creator": "", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Daily briefing: What we know about vaccines and long COVID", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03531-1", + "creator": "Flora Graham", + "pubDate": "2021-11-23", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mini-machine can chop and channel proteins", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03502-6", + "creator": "", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "All-nighter: staying up to fight malaria", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03500-8", + "creator": "Brendan Maher", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The art critic in the machine tells forgeries from the real thing", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03447-w", + "creator": "", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Battery-powered trains offer a cost-effective ride to a cleaner world", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03448-9", + "creator": "", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Michael Rutter (1933–2021)", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03498-z", + "creator": "Uta Frith", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China creates vast research infrastructure to support ambitious climate goals", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03491-6", + "creator": "Smriti Mallapaty", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cuba’s bet on home-grown COVID vaccines is paying off", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03470-x", + "creator": "Sara Reardon", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How dogs became humans’ best friends: from Neanderthals to now", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03497-0", + "creator": "Josie Glausiusz", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Daily briefing: Adoption advice for academics", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03528-w", + "creator": "Flora Graham", + "pubDate": "2021-11-22", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "First quantum computer to pack 100 qubits enters crowded race", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03476-5", + "creator": "Philip Ball", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "This microbe works a toxic metal into a weapon against its foes", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03477-4", + "creator": "", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Defining Alzheimer’s, and the climate costs of AI: Books in brief", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03484-5", + "creator": "Andrew Robinson", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "COVID’s career impact and embryo secrets — the week in infographics", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03478-3", + "creator": "", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Scientists question Max Planck Society’s treatment of women leaders", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03492-5", + "creator": "Alison Abbott", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Star Corps Crew Manual Section 15-A37: On Mental Dislocation", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03398-2", + "creator": "Marissa Lingen", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Daily briefing: NASA spacecraft will die trying to deflect an asteroid", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03504-4", + "creator": "Flora Graham", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "NASA spacecraft will slam into asteroid in first planetary-defence test", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03471-w", + "creator": "Alexandra Witze", + "pubDate": "2021-11-19", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Adopting as academics: what we learnt", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03482-7", + "creator": "Tony Ly", + "pubDate": "2021-11-18", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Do childhood colds help the body respond to COVID?", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03087-0", + "creator": "Rachel Brazil", + "pubDate": "2021-11-18", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Europe’s COVID death toll could rise by hundreds of thousands", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03455-w", + "creator": "Smriti Mallapaty", + "pubDate": "2021-11-18", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Genome surveillance by HUSH-mediated silencing of intronless mobile elements", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04228-1", + "creator": "Marta Seczynska", + "pubDate": "2021-11-18", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Optimization of Non-Coding Regions for a Non-Modified mRNA COVID-19 Vaccine", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04231-6", + "creator": "Makda S. Gebre", + "pubDate": "2021-11-18", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "CRISPR screens unveil signal hubs for nutrient licensing of T cell immunity", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04109-7", + "creator": "Lingyun Long", + "pubDate": "2021-11-18", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Daily briefing: Second person found to have ‘naturally’ eradicated HIV", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03489-0", + "creator": "Flora Graham", + "pubDate": "2021-11-18", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "First Nations communities bring expertise to Canada’s scientific research", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03060-x", + "creator": "Brian Owens", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cerebellar neurons that curb food consumption", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03383-9", + "creator": "Richard Simerly", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Millions of helpline calls reveal how COVID affected mental health", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03454-x", + "creator": "Heidi Ledford", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A peek into the black box of human embryology", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03381-x", + "creator": "Alexander Goedel", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Polar bear researchers struggle for air time", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03063-8", + "creator": "Chris Woolston", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Canada’s researchers call for a return to stated science ambitions", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03059-4", + "creator": "Brian Owens", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Daily briefing: Time to rewrite the textbooks on chemical-bond strength", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03480-9", + "creator": "Flora Graham", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Canada stacks up in science against its closest competitors", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03061-w", + "creator": "", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Welcome home", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03396-4", + "creator": "Beth Cato", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Iodine powers low-cost engines for satellites", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03384-8", + "creator": "Igor Levchenko", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Helpline data used to monitor population distress in a pandemic", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03038-9", + "creator": "Cindy H. Liu", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "It’s a snap: the friction-based physics behind a common gesture", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03444-z", + "creator": "", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Canada’s scientific strength depends on greater support for innovation", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03058-5", + "creator": "Bec Crew", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sea squirts teach new lessons in evolution", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03475-6", + "creator": "Shamini Bundell", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A guide to the Nature Index", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03065-6", + "creator": "", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Even organic pesticides spur change in the wildlife next door", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03445-y", + "creator": "", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Independent infections of porcine deltacoronavirus among Haitian children", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04111-z", + "creator": "John A. Lednicky", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Observation of universal ageing dynamics in antibiotic persistence", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04114-w", + "creator": "Yoav Kaplan", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "In-orbit demonstration of an iodine electric propulsion system", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04015-y", + "creator": "Dmytro Rafalskyi", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cell-type specialization is encoded by specific chromatin topologies", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04081-2", + "creator": "Warren Winick-Ng", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Structure, function and pharmacology of human itch GPCRs", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04126-6", + "creator": "Can Cao", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cardiopharyngeal deconstruction and ancestral tunicate sessility", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04041-w", + "creator": "Alfonso Ferrández-Roldán", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Isolation and characterization of a californium metallocene", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04027-8", + "creator": "Conrad A. P. Goodwin", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Approaching the intrinsic exciton physics limit in two-dimensional semiconductor diodes", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03949-7", + "creator": "Peng Chen", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Structure, function and pharmacology of human itch receptor complexes", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04077-y", + "creator": "Fan Yang", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Exploding and weeping ceramics", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03975-5", + "creator": "Hanlin Gu", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Reverse-translational identification of a cerebellar satiation network", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04143-5", + "creator": "Aloysius Y. T. Low", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cortical responses to touch reflect subcortical integration of LTMR signals", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04094-x", + "creator": "Alan J. Emanuel", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mental health concerns during the COVID-19 pandemic as revealed by helpline calls", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04099-6", + "creator": "Marius Brülhart", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Herpesviruses assimilate kinesin to produce motorized viral particles", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04106-w", + "creator": "Caitlin E. Pegg", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Observation of Stark many-body localization without disorder", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03988-0", + "creator": "W. Morong", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Single-cell transcriptomic characterization of a gastrulating human embryo", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04158-y", + "creator": "Richard C. V. Tyser", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Measuring phonon dispersion at an interface", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03971-9", + "creator": "Ruishi Qi", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Excitons and emergent quantum phenomena in stacked 2D semiconductors", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03979-1", + "creator": "Nathan P. Wilson", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Widespread changes in surface temperature persistence under climate change", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-03943-z", + "creator": "Jingyuan Li", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Structural insights into Ubr1-mediated N-degron polyubiquitination", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/s41586-021-04097-8", + "creator": "Man Pan", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A critical mass of learning at Mila, Canada", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03064-7", + "creator": "Nicola Jones", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The start-ups chasing clean, carbon-free fusion energy", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03401-w", + "creator": "Philip Ball", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Californium—carbon bond captured in a complex", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03385-7", + "creator": "Julie E. Niklas", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Canada’s scientists are elucidating the dark metabolome", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03062-9", + "creator": "James Mitchell Crow", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Europe’s Roma people are vulnerable to poor practice in genetics", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03416-3", + "creator": "Veronika Lipphardt", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New mineral, FDA chief and the pandemic’s toll on research", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03435-0", + "creator": "", + "pubDate": "2021-11-17", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "COP26: Meet the scientists behind the crucial climate summit", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03029-w", + "creator": "Quirin Schiermeier", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Presidents of Royal Society live long lives", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03420-7", + "creator": "Oscar S. Wilson", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Link knowledge and action networks to tackle disasters", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03419-0", + "creator": "Jim Falk", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Reflections on a pioneer in electrical engineering", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03417-2", + "creator": "Polina Bayvel", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "High-speed spinning yields some of the toughest spider silk ever found", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03443-0", + "creator": "", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "From the archive", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03382-w", + "creator": "", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Stagnating salaries present hurdles to career satisfaction", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03041-0", + "creator": "Chris Woolston", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "COP26 didn’t solve everything — but researchers must stay engaged", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03433-2", + "creator": "", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Daily briefing: How some fish can live for centuries", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03473-8", + "creator": "Flora Graham", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Yes, science can weigh in on abortion law", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03434-1", + "creator": "Diana Greene Foster", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Funders need to credit open science", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03418-1", + "creator": "Hans de Jonge", + "pubDate": "2021-11-16", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ancient mud bricks show adobe’s foundations 5,000 years ago", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03446-x", + "creator": "", + "pubDate": "2021-11-15", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The greener route to indigo blue", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03437-y", + "creator": "James Mitchell Crow", + "pubDate": "2021-11-15", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "More Alzheimer’s drugs head for FDA review: what scientists are watching", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03410-9", + "creator": "Asher Mullard", + "pubDate": "2021-11-15", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Daily briefing: New mineral discovered inside a diamond", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03468-5", + "creator": "Flora Graham", + "pubDate": "2021-11-15", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to turn your ideas into patents", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03438-x", + "creator": "Andy Tay", + "pubDate": "2021-11-15", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Friction: from fingerprints to climate change", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03436-z", + "creator": "Anna Novitzky", + "pubDate": "2021-11-15", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "COP26 hasn’t solved the problem: scientists react to UN climate deal", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03431-4", + "creator": "Ehsan Masood", + "pubDate": "2021-11-14", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "COP26: Glasgow Climate Pact signed into history", + "description": "", + "content": "\n ", + "category": "", + "link": "https://www.nature.com/articles/d41586-021-03464-9", + "creator": "Flora Graham", + "pubDate": "2021-11-13", + "folder": "00.03 News/News - EN", + "feed": "Nature", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - EN", + "name": "Nature" + }, + { + "title": "NYT > Top Stories", + "subtitle": "", + "link": "https://www.nytimes.com", + "image": "https://static01.nyt.com/images/misc/NYT_logo_rss_250x40.png", + "description": "", + "items": [ + { + "title": "New Variant in South Africa Displays a ‘Jump in Evolution’", + "description": "It’s too early to say how effective vaccines will be against the variant. Britain will bar flights from six African countries. Here’s the latest on Covid.", + "content": "It’s too early to say how effective vaccines will be against the variant. Britain will bar flights from six African countries. Here’s the latest on Covid.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/25/world/covid-vaccine-boosters-mandates", + "creator": "The New York Times", + "pubDate": "Thu, 25 Nov 2021 22:41:22 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Climate Change Threatens Smithsonian Museums", + "description": "Beneath the National Museum of American History, floodwaters are intruding into collection rooms, a consequence of a warming planet. A fix remains years away.", + "content": "Beneath the National Museum of American History, floodwaters are intruding into collection rooms, a consequence of a warming planet. A fix remains years away.", + "category": "Global Warming", + "link": "https://www.nytimes.com/2021/11/25/climate/smithsonian-museum-flooding.html", + "creator": "Christopher Flavelle", + "pubDate": "Thu, 25 Nov 2021 22:38:06 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Abuses Under Gambia’s Ex-Ruler Should Be Prosecuted, Inquiry Says", + "description": "A commission’s long-awaited investigation reported widespread human rights violations, but it is not clear if anyone will be charged with crimes.", + "content": "A commission’s long-awaited investigation reported widespread human rights violations, but it is not clear if anyone will be charged with crimes.", + "category": "Human Rights and Human Rights Violations", + "link": "https://www.nytimes.com/2021/11/25/world/gambia-jammeh-prosecution.html", + "creator": "Saikou Jammeh and Ruth Maclean", + "pubDate": "Thu, 25 Nov 2021 22:25:28 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How a Prosecutor Addressed a Mostly White Jury and Won a Conviction in the Arbery Case", + "description": "Linda Dunikoski, a prosecutor brought in from the Atlanta area, struck a careful tone in a case that many saw as an obvious act of racial violence.", + "content": "Linda Dunikoski, a prosecutor brought in from the Atlanta area, struck a careful tone in a case that many saw as an obvious act of racial violence.", + "category": "Black People", + "link": "https://www.nytimes.com/2021/11/25/us/prosecutor-white-jury-conviction-ahmaud-arbery.html", + "creator": "Richard Fausset", + "pubDate": "Thu, 25 Nov 2021 22:21:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Undeterred by Channel’s Perils, Desperate Migrants Still Plan to Cross", + "description": "The number of migrants setting off into the English Channel by boat has soared in recent months. The deaths Wednesday of at least 27 people trying to make the crossing illustrate how dangerous it is.", + "content": "The number of migrants setting off into the English Channel by boat has soared in recent months. The deaths Wednesday of at least 27 people trying to make the crossing illustrate how dangerous it is.", + "category": "Middle East and Africa Migrant Crisis", + "link": "https://www.nytimes.com/2021/11/25/world/europe/english-channel-migrant-crossings.html", + "creator": "Constant Méheut and Norimitsu Onishi", + "pubDate": "Thu, 25 Nov 2021 21:24:32 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Parade Returns to a City Thankful for Normal", + "description": "About 4,500 volunteers wrangled giant balloons and threw confetti into a crowd excited to see the annual parade in person.", + "content": "About 4,500 volunteers wrangled giant balloons and threw confetti into a crowd excited to see the annual parade in person.", + "category": "Parades", + "link": "https://www.nytimes.com/2021/11/25/nyregion/macys-thanksgiving-parade.html", + "creator": "Sarah Maslin Nir", + "pubDate": "Thu, 25 Nov 2021 21:10:04 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Self Sufficiency Is Overrated", + "description": "When I opened myself up to the generosity of others, even small kindnesses suddenly felt outsized in their humanity.", + "content": "When I opened myself up to the generosity of others, even small kindnesses suddenly felt outsized in their humanity.", + "category": "Quarantine (Life and Culture)", + "link": "https://www.nytimes.com/2021/11/25/opinion/self-sufficiency-generosity.html", + "creator": "Sarah Wildman", + "pubDate": "Thu, 25 Nov 2021 20:29:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester United Picks Ralf Rangnick as Interim Manager", + "description": "Rangnick, an architect of the Red Bull soccer empire, will take over as United’s manager while the club pursues a permanent replacement for Ole Gunnar Solskjaer.", + "content": "Rangnick, an architect of the Red Bull soccer empire, will take over as United’s manager while the club pursues a permanent replacement for Ole Gunnar Solskjaer.", + "category": "Soccer", + "link": "https://www.nytimes.com/2021/11/25/sports/soccer/manchester-united-ralf-rangnick.html", + "creator": "Rory Smith", + "pubDate": "Thu, 25 Nov 2021 19:25:37 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Newark Officer Hit a Pedestrian With His Car and Took Body Home, Prosecutors Say", + "description": "Louis Santiago was charged with reckless vehicular homicide after being accused of hitting a man on the Garden State Parkway. Instead of calling 911, the off-duty police officer took the victim to his home.", + "content": "Louis Santiago was charged with reckless vehicular homicide after being accused of hitting a man on the Garden State Parkway. Instead of calling 911, the off-duty police officer took the victim to his home.", + "category": "Santiago, Louis (Newark, NJ, Police Officer)", + "link": "https://www.nytimes.com/2021/11/25/nyregion/new-jersey-police-officer-car-home.html", + "creator": "Mike Ives and Alyssa Lukpat", + "pubDate": "Thu, 25 Nov 2021 19:24:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sweden Finally Chose a Prime Minister. She Lasted About 7 Hours.", + "description": "Magdalena Andersson, Sweden’s first female prime minister, quit after her government’s budget was defeated on her first day in office and her coalition partners bolted.", + "content": "Magdalena Andersson, Sweden’s first female prime minister, quit after her government’s budget was defeated on her first day in office and her coalition partners bolted.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/25/world/europe/sweden-first-female-prime-minister-quit.html", + "creator": "Aina J. Khan", + "pubDate": "Thu, 25 Nov 2021 18:33:15 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ethiopian Leader Vows to Lead Troops as War Threatens to Widen", + "description": "Two years after receiving the Nobel Peace Prize, Prime Minister Abiy Ahmed’s claim that he was going into battle reflected both resolve and vulnerability.", + "content": "Two years after receiving the Nobel Peace Prize, Prime Minister Abiy Ahmed’s claim that he was going into battle reflected both resolve and vulnerability.", + "category": "Tigrayans (Ethnic Group)", + "link": "https://www.nytimes.com/2021/11/25/world/africa/ethiopia-abiy-troops-battlefront.html", + "creator": "Declan Walsh", + "pubDate": "Thu, 25 Nov 2021 18:16:54 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "G.O.P. Cements Hold on Legislatures in Battleground States", + "description": "Democrats were once able to count on wave elections to win back key statehouses. Republican gerrymandering is making that all but impossible.", + "content": "Democrats were once able to count on wave elections to win back key statehouses. Republican gerrymandering is making that all but impossible.", + "category": "Republican Party", + "link": "https://www.nytimes.com/2021/11/25/us/politics/republican-redistricting-swing-states.html", + "creator": "Nick Corasaniti", + "pubDate": "Thu, 25 Nov 2021 18:14:00 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "80 Years of Holiday Shopping in New York", + "description": "Holiday shopping over the past 80 years as chronicled in photos from The New York Times archives.", + "content": "Holiday shopping over the past 80 years as chronicled in photos from The New York Times archives.", + "category": "Shopping and Retail", + "link": "https://www.nytimes.com/2021/11/25/business/black-friday-holiday-shopping.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 17:00:10 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "As Young Kids Get Covid Shots, Families Feel a 'Huge Weight' Lifted", + "description": "Many households with immunocompromised or vulnerable relatives are racing to get Covid shots for their 5-to-11-year-olds — and finally experiencing a long-awaited sense of relief.", + "content": "Many households with immunocompromised or vulnerable relatives are racing to get Covid shots for their 5-to-11-year-olds — and finally experiencing a long-awaited sense of relief.", + "category": "Coronavirus (2019-nCoV)", + "link": "https://www.nytimes.com/2021/11/25/health/covid-vaccine-children-immunocompromised.html", + "creator": "Jennifer Steinhauer", + "pubDate": "Thu, 25 Nov 2021 16:46:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Retailers Are Fighting a Vaccine Mandate Before the Holidays", + "description": "The Biden administration has called on major companies to help fight the pandemic. Big chains want to get past the holiday staffing crunch first.", + "content": "The Biden administration has called on major companies to help fight the pandemic. Big chains want to get past the holiday staffing crunch first.", + "category": "Shopping and Retail", + "link": "https://www.nytimes.com/2021/11/25/business/retail-vaccine-mandates.html", + "creator": "Lauren Hirsch and Sapna Maheshwari", + "pubDate": "Thu, 25 Nov 2021 15:43:42 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Embracing the Swimming Culture After a Move to Australia", + "description": "In Sydney, something changed. I embraced the uncertainty of the sea, following my children into a culture of volunteer lifesaving.", + "content": "In Sydney, something changed. I embraced the uncertainty of the sea, following my children into a culture of volunteer lifesaving.", + "category": "Drownings", + "link": "https://www.nytimes.com/2021/11/25/sports/australia-volunteer-lifesaving-swimming.html", + "creator": "Damien Cave and Michaela Skovranova", + "pubDate": "Thu, 25 Nov 2021 15:34:15 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Here's Why You Always Have Room for Thanksgiving Pie", + "description": "There’s a reason you turn into an eating machine on Thanksgiving. It’s biology!", + "content": "There’s a reason you turn into an eating machine on Thanksgiving. It’s biology!", + "category": "Content Type: Service", + "link": "https://www.nytimes.com/2021/11/25/well/eat/eating-variety-effect-thanksgiving.html", + "creator": "Tara Parker-Pope", + "pubDate": "Thu, 25 Nov 2021 14:00:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Art We Saw This Fall", + "description": "From our critics, reviews of closed gallery shows around New York City.", + "content": "From our critics, reviews of closed gallery shows around New York City.", + "category": "Art", + "link": "https://www.nytimes.com/2021/11/25/arts/design/art-we-saw-this-fall.html", + "creator": "The New York Times", + "pubDate": "Thu, 25 Nov 2021 13:08:40 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Suspect Arrested in Wonnangatta Valley Murder Case", + "description": "In a remote southern Australian area famed for its forbidding landscape and unsolved mysteries, the couple had set out for a weeklong trip and were never seen again.", + "content": "In a remote southern Australian area famed for its forbidding landscape and unsolved mysteries, the couple had set out for a weeklong trip and were never seen again.", + "category": "Murders, Attempted Murders and Homicides", + "link": "https://www.nytimes.com/2021/11/25/world/australia/suspect-is-charged-with-murder-in-case-of-two-vanished-campers.html", + "creator": "Yan Zhuang", + "pubDate": "Thu, 25 Nov 2021 11:46:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A History of Unusual Thanksgivings", + "description": "From the pages of The Times.", + "content": "From the pages of The Times.", + "category": "", + "link": "https://www.nytimes.com/2021/11/25/briefing/thanksgiving-history-cooking-tips.html", + "creator": "David Leonhardt", + "pubDate": "Thu, 25 Nov 2021 11:28:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rivian’s Electric Truck Is a Cutie and a Beast", + "description": "The R1T can haul five tons, conquer brutal off-road trails and sprint to 60 miles an hour in a blink. And about that Camp Kitchen tucked inside …", + "content": "The R1T can haul five tons, conquer brutal off-road trails and sprint to 60 miles an hour in a blink. And about that Camp Kitchen tucked inside …", + "category": "Rivian Automotive LLC", + "link": "https://www.nytimes.com/2021/11/25/business/rivian-r1t-truck-review.html", + "creator": "Lawrence Ulrich", + "pubDate": "Thu, 25 Nov 2021 11:00:10 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The ‘13 Going on 30’ Versace Dress Has Come Full Circle", + "description": "A perfect storm of internet fashion trends — and Halloween — has resurrected a Y2K-era Versace dress. At least, for now.", + "content": "A perfect storm of internet fashion trends — and Halloween — has resurrected a Y2K-era Versace dress. At least, for now.", + "category": "Fashion and Apparel", + "link": "https://www.nytimes.com/2021/11/25/style/versace-13-going-on-30-dress.html", + "creator": "Jessica Testa", + "pubDate": "Thu, 25 Nov 2021 10:00:18 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bankers Took Over the Climate Change Summit. That’s Bad For Democracy.", + "description": "Environmentalists are skeptical. They should be.", + "content": "Environmentalists are skeptical. They should be.", + "category": "Banking and Financial Institutions", + "link": "https://www.nytimes.com/2021/11/25/opinion/cop26-gfanz-climate-change.html", + "creator": "Christopher Caldwell", + "pubDate": "Thu, 25 Nov 2021 10:00:11 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Liberals Can Be Happier", + "description": "They can embrace social institutions like family, religion and local civic organizations. ", + "content": "They can embrace social institutions like family, religion and local civic organizations. ", + "category": "Happiness", + "link": "https://www.nytimes.com/2021/11/25/opinion/liberals-happiness-thanksgiving.html", + "creator": "Brad Wilcox, Hal Boyd and Wendy Wang", + "pubDate": "Thu, 25 Nov 2021 10:00:06 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Scrambling to Keep Up With the Rent", + "description": "When the unexpected happened, finances were stretched and parents needed assistance to keep up.", + "content": "When the unexpected happened, finances were stretched and parents needed assistance to keep up.", + "category": "New York Times Neediest Cases Fund", + "link": "https://www.nytimes.com/2021/11/25/neediest-cases/scrambling-to-keep-up-with-the-rent.html", + "creator": "Kristen Bayrakdarian", + "pubDate": "Thu, 25 Nov 2021 10:00:06 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Solomon Islands: Why Are People Protesting?", + "description": "Discontent has long simmered over a perceived unequal distribution of resources and the central government’s decision to switch allegiances to Beijing from Taipei.", + "content": "Discontent has long simmered over a perceived unequal distribution of resources and the central government’s decision to switch allegiances to Beijing from Taipei.", + "category": "Solomon Islands", + "link": "https://www.nytimes.com/2021/11/25/world/asia/solomon-islands-riot.html", + "creator": "Yan Zhuang", + "pubDate": "Thu, 25 Nov 2021 08:06:58 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "As Turkeys Take Over Campus, Some Colleges Are More Thankful Than Others", + "description": "From California to Minnesota to Massachusetts, turkeys have taken a liking to university life, leading to social media stardom and crosswalk confrontations.", + "content": "From California to Minnesota to Massachusetts, turkeys have taken a liking to university life, leading to social media stardom and crosswalk confrontations.", + "category": "Turkeys", + "link": "https://www.nytimes.com/2021/11/25/us/turkey-college-campus.html", + "creator": "Mitch Smith", + "pubDate": "Thu, 25 Nov 2021 08:00:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Two N.Y.P.D. Officers Are Shot in Gun Battle in the Bronx", + "description": "The officers, who were responding to a report of a gun, were expected to survive. The suspect was also shot.", + "content": "The officers, who were responding to a report of a gun, were expected to survive. The suspect was also shot.", + "category": "Attacks on Police", + "link": "https://www.nytimes.com/2021/11/24/nyregion/nypd-officers-shot-bronx.html", + "creator": "Michael Levenson and Karen Zraick", + "pubDate": "Thu, 25 Nov 2021 07:39:04 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Baltimore Thanksgiving Memory", + "description": "Eating had become a chore for my parents, but I was determined to make a feast. I had never given much thought to Dad’s penknife until that meal.", + "content": "Eating had become a chore for my parents, but I was determined to make a feast. I had never given much thought to Dad’s penknife until that meal.", + "category": "Thanksgiving Day", + "link": "https://www.nytimes.com/2021/11/25/opinion/thanksgiving-penknife.html", + "creator": "Rafael Alvarez", + "pubDate": "Thu, 25 Nov 2021 06:00:03 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peng Shuai’s Accusation Pierced the Privileged Citadel of Chinese Politics", + "description": "Zhang Gaoli was best known as a low-key technocrat. Then a Chinese tennis star’s allegations made him a symbol of a system that bristles against scrutiny.", + "content": "Zhang Gaoli was best known as a low-key technocrat. Then a Chinese tennis star’s allegations made him a symbol of a system that bristles against scrutiny.", + "category": "", + "link": "https://www.nytimes.com/2021/11/25/world/asia/china-peng-shuai-zhang-gaoli.html", + "creator": "Chris Buckley and Steven Lee Myers", + "pubDate": "Thu, 25 Nov 2021 05:02:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Do Sports Still Need China?", + "description": "Global outrage, broken contracts and shifting politics could change the calculus for leagues and teams that once raced to do business in China.", + "content": "Global outrage, broken contracts and shifting politics could change the calculus for leagues and teams that once raced to do business in China.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/24/sports/olympics/china-sports-peng-shuai.html", + "creator": "Andrew Keh", + "pubDate": "Thu, 25 Nov 2021 04:52:14 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mickey Guyton on Her Grammy Nominations: ‘I Was Right’", + "description": "Last Grammys, the singer became the first Black woman to be nominated for a solo country performance award. This time, she’s back with three more chances to win.", + "content": "Last Grammys, the singer became the first Black woman to be nominated for a solo country performance award. This time, she’s back with three more chances to win.", + "category": "Grammy Awards", + "link": "https://www.nytimes.com/2021/11/24/arts/music/mickey-guyton-grammy-nominations.html", + "creator": "Joe Coscarelli", + "pubDate": "Thu, 25 Nov 2021 03:37:44 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "At Last Minute, Kanye West, Taylor Swift Added as Top Grammy Nominees", + "description": "Abba, Lil Nas X and others benefited as the number of competitors in the four all-genre categories grew from eight to 10 in a meeting the day before the nominations were announced.", + "content": "Abba, Lil Nas X and others benefited as the number of competitors in the four all-genre categories grew from eight to 10 in a meeting the day before the nominations were announced.", + "category": "Recording Academy", + "link": "https://www.nytimes.com/2021/11/24/arts/music/grammy-nominations-taylor-swift-kanye-west.html", + "creator": "Ben Sisario and Joe Coscarelli", + "pubDate": "Thu, 25 Nov 2021 03:28:24 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Guilty Verdicts in the Ahmaud Arbery Case Are a Welcome Respite", + "description": "This was a reminder that the lives of Black people are valued in this country — at least on occasion.", + "content": "This was a reminder that the lives of Black people are valued in this country — at least on occasion.", + "category": "Black People", + "link": "https://www.nytimes.com/2021/11/24/opinion/guilty-verdict-ahmaud-arbery.html", + "creator": "Charles M. Blow", + "pubDate": "Thu, 25 Nov 2021 02:46:14 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Watch the Macy’s Thanksgiving Day Parade", + "description": "This year’s parade will feature performers like Kelly Rowland and Carrie Underwood and will have 15 giant balloons and 28 floats.", + "content": "This year’s parade will feature performers like Kelly Rowland and Carrie Underwood and will have 15 giant balloons and 28 floats.", + "category": "Thanksgiving Day", + "link": "https://www.nytimes.com/2021/11/24/nyregion/macys-parade-time-thanksgiving.html", + "creator": "Lola Fadulu", + "pubDate": "Thu, 25 Nov 2021 01:30:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "U.S. Reacts to Guilty Verdict in Ahmaud Arbery Murder Case", + "description": "The murder convictions of three white men in the death of Ahmaud Arbery were praised by many as a just outcome in a case that could have stoked racial divisions.", + "content": "The murder convictions of three white men in the death of Ahmaud Arbery were praised by many as a just outcome in a case that could have stoked racial divisions.", + "category": "Black Lives Matter Movement", + "link": "https://www.nytimes.com/2021/11/24/us/ahmaud-arbery-verdict-reaction.html", + "creator": "Jack Healy and Tariro Mzezewa", + "pubDate": "Thu, 25 Nov 2021 01:03:13 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "27 Migrants Drown Trying to Go From France to U.K. by Boat", + "description": "The boat, which capsized near Calais, had been carrying a group of migrants to Britain. “France won’t let the Channel become a graveyard,’’ President Emmanuel Macron said.", + "content": "The boat, which capsized near Calais, had been carrying a group of migrants to Britain. “France won’t let the Channel become a graveyard,’’ President Emmanuel Macron said.", + "category": "Maritime Accidents and Safety", + "link": "https://www.nytimes.com/2021/11/24/world/europe/migrants-boat-capsize-calais.html", + "creator": "Aurelien Breeden, Constant Méheut and Norimitsu Onishi", + "pubDate": "Thu, 25 Nov 2021 00:24:29 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Deal With Social Anxiety During the Holidays", + "description": "Even in the best of times, social gatherings can be overwhelming. If you’re feeling less-than-festive, here’s how to ease into the season.", + "content": "Even in the best of times, social gatherings can be overwhelming. If you’re feeling less-than-festive, here’s how to ease into the season.", + "category": "Content Type: Service", + "link": "https://www.nytimes.com/2021/11/24/well/mind/holiday-social-anxiety.html", + "creator": "Jancee Dunn", + "pubDate": "Thu, 25 Nov 2021 00:00:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "President Biden Arrives in Nantucket for Thanksgiving ", + "description": "President Biden and his family are spending Thanksgiving on Nantucket, renewing a family tradition that dates back to 1975.", + "content": "President Biden and his family are spending Thanksgiving on Nantucket, renewing a family tradition that dates back to 1975.", + "category": "Biden, Joseph R Jr", + "link": "https://www.nytimes.com/2021/11/24/us/politics/biden-thanksgiving-nantucket.html", + "creator": "Zolan Kanno-Youngs", + "pubDate": "Wed, 24 Nov 2021 23:55:38 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "NFL to Settle Lawsuit Over Rams’ Departure for $790 Million", + "description": "Rams owner Stanley Kroenke is expected to pay the entire amount, ending the four-year court battle over the team’s move to Los Angeles in 2016.", + "content": "Rams owner Stanley Kroenke is expected to pay the entire amount, ending the four-year court battle over the team’s move to Los Angeles in 2016.", + "category": "Suits and Litigation (Civil)", + "link": "https://www.nytimes.com/2021/11/24/sports/football/nfl-st-louis-rams-relocation.html", + "creator": "Ken Belson", + "pubDate": "Wed, 24 Nov 2021 23:15:03 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What the Arbery and Rittenhouse Verdicts Couldn't Tell Us", + "description": "We must stop tying our hopes for justice to high-profile criminal cases.", + "content": "We must stop tying our hopes for justice to high-profile criminal cases.", + "category": "Rittenhouse, Kyle", + "link": "https://www.nytimes.com/2021/11/24/opinion/arbery-verdict-rittenhouse.html", + "creator": "Sarah Lustbader", + "pubDate": "Wed, 24 Nov 2021 23:08:18 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The YZY GAP Round Jacket Review", + "description": "If you love to talk to people, this is the coat for you.", + "content": "If you love to talk to people, this is the coat for you.", + "category": "Coats and Jackets", + "link": "https://www.nytimes.com/2021/11/24/style/yeezy-gap-jacket.html", + "creator": "André Wheeler", + "pubDate": "Wed, 24 Nov 2021 21:36:58 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ahmaud Arbery Was Murdered. But His Life Will Not Be Forgotten.", + "description": "We do not just remember the death. We remember the life, the beauty, the art, the feeling, the waiting, the living. ", + "content": "We do not just remember the death. We remember the life, the beauty, the art, the feeling, the waiting, the living. ", + "category": "Race and Ethnicity", + "link": "https://www.nytimes.com/2021/11/24/opinion/ahmaud-arbery-verdict-justice.html", + "creator": "Danté Stewart", + "pubDate": "Wed, 24 Nov 2021 21:34:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Arbery Verdict: What is Malice Murder?", + "description": "In convicting Travis McMichael on that charge, the 12 jurors found that he had deliberately intended to kill Mr. Arbery.", + "content": "In convicting Travis McMichael on that charge, the 12 jurors found that he had deliberately intended to kill Mr. Arbery.", + "category": "Arbery, Ahmaud (1994-2020)", + "link": "https://www.nytimes.com/2021/11/24/us/malice-murder-arbery-murder-trial.html", + "creator": "Nicholas Bogel-Burroughs and Giulia Heyward", + "pubDate": "Wed, 24 Nov 2021 21:20:13 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Justice Was Served’: Guilty Verdicts in the Ahmaud Arbery Case", + "description": "Readers express relief. One calls it the “only rational and equitable verdict.” Also: A Covid Thanksgiving, and one in prison; children and grief.", + "content": "Readers express relief. One calls it the “only rational and equitable verdict.” Also: A Covid Thanksgiving, and one in prison; children and grief.", + "category": "Arbery, Ahmaud (1994-2020)", + "link": "https://www.nytimes.com/2021/11/24/opinion/letters/ahmaud-arbery.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:16:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Margo Guryan, Whose Album Drew Belated Acclaim, Dies at 84", + "description": "She recorded “Take a Picture” in 1968, but it died when she declined to tour. Three decades later, adventurous listeners discovered it and gave it a new life.", + "content": "She recorded “Take a Picture” in 1968, but it died when she declined to tour. Three decades later, adventurous listeners discovered it and gave it a new life.", + "category": "Guryan, Margo (1937-2021)", + "link": "https://www.nytimes.com/2021/11/24/arts/music/margo-guryan-dead.html", + "creator": "Neil Genzlinger", + "pubDate": "Wed, 24 Nov 2021 21:05:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ahmaud Arbery’s Final Minutes: What Videos and 911 Calls Show", + "description": "Using security footage, cellphone video, 911 calls and police reports, The Times has reconstructed the 12 minutes before Ahmaud Arbery was shot dead in Georgia on Feb. 23.", + "content": "Using security footage, cellphone video, 911 calls and police reports, The Times has reconstructed the 12 minutes before Ahmaud Arbery was shot dead in Georgia on Feb. 23.", + "category": "Arbery, Ahmaud (1994-2020)", + "link": "https://www.nytimes.com/video/us/100000007142853/ahmaud-arbery-video-911-georgia.html", + "creator": "Malachy Browne, Drew Jordan, Dmitriy Khavin and Ainara Tiefenthäler", + "pubDate": "Wed, 24 Nov 2021 21:02:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "For Afghan Refugees, a Choice Between Community and Opportunity", + "description": "In resettling thousands of displaced Afghans, the Biden administration must weigh their need for support against the needs of the U.S. labor market.", + "content": "In resettling thousands of displaced Afghans, the Biden administration must weigh their need for support against the needs of the U.S. labor market.", + "category": "Labor and Jobs", + "link": "https://www.nytimes.com/2021/11/24/us/afghan-refugees.html", + "creator": "Michael D. Shear and Jim Tankersley", + "pubDate": "Wed, 24 Nov 2021 21:01:54 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nordstrom, Louis Vuitton and Others Hit in California Burglaries", + "description": "“Their plan was to overwhelm us,” Chief Bill Scott of the San Francisco police said after about a dozen stores were stolen from in one night.", + "content": "“Their plan was to overwhelm us,” Chief Bill Scott of the San Francisco police said after about a dozen stores were stolen from in one night.", + "category": "Shoplifting and Employee Theft (Retail)", + "link": "https://www.nytimes.com/2021/11/24/business/california-organized-crime-theft-looting.html", + "creator": "Azi Paybarah", + "pubDate": "Wed, 24 Nov 2021 20:55:01 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Columbia Student Workers Are Back On Strike", + "description": "Columbia University’s student workers’ union, made up of 3,000 workers, is striking for the second time this year, calling for higher wages and more protections.", + "content": "Columbia University’s student workers’ union, made up of 3,000 workers, is striking for the second time this year, calling for higher wages and more protections.", + "category": "Columbia University", + "link": "https://www.nytimes.com/2021/11/24/nyregion/columbia-grad-student-strike.html", + "creator": "Ashley Wong", + "pubDate": "Wed, 24 Nov 2021 20:17:58 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Who Is Olaf Scholz, Germany's Next Chancellor?", + "description": "Germany’s next chancellor is something of an enigma. He comes to power with a dizzying array of challenges, raising questions about whether he can fill the very big shoes of his predecessor.", + "content": "Germany’s next chancellor is something of an enigma. He comes to power with a dizzying array of challenges, raising questions about whether he can fill the very big shoes of his predecessor.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/24/world/europe/germany-new-chancellor-olaf-scholz.html", + "creator": "Katrin Bennhold", + "pubDate": "Wed, 24 Nov 2021 20:14:24 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Age of the Creative Minority", + "description": "Here are four ways to think about your group identity.", + "content": "Here are four ways to think about your group identity.", + "category": "Minorities", + "link": "https://www.nytimes.com/2021/11/24/opinion/creative-minority-multiculturalism.html", + "creator": "David Brooks", + "pubDate": "Wed, 24 Nov 2021 20:00:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "This Thanksgiving, Keep Forgiveness on Hand", + "description": "As we sit down together during a difficult year, we’d be wise to consider a posture of grace ", + "content": "As we sit down together during a difficult year, we’d be wise to consider a posture of grace ", + "category": "Thanksgiving Day", + "link": "https://www.nytimes.com/2021/11/24/opinion/thanksgiving-family-forgiveness.html", + "creator": "Kelly Corrigan", + "pubDate": "Wed, 24 Nov 2021 20:00:06 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "YassifyBot and 'Yassification' Memes, Explained", + "description": "A new Twitter account has amassed a following by sharing highly filtered versions of well-known images.", + "content": "A new Twitter account has amassed a following by sharing highly filtered versions of well-known images.", + "category": "Beauty (Concept)", + "link": "https://www.nytimes.com/2021/11/24/style/yassify-bot-meme.html", + "creator": "Shane O’Neill", + "pubDate": "Wed, 24 Nov 2021 19:50:35 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Claim of Herd Immunity Reignites Debate Over U.K. Covid Policy", + "description": "Neil Ferguson, a leading epidemiologist, said the country had almost reached a state of herd immunity as it settled into a new normal of about 40,000 cases a day. Other experts disagreed.", + "content": "Neil Ferguson, a leading epidemiologist, said the country had almost reached a state of herd immunity as it settled into a new normal of about 40,000 cases a day. Other experts disagreed.", + "category": "Disease Rates", + "link": "https://www.nytimes.com/2021/11/24/world/europe/uk-virus-herd-immunity.html", + "creator": "Stephen Castle and Mark Landler", + "pubDate": "Wed, 24 Nov 2021 19:29:47 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "British Lawmaker Is Reprimanded for Bringing Her Baby to a Debate", + "description": "Stella Creasy received a letter of complaint for attending a debate with her infant son in tow. After an outcry, the speaker of the House of Commons said that a committee would review the rules.", + "content": "Stella Creasy received a letter of complaint for attending a debate with her infant son in tow. After an outcry, the speaker of the House of Commons said that a committee would review the rules.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/24/world/europe/stella-creasy-baby.html", + "creator": "Jenny Gross", + "pubDate": "Wed, 24 Nov 2021 18:52:41 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "C.D.C. Eases Up on Dog Travel Ban", + "description": "The agency will now allow some pets to be brought back into the United States from 113 countries considered as high risk for rabies.", + "content": "The agency will now allow some pets to be brought back into the United States from 113 countries considered as high risk for rabies.", + "category": "Dogs", + "link": "https://www.nytimes.com/2021/11/24/travel/cdc-dog-travel-ban.html", + "creator": "Debra Kamin", + "pubDate": "Wed, 24 Nov 2021 18:39:17 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Trump Investigation Enters Crucial Phase as Prosecutor’s Term Nears End", + "description": "New developments suggest the long-running inquiry has returned to an earlier focus: the valuations the former president and his family business applied to properties as it sought loans.", + "content": "New developments suggest the long-running inquiry has returned to an earlier focus: the valuations the former president and his family business applied to properties as it sought loans.", + "category": "Trump Tax Returns", + "link": "https://www.nytimes.com/2021/11/24/nyregion/trump-investigation-cyrus-vance.html", + "creator": "Ben Protess, William K. Rashbaum, Jonah E. Bromwich and David Enrich", + "pubDate": "Wed, 24 Nov 2021 18:35:43 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Exercise Affects Your Appetite", + "description": "For most of us, exercise impacts our hunger and weight in unexpected and sometimes contradictory ways.", + "content": "For most of us, exercise impacts our hunger and weight in unexpected and sometimes contradictory ways.", + "category": "Exercise", + "link": "https://www.nytimes.com/2021/11/24/well/move/exercise-appetite-weight.html", + "creator": "Gretchen Reynolds", + "pubDate": "Wed, 24 Nov 2021 18:31:37 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Parental Leave Means to Dads and Non-birthing Partners", + "description": "Parents told us what having paid parental leave — or not — meant for their families.", + "content": "Parents told us what having paid parental leave — or not — meant for their families.", + "category": "Family Leaves", + "link": "https://www.nytimes.com/2021/11/24/opinion/parental-paternal-leave.html", + "creator": "The New York Times Opinion", + "pubDate": "Wed, 24 Nov 2021 18:31:14 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Republicans Fight Covid Mandates, Then Blame Biden as Cases Rise", + "description": "Republicans have fought mask requirements and vaccine mandates for months, but as coronavirus infections again rise, they are blaming the president for failing to end the health crisis.", + "content": "Republicans have fought mask requirements and vaccine mandates for months, but as coronavirus infections again rise, they are blaming the president for failing to end the health crisis.", + "category": "Disease Rates", + "link": "https://www.nytimes.com/2021/11/24/us/politics/republicans-biden-coronavirus.html", + "creator": "Jonathan Weisman", + "pubDate": "Wed, 24 Nov 2021 16:24:03 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Drive My Car’ Review: A Director Takes Your Heart for a Spin", + "description": "In this quiet masterpiece, Ryusuke Hamaguchi considers grief, love, work and the soul-sustaining, life-shaping power of art.", + "content": "In this quiet masterpiece, Ryusuke Hamaguchi considers grief, love, work and the soul-sustaining, life-shaping power of art.", + "category": "Movies", + "link": "https://www.nytimes.com/2021/11/24/movies/drive-my-car-review.html", + "creator": "Manohla Dargis", + "pubDate": "Wed, 24 Nov 2021 16:06:28 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Contending With the Pandemic, Wealthy Nations Wage Global Battle for Migrants", + "description": "Covid kept many people in place. Now several developed countries, facing aging labor forces and worker shortages, are racing to recruit, train and integrate foreigners.", + "content": "Covid kept many people in place. Now several developed countries, facing aging labor forces and worker shortages, are racing to recruit, train and integrate foreigners.", + "category": "Foreign Workers", + "link": "https://www.nytimes.com/2021/11/23/world/asia/immigration-pandemic-labor-shortages.html", + "creator": "Damien Cave and Christopher F. Schuetze", + "pubDate": "Wed, 24 Nov 2021 14:42:19 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden to Nominate Shalanda Young as Budget Director", + "description": "Ms. Young, the acting head of the Office of Management and Budget, would be the first Black woman to hold the post on a permanent basis.", + "content": "Ms. Young, the acting head of the Office of Management and Budget, would be the first Black woman to hold the post on a permanent basis.", + "category": "Young, Shalanda", + "link": "https://www.nytimes.com/2021/11/24/us/politics/shalanda-young-omb-director.html", + "creator": "Zolan Kanno-Youngs", + "pubDate": "Wed, 24 Nov 2021 13:33:04 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New Zealand Will Reopen to Tourists Within Months", + "description": "Emerging from one of the world’s longest lockdowns, the country plans to admit most fully vaccinated travelers. Here’s the latest pandemic news.", + "content": "Emerging from one of the world’s longest lockdowns, the country plans to admit most fully vaccinated travelers. Here’s the latest pandemic news.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/24/world/covid-vaccine-boosters-mandates", + "creator": "The New York Times", + "pubDate": "Wed, 24 Nov 2021 13:25:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Germany Is Poised to Meet Its Post-Merkel Government", + "description": "Olaf Scholz will be the first center-left chancellor in 16 years, replacing the country’s longtime leader, Angela Merkel. Follow updates here.", + "content": "Olaf Scholz will be the first center-left chancellor in 16 years, replacing the country’s longtime leader, Angela Merkel. Follow updates here.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/24/world/germany-government", + "creator": "The New York Times", + "pubDate": "Wed, 24 Nov 2021 13:25:33 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jury to Resume Deliberations in Arbery Murder Trial", + "description": "For a second day, jurors will consider the fate of the three men accused of murdering Ahmaud Arbery. Here’s the latest on the trial.", + "content": "For a second day, jurors will consider the fate of the three men accused of murdering Ahmaud Arbery. Here’s the latest on the trial.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/24/us/ahmaud-arbery-murder-trial", + "creator": "The New York Times", + "pubDate": "Wed, 24 Nov 2021 13:25:33 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Man Is Exonerated in Rape Case Described in Alice Sebold’s Memoir", + "description": "Anthony J. Broadwater was convicted of the 1981 attack in Syracuse, N.Y., in a case the district attorney and a state judge agreed was flawed.", + "content": "Anthony J. Broadwater was convicted of the 1981 attack in Syracuse, N.Y., in a case the district attorney and a state judge agreed was flawed.", + "category": "False Arrests, Convictions and Imprisonments", + "link": "https://www.nytimes.com/2021/11/23/nyregion/anthony-broadwater-alice-sebold.html", + "creator": "Karen Zraick and Alexandra Alter", + "pubDate": "Wed, 24 Nov 2021 13:07:04 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Karim Benzema, French Soccer Star, Is Convicted in Sex Tape Scandal", + "description": "The Real Madrid striker was found guilty of being part of an attempt to blackmail a fellow player, charges that had led to his being dropped from his national team for more than five years.", + "content": "The Real Madrid striker was found guilty of being part of an attempt to blackmail a fellow player, charges that had led to his being dropped from his national team for more than five years.", + "category": "Soccer", + "link": "https://www.nytimes.com/2021/11/24/sports/soccer/karim-benzema-verdict-sex-tape-trial.html", + "creator": "Aurelien Breeden", + "pubDate": "Wed, 24 Nov 2021 12:57:48 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Farmers Revolt in India", + "description": "How agricultural workers organized, protested and faced down Prime Minister Narendra Modi — and scored an unlikely victory.", + "content": "How agricultural workers organized, protested and faced down Prime Minister Narendra Modi — and scored an unlikely victory.", + "category": "Modi, Narendra", + "link": "https://www.nytimes.com/2021/11/24/podcasts/the-daily/india-farmers-protest.html", + "creator": "Michael Barbaro, Sydney Harper, Mooj Zadie, Jessica Cheung, Dave Shaw and Chris Wood", + "pubDate": "Wed, 24 Nov 2021 12:33:24 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australian Minister Wins Defamation Case Over Tweet", + "description": "A government minister sued and won over a brief Twitter post that called him a “rape apologist.” A journalist sees “asymmetric warfare.”", + "content": "A government minister sued and won over a brief Twitter post that called him a “rape apologist.” A journalist sees “asymmetric warfare.”", + "category": "Australia", + "link": "https://www.nytimes.com/2021/11/24/world/australia/defamation-lawsuit.html", + "creator": "Yan Zhuang", + "pubDate": "Wed, 24 Nov 2021 12:32:29 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Your Flight History Reveals About Your Carbon Footprint", + "description": "Google Flights now shows your carbon footprint. Will it change the way you buy plane tickets?", + "content": "Google Flights now shows your carbon footprint. Will it change the way you buy plane tickets?", + "category": "Greenhouse Gas Emissions", + "link": "https://www.nytimes.com/2021/11/23/opinion/climate-change-guilt-flights.html", + "creator": "Farah Stockman", + "pubDate": "Wed, 24 Nov 2021 12:28:37 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Inflation Miscalculation Complicating Biden’s Agenda", + "description": "Administration officials blame the Delta variant for a prolonged stretch of consumer spending on goods, rather than services, pushing up prices and creating a conundrum for the Fed.", + "content": "Administration officials blame the Delta variant for a prolonged stretch of consumer spending on goods, rather than services, pushing up prices and creating a conundrum for the Fed.", + "category": "Biden, Joseph R Jr", + "link": "https://www.nytimes.com/2021/11/24/us/politics/biden-inflation-prices.html", + "creator": "Jim Tankersley", + "pubDate": "Wed, 24 Nov 2021 12:20:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Turkey Without Covid", + "description": "A guide to using rapid tests.", + "content": "A guide to using rapid tests.", + "category": "", + "link": "https://www.nytimes.com/2021/11/24/briefing/thanksgiving-covid-rapid-test.html", + "creator": "David Leonhardt", + "pubDate": "Wed, 24 Nov 2021 11:35:50 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Hong Kong’s Pillar of Shame Is More Than a Statue", + "description": "Shrinking the public space that preserves the memory of the 1989 Beijing uprising has effectively turned Hong Kong into another silent mainland city.", + "content": "Shrinking the public space that preserves the memory of the 1989 Beijing uprising has effectively turned Hong Kong into another silent mainland city.", + "category": "Hong Kong Protests (2019)", + "link": "https://www.nytimes.com/2021/11/24/opinion/hong-kong-university-china.html", + "creator": "Shui-yin Sharon Yam and Alex Chow", + "pubDate": "Wed, 24 Nov 2021 11:31:41 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "End the Trump-Biden Tariffs", + "description": "An import tax on chassis is contributing to inflation and port congestion. The government needs to find better ways of increasing manufacturing.", + "content": "An import tax on chassis is contributing to inflation and port congestion. The government needs to find better ways of increasing manufacturing.", + "category": "International Trade and World Market", + "link": "https://www.nytimes.com/2021/11/24/opinion/trucking-trump-biden-tariffs.html", + "creator": "Binyamin Appelbaum", + "pubDate": "Wed, 24 Nov 2021 10:04:23 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Republicans We’re Thankful For", + "description": "There are some in the G.O.P. who reject its worst antidemocratic impulses. We should celebrate them.", + "content": "There are some in the G.O.P. who reject its worst antidemocratic impulses. We should celebrate them.", + "category": "Presidential Election of 2020", + "link": "https://www.nytimes.com/2021/11/24/opinion/gop-democracy-trump.html", + "creator": "Michelle Cottle", + "pubDate": "Wed, 24 Nov 2021 10:04:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ian Fishback's Death Highlights Veteran Mental Illness Crisis", + "description": "Ian Fishback revealed abuse of detainees during the Iraq war, but struggled after leaving the service. He died awaiting a bed at the V.A.", + "content": "Ian Fishback revealed abuse of detainees during the Iraq war, but struggled after leaving the service. He died awaiting a bed at the V.A.", + "category": "Veterans", + "link": "https://www.nytimes.com/2021/11/24/us/politics/ian-fishback-veteran-mental-health-crisis.html", + "creator": "Jennifer Steinhauer", + "pubDate": "Wed, 24 Nov 2021 10:00:35 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "In Buffalo, Waiting for the Canadians", + "description": "So far, relaxed travel restrictions between the United States and Canada have not led to a big influx of tourists on either side of the New York-Ontario border. Both sides are waiting, not so patiently.", + "content": "So far, relaxed travel restrictions between the United States and Canada have not led to a big influx of tourists on either side of the New York-Ontario border. Both sides are waiting, not so patiently.", + "category": "Travel and Vacations", + "link": "https://www.nytimes.com/2021/11/24/travel/new-york-canada-tourism.html", + "creator": "Jeff Z. Klein", + "pubDate": "Wed, 24 Nov 2021 10:00:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ifeoma Ozoma Blew the Whistle on Pinterest. Now She Protects Whistle-Blowers.", + "description": "Ifeoma Ozoma, who accused Pinterest of discrimination, has become a key figure in helping tech employees disclose, and fight, mistreatment at work.", + "content": "Ifeoma Ozoma, who accused Pinterest of discrimination, has become a key figure in helping tech employees disclose, and fight, mistreatment at work.", + "category": "Whistle-Blowers", + "link": "https://www.nytimes.com/2021/11/24/technology/pinterest-whistle-blower-ifeoma-ozoma.html", + "creator": "Erin Woo", + "pubDate": "Wed, 24 Nov 2021 10:00:27 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What’s One of the Most Dangerous Toys for Kids? The Internet.", + "description": "Our kids are at the mercy of tech companies, with only an outdated law to protect them.", + "content": "Our kids are at the mercy of tech companies, with only an outdated law to protect them.", + "category": "Data-Mining and Database Marketing", + "link": "https://www.nytimes.com/2021/11/24/opinion/kids-internet-safety-social-apps.html", + "creator": "Adam Westbrook, Lucy King and Jonah M. Kessel", + "pubDate": "Wed, 24 Nov 2021 10:00:27 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Wall Street Warms Up, Grudgingly, to Remote Work, Unthinkable Before Covid", + "description": "Finance employees who couldn’t imagine working from home before the pandemic are now reluctant to return to the office. Their bosses can’t figure out how to bring them back.", + "content": "Finance employees who couldn’t imagine working from home before the pandemic are now reluctant to return to the office. Their bosses can’t figure out how to bring them back.", + "category": "Banking and Financial Institutions", + "link": "https://www.nytimes.com/2021/11/24/business/wall-street-remote-work-banks.html", + "creator": "Lananh Nguyen", + "pubDate": "Wed, 24 Nov 2021 10:00:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Who Makes a ‘Good’ Transplant Candidate?", + "description": "Evaluation for transplant is an area of medicine where subjective criteria, like whether a person has strong family support, can determine access.", + "content": "Evaluation for transplant is an area of medicine where subjective criteria, like whether a person has strong family support, can determine access.", + "category": "Transplants", + "link": "https://www.nytimes.com/2021/11/24/opinion/organ-transplant.html", + "creator": "Daniela J. Lamas", + "pubDate": "Wed, 24 Nov 2021 10:00:09 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Find Common Ground With Your Most Problematic Family Members", + "description": "To survive a dinner table disagreement with the people you love this Thanksgiving, don’t call it a debate, Dylan Marron argues.", + "content": "To survive a dinner table disagreement with the people you love this Thanksgiving, don’t call it a debate, Dylan Marron argues.", + "category": "Thanksgiving Day", + "link": "https://www.nytimes.com/2021/11/24/opinion/family-argument-thanksgiving.html", + "creator": "‘The Argument’", + "pubDate": "Wed, 24 Nov 2021 10:00:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "I Grew Up Poor. How Am I Supposed to Raise My Middle-Class Kids?", + "description": "My children do not understand my world and I do not understand theirs.", + "content": "My children do not understand my world and I do not understand theirs.", + "category": "Black People", + "link": "https://www.nytimes.com/2021/11/24/opinion/poor-dad-rich-kids.html", + "creator": "Esau McCaulley", + "pubDate": "Wed, 24 Nov 2021 10:00:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Algorithm That Could Take Us Inside Shakespeare’s Mind", + "description": "Machine learning programs have recently made huge advances. Stephen Marche tested one against Shakespeare’s collected works, to see if it could help him figure out which of the several versions of Hamlet’s soliloquy was most likely what the playwright intended.", + "content": "Machine learning programs have recently made huge advances. Stephen Marche tested one against Shakespeare’s collected works, to see if it could help him figure out which of the several versions of Hamlet’s soliloquy was most likely what the playwright intended.", + "category": "Books and Literature", + "link": "https://www.nytimes.com/2021/11/24/books/review/shakespeare-cohere-natural-language-processing.html", + "creator": "Stephen Marche", + "pubDate": "Wed, 24 Nov 2021 10:00:03 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lithuania Welcomes Belarusians as It Rebuffs Middle Easterners", + "description": "People fleeing repression in Belarus are processed quickly and given visas. Middle Eastern migrants passing through Belarus to the E.U. face a harsher fate.", + "content": "People fleeing repression in Belarus are processed quickly and given visas. Middle Eastern migrants passing through Belarus to the E.U. face a harsher fate.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/23/world/europe/lithuania-migrants-belarus-middle-east.html", + "creator": "Anton Troianovski", + "pubDate": "Wed, 24 Nov 2021 09:23:56 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "NASA's DART Mission Launches to Crash Into Killer Asteroid and Defend Earth", + "description": "The Double Asteroid Redirection Test spacecraft, launched on Wednesday, could be the first to alter an asteroid’s path, a technique that may be used to defend the planet in the future.", + "content": "The Double Asteroid Redirection Test spacecraft, launched on Wednesday, could be the first to alter an asteroid’s path, a technique that may be used to defend the planet in the future.", + "category": "Double Asteroid Redirect Test", + "link": "https://www.nytimes.com/2021/11/24/science/nasa-dart-mission-asteroid.html", + "creator": "Joey Roulette", + "pubDate": "Wed, 24 Nov 2021 07:30:15 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Late Night Riffs on Biden’s Order to Release Oil Reserves", + "description": "“For those who don’t know, the strategic reserve is a series of caverns filled with fossil fuel and strategically located inside Rudy Giuliani’s head,” Colbert joked.", + "content": "“For those who don’t know, the strategic reserve is a series of caverns filled with fossil fuel and strategically located inside Rudy Giuliani’s head,” Colbert joked.", + "category": "Television", + "link": "https://www.nytimes.com/2021/11/24/arts/television/stephen-colbert-biden-oil-reserves.html", + "creator": "Trish Bendix", + "pubDate": "Wed, 24 Nov 2021 07:12:36 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pentagon Forms a Group to Examine Unexplained Aerial Sightings", + "description": "The announcement follows a report that failed to clarify strange phenomena observed by military pilots and others over the past two decades.", + "content": "The announcement follows a report that failed to clarify strange phenomena observed by military pilots and others over the past two decades.", + "category": "Espionage and Intelligence Services", + "link": "https://www.nytimes.com/2021/11/24/us/politics/pentagon-ufos.html", + "creator": "Julian E. Barnes", + "pubDate": "Wed, 24 Nov 2021 05:08:40 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Best Thanksgiving Movies to Watch This Holiday", + "description": "First the food, then the movies. Here are five streaming suggestions for the holiday.", + "content": "First the food, then the movies. Here are five streaming suggestions for the holiday.", + "category": "Movies", + "link": "https://www.nytimes.com/2021/11/23/movies/thanksgiving-movies-streaming.html", + "creator": "Amy Nicholson", + "pubDate": "Wed, 24 Nov 2021 02:54:57 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Everything Went Black’: The Children Caught in a Christmas Parade Tragedy", + "description": "A child died on Tuesday, and scores of other children were injured when an S.U.V. barreled through the parade on Sunday in Waukesha, Wis.", + "content": "A child died on Tuesday, and scores of other children were injured when an S.U.V. barreled through the parade on Sunday in Waukesha, Wis.", + "category": "Waukesha, Wis, Holiday Parade Attack (2021)", + "link": "https://www.nytimes.com/2021/11/23/us/waukesha-parade-children-injured.html", + "creator": "Shawn Hubler and Giulia Heyward", + "pubDate": "Wed, 24 Nov 2021 02:02:22 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Raids on Independent Groups in El Salvador Raise Fears of Repression", + "description": "President Nayib Bukele bills himself as a young reformer, but a crackdown on voices outside the government’s control is fueling claims of growing authoritarianism.", + "content": "President Nayib Bukele bills himself as a young reformer, but a crackdown on voices outside the government’s control is fueling claims of growing authoritarianism.", + "category": "Bukele, Nayib", + "link": "https://www.nytimes.com/2021/11/23/world/americas/el-salvador-bukele-raids.html", + "creator": "Bryan Avelar and Oscar Lopez", + "pubDate": "Wed, 24 Nov 2021 01:06:10 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Waukesha Death Toll Rises to 6 as Suspect Is Ordered Held on $5 Million Bail", + "description": "The Waukesha County district attorney said “there are not words to describe the risk” posed by the man accused of driving through a Christmas parade in Wisconsin and striking dozens.", + "content": "The Waukesha County district attorney said “there are not words to describe the risk” posed by the man accused of driving through a Christmas parade in Wisconsin and striking dozens.", + "category": "Waukesha, Wis, Holiday Parade Attack (2021)", + "link": "https://www.nytimes.com/2021/11/23/us/waukesha-parade-brooks-court.html", + "creator": "Mitch Smith, Brandon Dupré, Serge F. Kovaleski and Miriam Jordan", + "pubDate": "Wed, 24 Nov 2021 01:00:41 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Can Liberals Survive Progressivism?", + "description": "The main threat to the Democratic Party comes from the left.", + "content": "The main threat to the Democratic Party comes from the left.", + "category": "Police Reform", + "link": "https://www.nytimes.com/2021/11/23/opinion/liberals-survive-progressivism.html", + "creator": "Bret Stephens", + "pubDate": "Wed, 24 Nov 2021 00:27:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sika Henry and the Motivation to Become a Pro Triathlete", + "description": "Sika Henry is the first African American woman to be recognized as a pro triathlete. But a horrible bicycle crash in 2019 nearly thwarted her dream.", + "content": "Sika Henry is the first African American woman to be recognized as a pro triathlete. But a horrible bicycle crash in 2019 nearly thwarted her dream.", + "category": "Triathlon", + "link": "https://www.nytimes.com/2021/11/23/sports/sika-henry-triathlon.html", + "creator": "Alanis Thames", + "pubDate": "Tue, 23 Nov 2021 23:10:57 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Celebrate Pandemic Thanksgiving, Round 2", + "description": "Thanksgiving is back, but Covid hasn’t gone away. Here’s how to have a safer, peaceful and tasty holiday.", + "content": "Thanksgiving is back, but Covid hasn’t gone away. Here’s how to have a safer, peaceful and tasty holiday.", + "category": "debatable", + "link": "https://www.nytimes.com/2021/11/23/opinion/thanksgiving-covid-pandemic.html", + "creator": "Spencer Bokat-Lindell", + "pubDate": "Tue, 23 Nov 2021 23:00:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Hervé Le Tellier's 'The Anomaly' Arrives in the U.S.", + "description": "“The Anomaly,” by Hervé Le Tellier, sold more than a million copies during an anomalous time. Now the genre-bending novel is translated into English.", + "content": "“The Anomaly,” by Hervé Le Tellier, sold more than a million copies during an anomalous time. Now the genre-bending novel is translated into English.", + "category": "Goncourt Prize", + "link": "https://www.nytimes.com/2021/11/23/books/anomaly-herve-le-tellier.html", + "creator": "Roger Cohen", + "pubDate": "Tue, 23 Nov 2021 22:03:59 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple Sues Israeli Spyware Maker NSO Group", + "description": "Apple accused NSO Group, the Israeli surveillance company, of “flagrant” violations of its software, as well as federal and state laws.", + "content": "Apple accused NSO Group, the Israeli surveillance company, of “flagrant” violations of its software, as well as federal and state laws.", + "category": "Cyberattacks and Hackers", + "link": "https://www.nytimes.com/2021/11/23/technology/apple-nso-group-lawsuit.html", + "creator": "Nicole Perlroth", + "pubDate": "Tue, 23 Nov 2021 21:32:38 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "She Ran a Bronx Homeless Shelter. Here’s What She Spent Millions On.", + "description": "A shelter operator admitted using money from the city to cover personal expenses, including shopping sprees at Neiman Marcus and Manolo Blahnik.", + "content": "A shelter operator admitted using money from the city to cover personal expenses, including shopping sprees at Neiman Marcus and Manolo Blahnik.", + "category": "Homeless Persons", + "link": "https://www.nytimes.com/2021/11/23/nyregion/ethel-denise-perry-millennium-care-fraud.html", + "creator": "Andy Newman", + "pubDate": "Tue, 23 Nov 2021 21:06:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Prince Paul Dives Deep Into Music History", + "description": "In “The 33 ⅓ Podcast,” the acclaimed producer finds himself in some unexpected pairings to explore classic albums from Steely Dan, Janet Jackson and more.", + "content": "In “The 33 ⅓ Podcast,” the acclaimed producer finds himself in some unexpected pairings to explore classic albums from Steely Dan, Janet Jackson and more.", + "category": "Pop and Rock Music", + "link": "https://www.nytimes.com/2021/11/23/arts/music/prince-paul-spotify-podcast.html", + "creator": "Iman Stevenson", + "pubDate": "Tue, 23 Nov 2021 19:48:44 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "America Has More Than One Spanglish", + "description": "Our melting pot produces a delicious stew of languages.", + "content": "Our melting pot produces a delicious stew of languages.", + "category": "internal-sub-only-nl", + "link": "https://www.nytimes.com/2021/11/23/opinion/spanglish-russian-mandarin.html", + "creator": "John McWhorter", + "pubDate": "Tue, 23 Nov 2021 19:47:58 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "This Ink Is Alive and Made Entirely of Microbes", + "description": "Scientists have created a bacterial ink that reproduces itself and can be 3D-printed into living architecture.", + "content": "Scientists have created a bacterial ink that reproduces itself and can be 3D-printed into living architecture.", + "category": "your-feed-science", + "link": "https://www.nytimes.com/2021/11/23/science/microbes-construction-bacteria.html", + "creator": "Sabrina Imbler", + "pubDate": "Tue, 23 Nov 2021 18:14:59 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Softies Seized the Fed", + "description": "For now, doves rule the roost.", + "content": "For now, doves rule the roost.", + "category": "Federal Reserve System", + "link": "https://www.nytimes.com/2021/11/23/opinion/fed-powell-unemployment.html", + "creator": "Paul Krugman", + "pubDate": "Tue, 23 Nov 2021 17:51:12 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Netflix's ‘Cowboy Bebop’ Gets Right and Wrong", + "description": "“Cowboy Bebop” is widely considered one of the best anime series of all time. Does Netflix’s live-action adaptation recapture the magic? Yes and no.", + "content": "“Cowboy Bebop” is widely considered one of the best anime series of all time. Does Netflix’s live-action adaptation recapture the magic? Yes and no.", + "category": "Television", + "link": "https://www.nytimes.com/2021/11/23/arts/television/cowboy-bebop.html", + "creator": "Maya Phillips", + "pubDate": "Tue, 23 Nov 2021 17:50:40 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Restaurant Review: Cha Kee in Manhattan’s Chinatown", + "description": "A new restaurant with a wide-ranging view of Chinese food is a bright spot in a beleaguered neighborhood.", + "content": "A new restaurant with a wide-ranging view of Chinese food is a bright spot in a beleaguered neighborhood.", + "category": "Restaurants", + "link": "https://www.nytimes.com/2021/11/23/dining/restaurant-review-cha-kee-chinatown.html", + "creator": "Pete Wells", + "pubDate": "Tue, 23 Nov 2021 17:37:47 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Thanksgiving in a Town Built on Lederhosen and Limitless Meals", + "description": "Bavarian charm, Christmas knickknacks and all-you-can-eat restaurants draw hordes every holiday season to the twinkly streets of Frankenmuth, Mich.", + "content": "Bavarian charm, Christmas knickknacks and all-you-can-eat restaurants draw hordes every holiday season to the twinkly streets of Frankenmuth, Mich.", + "category": "Restaurants", + "link": "https://www.nytimes.com/2021/11/23/dining/frankenmuth-restaurants-thanksgiving-dinner.html", + "creator": "Sara Bonisteel", + "pubDate": "Tue, 23 Nov 2021 17:15:57 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Stores Are Open and Closed on Thanksgiving 2021?", + "description": "Many retailers will close their stores on Thanksgiving Day, citing safety concerns and gratitude for their employees.", + "content": "Many retailers will close their stores on Thanksgiving Day, citing safety concerns and gratitude for their employees.", + "category": "Shopping and Retail", + "link": "https://www.nytimes.com/2021/11/23/business/stores-open-thanksgiving-black-friday.html", + "creator": "Coral Murphy Marcos", + "pubDate": "Tue, 23 Nov 2021 16:50:42 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What New Documents Reveal About Jeffrey Epstein's Final Days", + "description": "Newly released records show the disgraced financier living a mundane existence in jail before his suicide, while also spinning deceptions until the very end.", + "content": "Newly released records show the disgraced financier living a mundane existence in jail before his suicide, while also spinning deceptions until the very end.", + "category": "Epstein, Jeffrey E (1953- )", + "link": "https://www.nytimes.com/2021/11/23/nyregion/jeffrey-epstein-suicide-death.html", + "creator": "Benjamin Weiser, Matthew Goldstein, Danielle Ivory and Steve Eder", + "pubDate": "Tue, 23 Nov 2021 14:21:11 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cases in U.S. Children Are Surging Ahead of the Holidays", + "description": "Pediatric cases have risen by 32 percent from about two weeks ago. Here’s the latest.", + "content": "Pediatric cases have risen by 32 percent from about two weeks ago. Here’s the latest.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/23/world/covid-vaccine-boosters-mandates", + "creator": "The New York Times", + "pubDate": "Tue, 23 Nov 2021 14:16:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "President Biden Will Tap Into U.S. Oil Reserves", + "description": "The White House will release 50 million barrels of crude oil from the nation’s strategic reserve amid rising gas prices ahead of the holiday season. Here’s the latest.", + "content": "The White House will release 50 million barrels of crude oil from the nation’s strategic reserve amid rising gas prices ahead of the holiday season. Here’s the latest.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/23/business/news-business-stock-market", + "creator": "The New York Times", + "pubDate": "Tue, 23 Nov 2021 14:16:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Closing Arguments in the Arbery Killing Trial", + "description": "Rebuttal arguments from the prosecution are expected, after which jurors will deliberate in the case of the three men accused of murdering Ahmaud Arbery. Stay here for live updates.", + "content": "Rebuttal arguments from the prosecution are expected, after which jurors will deliberate in the case of the three men accused of murdering Ahmaud Arbery. Stay here for live updates.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/23/us/ahmaud-arbery-murder-trial", + "creator": "The New York Times", + "pubDate": "Tue, 23 Nov 2021 14:16:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Latest Covid Surge", + "description": "And how to make sense of it.", + "content": "And how to make sense of it.", + "category": "Coronavirus (2019-nCoV)", + "link": "https://www.nytimes.com/2021/11/23/briefing/us-covid-surge-thanksgiving.html", + "creator": "David Leonhardt", + "pubDate": "Tue, 23 Nov 2021 13:51:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Italy Frees Convicted Killer of U.K. Student Meredith Kercher", + "description": "Rudy Guede had served 13 years of a 16-year sentence for the 2007 murder. Another student, Amanda Knox, was eventually exonerated in what became a polarizing case.", + "content": "Rudy Guede had served 13 years of a 16-year sentence for the 2007 murder. Another student, Amanda Knox, was eventually exonerated in what became a polarizing case.", + "category": "Murders, Attempted Murders and Homicides", + "link": "https://www.nytimes.com/2021/11/23/world/europe/rudy-guede-free-killer-meredith-kercher.html", + "creator": "Elisabetta Povoledo", + "pubDate": "Tue, 23 Nov 2021 13:22:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La vaquita marina podría ser el próximo animal en extinguirse", + "description": "Solo quedan unas diez de estas marsopas, pero los científicos dicen que aún hay esperanza. Su destino depende en gran medida del gobierno mexicano.", + "content": "Solo quedan unas diez de estas marsopas, pero los científicos dicen que aún hay esperanza. Su destino depende en gran medida del gobierno mexicano.", + "category": "Global Warming", + "link": "https://www.nytimes.com/es/2021/11/23/espanol/vaquita-marina-extincion.html", + "creator": "Catrin Einhorn and Fred Ramos", + "pubDate": "Tue, 23 Nov 2021 13:18:53 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Macy’s Parade Is Back This Thanksgiving, Without Kids on Floats", + "description": "The tradition has been largely restored, but children under 12 years old will not be allowed in the parade — only as spectators.", + "content": "The tradition has been largely restored, but children under 12 years old will not be allowed in the parade — only as spectators.", + "category": "Parades", + "link": "https://www.nytimes.com/2021/11/22/arts/macys-parade-thanksgiving-2021.html", + "creator": "Julia Jacobs", + "pubDate": "Tue, 23 Nov 2021 13:16:52 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vaquitas Could Soon Be Extinct. Mexico Will Largely Determine Their Fate.", + "description": "Only about 10 vaquitas remain, but scientists say there’s still hope for the elusive porpoises. Their fate largely depends on the Mexican government.", + "content": "Only about 10 vaquitas remain, but scientists say there’s still hope for the elusive porpoises. Their fate largely depends on the Mexican government.", + "category": "Dolphins and Porpoises", + "link": "https://www.nytimes.com/2021/11/23/climate/vaquita-mexico-extinction.html", + "creator": "Catrin Einhorn and Fred Ramos", + "pubDate": "Tue, 23 Nov 2021 13:16:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Netflix Turns Its Attention to Films It Hopes Everyone Wants to See", + "description": "The streaming service wants to be more than a place where big names bring passion projects studios have passed on. It’s now trying to make the kind of blockbusters normally seen in theaters.", + "content": "The streaming service wants to be more than a place where big names bring passion projects studios have passed on. It’s now trying to make the kind of blockbusters normally seen in theaters.", + "category": "Netflix Inc", + "link": "https://www.nytimes.com/2021/11/22/business/media/netflix-movies-theaters.html", + "creator": "Nicole Sperling", + "pubDate": "Tue, 23 Nov 2021 13:04:31 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Is Murder Spiking? And Can Cities Address It Without Police?", + "description": "What a progressive vision of public safety could look like.", + "content": "What a progressive vision of public safety could look like.", + "category": "Polls and Public Opinion", + "link": "https://www.nytimes.com/2021/11/23/opinion/ezra-klein-podcast-patrick-sharkey.html", + "creator": "‘The Ezra Klein Show’", + "pubDate": "Tue, 23 Nov 2021 12:39:30 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Hubble Telescope Checks In With the Most Distant Planets", + "description": "The spacecraft’s farseeing eye once again sets its gaze on Jupiter, Saturn, Uranus and Neptune.", + "content": "The spacecraft’s farseeing eye once again sets its gaze on Jupiter, Saturn, Uranus and Neptune.", + "category": "Hubble Space Telescope", + "link": "https://www.nytimes.com/2021/11/23/science/hubble-telescope-jupiter-saturn-uranus-neptune.html", + "creator": "Dennis Overbye", + "pubDate": "Tue, 23 Nov 2021 11:49:22 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Late Night Celebrates Biden’s 79th Birthday", + "description": "Jimmy Fallon joked that when the president blew out his candles, “everyone started clapping and the lights went on and off.”", + "content": "Jimmy Fallon joked that when the president blew out his candles, “everyone started clapping and the lights went on and off.”", + "category": "Television", + "link": "https://www.nytimes.com/2021/11/23/arts/television/jimmy-fallon-biden-birthday.html", + "creator": "Trish Bendix", + "pubDate": "Tue, 23 Nov 2021 11:31:15 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Everyone’s Moving to Texas. Here’s Why.", + "description": "We studied 16,847 places to find out why Dallas is so popular.", + "content": "We studied 16,847 places to find out why Dallas is so popular.", + "category": "Wildfires", + "link": "https://www.nytimes.com/2021/11/23/opinion/move-to-texas.html", + "creator": "Farhad Manjoo, Gus Wezerek and Yaryna Serkez", + "pubDate": "Tue, 23 Nov 2021 11:13:01 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Righting the Historical Wrong of the Claiborne Highway", + "description": "Is it possible to undo the damage done to Black communities by the expressway projects of the 20th century?", + "content": "Is it possible to undo the damage done to Black communities by the expressway projects of the 20th century?", + "category": "Black People", + "link": "https://www.nytimes.com/2021/11/23/podcasts/the-daily/claiborne-highway-biden-infrastructure-package.html", + "creator": "Sabrina Tavernise, Rob Szypko, Stella Tan, Michael Simon Johnson, Austin Mitchell, Sydney Harper, Paige Cowett, Lisa Tobin, Marion Lozano, Dan Powell, Elisheba Ittoop and Chris Wood", + "pubDate": "Tue, 23 Nov 2021 11:00:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Is the Four-Day Workweek Finally Within Our Grasp?", + "description": "After embracing flexible work styles during the pandemic, some companies are now embracing a shorter week.", + "content": "After embracing flexible work styles during the pandemic, some companies are now embracing a shorter week.", + "category": "Working Hours", + "link": "https://www.nytimes.com/2021/11/23/business/dealbook/four-day-workweek.html", + "creator": "Kevin J. Delaney", + "pubDate": "Tue, 23 Nov 2021 10:02:47 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "As Virus Cases Rise in Europe, an Economic Toll Returns", + "description": "A series of restrictions, including a lockdown in Austria, is expected to put a brake on economic growth.", + "content": "A series of restrictions, including a lockdown in Austria, is expected to put a brake on economic growth.", + "category": "Coronavirus (2019-nCoV)", + "link": "https://www.nytimes.com/2021/11/23/business/economy/europe-covid-economy.html", + "creator": "Patricia Cohen and Melissa Eddy", + "pubDate": "Tue, 23 Nov 2021 10:00:43 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Ronald Reagan Guide to Joe Biden’s Political Future", + "description": "It is hard to act as an ambitious president without incurring a penalty, even if your policies are popular.", + "content": "It is hard to act as an ambitious president without incurring a penalty, even if your policies are popular.", + "category": "Polls and Public Opinion", + "link": "https://www.nytimes.com/2021/11/23/opinion/biden-reagan-approval.html", + "creator": "Jamelle Bouie", + "pubDate": "Tue, 23 Nov 2021 10:00:24 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New York Targets Affluent Neighborhoods in Push for Affordable Housing", + "description": "Supporters say the plans help address New York’s housing crisis and help integrate the city’s neighborhoods. Opponents see more gentrification and giveaways for developers.", + "content": "Supporters say the plans help address New York’s housing crisis and help integrate the city’s neighborhoods. Opponents see more gentrification and giveaways for developers.", + "category": "Real Estate and Housing (Residential)", + "link": "https://www.nytimes.com/2021/11/23/nyregion/affordable-housing-gowanus-soho.html", + "creator": "Mihir Zaveri", + "pubDate": "Tue, 23 Nov 2021 10:00:22 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New York Moves to Allow 800,000 Noncitizens to Vote in Local Elections", + "description": "New York City will become the largest municipality in the country to allow legal residents to vote if the legislation is approved as expected in December.", + "content": "New York City will become the largest municipality in the country to allow legal residents to vote if the legislation is approved as expected in December.", + "category": "Voting Rights, Registration and Requirements", + "link": "https://www.nytimes.com/2021/11/23/nyregion/noncitizen-voting-rights-nyc.html", + "creator": "Jeffery C. Mays and Annie Correal", + "pubDate": "Tue, 23 Nov 2021 10:00:19 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "It’s Never Too Late to Pick Up Your Life and Move to Italy", + "description": "Holly Herrmann vowed to move to Italy when she was 20. Her dream came true 38 years later.", + "content": "Holly Herrmann vowed to move to Italy when she was 20. Her dream came true 38 years later.", + "category": "Travel and Vacations", + "link": "https://www.nytimes.com/2021/11/23/style/italy-retirement-holly-herrmann.html", + "creator": "Alix Strauss", + "pubDate": "Tue, 23 Nov 2021 10:00:17 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Army Cadets Tried to Get Navy’s Goat, Again. Commanders Were Not Amused.", + "description": "Rivalries among the nation’s military academies include a long history of mascot-stealing “spirit missions” before football games, despite official condemnations.", + "content": "Rivalries among the nation’s military academies include a long history of mascot-stealing “spirit missions” before football games, despite official condemnations.", + "category": "United States Defense and Military Forces", + "link": "https://www.nytimes.com/2021/11/23/us/army-navy-mascot-kidnap-goat.html", + "creator": "Dave Philipps", + "pubDate": "Tue, 23 Nov 2021 10:00:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Should I Do With My Big Fat Inheritance?", + "description": "The magazine’s Ethicist columnist on the burdens of philanthropy — and more.", + "content": "The magazine’s Ethicist columnist on the burdens of philanthropy — and more.", + "category": "Ethics (Personal)", + "link": "https://www.nytimes.com/2021/11/23/magazine/inheritance-ethics.html", + "creator": "Kwame Anthony Appiah", + "pubDate": "Tue, 23 Nov 2021 10:00:12 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Peng Shuai Frustrates China's Propaganda Machine", + "description": "Accustomed to forcing messages on audiences at home and abroad, its propaganda machine hasn’t learned how to craft a narrative that stands up to scrutiny.", + "content": "Accustomed to forcing messages on audiences at home and abroad, its propaganda machine hasn’t learned how to craft a narrative that stands up to scrutiny.", + "category": "Peng Shuai", + "link": "https://www.nytimes.com/2021/11/23/business/china-peng-shuai-metoo.html", + "creator": "Li Yuan", + "pubDate": "Tue, 23 Nov 2021 09:02:15 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bulgaria Bus Crash Kills Dozens", + "description": "The bus, which had North Macedonian plates, caught fire on a highway, an official said.", + "content": "The bus, which had North Macedonian plates, caught fire on a highway, an official said.", + "category": "Traffic Accidents and Safety", + "link": "https://www.nytimes.com/2021/11/23/world/europe/bulgaria-bus-crash-north-macedonia.html", + "creator": "Livia Albeck-Ripka", + "pubDate": "Tue, 23 Nov 2021 07:21:13 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Russia’s Foreign Policy Isn’t All About Hurting the West", + "description": "Moscow has other concerns.", + "content": "Moscow has other concerns.", + "category": "United States International Relations", + "link": "https://www.nytimes.com/2021/11/23/opinion/russia-putin-west.html", + "creator": "Kadri Liik", + "pubDate": "Tue, 23 Nov 2021 06:00:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Book Review: ‘Tinderbox,’ by James Andrew Miller", + "description": "James Andrew Miller’s book follows the channel from its start in 1972 through its transformative “Sopranos” years and up to the present day.", + "content": "James Andrew Miller’s book follows the channel from its start in 1972 through its transformative “Sopranos” years and up to the present day.", + "category": "Miller, James Andrew", + "link": "https://www.nytimes.com/2021/11/22/books/review-tinderbox-hbo-oral-history-james-andrew-miller.html", + "creator": "Dwight Garner", + "pubDate": "Tue, 23 Nov 2021 04:59:02 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "2 Canadian Journalists Arrested at Indigenous Protest Are Freed on Bail", + "description": "Journalist groups denounced the arrest of a photographer and a filmmaker covering an Indigenous pipeline protest in British Columbia.", + "content": "Journalist groups denounced the arrest of a photographer and a filmmaker covering an Indigenous pipeline protest in British Columbia.", + "category": "Canada", + "link": "https://www.nytimes.com/2021/11/22/world/canada/canada-indigenous-journalist-arrests.html", + "creator": "Ian Austen", + "pubDate": "Tue, 23 Nov 2021 04:39:23 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Victims at Christmas Parade Were Young Musicians and Dancing Grannies", + "description": "Five adults died in Waukesha, Wis., and at least 10 children were in intensive care. Three were members of a Milwaukee dance troupe, which celebrated grandmothers.", + "content": "Five adults died in Waukesha, Wis., and at least 10 children were in intensive care. Three were members of a Milwaukee dance troupe, which celebrated grandmothers.", + "category": "Waukesha, Wis, Holiday Parade Attack (2021)", + "link": "https://www.nytimes.com/article/waukesha-victims-dancing-grannies.html", + "creator": "Shawn Hubler and Giulia Heyward", + "pubDate": "Tue, 23 Nov 2021 04:18:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "N.Y.C. Severs Ties With Housing Nonprofit Run by Jack A. Brown III", + "description": "The city will no longer work with CORE Services Group, the nonprofit run by Jack A. Brown to provide housing and services to the homeless.", + "content": "The city will no longer work with CORE Services Group, the nonprofit run by Jack A. Brown to provide housing and services to the homeless.", + "category": "Government Contracts and Procurement", + "link": "https://www.nytimes.com/2021/11/22/nyregion/jack-brown-core-services-homeless-nyc.html", + "creator": "Amy Julia Harris", + "pubDate": "Tue, 23 Nov 2021 03:34:11 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Chun Doo-hwan, South Korea's Most Vilified Ex-Military Dictator, Dies at 90", + "description": "The country’s most vilified former military dictator, he seized power in a coup and ruled his country with an iron fist for most of the 1980s.", + "content": "The country’s most vilified former military dictator, he seized power in a coup and ruled his country with an iron fist for most of the 1980s.", + "category": "South Korea", + "link": "https://www.nytimes.com/2021/11/23/world/asia/chun-doo-hwan-dead.html", + "creator": "Choe Sang-Hun", + "pubDate": "Tue, 23 Nov 2021 03:21:06 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lawyers Clash Over Whether Pursuit of Arbery Was Justified", + "description": "In closing arguments on Monday, prosecutors also raised a racial motive for why the three white men accused of murdering Ahmaud Arbery began chasing him.", + "content": "In closing arguments on Monday, prosecutors also raised a racial motive for why the three white men accused of murdering Ahmaud Arbery began chasing him.", + "category": "Murders, Attempted Murders and Homicides", + "link": "https://www.nytimes.com/2021/11/22/us/arbery-murder-trial-closing-arguments.html", + "creator": "Richard Fausset, Tariro Mzezewa and Rick Rojas", + "pubDate": "Tue, 23 Nov 2021 03:14:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "U.S. Returns Over 900 Confiscated Artifacts to Mali", + "description": "A Homeland Security investigation had discovered funerary objects, Neolithic relics and more in a shipping container in 2009.", + "content": "A Homeland Security investigation had discovered funerary objects, Neolithic relics and more in a shipping container in 2009.", + "category": "Arts and Antiquities Looting", + "link": "https://www.nytimes.com/2021/11/22/arts/design/us-mali-looted-antiquities-returned.html", + "creator": "Zachary Small", + "pubDate": "Tue, 23 Nov 2021 02:40:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden Will Keep Jerome Powell as Federal Reserve Chair", + "description": "The White House returned to a longstanding pattern in which presidents reappoint the same leader of the Federal Reserve regardless of partisan identity.", + "content": "The White House returned to a longstanding pattern in which presidents reappoint the same leader of the Federal Reserve regardless of partisan identity.", + "category": "United States Economy", + "link": "https://www.nytimes.com/2021/11/22/business/economy/fed-chair-jerome-powell-biden.html", + "creator": "Jeanna Smialek and Jim Tankersley", + "pubDate": "Tue, 23 Nov 2021 01:58:10 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Problem of Political Despair", + "description": "Hopelessness about our democracy could accelerate its decay.", + "content": "Hopelessness about our democracy could accelerate its decay.", + "category": "United States Politics and Government", + "link": "https://www.nytimes.com/2021/11/22/opinion/american-democracy.html", + "creator": "Michelle Goldberg", + "pubDate": "Tue, 23 Nov 2021 01:33:04 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "House Panel Subpoenas Roger Stone and Alex Jones in Capitol Riot Inquiry", + "description": "Investigators summoned five more allies of former President Donald J. Trump as they dug further into the planning and financing of rallies before the Jan. 6 attack.", + "content": "Investigators summoned five more allies of former President Donald J. Trump as they dug further into the planning and financing of rallies before the Jan. 6 attack.", + "category": "Stone, Roger J Jr", + "link": "https://www.nytimes.com/2021/11/22/us/politics/capitol-riot-subpoenas-roger-stone-alex-jones.html", + "creator": "Luke Broadwater", + "pubDate": "Tue, 23 Nov 2021 01:24:18 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Justice Department to Pay About $130 Million to Parkland Shooting Victims", + "description": "Family members of victims had sued over how the F.B.I. handled tips warning about the gunman before he killed 17 people at Marjory Stoneman Douglas High School.", + "content": "Family members of victims had sued over how the F.B.I. handled tips warning about the gunman before he killed 17 people at Marjory Stoneman Douglas High School.", + "category": "Parkland, Fla, Shooting (2018)", + "link": "https://www.nytimes.com/2021/11/22/us/parkland-shooting-victims-settlement.html", + "creator": "Patricia Mazzei and Katie Benner", + "pubDate": "Tue, 23 Nov 2021 01:06:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Man Accused of Killing 5 at Wisconsin Parade Had Lengthy Police Record", + "description": "Dozens of people were injured, including children, after an S.U.V. tore through the Christmas parade in Waukesha, Wis.", + "content": "Dozens of people were injured, including children, after an S.U.V. tore through the Christmas parade in Waukesha, Wis.", + "category": "Waukesha, Wis, Holiday Parade Attack (2021)", + "link": "https://www.nytimes.com/2021/11/22/us/wisconsin-waukesha-parade.html", + "creator": "Mitch Smith, Dan Simmons, Glenn Thrush and Serge F. Kovaleski", + "pubDate": "Tue, 23 Nov 2021 00:46:15 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "ATP Finals Create a Buzz in Turin, but Will Italy’s Players Follow?", + "description": "Turin is a smaller stage than the prestigious event had in London, but the enthusiasm was real, especially for the young Italian stars Jannik Sinner and Matteo Berrettini.", + "content": "Turin is a smaller stage than the prestigious event had in London, but the enthusiasm was real, especially for the young Italian stars Jannik Sinner and Matteo Berrettini.", + "category": "Tennis", + "link": "https://www.nytimes.com/2021/11/22/sports/tennis/atp-finals-turin-sinner-berrettini.html", + "creator": "Christopher Clarey", + "pubDate": "Tue, 23 Nov 2021 00:25:19 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lael Brainard is Tapped For Vice Chair of the Federal Reserve", + "description": "The longtime Washington insider is now the central bank’s No. 2. That could give her more bandwidth to influence policy.", + "content": "The longtime Washington insider is now the central bank’s No. 2. That could give her more bandwidth to influence policy.", + "category": "Appointments and Executive Changes", + "link": "https://www.nytimes.com/2021/11/22/business/economy/lael-brainard-fed-vice-chair.html", + "creator": "Jeanna Smialek and Madeleine Ngo", + "pubDate": "Tue, 23 Nov 2021 00:21:00 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Spending as if the Future Matters", + "description": "Public investment, including spending on children, is a worthy American tradition.", + "content": "Public investment, including spending on children, is a worthy American tradition.", + "category": "Infrastructure Investment and Jobs Act (2021)", + "link": "https://www.nytimes.com/2021/11/22/opinion/biden-infrastructure-spending.html", + "creator": "Paul Krugman", + "pubDate": "Tue, 23 Nov 2021 00:00:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Touchy Feely,’ ‘Maggie’ and Other Streaming Gems", + "description": "A look at off-the-radar recommendations for home viewing, including indie comedy-dramas, genre hybrids and informative documentaries about influential outsiders.", + "content": "A look at off-the-radar recommendations for home viewing, including indie comedy-dramas, genre hybrids and informative documentaries about influential outsiders.", + "category": "Movies", + "link": "https://www.nytimes.com/2021/11/22/movies/offbeat-streaming-movies.html", + "creator": "Jason Bailey", + "pubDate": "Mon, 22 Nov 2021 23:01:35 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Thanksgiving Holiday Travel Will Test Airlines", + "description": "Thanksgiving will be the biggest test of the system’s resilience since the pandemic began, with millions more passengers than last year.", + "content": "Thanksgiving will be the biggest test of the system’s resilience since the pandemic began, with millions more passengers than last year.", + "category": "Airlines and Airplanes", + "link": "https://www.nytimes.com/2021/11/22/business/thanksgiving-holiday-travel-airlines.html", + "creator": "Sydney Ember and Niraj Chokshi", + "pubDate": "Mon, 22 Nov 2021 22:51:31 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kenosha, the Rittenhouse Verdict, and the Riots of 2020", + "description": "What I saw in Portland and Kenosha has convinced me: We must stop tearing ourselves apart so that we can build.", + "content": "What I saw in Portland and Kenosha has convinced me: We must stop tearing ourselves apart so that we can build.", + "category": "George Floyd Protests (2020)", + "link": "https://www.nytimes.com/2021/11/22/opinion/politics/kenosha-rittenhouse-2020-protests.html", + "creator": "Nancy Rommelmann", + "pubDate": "Mon, 22 Nov 2021 22:51:13 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Fake News on Facebook Helped Fuel a Border Crisis in Europe", + "description": "Social media worsened a migrant crisis on the border of Belarus and Poland and helped smugglers profit off desperate people trying to reach Europe.", + "content": "Social media worsened a migrant crisis on the border of Belarus and Poland and helped smugglers profit off desperate people trying to reach Europe.", + "category": "Middle East and Africa Migrant Crisis", + "link": "https://www.nytimes.com/2021/11/22/world/europe/belarus-migrants-facebook-fake-news.html", + "creator": "Andrew Higgins, Adam Satariano and Jane Arraf", + "pubDate": "Mon, 22 Nov 2021 22:30:53 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Groveland Four Are Exonerated More Than 70 Years Later", + "description": "The men, known as the Groveland Four, were cleared on Monday after a Florida prosecutor said “a complete breakdown of the criminal justice system” led to the charges in 1949.", + "content": "The men, known as the Groveland Four, were cleared on Monday after a Florida prosecutor said “a complete breakdown of the criminal justice system” led to the charges in 1949.", + "category": "Amnesties, Commutations and Pardons", + "link": "https://www.nytimes.com/2021/11/22/us/groveland-four-exonerated-florida.html", + "creator": "Amanda Holpuch", + "pubDate": "Mon, 22 Nov 2021 22:30:02 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden Bets Big on Continuity at the Fed", + "description": "Jerome Powell and Lael Brainard are known quantities in a turbulent time.", + "content": "Jerome Powell and Lael Brainard are known quantities in a turbulent time.", + "category": "United States Economy", + "link": "https://www.nytimes.com/2021/11/22/upshot/powell-brainard-fed-biden.html", + "creator": "Neil Irwin", + "pubDate": "Mon, 22 Nov 2021 22:26:49 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "I Live in Arkansas. Why is My State Telling Me Not to Boycott Israel?", + "description": "I publish The Arkansas Times. We refused to sign an anti-B.D.S. law because it violates our First Amendment rights.", + "content": "I publish The Arkansas Times. We refused to sign an anti-B.D.S. law because it violates our First Amendment rights.", + "category": "Israel", + "link": "https://www.nytimes.com/2021/11/22/opinion/israel-arkansas-bds-pledge.html", + "creator": "Alan Leveritt", + "pubDate": "Mon, 22 Nov 2021 22:23:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Assembly Finds ‘Overwhelming Evidence’ Cuomo Engaged in Sexual Harassment", + "description": "The findings, released after an eight-month inquiry into former Gov. Andrew Cuomo, reinforced a damning investigation by the New York attorney general.", + "content": "The findings, released after an eight-month inquiry into former Gov. Andrew Cuomo, reinforced a damning investigation by the New York attorney general.", + "category": "Cuomo, Andrew M", + "link": "https://www.nytimes.com/2021/11/22/nyregion/cuomo-ny-assembly-investigation.html", + "creator": "Grace Ashford and Luis Ferré-Sadurní", + "pubDate": "Mon, 22 Nov 2021 22:22:10 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Business Updates: Spacey Ordered to Pay $31 Million to ‘House of Cards’ Studio", + "description": "The founder of Theranos unexpectedly took the stand in her own defense on Friday, the latest twist in a trial that has captivated Silicon Valley.", + "content": "The founder of Theranos unexpectedly took the stand in her own defense on Friday, the latest twist in a trial that has captivated Silicon Valley.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/22/business/news-business-stock-market", + "creator": "The New York Times", + "pubDate": "Mon, 22 Nov 2021 22:14:29 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "For Those Who Feel Rejected by Family, Friendsgiving Can Be a Lifeline", + "description": "For many L.G.B.T.Q. Americans, especially those with immigrant roots, traditional notions of Thanksgiving and family may not apply. The holiday offers another way to celebrate.", + "content": "For many L.G.B.T.Q. Americans, especially those with immigrant roots, traditional notions of Thanksgiving and family may not apply. The holiday offers another way to celebrate.", + "category": "Cooking and Cookbooks", + "link": "https://www.nytimes.com/2021/11/22/dining/friendsgiving.html", + "creator": "Eric Kim", + "pubDate": "Mon, 22 Nov 2021 22:11:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Man Intentionally Drove Into Wisconsin Holiday Parade, Police Say", + "description": "More than 40 others were hurt on Sunday in Waukesha, Wis. A 39-year-old Milwaukee man was being questioned, an official confirmed. Here’s the latest.", + "content": "More than 40 others were hurt on Sunday in Waukesha, Wis. A 39-year-old Milwaukee man was being questioned, an official confirmed. Here’s the latest.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/22/us/waukesha-parade-crash", + "creator": "The New York Times", + "pubDate": "Mon, 22 Nov 2021 22:11:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden Will Keep Powell as Fed Chair, Resisting Pressure for Shake-Up", + "description": "President Biden’s decision to renominate Jerome Powell was a return to a longstanding tradition. Here are the latest updates and reactions to the choice.", + "content": "President Biden’s decision to renominate Jerome Powell was a return to a longstanding tradition. Here are the latest updates and reactions to the choice.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/22/business/federal-reserve-powell-brainard", + "creator": "The New York Times", + "pubDate": "Mon, 22 Nov 2021 22:11:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Defense Lawyers Make Closing Arguments in Arbery Killing Trial", + "description": "Three white Georgia men stand accused of murdering Ahmaud Arbery, a 25-year-old Black man, in February 2020. Watch live and follow updates on the trial.", + "content": "Three white Georgia men stand accused of murdering Ahmaud Arbery, a 25-year-old Black man, in February 2020. Watch live and follow updates on the trial.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/22/us/ahmaud-arbery-murder-trial", + "creator": "The New York Times", + "pubDate": "Mon, 22 Nov 2021 22:11:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "90 Percent of U.S. Federal Employees Will Meet Vaccination Deadline", + "description": "The mandate, announced in September, was part of an aggressive effort to combat the spread of the Delta variant. Here’s the latest on Covid-19.", + "content": "The mandate, announced in September, was part of an aggressive effort to combat the spread of the Delta variant. Here’s the latest on Covid-19.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/22/world/covid-vaccine-boosters-mandates", + "creator": "The New York Times", + "pubDate": "Mon, 22 Nov 2021 22:11:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Elizabeth Holmes Concludes Day 2 of Her Testimony in the Theranos Trial", + "description": "Ms. Holmes suggested that she could not have intended to deceive investors because she believed the technology worked. Follow the trial here.", + "content": "Ms. Holmes suggested that she could not have intended to deceive investors because she believed the technology worked. Follow the trial here.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/22/technology/elizabeth-holmes-theranos-trial", + "creator": "The New York Times", + "pubDate": "Mon, 22 Nov 2021 22:11:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cuomo's Office Undermined Health Department, Top Doctor Testifies", + "description": "The N.Y. Health Department became a “toxic work environment” early in the pandemic, a high-ranking doctor told officials investigating ex-Gov. Andrew Cuomo.", + "content": "The N.Y. Health Department became a “toxic work environment” early in the pandemic, a high-ranking doctor told officials investigating ex-Gov. Andrew Cuomo.", + "category": "Cuomo, Andrew M", + "link": "https://www.nytimes.com/2021/11/22/nyregion/cuomo-covid-health-department.html", + "creator": "Joseph Goldstein and Sharon Otterman", + "pubDate": "Mon, 22 Nov 2021 22:08:36 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Five Ways to Exercise Your Thankfulness Muscles", + "description": "Feeling grateful does not always happen naturally.", + "content": "Feeling grateful does not always happen naturally.", + "category": "Thanksgiving Day", + "link": "https://www.nytimes.com/2021/11/21/opinion/thanksgiving-gratitude.html", + "creator": "Tish Harrison Warren", + "pubDate": "Mon, 22 Nov 2021 22:04:59 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kevin Spacey Ordered to Pay $31 Million to ‘House of Cards’ Studio", + "description": "A secret arbitrator’s ruling was issued 13 months ago and became public on Monday when lawyers for the studio petitioned a California court to confirm the award.", + "content": "A secret arbitrator’s ruling was issued 13 months ago and became public on Monday when lawyers for the studio petitioned a California court to confirm the award.", + "category": "#MeToo Movement", + "link": "https://www.nytimes.com/2021/11/22/business/media/kevin-spacey-house-of-cards.html", + "creator": "John Koblin", + "pubDate": "Mon, 22 Nov 2021 21:48:36 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jeff Bezos Donates $100 Million to the Obama Foundation", + "description": "The gift was the largest yet for the foundation and was among several splashy donations in recent months by Mr. Bezos, one of the world’s richest people.", + "content": "The gift was the largest yet for the foundation and was among several splashy donations in recent months by Mr. Bezos, one of the world’s richest people.", + "category": "Bezos, Jeffrey P", + "link": "https://www.nytimes.com/2021/11/22/business/bezos-obama-foundation.html", + "creator": "Nicholas Kulish", + "pubDate": "Mon, 22 Nov 2021 21:47:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What We Know About the Victims of the Waukesha Parade Crash", + "description": "Eighteen children between the ages of 3 and 16 were among those injured, including three sets of siblings.", + "content": "Eighteen children between the ages of 3 and 16 were among those injured, including three sets of siblings.", + "category": "Waukesha, Wis, Holiday Parade Attack (2021)", + "link": "https://www.nytimes.com/article/waukesha-parade-victims.html", + "creator": "Giulia Heyward and Shawn Hubler", + "pubDate": "Mon, 22 Nov 2021 21:42:55 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Was This Ancient Tusk 150 Miles From Land, 10,000 Feet Deep?", + "description": "A discovery in the Pacific Ocean off California leads to “an Indiana Jones mixed with Jurassic Park moment.”", + "content": "A discovery in the Pacific Ocean off California leads to “an Indiana Jones mixed with Jurassic Park moment.”", + "category": "Mammoths (Animals)", + "link": "https://www.nytimes.com/2021/11/22/science/mammoth-tusk-ocean.html", + "creator": "Annie Roth", + "pubDate": "Mon, 22 Nov 2021 21:27:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Free E-Bikes for Everyone!", + "description": "We’re in the middle of a climate crisis. We need big ideas.", + "content": "We’re in the middle of a climate crisis. We need big ideas.", + "category": "Electric Bicycles, Motorcycles and Scooters", + "link": "https://www.nytimes.com/2021/11/22/opinion/free-ebikes-climate.html", + "creator": "Jay Caspian Kang", + "pubDate": "Mon, 22 Nov 2021 21:23:32 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sean Parnell Suspends G.O.P. Senate Bid in Pennsylvania", + "description": "Mr. Parnell, who was endorsed by Donald Trump in one of the highest-profile 2022 Senate races, had been accused by his estranged wife of spousal and child abuse.", + "content": "Mr. Parnell, who was endorsed by Donald Trump in one of the highest-profile 2022 Senate races, had been accused by his estranged wife of spousal and child abuse.", + "category": "Parnell, Sean (1981- )", + "link": "https://www.nytimes.com/2021/11/22/us/politics/sean-parnell-suspends-pennsylvania-senate.html", + "creator": "Jennifer Medina", + "pubDate": "Mon, 22 Nov 2021 21:19:41 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Overheating the Economy Now Could Mean Trouble Later", + "description": "Now that Jerome Powell has been renominated to head the Federal Reserve, he needs to turn the temperature down.", + "content": "Now that Jerome Powell has been renominated to head the Federal Reserve, he needs to turn the temperature down.", + "category": "Inflation (Economics)", + "link": "https://www.nytimes.com/2021/11/22/opinion/biden-powell-inflation-fed-economy.html", + "creator": "Michael R. Strain", + "pubDate": "Mon, 22 Nov 2021 21:16:27 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Austria Imposes Lockdown Amid Europe’s Covid Surge", + "description": "Europe is again at the center of the pandemic, and amid vaccine resistance and protests, nations are imposing new rules and pressuring people to get inoculated.", + "content": "Europe is again at the center of the pandemic, and amid vaccine resistance and protests, nations are imposing new rules and pressuring people to get inoculated.", + "category": "Coronavirus (2019-nCoV)", + "link": "https://www.nytimes.com/2021/11/22/world/europe/covid-europe-surge-protests.html", + "creator": "Steven Erlanger", + "pubDate": "Mon, 22 Nov 2021 21:05:52 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Robert Bly, Poet Who Gave Rise to a Men’s Movement, Dies at 94", + "description": "His most famous, and most controversial, work was “Iron John: A Book About Men,” which made the case that American men had grown soft and feminized. It made him a cultural phenomenon.", + "content": "His most famous, and most controversial, work was “Iron John: A Book About Men,” which made the case that American men had grown soft and feminized. It made him a cultural phenomenon.", + "category": "Deaths (Obituaries)", + "link": "https://www.nytimes.com/2021/11/22/books/robert-bly-dead.html", + "creator": "Robert D. McFadden", + "pubDate": "Mon, 22 Nov 2021 21:00:57 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The U.K. and France, Once More Unto the Breach", + "description": "The Hundred Years’ War isn’t over. Let’s go for another hundred.", + "content": "The Hundred Years’ War isn’t over. Let’s go for another hundred.", + "category": "France", + "link": "https://www.nytimes.com/2021/11/20/opinion/uk-france-submarine.html", + "creator": "Maureen Dowd", + "pubDate": "Mon, 22 Nov 2021 20:26:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rittenhouse and the Right’s White Vigilante Heroes", + "description": "The great threat is that there are young men out there who watched the verdict and now want to follow Rittenhouse’s lead.", + "content": "The great threat is that there are young men out there who watched the verdict and now want to follow Rittenhouse’s lead.", + "category": "Rittenhouse, Kyle", + "link": "https://www.nytimes.com/2021/11/19/opinion/kyle-rittenhouse-not-guilty-vigilantes.html", + "creator": "Charles M. Blow", + "pubDate": "Mon, 22 Nov 2021 20:19:50 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Paul Thomas Anderson on \"Licorice Pizza\" and Age Difference", + "description": "The auteur explains why he cast Alana Haim, and why he thinks the age difference in the film’s central relationship shouldn’t matter.", + "content": "The auteur explains why he cast Alana Haim, and why he thinks the age difference in the film’s central relationship shouldn’t matter.", + "category": "Content Type: Personal Profile", + "link": "https://www.nytimes.com/2021/11/22/movies/paul-thomas-anderson-licorice-pizza.html", + "creator": "Kyle Buchanan", + "pubDate": "Mon, 22 Nov 2021 20:01:31 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Spirit of Gratitude Is Healthy for Society", + "description": "On Thanksgiving, consider the multiple benefits of giving thanks.", + "content": "On Thanksgiving, consider the multiple benefits of giving thanks.", + "category": "internal-sub-only-nl", + "link": "https://www.nytimes.com/2021/11/22/opinion/gratitude-thanksgiving-economics.html", + "creator": "Peter Coy", + "pubDate": "Mon, 22 Nov 2021 20:01:30 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What We Give Thanks for and What We Say No Thanks To", + "description": "The Biden bill, the Rittenhouse verdict and the fate of the Democratic majority.", + "content": "The Biden bill, the Rittenhouse verdict and the fate of the Democratic majority.", + "category": "United States Politics and Government", + "link": "https://www.nytimes.com/2021/11/22/opinion/thanksgiving-biden-rittenhouse.html", + "creator": "Gail Collins and Bret Stephens", + "pubDate": "Mon, 22 Nov 2021 19:53:29 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Trying to Blur Memories of the Gulag, Russia Targets a Rights Group", + "description": "Prosecutors are trying to shut down Memorial International, Russia’s most prominent human rights group, as the Kremlin moves to control the historical narrative of the Soviet Union.", + "content": "Prosecutors are trying to shut down Memorial International, Russia’s most prominent human rights group, as the Kremlin moves to control the historical narrative of the Soviet Union.", + "category": "Russia", + "link": "https://www.nytimes.com/2021/11/22/world/europe/russia-memorial-prosecution.html", + "creator": "Valerie Hopkins", + "pubDate": "Mon, 22 Nov 2021 19:53:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Nicest New Year’s Resolution I Ever Made", + "description": "I didn’t keep my vow to write a letter each day of the year, but I learned plenty from trying.", + "content": "I didn’t keep my vow to write a letter each day of the year, but I learned plenty from trying.", + "category": "Letters", + "link": "https://www.nytimes.com/2021/11/22/opinion/letters-new-year-resolution.html", + "creator": "Margaret Renkl", + "pubDate": "Mon, 22 Nov 2021 19:30:18 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Remote Work Is Failing Gen Z Employees", + "description": "Unless carefully designed, pandemic office culture risks hurting the least experienced workers in our organizations.", + "content": "Unless carefully designed, pandemic office culture risks hurting the least experienced workers in our organizations.", + "category": "Quarantine (Life and Culture)", + "link": "https://www.nytimes.com/2021/11/22/opinion/remote-work-gen-z.html", + "creator": "Anne Helen Petersen and Charlie Warzel", + "pubDate": "Mon, 22 Nov 2021 19:24:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Magnus Carlsen Turned Chess Skill Into a Business Empire", + "description": "Winning is what made Magnus Carlsen a household name. But it is teaching and selling the game to others that has made him rich.", + "content": "Winning is what made Magnus Carlsen a household name. But it is teaching and selling the game to others that has made him rich.", + "category": "Chess", + "link": "https://www.nytimes.com/2021/11/22/sports/magnus-carlsen-chess.html", + "creator": "Dylan Loeb McClain", + "pubDate": "Mon, 22 Nov 2021 19:20:45 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "I Traded In My Stilettos for Sneakers, Now What?", + "description": "A reader asks for guidance in finding comfortable, yet chic, footwear.", + "content": "A reader asks for guidance in finding comfortable, yet chic, footwear.", + "category": "Fashion and Apparel", + "link": "https://www.nytimes.com/2021/11/19/style/comfortable-chic-shoes.html", + "creator": "Vanessa Friedman", + "pubDate": "Mon, 22 Nov 2021 19:08:50 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Happens to Women Who Are Denied Abortions", + "description": "Being denied an abortion can have serious consequences for a women’s health and livelihood. It can even be deadly.", + "content": "Being denied an abortion can have serious consequences for a women’s health and livelihood. It can even be deadly.", + "category": "Pregnancy and Childbirth", + "link": "https://www.nytimes.com/2021/11/22/opinion/abortion-supreme-court-women-law.html", + "creator": "Diana Greene Foster", + "pubDate": "Mon, 22 Nov 2021 19:01:50 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Broadway Play \"Clyde's\" Will Be Livestreamed", + "description": "The digital experimentation born of the pandemic shutdown is continuing: the final 16 performances of Lynn Nottage’s “Clyde’s” will be streamed, for $59.", + "content": "The digital experimentation born of the pandemic shutdown is continuing: the final 16 performances of Lynn Nottage’s “Clyde’s” will be streamed, for $59.", + "category": "Theater", + "link": "https://www.nytimes.com/2021/11/22/theater/lynn-nottage-clydes-broadway-livestream.html", + "creator": "Michael Paulson", + "pubDate": "Mon, 22 Nov 2021 18:42:36 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Court Urged to Let Jan. 6 Panel See Trump White House Files", + "description": "In appellate briefs, lawyers for the House and the Justice Department argued against the former president’s claim of executive privilege.", + "content": "In appellate briefs, lawyers for the House and the Justice Department argued against the former president’s claim of executive privilege.", + "category": "Storming of the US Capitol (Jan, 2021)", + "link": "https://www.nytimes.com/2021/11/22/us/politics/jan-6-trump-files.html", + "creator": "Charlie Savage", + "pubDate": "Mon, 22 Nov 2021 18:40:09 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Meet the New Members of This Year's Baseball Hall of Fame Ballot", + "description": "A great deal of ink will be spilled on the candidacies of Alex Rodriguez and David Ortiz. For a moment, stop to consider the 11 other new candidates instead.", + "content": "A great deal of ink will be spilled on the candidacies of Alex Rodriguez and David Ortiz. For a moment, stop to consider the 11 other new candidates instead.", + "category": "Baseball", + "link": "https://www.nytimes.com/2021/11/22/sports/baseball/baseball-hall-of-fame-ballot.html", + "creator": "Tyler Kepner", + "pubDate": "Mon, 22 Nov 2021 18:12:52 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Searing Beauty, and Harsh Reality, of a Kentucky Tobacco Harvest", + "description": "At a family farm in Shelby County, a group of 26 men from Nicaragua and Mexico perform the grueling seasonal work that Americans largely avoid.", + "content": "At a family farm in Shelby County, a group of 26 men from Nicaragua and Mexico perform the grueling seasonal work that Americans largely avoid.", + "category": "Smoking and Tobacco", + "link": "https://www.nytimes.com/2021/11/22/travel/kentucky-tobacco-harvest.html", + "creator": "Luke Sharrett", + "pubDate": "Mon, 22 Nov 2021 18:12:12 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Meters’ Leo Nocentelli Gets a Solo Career, 50 Years Late", + "description": "In the 1970s, Nocentelli recorded a folk album drastically different from his band’s funk music. Barely anyone heard it — until it ended up at a swap meet.", + "content": "In the 1970s, Nocentelli recorded a folk album drastically different from his band’s funk music. Barely anyone heard it — until it ended up at a swap meet.", + "category": "Pop and Rock Music", + "link": "https://www.nytimes.com/2021/11/18/arts/music/the-meters-leo-nocentelli-solo-album.html", + "creator": "Nate Rogers", + "pubDate": "Mon, 22 Nov 2021 17:30:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What the Kyle Rittenhouse Verdict Says About Justice in America", + "description": "Readers are worried about the precedent set by Kyle Rittenhouse’s acquittal. Also: The A.M.A., on the power of language.", + "content": "Readers are worried about the precedent set by Kyle Rittenhouse’s acquittal. Also: The A.M.A., on the power of language.", + "category": "Rittenhouse, Kyle", + "link": "https://www.nytimes.com/2021/11/22/opinion/letters/kyle-rittenhouse-verdict.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:23:52 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Inside Fentanyl’s Mounting Death Toll: ‘This Is Poison’", + "description": "While a rise in overdose deaths shows the devastating consequences of the opioid’s spread, less is understood about how the drug has proliferated.", + "content": "While a rise in overdose deaths shows the devastating consequences of the opioid’s spread, less is understood about how the drug has proliferated.", + "category": "Fentanyl", + "link": "https://www.nytimes.com/2021/11/20/nyregion/fentanyl-opioid-deaths.html", + "creator": "Sarah Maslin Nir", + "pubDate": "Mon, 22 Nov 2021 16:29:48 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Concerns Grow Over Safety of Aduhelm After Death of Patient Who Got the Drug", + "description": "Newly published safety data shows that 41 percent of patients in key clinical trials of the Alzheimer’s drug experienced brain bleeding or swelling, though many cases were asymptomatic.", + "content": "Newly published safety data shows that 41 percent of patients in key clinical trials of the Alzheimer’s drug experienced brain bleeding or swelling, though many cases were asymptomatic.", + "category": "your-feed-science", + "link": "https://www.nytimes.com/2021/11/22/health/aduhelm-death-safety.html", + "creator": "Pam Belluck", + "pubDate": "Mon, 22 Nov 2021 16:00:09 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Telling ‘The Untold Story of Sushi’", + "description": "Daniel Fromson spent years researching a controversial Korean church that had created a seafood empire. He reflects on the benefits of long-term reporting.", + "content": "Daniel Fromson spent years researching a controversial Korean church that had created a seafood empire. He reflects on the benefits of long-term reporting.", + "category": "Moon", + "link": "https://www.nytimes.com/2021/11/22/insider/unification-church-sushi.html", + "creator": "Daniel Fromson", + "pubDate": "Mon, 22 Nov 2021 15:44:38 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Limping and Penniless, Iraqis Deported From Belarus Face Bleak Futures", + "description": "Hundreds of desperate Iraqis are being sent home after becoming political pawns in Belarus’s quarrel with its European Union neighbors.", + "content": "Hundreds of desperate Iraqis are being sent home after becoming political pawns in Belarus’s quarrel with its European Union neighbors.", + "category": "Belarus-Poland Border Crisis (2021- )", + "link": "https://www.nytimes.com/2021/11/22/world/middleeast/belarus-iraqi-migrant-deportations.html", + "creator": "Jane Arraf and Sangar Khaleel", + "pubDate": "Mon, 22 Nov 2021 15:13:33 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Taxi! To the Airport — by Air, Please.", + "description": "Several companies are betting they can bring electric urban air travel to the masses — perhaps within the next few years.", + "content": "Several companies are betting they can bring electric urban air travel to the masses — perhaps within the next few years.", + "category": "Airlines and Airplanes", + "link": "https://www.nytimes.com/2021/11/22/business/air-taxi-aviation-electric.html", + "creator": "Gautham Nagesh", + "pubDate": "Mon, 22 Nov 2021 15:06:53 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Peng Shuai Went From ‘Chinese Princess’ to Silenced #MeToo Accuser", + "description": "The tennis star won independence while remaining in Beijing’s good graces. But she has been unable to break through China’s resistance to sexual assault allegations.", + "content": "The tennis star won independence while remaining in Beijing’s good graces. But she has been unable to break through China’s resistance to sexual assault allegations.", + "category": "Peng Shuai", + "link": "https://www.nytimes.com/2021/11/22/world/asia/china-peng-shuai-metoo.html", + "creator": "Alexandra Stevenson and Steven Lee Myers", + "pubDate": "Mon, 22 Nov 2021 14:08:44 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "56 Years Ago, He Shot Malcolm X. Now He Lives Quietly in Brooklyn.", + "description": "Mujahid Abdul Halim is the one man who confessed to his role in the assassination. He long insisted that the two men convicted with him were innocent.", + "content": "Mujahid Abdul Halim is the one man who confessed to his role in the assassination. He long insisted that the two men convicted with him were innocent.", + "category": "Malcolm X", + "link": "https://www.nytimes.com/2021/11/22/nyregion/malcolm-x-assassination-halim-hayer.html", + "creator": "Jonah E. Bromwich, Ashley Southall and Troy Closson", + "pubDate": "Mon, 22 Nov 2021 13:10:09 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Terence Crawford Has His Belt, and Choices to Make", + "description": "Crawford has long awaited a bout with Errol Spence Jr., and with his contract with his promoter expiring soon, the welterweight champion has options.", + "content": "Crawford has long awaited a bout with Errol Spence Jr., and with his contract with his promoter expiring soon, the welterweight champion has options.", + "category": "Crawford, Terence (1987- )", + "link": "https://www.nytimes.com/2021/11/21/sports/terence-crawford-shawn-porter-fight.html", + "creator": "Morgan Campbell", + "pubDate": "Mon, 22 Nov 2021 12:26:53 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester United and the Perils of Living in the Past", + "description": "Years of success under Alex Ferguson changed the way United viewed itself. But the glory days are gone, and the sooner the club admits that, the better.", + "content": "Years of success under Alex Ferguson changed the way United viewed itself. But the glory days are gone, and the sooner the club admits that, the better.", + "category": "Soccer", + "link": "https://www.nytimes.com/2021/11/22/sports/soccer/manchester-united-ole-solskjaer.html", + "creator": "Rory Smith", + "pubDate": "Mon, 22 Nov 2021 12:17:59 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Politics of Menace", + "description": "Despite a congressman’s censure, Republicans have shown a growing tolerance for violent rhetoric.", + "content": "Despite a congressman’s censure, Republicans have shown a growing tolerance for violent rhetoric.", + "category": "", + "link": "https://www.nytimes.com/2021/11/22/briefing/paul-gosar-censure-violence.html", + "creator": "Catie Edmondson", + "pubDate": "Mon, 22 Nov 2021 11:35:15 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Acquittal of Kyle Rittenhouse", + "description": "How a jury came to find the teenager, who shot and killed two people in Kenosha, Wis., not guilty on the five charges he faced.", + "content": "How a jury came to find the teenager, who shot and killed two people in Kenosha, Wis., not guilty on the five charges he faced.", + "category": "Self-Defense", + "link": "https://www.nytimes.com/2021/11/22/podcasts/the-daily/kyle-rittenhouse-verdict.html", + "creator": "Michael Barbaro, Daniel Guillemette, Clare Toeniskoetter, Alexandra Leigh Young, Larissa Anderson and Chris Wood", + "pubDate": "Mon, 22 Nov 2021 11:08:31 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "As Pandemic Evictions Rise, Spaniards Declare ‘War’ on Wall Street Landlords", + "description": "Protesters in Barcelona are pushing back against foreign investment firms that have bought up thousands of homes over the past decade and are forcing out residents who can’t pay the rent.", + "content": "Protesters in Barcelona are pushing back against foreign investment firms that have bought up thousands of homes over the past decade and are forcing out residents who can’t pay the rent.", + "category": "Barcelona (Spain)", + "link": "https://www.nytimes.com/2021/11/21/world/europe/spain-evictions-cerberus-covid.html", + "creator": "Nicholas Casey and Roser Toll Pifarré", + "pubDate": "Mon, 22 Nov 2021 09:45:52 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Playwright Is in Exile as Cuba Uses an Old Playbook to Quash Dissent", + "description": "Yunior García, a rising star of the Cuban protest movement, fled to Spain. He is one of a young generation of artists who say they have chosen exile over imprisonment.", + "content": "Yunior García, a rising star of the Cuban protest movement, fled to Spain. He is one of a young generation of artists who say they have chosen exile over imprisonment.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/21/world/americas/yunior-garcia-exile-spain.html", + "creator": "Nicholas Casey", + "pubDate": "Mon, 22 Nov 2021 05:04:33 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Video of Peng Shuai With Olympic Officials Fuels a Showdown With Tennis", + "description": "The Chinese tennis star held a 30-minute video call with the leader of the International Olympic Committee, but the head of women’s professional tennis remained unable to reach her.", + "content": "The Chinese tennis star held a 30-minute video call with the leader of the International Olympic Committee, but the head of women’s professional tennis remained unable to reach her.", + "category": "Olympic Games (2022)", + "link": "https://www.nytimes.com/2021/11/21/sports/tennis/peng-shuai-video-ioc.html", + "creator": "Matthew Futterman", + "pubDate": "Mon, 22 Nov 2021 03:21:54 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tucker Carlson's 'Patriot Purge' Special Leads Two Fox News Contributors to Quit", + "description": "Jonah Goldberg and Stephen Hayes, stars of a brand of conservatism that has fallen out of fashion, decide they’ve had enough.", + "content": "Jonah Goldberg and Stephen Hayes, stars of a brand of conservatism that has fallen out of fashion, decide they’ve had enough.", + "category": "News and News Media", + "link": "https://www.nytimes.com/2021/11/21/business/jonah-goldberg-steve-hayes-quit-fox-tucker-carlson.html", + "creator": "Ben Smith", + "pubDate": "Mon, 22 Nov 2021 00:48:03 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Two of 17 Kidnapped Missionaries in Haiti Are Freed, Group Says", + "description": "After being held hostage for 37 days by a gang, two people with a U.S. Christian aid group have been released in Port-au-Prince and are described as “safe.”", + "content": "After being held hostage for 37 days by a gang, two people with a U.S. Christian aid group have been released in Port-au-Prince and are described as “safe.”", + "category": "Gangs", + "link": "https://www.nytimes.com/2021/11/21/world/americas/haiti-missionaries-kidnapping.html", + "creator": "Maria Abi-Habib", + "pubDate": "Mon, 22 Nov 2021 00:28:59 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Astroworld, the Rust Shooting and the Surfside Collapse Have In Common", + "description": "From the Salem witch trials to the Astroworld disaster, conspiracy theories and reformist narratives have battled for dominance in the American consciousness. ", + "content": "From the Salem witch trials to the Astroworld disaster, conspiracy theories and reformist narratives have battled for dominance in the American consciousness. ", + "category": "Conspiracy Theories", + "link": "https://www.nytimes.com/2021/11/21/opinion/astroworld-rust-surfside-conspiracies-catastrophes.html", + "creator": "Adrian J. Rivera", + "pubDate": "Sun, 21 Nov 2021 22:10:49 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Diminishing Democratic Majority", + "description": "Do Democrats need Trump to save them from an unexpected demographic eclipse?", + "content": "Do Democrats need Trump to save them from an unexpected demographic eclipse?", + "category": "United States Politics and Government", + "link": "https://www.nytimes.com/2021/11/20/opinion/democrat-trump-elections.html", + "creator": "Ross Douthat", + "pubDate": "Sun, 21 Nov 2021 21:12:18 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How the U.S. Lost Ground to China in the Contest for Clean Energy", + "description": "Americans failed to safeguard decades of diplomatic and financial investments in Congo, where the world’s largest supply of cobalt is controlled by Chinese companies backed by Beijing.", + "content": "Americans failed to safeguard decades of diplomatic and financial investments in Congo, where the world’s largest supply of cobalt is controlled by Chinese companies backed by Beijing.", + "category": "Mines and Mining", + "link": "https://www.nytimes.com/2021/11/21/world/us-china-energy.html", + "creator": "Eric Lipton, Dionne Searcey and Ashley Gilbertson", + "pubDate": "Sun, 21 Nov 2021 19:58:27 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Do You Make Teen Comedies Today? Buy a High School.", + "description": "A former school outside Syracuse, N.Y., has been transformed into American High, a production hub for inexpensive films aimed at streaming platforms.", + "content": "A former school outside Syracuse, N.Y., has been transformed into American High, a production hub for inexpensive films aimed at streaming platforms.", + "category": "Movies", + "link": "https://www.nytimes.com/2021/11/21/business/media/american-high-teen-comedies-movies.html", + "creator": "Nicole Sperling", + "pubDate": "Sun, 21 Nov 2021 18:46:55 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Overlooked No More: Ruth Polsky, Who Shaped New York’s Music Scene", + "description": "She booked concerts at influential nightclubs in the 1980s, bringing exposure to up-and-coming artists like the Smiths and New Order.", + "content": "She booked concerts at influential nightclubs in the 1980s, bringing exposure to up-and-coming artists like the Smiths and New Order.", + "category": "Pop and Rock Music", + "link": "https://www.nytimes.com/2021/11/18/obituaries/ruth-polsky-overlooked.html", + "creator": "Rachel Felder", + "pubDate": "Sun, 21 Nov 2021 17:57:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Knowledge Bubbles Work Against Us", + "description": "We need to find out why our neighbors and fellow citizens think the way they do.", + "content": "We need to find out why our neighbors and fellow citizens think the way they do.", + "category": "Football (College)", + "link": "https://www.nytimes.com/2021/11/20/opinion/knowledge-football-finebaum.html", + "creator": "Jane Coaston", + "pubDate": "Sun, 21 Nov 2021 17:10:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Roundabouts Help Lower Carbon Emissions", + "description": "An Indiana city has the most roundabouts in the country. They’ve saved lives and reduced injuries from crashes — and lowered carbon emissions.", + "content": "An Indiana city has the most roundabouts in the country. They’ve saved lives and reduced injuries from crashes — and lowered carbon emissions.", + "category": "Carmel (Ind)", + "link": "https://www.nytimes.com/2021/11/20/climate/roundabouts-climate-emissions-driving.html", + "creator": "Cara Buckley and A.J. Mast", + "pubDate": "Sun, 21 Nov 2021 14:26:14 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchin and Sinema Find Financial Support From G.O.P. Donors", + "description": "The two Democratic senators are attracting campaign contributions from business interests and conservatives as progressives fume over their efforts to pare back the president’s domestic policy bill.", + "content": "The two Democratic senators are attracting campaign contributions from business interests and conservatives as progressives fume over their efforts to pare back the president’s domestic policy bill.", + "category": "Campaign Finance", + "link": "https://www.nytimes.com/2021/11/21/us/politics/manchin-sinema-republican-donors.html", + "creator": "Kenneth P. Vogel and Kate Kelly", + "pubDate": "Sun, 21 Nov 2021 10:00:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Nancy Pelosi Got Biden's Build Back Better Bill Back on Track", + "description": "The House’s approval of a sweeping social policy bill after weeks of fits and starts notched another win for the speaker in a career defined by them.", + "content": "The House’s approval of a sweeping social policy bill after weeks of fits and starts notched another win for the speaker in a career defined by them.", + "category": "Pelosi, Nancy", + "link": "https://www.nytimes.com/2021/11/20/us/politics/pelosi-democrats-biden-agenda.html", + "creator": "Carl Hulse", + "pubDate": "Sat, 20 Nov 2021 23:38:12 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Train the Police to Keep the Peace, Not Turn a Profit", + "description": "A Times investigation sheds light on an unjust practice.", + "content": "A Times investigation sheds light on an unjust practice.", + "category": "Traffic and Parking Violations", + "link": "https://www.nytimes.com/2021/11/20/opinion/police-traffic-stops-deaths.html", + "creator": "The Editorial Board", + "pubDate": "Sat, 20 Nov 2021 23:31:17 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Socialite, a Gardener, a Message in Blood: The Murder That Still Grips France", + "description": "The victim was a socialite. A message in her blood accused the gardener. But a grammatical error raised questions of class and language — and whether he was being framed.", + "content": "The victim was a socialite. A message in her blood accused the gardener. But a grammatical error raised questions of class and language — and whether he was being framed.", + "category": "Marchal, Ghislaine (d 1991)", + "link": "https://www.nytimes.com/2021/11/20/world/europe/france-murder-ghislaine-marchal-omar-raddad.html", + "creator": "Norimitsu Onishi", + "pubDate": "Sat, 20 Nov 2021 18:15:55 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Buy Stocks to Prosper. Buy Bonds to Sleep at Night.", + "description": "Do what it takes to stay invested in the stock market, our columnist says. Government bonds may help, even if they look unappealing now.", + "content": "Do what it takes to stay invested in the stock market, our columnist says. Government bonds may help, even if they look unappealing now.", + "category": "Stocks and Bonds", + "link": "https://www.nytimes.com/2021/11/19/business/stock-market-bonds-crash.html", + "creator": "Jeff Sommer", + "pubDate": "Sat, 20 Nov 2021 04:23:18 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Austria Announces Covid Vaccine Mandate, Crossing a Threshold for Europe", + "description": "The extraordinary step shows that governments desperate to safeguard public health and economic recoveries are increasingly willing to push for once unthinkable measures.", + "content": "The extraordinary step shows that governments desperate to safeguard public health and economic recoveries are increasingly willing to push for once unthinkable measures.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/19/world/europe/austria-covid-vaccine-mandate-lockdown.html", + "creator": "Jason Horowitz and Melissa Eddy", + "pubDate": "Fri, 19 Nov 2021 22:55:10 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "U.S. Rests Its Case in the Elizabeth Holmes Trial", + "description": "Defense lawyers are expected to argue that the founder of Theranos, the blood-testing start-up, failed but did not commit fraud.", + "content": "Defense lawyers are expected to argue that the founder of Theranos, the blood-testing start-up, failed but did not commit fraud.", + "category": "Suits and Litigation (Civil)", + "link": "https://www.nytimes.com/2021/11/19/technology/elizabeth-holmes-trial.html", + "creator": "Erin Griffith", + "pubDate": "Fri, 19 Nov 2021 22:53:35 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "C.D.C. Panel Endorses Covid Vaccine Booster Shots for All Adults", + "description": "As infections rise, Americans over 18 will be permitted to get extra doses. But it’s not clear boosters really are needed by so many people, or that the shots will turn back the pandemic.", + "content": "As infections rise, Americans over 18 will be permitted to get extra doses. But it’s not clear boosters really are needed by so many people, or that the shots will turn back the pandemic.", + "category": "your-feed-science", + "link": "https://www.nytimes.com/2021/11/19/health/covid-boosters-cdc.html", + "creator": "Apoorva Mandavilli", + "pubDate": "Fri, 19 Nov 2021 22:34:54 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Divisive Case Fueled Debate Over Vigilantism and Gun Rights", + "description": "Two people familiar with the proceedings said the jury has reached a decision after deliberating for three and a half days. Here’s the latest.", + "content": "Two people familiar with the proceedings said the jury has reached a decision after deliberating for three and a half days. Here’s the latest.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial", + "creator": "The New York Times", + "pubDate": "Fri, 19 Nov 2021 22:34:47 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Modi to Repeal India Farm Laws Following Protests", + "description": "A bungled response to Covid and a struggling economy have hurt his party’s standing, leaving it vulnerable to a well-organized protest movement.", + "content": "A bungled response to Covid and a struggling economy have hurt his party’s standing, leaving it vulnerable to a well-organized protest movement.", + "category": "India", + "link": "https://www.nytimes.com/2021/11/18/world/asia/india-farmers-modi.html", + "creator": "Emily Schmall, Karan Deep Singh and Sameer Yasir", + "pubDate": "Fri, 19 Nov 2021 22:32:12 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Gerald Migdol Is Charged in Campaign Finance Scheme", + "description": "Gerald Migdol is accused of concealing contributions to a New York City comptroller candidate to get more public-matching funds.", + "content": "Gerald Migdol is accused of concealing contributions to a New York City comptroller candidate to get more public-matching funds.", + "category": "Campaign Finance", + "link": "https://www.nytimes.com/2021/11/19/nyregion/nyc-fraud-campaign-finance.html", + "creator": "Matthew Haag", + "pubDate": "Fri, 19 Nov 2021 22:27:17 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Business Updates: Google Questions Impartiality of Justice Dept. Antitrust Boss", + "description": "The move, announced on Friday, is an attempt by the country’s newish prime minister to revive an economy battered by Covid restrictions and a supply chain crunch.", + "content": "The move, announced on Friday, is an attempt by the country’s newish prime minister to revive an economy battered by Covid restrictions and a supply chain crunch.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/19/business/news-business-stock-market", + "creator": "The New York Times", + "pubDate": "Fri, 19 Nov 2021 22:22:24 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "C.D.C. Panel Endorses Pfizer and Moderna Boosters for All Adults", + "description": "Earlier, the F.D.A. also authorized boosters for all adults. The moves come as holiday travel could bring a surge of cases. Here’s the latest on Covid.", + "content": "Earlier, the F.D.A. also authorized boosters for all adults. The moves come as holiday travel could bring a surge of cases. Here’s the latest on Covid.", + "category": "", + "link": "https://www.nytimes.com/live/2021/11/19/world/covid-vaccine-boosters-mandates", + "creator": "The New York Times", + "pubDate": "Fri, 19 Nov 2021 22:15:47 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "House Passes Biden’s Build Back Better Bill", + "description": "The vote was months in the making for the roughly $2 trillion measure, one of the most consequential bills in decades. Now it faces a difficult path in the Senate.", + "content": "The vote was months in the making for the roughly $2 trillion measure, one of the most consequential bills in decades. Now it faces a difficult path in the Senate.", + "category": "House of Representatives", + "link": "https://www.nytimes.com/2021/11/19/us/politics/house-passes-reconciliation-bill.html", + "creator": "Emily Cochrane and Jonathan Weisman", + "pubDate": "Fri, 19 Nov 2021 22:14:47 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The New York Blood Center Can Get an Upgrade, if NIMBYs Don’t Get in the Way", + "description": "The New York Blood Center should be allowed to build its new life sciences center. ", + "content": "The New York Blood Center should be allowed to build its new life sciences center. ", + "category": "Buildings (Structures)", + "link": "https://www.nytimes.com/2021/11/19/opinion/new-york-blood-center-city-council.html", + "creator": "Mara Gay", + "pubDate": "Fri, 19 Nov 2021 22:12:24 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Cuomo Assembly Report Contains Grounds for Impeachment, Lawmaker Says", + "description": "A report set to be made public next week sheds new light on the Cuomo administration’s manipulation of nursing home death data and the former governor’s $5.1 million book deal.", + "content": "A report set to be made public next week sheds new light on the Cuomo administration’s manipulation of nursing home death data and the former governor’s $5.1 million book deal.", + "category": "Cuomo, Andrew M", + "link": "https://www.nytimes.com/2021/11/19/nyregion/cuomo-impeachment-report.html", + "creator": "Grace Ashford", + "pubDate": "Fri, 19 Nov 2021 22:12:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "House Passes the Largest Expenditure on Climate in U.S. History", + "description": "The $555 billion package is designed to lure the country away from fossil fuels. It faces an uncertain path in the Senate.", + "content": "The $555 billion package is designed to lure the country away from fossil fuels. It faces an uncertain path in the Senate.", + "category": "Global Warming", + "link": "https://www.nytimes.com/2021/11/19/climate/climate-change-bill.html", + "creator": "Coral Davenport", + "pubDate": "Fri, 19 Nov 2021 22:08:38 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "It Really Would Help if People Learned to Email", + "description": "You should never find out that you were someone’s second choice.", + "content": "You should never find out that you were someone’s second choice.", + "category": "Work-Life Balance", + "link": "https://www.nytimes.com/2021/11/19/business/roxane-gay-work-friend-hiring.html", + "creator": "Roxane Gay", + "pubDate": "Fri, 19 Nov 2021 22:01:40 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Having Rittenhouse Testify Was ‘Not a Close Call,’ His Lawyer Says", + "description": "Mock juries used by his defense team to test their case reacted much more favorably when he testified, his lead lawyer said.", + "content": "Mock juries used by his defense team to test their case reacted much more favorably when he testified, his lead lawyer said.", + "category": "Murders, Attempted Murders and Homicides", + "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial/rittenhouse-testimony-sobbing", + "creator": "Sophie Kasakove", + "pubDate": "Fri, 19 Nov 2021 21:46:56 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "WNYC Retracts Four Articles on Its News Site, Gothamist", + "description": "In a new episode of turmoil at the radio station, the author of the articles was reassigned.", + "content": "In a new episode of turmoil at the radio station, the author of the articles was reassigned.", + "category": "News and News Media", + "link": "https://www.nytimes.com/2021/11/19/business/media/wnyc-gothamist-jami-floyd.html", + "creator": "Marc Tracy", + "pubDate": "Fri, 19 Nov 2021 21:30:10 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "M.L.B. Finalizes Plan to Provide Housing for Minor Leaguers", + "description": "An advocacy group called the deal a “historic victory,” but noted that there were issues that might need to be addressed.", + "content": "An advocacy group called the deal a “historic victory,” but noted that there were issues that might need to be addressed.", + "category": "Baseball", + "link": "https://www.nytimes.com/2021/11/19/sports/baseball/mlb-housing.html", + "creator": "James Wagner", + "pubDate": "Fri, 19 Nov 2021 21:19:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Conservatives celebrate Rittenhouse’s acquittal, as liberals lament the verdict.", + "description": "", + "content": "", + "category": "Vigilantes", + "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial/conservatives-celebrate-rittenhouses-acquittal-as-liberals-lament-the-verdict", + "creator": "Jennifer Medina", + "pubDate": "Fri, 19 Nov 2021 20:58:59 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Build Back Better May Not Have Passed a Decade Ago", + "description": "President Barack Obama barely muscled his health law through the House. But income inequality, economic stagnation and a pandemic propelled an even more ambitious bill.", + "content": "President Barack Obama barely muscled his health law through the House. But income inequality, economic stagnation and a pandemic propelled an even more ambitious bill.", + "category": "United States Politics and Government", + "link": "https://www.nytimes.com/2021/11/19/us/politics/democrats-economic-bill.html", + "creator": "Jonathan Weisman", + "pubDate": "Fri, 19 Nov 2021 20:46:14 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse’s Acquittal and America’s Gun Laws", + "description": "Readers react to the verdict, discuss America’s self-defense laws and make connections to the Ahmaud Arbery case. Also: The social policy bill.", + "content": "Readers react to the verdict, discuss America’s self-defense laws and make connections to the Ahmaud Arbery case. Also: The social policy bill.", + "category": "Rittenhouse, Kyle", + "link": "https://www.nytimes.com/2021/11/19/opinion/letters/kyle-rittenhouse-acquittal-guns.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 20:41:00 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Case Against Loving Your Job", + "description": "Will work ever love us back? Two millennials disagree.", + "content": "Will work ever love us back? Two millennials disagree.", + "category": "Labor and Jobs", + "link": "https://www.nytimes.com/2021/11/19/opinion/ezra-klein-podcast-sarah-jaffe.html", + "creator": "‘The Ezra Klein Show’", + "pubDate": "Fri, 19 Nov 2021 20:28:34 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden Met With Xi. But Is His China Policy Right?", + "description": "The truth is, America’s national security depends on cooperation a lot more than competition.", + "content": "The truth is, America’s national security depends on cooperation a lot more than competition.", + "category": "United States International Relations", + "link": "https://www.nytimes.com/2021/11/18/opinion/biden-china-xi-summit.html", + "creator": "Peter Beinart", + "pubDate": "Fri, 19 Nov 2021 20:20:19 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ross Douthat on Dealing With Lyme Disease", + "description": "Douthat discusses his new memoir, “The Deep Places,” and Elisabeth Egan talks about Jung Yun’s novel “O Beautiful.”", + "content": "Douthat discusses his new memoir, “The Deep Places,” and Elisabeth Egan talks about Jung Yun’s novel “O Beautiful.”", + "category": "Books and Literature", + "link": "https://www.nytimes.com/2021/11/19/books/review/podcast-ross-douthat-deep-places-o-beautiful-jung-yun.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 20:04:53 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Elation and Dismay as Crowds at Courthouse Hear of Rittenhouse Verdict", + "description": "Small groups of supporters and detractors of Kyle Rittenhouse reacted to news of the not-guilty verdict as a horde of journalists looked on.", + "content": "Small groups of supporters and detractors of Kyle Rittenhouse reacted to news of the not-guilty verdict as a horde of journalists looked on.", + "category": "Rittenhouse, Kyle", + "link": "https://www.nytimes.com/live/2021/11/19/us/kyle-rittenhouse-trial/rittenhouse-reaction-courthouse-crowd", + "creator": "Dan Hinkel", + "pubDate": "Fri, 19 Nov 2021 20:02:58 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "On Putin’s Strategic Chessboard, a Series of Destabilizing Moves", + "description": "In the stretch of Europe from the Baltic Sea to the Black Sea, where Moscow and the West have competed for influence for decades, the threat of a new military conflict is growing.", + "content": "In the stretch of Europe from the Baltic Sea to the Black Sea, where Moscow and the West have competed for influence for decades, the threat of a new military conflict is growing.", + "category": "United States International Relations", + "link": "https://www.nytimes.com/2021/11/19/world/europe/russia-putin-belarus-ukraine.html", + "creator": "Anton Troianovski", + "pubDate": "Fri, 19 Nov 2021 19:59:22 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Joe Biden's Infrastructure Bill Is a Big Success", + "description": "Voters may pummel Democrats next year, but future generations will be grateful. ", + "content": "Voters may pummel Democrats next year, but future generations will be grateful. ", + "category": "Infrastructure Investment and Jobs Act (2021)", + "link": "https://www.nytimes.com/2021/11/18/opinion/biden-infrastructure-stimulus-bill.html", + "creator": "David Brooks", + "pubDate": "Fri, 19 Nov 2021 19:53:46 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Bad Luck Banging or Loony Porn’ Review: No Sex, Please, We’re Romanian", + "description": "A viral video scandal ensnares a Bucharest schoolteacher in Radu Jude’s biting, bawdy and brilliant Covid-age fable.", + "content": "A viral video scandal ensnares a Bucharest schoolteacher in Radu Jude’s biting, bawdy and brilliant Covid-age fable.", + "category": "Movies", + "link": "https://www.nytimes.com/2021/11/18/movies/bad-luck-banging-or-loony-porn-review.html", + "creator": "A.O. Scott", + "pubDate": "Fri, 19 Nov 2021 19:51:19 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse's Firearm Made Everything Worse", + "description": "Kyle Rittenhouse’s semiautomatic rifle endangered everybody around him —  and himself.", + "content": "Kyle Rittenhouse’s semiautomatic rifle endangered everybody around him —  and himself.", + "category": "Murders, Attempted Murders and Homicides", + "link": "https://www.nytimes.com/2021/11/17/opinion/kyle-rittenhouse-guns.html", + "creator": "Farhad Manjoo", + "pubDate": "Fri, 19 Nov 2021 19:50:37 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden Will Briefly Transfer Power to Harris", + "description": "President Biden, who will undergo a physical and colonoscopy on Friday, is the oldest commander in chief to receive a full medical evaluation while in office.", + "content": "President Biden, who will undergo a physical and colonoscopy on Friday, is the oldest commander in chief to receive a full medical evaluation while in office.", + "category": "Biden, Joseph R Jr", + "link": "https://www.nytimes.com/2021/11/19/us/politics/biden-harris-power-transfer.html", + "creator": "Katie Rogers", + "pubDate": "Fri, 19 Nov 2021 19:23:13 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Discussions of Race Are Notably Absent in Trial of Arbery Murder Suspects", + "description": "Many outside observers say Ahmaud Arbery’s death at the hands of three white men is a prominent example of racial violence. But the jury never heard that argument.", + "content": "Many outside observers say Ahmaud Arbery’s death at the hands of three white men is a prominent example of racial violence. But the jury never heard that argument.", + "category": "Black People", + "link": "https://www.nytimes.com/2021/11/19/us/ahmaud-arbery-shooting-race.html", + "creator": "Tariro Mzezewa, Giulia Heyward and Richard Fausset", + "pubDate": "Fri, 19 Nov 2021 19:20:14 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Curry’s 3-Point Bonanza Has Golden State Bouncing Back", + "description": "A turnaround early this season has come with Stephen Curry reasserting why he is the best 3-point shooter in basketball history.", + "content": "A turnaround early this season has come with Stephen Curry reasserting why he is the best 3-point shooter in basketball history.", + "category": "Basketball", + "link": "https://www.nytimes.com/2021/11/19/sports/basketball/nba-golden-state-warriors-stephen-curry.html", + "creator": "Victor Mather", + "pubDate": "Fri, 19 Nov 2021 19:00:47 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kevin McCarthy Speaks for More Than Eight Hours to Delay a House Vote", + "description": "The House minority leader began speaking Thursday night against President Biden’s social policy bill. He stopped at 5:10 a.m. Friday, after setting a record for the longest speech.", + "content": "The House minority leader began speaking Thursday night against President Biden’s social policy bill. He stopped at 5:10 a.m. Friday, after setting a record for the longest speech.", + "category": "McCarthy, Kevin (1965- )", + "link": "https://www.nytimes.com/2021/11/19/us/politics/kevin-mccarthy-speech.html", + "creator": "Jonathan Weisman and Jenny Gross", + "pubDate": "Fri, 19 Nov 2021 18:59:38 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Venezuelan Opposition Risks an Election Challenge to Maduro", + "description": "With little hope of a fair vote, opposition candidates take a desperate risk to gain any edge against Venezuela’s entrenched autocrat, Nicolás Maduro.", + "content": "With little hope of a fair vote, opposition candidates take a desperate risk to gain any edge against Venezuela’s entrenched autocrat, Nicolás Maduro.", + "category": "Elections", + "link": "https://www.nytimes.com/2021/11/19/world/americas/venezuela-elections-maduro.html", + "creator": "Julie Turkewitz and Adriana Loureiro Fernandez", + "pubDate": "Fri, 19 Nov 2021 18:56:44 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "3 Women in the Senate Object to ‘Sexist’ Focus on Sinema’s Style", + "description": "The senators criticize The Times’s coverage of their colleague’s style and fashion choices.", + "content": "The senators criticize The Times’s coverage of their colleague’s style and fashion choices.", + "category": "Sinema, Kyrsten", + "link": "https://www.nytimes.com/2021/11/19/opinion/letters/kyrsten-sinema-senate.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:39:43 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon Deforestation Soars to 15-Year High", + "description": "Brazil committed this month to end illegal deforestation in eight years, but a government report raises questions about its intent and ability to meet that target.", + "content": "Brazil committed this month to end illegal deforestation in eight years, but a government report raises questions about its intent and ability to meet that target.", + "category": "Politics and Government", + "link": "https://www.nytimes.com/2021/11/19/world/americas/brazil-amazon-deforestation.html", + "creator": "Manuela Andreoni", + "pubDate": "Fri, 19 Nov 2021 18:26:13 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What Happens After the Worst of the Pandemic Is Behind Us?", + "description": "We need to learn the right lessons from the pandemic.", + "content": "We need to learn the right lessons from the pandemic.", + "category": "Coronavirus (2019-nCoV)", + "link": "https://www.nytimes.com/2021/11/18/opinion/covid-winter-risk.html", + "creator": "Zeynep Tufekci", + "pubDate": "Fri, 19 Nov 2021 18:11:00 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Talk to Kids About Death and Loss", + "description": "Loss may be part of Thanksgiving this year. Here’s how to help kids navigate it.", + "content": "Loss may be part of Thanksgiving this year. Here’s how to help kids navigate it.", + "category": "Grief (Emotion)", + "link": "https://www.nytimes.com/2021/11/19/opinion/grief-mourning-children.html", + "creator": "Miranda Featherstone", + "pubDate": "Fri, 19 Nov 2021 17:38:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Miss Friday's Lunar Eclipse? Here's What it Looked Like.", + "description": "The partial eclipse on Thursday night and Friday morning lasted more than six hours, and these photos captured the moon’s rust-red hue.", + "content": "The partial eclipse on Thursday night and Friday morning lasted more than six hours, and these photos captured the moon’s rust-red hue.", + "category": "Eclipses", + "link": "https://www.nytimes.com/2021/11/19/science/lunar-eclipse-photos.html", + "creator": "Michael Roston and Matt McCann", + "pubDate": "Fri, 19 Nov 2021 17:19:05 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The G.O.P. Has a Bad Men Problem", + "description": "The creeping not-so-casual misogyny is indicative of the dark path down which former President Donald Trump continues to lead the G.O.P.", + "content": "The creeping not-so-casual misogyny is indicative of the dark path down which former President Donald Trump continues to lead the G.O.P.", + "category": "Gosar, Paul (1958- )", + "link": "https://www.nytimes.com/2021/11/19/opinion/trump-gop-misogyny.html", + "creator": "Michelle Cottle", + "pubDate": "Fri, 19 Nov 2021 17:00:00 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Who Is Afghanistan's Soccer Team Playing For?", + "description": "Afghanistan’s national soccer team played a rare match this week. But with the Taliban in control of their country, what, and whom, are they playing for?", + "content": "Afghanistan’s national soccer team played a rare match this week. But with the Taliban in control of their country, what, and whom, are they playing for?", + "category": "Soccer", + "link": "https://www.nytimes.com/2021/11/18/sports/soccer/afghanistan-soccer-taliban.html", + "creator": "James Montague and Bradley Secker", + "pubDate": "Fri, 19 Nov 2021 16:59:22 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Inspiration for ‘Malfunction: The Dressing Down of Janet Jackson’", + "description": "The New York Times’s latest documentary, premiering Friday, examines the scandal surrounding the performer following the 2004 Super Bowl halftime show.", + "content": "The New York Times’s latest documentary, premiering Friday, examines the scandal surrounding the performer following the 2004 Super Bowl halftime show.", + "category": "Pop and Rock Music", + "link": "https://www.nytimes.com/2021/11/19/insider/janet-jackson-documentary.html", + "creator": "Rachel Abrams", + "pubDate": "Fri, 19 Nov 2021 16:58:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Supermodel Iman Opens Up About David Bowie, a New Perfume and More", + "description": "The supermodel talks about life after David Bowie, their Catskills refuge and the perfume inspired by their love.", + "content": "The supermodel talks about life after David Bowie, their Catskills refuge and the perfume inspired by their love.", + "category": "Content Type: Personal Profile", + "link": "https://www.nytimes.com/2021/11/18/style/iman-david-bowie.html", + "creator": "Guy Trebay", + "pubDate": "Fri, 19 Nov 2021 16:20:50 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The First Family of New Jersey Football", + "description": "Seventeen of the last 20 New Jersey state high school championships have featured a team coached by Mike Campanile or one of his four sons.", + "content": "Seventeen of the last 20 New Jersey state high school championships have featured a team coached by Mike Campanile or one of his four sons.", + "category": "Coaches and Managers", + "link": "https://www.nytimes.com/2021/11/19/sports/football/nj-high-school-football-campanile.html", + "creator": "Kevin Armstrong", + "pubDate": "Fri, 19 Nov 2021 15:51:51 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Wisconsin Republicans Push to Take Over the State’s Elections", + "description": "Led by Senator Ron Johnson, G.O.P. officials want to eliminate a bipartisan elections agency — and maybe send its members to jail.", + "content": "Led by Senator Ron Johnson, G.O.P. officials want to eliminate a bipartisan elections agency — and maybe send its members to jail.", + "category": "Wisconsin", + "link": "https://www.nytimes.com/2021/11/19/us/politics/wisconsin-republicans-decertify-election.html", + "creator": "Reid J. Epstein", + "pubDate": "Fri, 19 Nov 2021 15:00:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Little Lad? Berries and Cream? Call It Performance Art.", + "description": "Jack Ferver, the creator of a well-regarded body of dance-theater works, has also become a TikTok phenomenon because of a Starburst ad from 2007.", + "content": "Jack Ferver, the creator of a well-regarded body of dance-theater works, has also become a TikTok phenomenon because of a Starburst ad from 2007.", + "category": "Social Media", + "link": "https://www.nytimes.com/2021/11/19/arts/dance/berries-and-cream-tik-tok.html", + "creator": "Margaret Fuhrer", + "pubDate": "Fri, 19 Nov 2021 15:00:08 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Feeling Anxious About Thanksgiving This Year? You’re Not Alone.", + "description": "The first postvaccine Thanksgiving will be full of joy — and anxiety. Here’s how to navigate it.", + "content": "The first postvaccine Thanksgiving will be full of joy — and anxiety. Here’s how to navigate it.", + "category": "Quarantine (Life and Culture)", + "link": "https://www.nytimes.com/2021/11/18/opinion/thanksgiving-christmas-family-tension.html", + "creator": "Emily Esfahani Smith", + "pubDate": "Fri, 19 Nov 2021 14:44:16 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why the U.S. Is Considering Expanding Booster Shot Eligibility to All Adults", + "description": "The U.S. may soon offer booster shots to every adult. Here’s why.", + "content": "The U.S. may soon offer booster shots to every adult. Here’s why.", + "category": "", + "link": "https://www.nytimes.com/2021/11/19/briefing/booster-eligibility-us-fda.html", + "creator": "Ian Prasad Philbrick and Claire Moses", + "pubDate": "Fri, 19 Nov 2021 13:59:58 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Save Your Knees Without Giving Up Your Workout", + "description": "There’s no magic bullet to knee health, but staying active and building muscles around the joint are crucial.", + "content": "There’s no magic bullet to knee health, but staying active and building muscles around the joint are crucial.", + "category": "Knees", + "link": "https://www.nytimes.com/2021/11/19/well/workout-exercise-knee-health.html", + "creator": "Alex Hutchinson", + "pubDate": "Fri, 19 Nov 2021 13:04:42 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Belarus-Poland Border Chaos Is Partly of Europe’s Own Making", + "description": "The chaos at the Belarus-Poland border is partly of the European Union’s making.", + "content": "The chaos at the Belarus-Poland border is partly of the European Union’s making.", + "category": "Belarus", + "link": "https://www.nytimes.com/2021/11/19/opinion/poland-belarus-border-europe.html", + "creator": "Charlotte McDonald-Gibson", + "pubDate": "Fri, 19 Nov 2021 12:20:46 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Belarus Manufactured a Border Crisis", + "description": "A political gamble by the nation’s desperate leader has become a diplomatic and humanitarian crisis.", + "content": "A political gamble by the nation’s desperate leader has become a diplomatic and humanitarian crisis.", + "category": "Belarus-Poland Border Crisis (2021- )", + "link": "https://www.nytimes.com/2021/11/19/podcasts/the-daily/belarus-poland-migrant-crisis-european-union.html", + "creator": "Michael Barbaro, Sydney Harper, Mooj Zadie, Clare Toeniskoetter, Rachelle Bonja, Lynsea Garrison, Mike Benoist, Patricia Willens, M.J. Davis Lin, Dan Powell and Chris Wood", + "pubDate": "Fri, 19 Nov 2021 11:00:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How the Beatles Broke Up and the Deaf Football Team Taking California by Storm: The Week in Narrated Articles", + "description": "Five articles from around The Times, narrated just for you.", + "content": "Five articles from around The Times, narrated just for you.", + "category": "", + "link": "https://www.nytimes.com/2021/11/19/podcasts/the-beatles-eric-adams-california-school-for-the-deaf-narrated-articles.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 10:30:02 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "People Like Her Didn’t Exist in French Novels. Until She Wrote One.", + "description": "Fatima Daas’s debut book explores the writer’s conflicted identities as a lesbian, Muslim woman with an immigrant background. In France, it was an unlikely literary hit.", + "content": "Fatima Daas’s debut book explores the writer’s conflicted identities as a lesbian, Muslim woman with an immigrant background. In France, it was an unlikely literary hit.", + "category": "Daas, Fatima", + "link": "https://www.nytimes.com/2021/11/19/books/fatima-daas-the-last-one.html", + "creator": "Julia Webster Ayuso", + "pubDate": "Fri, 19 Nov 2021 10:21:37 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "After Time in U.S. Prisons, Maria Butina Now Sits in Russia's Parliament", + "description": "Maria Butina, convicted of serving as an unregistered foreign agent before and after the 2016 election, insists she “wasn’t a spy” and that her Duma seat is “not a reward.” Her critics call her a Kremlin “trophy.”", + "content": "Maria Butina, convicted of serving as an unregistered foreign agent before and after the 2016 election, insists she “wasn’t a spy” and that her Duma seat is “not a reward.” Her critics call her a Kremlin “trophy.”", + "category": "Content Type: Personal Profile", + "link": "https://www.nytimes.com/2021/11/19/world/europe/maria-butina-russia-duma.html", + "creator": "Valerie Hopkins", + "pubDate": "Fri, 19 Nov 2021 10:00:29 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Decision That Cost Hitler the War", + "description": "“Hitler’s American Gamble,” by Brendan Simms and Charlie Laderman, examines Hitler’s ill-fated choice to declare war on the United States.", + "content": "“Hitler’s American Gamble,” by Brendan Simms and Charlie Laderman, examines Hitler’s ill-fated choice to declare war on the United States.", + "category": "Books and Literature", + "link": "https://www.nytimes.com/2021/11/19/books/review/hitlers-american-gamble-brendan-simms-charlie-laderman.html", + "creator": "Benjamin Carter Hett", + "pubDate": "Fri, 19 Nov 2021 10:00:04 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Are More Black Children Dying by Suicide?", + "description": "Mental health experts assumed that people of all races had the same risk factors for self-harm. Emerging evidence suggests that is not the case.", + "content": "Mental health experts assumed that people of all races had the same risk factors for self-harm. Emerging evidence suggests that is not the case.", + "category": "Suicides and Suicide Attempts", + "link": "https://www.nytimes.com/2021/11/18/well/mind/suicide-black-kids.html", + "creator": "Christina Caron and Julien James", + "pubDate": "Fri, 19 Nov 2021 03:48:00 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "First Known Covid Case Was Vendor at Wuhan Market, Scientist Says", + "description": "A new review of early Covid-19 cases in the journal Science will revive, though certainly not settle, the debate over how the pandemic began.", + "content": "A new review of early Covid-19 cases in the journal Science will revive, though certainly not settle, the debate over how the pandemic began.", + "category": "Coronavirus (2019-nCoV)", + "link": "https://www.nytimes.com/2021/11/18/health/covid-wuhan-market-lab-leak.html", + "creator": "Carl Zimmer, Benjamin Mueller and Chris Buckley", + "pubDate": "Fri, 19 Nov 2021 03:45:26 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Oklahoma Governor Commutes Julius Jones's Death Sentence", + "description": "A coalition of celebrities, conservatives and Christian leaders had urged Gov. Kevin Stitt to commute the death penalty sentence of Julius Jones, who was convicted of murder in 2002.", + "content": "A coalition of celebrities, conservatives and Christian leaders had urged Gov. Kevin Stitt to commute the death penalty sentence of Julius Jones, who was convicted of murder in 2002.", + "category": "Oklahoma", + "link": "https://www.nytimes.com/2021/11/17/us/julius-jones-oklahoma-clemency.html", + "creator": "Michael Levenson, Maria Cramer and Simon Romero", + "pubDate": "Fri, 19 Nov 2021 00:28:40 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden Says His Infrastructure Law Is a ‘Big Deal.’ How Big?", + "description": "$550 billion for new spending is big, but many say America’s infrastructure needs are even bigger.", + "content": "$550 billion for new spending is big, but many say America’s infrastructure needs are even bigger.", + "category": "debatable", + "link": "https://www.nytimes.com/2021/11/18/opinion/biden-infrastructure-bill.html", + "creator": "Spencer Bokat-Lindell", + "pubDate": "Thu, 18 Nov 2021 23:00:06 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "He Helped Build Tesla. Now He Hopes to Do the Same at Lucid.", + "description": "Peter Rawlinson engineered the Tesla Model S. His new Lucid Air sedan is a direct challenge to Tesla’s dominance.", + "content": "Peter Rawlinson engineered the Tesla Model S. His new Lucid Air sedan is a direct challenge to Tesla’s dominance.", + "category": "Electric and Hybrid Vehicles", + "link": "https://www.nytimes.com/2021/11/18/business/lucid-motors-tesla.html", + "creator": "Niraj Chokshi and Jack Ewing", + "pubDate": "Thu, 18 Nov 2021 21:41:17 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Suburbs Are Poorer and More Diverse Than We Realize", + "description": "Understanding diversity in the suburbs is a key to winning elections.", + "content": "Understanding diversity in the suburbs is a key to winning elections.", + "category": "Suburbs", + "link": "https://www.nytimes.com/2021/11/18/opinion/suburbs-poor-diverse.html", + "creator": "Jay Caspian Kang", + "pubDate": "Thu, 18 Nov 2021 20:00:07 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Justus Rosenberg, Beloved Professor With a Heroic Past, Dies at 100", + "description": "As a teenager, he helped provide safe passage to artists and intellectuals out of Vichy France. He went on to teach literature at Bard College for six decades.", + "content": "As a teenager, he helped provide safe passage to artists and intellectuals out of Vichy France. He went on to teach literature at Bard College for six decades.", + "category": "Rosenberg, Justus (1921- )", + "link": "https://www.nytimes.com/2021/11/17/nyregion/justus-rosenberg-dead.html", + "creator": "Alex Vadukul", + "pubDate": "Thu, 18 Nov 2021 19:41:12 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mental Health Days Are Important. Here’s How to Make Yours Worthwhile.", + "description": "Well readers share advice on how to get away from it all.", + "content": "Well readers share advice on how to get away from it all.", + "category": "Mental Health and Disorders", + "link": "https://www.nytimes.com/2021/11/18/well/mind/mental-health-day-ideas.html", + "creator": "Christina Caron", + "pubDate": "Thu, 18 Nov 2021 19:30:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "George Gascón Is Remaking Criminal Justice in L.A. How Far Is Too Far?", + "description": "To keep people out of prison, George Gascón is risking everything: rising violent crime, a staff rebellion and the votes that made him district attorney.", + "content": "To keep people out of prison, George Gascón is risking everything: rising violent crime, a staff rebellion and the votes that made him district attorney.", + "category": "Gascon, George", + "link": "https://www.nytimes.com/2021/11/17/magazine/george-gascon-los-angeles.html", + "creator": "Emily Bazelon and Jennifer Medina", + "pubDate": "Wed, 17 Nov 2021 20:18:43 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Emotional and Financial Business of Taylor Swift’s ‘All Too Well’", + "description": "What does the rerecorded song from “Red” say about how power and the past have shaped her career?", + "content": "What does the rerecorded song from “Red” say about how power and the past have shaped her career?", + "category": "Pop and Rock Music", + "link": "https://www.nytimes.com/2021/11/17/arts/music/popcast-taylor-swift-all-too-well.html", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 20:06:24 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Are We Witnessing the Mainstreaming of White Power in America?", + "description": "A historian of the white power movement discusses Jan. 6, Tucker Carlson and the threat of politically motivated violence.", + "content": "A historian of the white power movement discusses Jan. 6, Tucker Carlson and the threat of politically motivated violence.", + "category": "Right-Wing Extremism and Alt-Right", + "link": "https://www.nytimes.com/2021/11/16/opinion/ezra-klein-podcast-kathleen-belew.html", + "creator": "‘The Ezra Klein Show’", + "pubDate": "Tue, 16 Nov 2021 20:08:54 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Donors Withhold Gifts to Protest Changes at Hamptons Sculpture Garden", + "description": "Some patrons of the LongHouse Reserve are upset that its veteran director was let go, but the board says it needed new leadership to expand the garden into a museum with a broader mission.", + "content": "Some patrons of the LongHouse Reserve are upset that its veteran director was let go, but the board says it needed new leadership to expand the garden into a museum with a broader mission.", + "category": "Sculpture", + "link": "https://www.nytimes.com/2021/11/14/arts/longhouse-reserve-east-hampton.html", + "creator": "Stacey Stowe", + "pubDate": "Sun, 14 Nov 2021 20:08:52 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Make Fluffy, Flavorful Mashed Potatoes", + "description": "You’ve tried boiling, but Genevieve Ko found a better way to make this side dish fluffier — and more flavorful.", + "content": "You’ve tried boiling, but Genevieve Ko found a better way to make this side dish fluffier — and more flavorful.", + "category": "Cooking and Cookbooks", + "link": "https://www.nytimes.com/2021/11/12/dining/best-mashed-potatoes-recipe.html", + "creator": "Genevieve Ko", + "pubDate": "Sat, 13 Nov 2021 17:44:19 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Announcing the 10 Best Books of 2021: A New York Times Event", + "description": "On Nov. 30, Times subscribers will be the first to find out what made this year’s 10 Best Books list from editors of The Book Review and a guest, Lena Waithe.", + "content": "On Nov. 30, Times subscribers will be the first to find out what made this year’s 10 Best Books list from editors of The Book Review and a guest, Lena Waithe.", + "category": "internal-open-access", + "link": "https://www.nytimes.com/2021/10/28/books/best-books-live-event.html", + "creator": "The New York Times", + "pubDate": "Thu, 11 Nov 2021 14:33:48 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Thanksgiving Recipes From ‘The Essential New York Times Cookbook’ That Feel Timeless", + "description": "Here are five dishes, all featured in the new edition of “The Essential New York Times Cookbook,” that will shine on your table.", + "content": "Here are five dishes, all featured in the new edition of “The Essential New York Times Cookbook,” that will shine on your table.", + "category": "Cooking and Cookbooks", + "link": "https://www.nytimes.com/2021/11/08/dining/thanksgiving-recipes-essential-new-york-times-cookbook.html", + "creator": "Krysten Chambrot", + "pubDate": "Mon, 08 Nov 2021 20:28:44 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Your Easy, No-Sweat Guide to Picking Wines for Thanksgiving", + "description": "The grapes don’t really matter. Neither does where it was made. So long as it refreshes and rejuvenates, it’s the perfect bottle.", + "content": "The grapes don’t really matter. Neither does where it was made. So long as it refreshes and rejuvenates, it’s the perfect bottle.", + "category": "Wines", + "link": "https://www.nytimes.com/2021/11/04/dining/drinks/review-thanksgiving-wines.html", + "creator": "Eric Asimov", + "pubDate": "Mon, 08 Nov 2021 16:24:39 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Ease and Avoid Seasonal Affective Disorder", + "description": "As the days get shorter and the nights start earlier, take these steps to help prevent seasonal affective disorder.", + "content": "As the days get shorter and the nights start earlier, take these steps to help prevent seasonal affective disorder.", + "category": "Content Type: Service", + "link": "https://www.nytimes.com/2021/09/30/well/mind/seasonal-affective-disorder-help.html", + "creator": "Christina Caron", + "pubDate": "Thu, 30 Sep 2021 19:40:50 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Parenting in Front of a Live Audience of In-Laws", + "description": "Micromanaging my husband, I realized how much I still craved my parents’ approval.", + "content": "Micromanaging my husband, I realized how much I still craved my parents’ approval.", + "category": "Parenting", + "link": "https://www.nytimes.com/2020/08/27/parenting/intergenerational-living-marriage-coronavirus.html", + "creator": "Christen Madrazo", + "pubDate": "Sat, 17 Jul 2021 13:11:58 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "My 3-Year-Old Can Tell I’m Depressed", + "description": "Experts say that, instead of avoiding the topic, parents like me should shoot for ‘age-appropriate honesty.’", + "content": "Experts say that, instead of avoiding the topic, parents like me should shoot for ‘age-appropriate honesty.’", + "category": "Mental Health and Disorders", + "link": "https://www.nytimes.com/2021/04/09/well/mind/depression-parents-advice.html", + "creator": "Stephanie H. Murray", + "pubDate": "Tue, 13 Apr 2021 19:52:26 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ira Glass Recommends These 'This American Life' Episodes", + "description": "From family mysteries and Native American history to stories that delight, here’s what the show’s host, Ira Glass, recommends to get you through the week.", + "content": "From family mysteries and Native American history to stories that delight, here’s what the show’s host, Ira Glass, recommends to get you through the week.", + "category": "Radio", + "link": "https://www.nytimes.com/2020/11/24/podcasts/this-american-life-thanksgiving.html", + "creator": "Ira Glass", + "pubDate": "Wed, 16 Dec 2020 20:19:01 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Thanksgiving Lessons in Gratitude From My Grandmother", + "description": "Our pandemic sacrifices pale in comparison to her immigrant journey.", + "content": "Our pandemic sacrifices pale in comparison to her immigrant journey.", + "category": "Quarantine (Life and Culture)", + "link": "https://www.nytimes.com/2020/11/25/parenting/thanksgiving-gratitude-family.html", + "creator": "Jessica Grose", + "pubDate": "Wed, 25 Nov 2020 14:10:48 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Which Classic Thanksgiving Character are You?", + "description": "Knowing exactly who is gathered around the dinner table could make for a lower-stress holiday.", + "content": "Knowing exactly who is gathered around the dinner table could make for a lower-stress holiday.", + "category": "Quarantine (Life and Culture)", + "link": "https://www.nytimes.com/2020/11/20/well/family/thanksgiving-conversation.html", + "creator": "Holly Burns", + "pubDate": "Mon, 23 Nov 2020 01:04:19 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Navigating Thanksgiving With Your Picky Eater", + "description": "Why it’s really O.K. if your child eats only rolls (again) this year.", + "content": "Why it’s really O.K. if your child eats only rolls (again) this year.", + "category": "Food", + "link": "https://www.nytimes.com/2020/04/17/parenting/thanksgiving-picky-kid.html", + "creator": "Virginia Sole-Smith", + "pubDate": "Thu, 12 Nov 2020 16:13:33 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Start a New Tradition With Your Thanksgiving Potatoes", + "description": "For faster, more flavorful Thanksgiving potatoes, do as J. Kenji López-Alt does, and stir-fry them.", + "content": "For faster, more flavorful Thanksgiving potatoes, do as J. Kenji López-Alt does, and stir-fry them.", + "category": "Potatoes", + "link": "https://www.nytimes.com/2020/11/09/dining/stir-fry-thanksgiving-potatoes.html", + "creator": "J. Kenji López-Alt", + "pubDate": "Thu, 12 Nov 2020 14:40:50 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Crunchiest, Creamiest, Tangiest Brussels Sprouts", + "description": "The unfairly maligned vegetable gets an update with creamy labneh and irresistible pickled shallots.", + "content": "The unfairly maligned vegetable gets an update with creamy labneh and irresistible pickled shallots.", + "category": "Brussels Sprouts", + "link": "https://www.nytimes.com/2020/11/09/dining/brussels-sprouts-recipe.html", + "creator": "Nik Sharma", + "pubDate": "Thu, 12 Nov 2020 14:38:04 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Keep Your Kids From Going Feral During the Holidays", + "description": "Loosely maintain the three pillars of wellness — sleep, food and exercise — to help keep children on track.", + "content": "Loosely maintain the three pillars of wellness — sleep, food and exercise — to help keep children on track.", + "category": "Holidays and Special Occasions", + "link": "https://www.nytimes.com/2020/04/17/parenting/kids-active-holidays.html", + "creator": "Jancee Dunn", + "pubDate": "Fri, 17 Apr 2020 15:43:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Don’t Let Food Poisoning Ruin Your Holiday", + "description": "Recent outbreaks from flour and more are good reasons to keep food safety practices at the top of mind this season.", + "content": "Recent outbreaks from flour and more are good reasons to keep food safety practices at the top of mind this season.", + "category": "Food", + "link": "https://www.nytimes.com/2020/04/17/parenting/holiday-food-safety.html", + "creator": "Alice Callahan", + "pubDate": "Fri, 17 Apr 2020 15:31:39 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Is It Ever O.K. for a Relative to Discipline Your Kid?", + "description": "The holidays are prime time for overstepping boundaries. Here’s how to deal.", + "content": "The holidays are prime time for overstepping boundaries. Here’s how to deal.", + "category": "Parenting", + "link": "https://www.nytimes.com/2020/04/17/parenting/relative-discipline-kid.html", + "creator": "Christina Caron", + "pubDate": "Fri, 17 Apr 2020 14:44:49 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Raise Siblings Who Get Along", + "description": "Playing together is part of it, but so is having chores kids can complete as a team (especially if they can sneak in some fun while they work).", + "content": "Playing together is part of it, but so is having chores kids can complete as a team (especially if they can sneak in some fun while they work).", + "category": "Families and Family Life", + "link": "https://www.nytimes.com/2020/02/20/well/family/how-to-raise-siblings-who-get-along.html", + "creator": "Kate Lewis", + "pubDate": "Thu, 20 Feb 2020 14:47:54 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Your Mom Is Destined to Annoy You", + "description": "How to manage your inevitable holiday regression.", + "content": "How to manage your inevitable holiday regression.", + "category": "", + "link": "https://www.nytimes.com/2019/12/11/parenting/your-mom-is-destined-to-annoy-you.html", + "creator": "Jessica Grose", + "pubDate": "Wed, 11 Dec 2019 13:39:21 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Your Thanksgiving May Be Classic, but Your Leftovers Don’t Have to Be", + "description": "There are no rules to making turkey sandwiches: Pack them with bright flavors, and salty pickles.", + "content": "There are no rules to making turkey sandwiches: Pack them with bright flavors, and salty pickles.", + "category": "Turkeys", + "link": "https://www.nytimes.com/2019/11/22/dining/turkey-sandwich.html", + "creator": "Melissa Clark", + "pubDate": "Tue, 26 Nov 2019 01:52:20 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Fitting in Family Fitness at the Holidays", + "description": "Experts’ top tip on ways to get moving? Involve the relatives who might otherwise stay inactive.", + "content": "Experts’ top tip on ways to get moving? Involve the relatives who might otherwise stay inactive.", + "category": "Exercise", + "link": "https://www.nytimes.com/2019/11/23/well/move/fitting-in-family-fitness-at-the-holidays.html", + "creator": "Gretchen Reynolds", + "pubDate": "Sun, 24 Nov 2019 03:01:43 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "When a College Student Has a Troubled Roommate", + "description": "The Thanksgiving break may be the first opportunity students have to step back from the situation and evaluate their role.", + "content": "The Thanksgiving break may be the first opportunity students have to step back from the situation and evaluate their role.", + "category": "Colleges and Universities", + "link": "https://www.nytimes.com/2019/11/22/well/family/college-student-roommate-anxiety-depression-mental-health-son-daughter-parents.html", + "creator": "Lisa Damour", + "pubDate": "Fri, 22 Nov 2019 10:00:12 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Practicing Gratitude, for a Change", + "description": "I imagined my children celebrating with their father’s family: football on the television, apple pie on the table. That consistency offered me bittersweet consolation.", + "content": "I imagined my children celebrating with their father’s family: football on the television, apple pie on the table. That consistency offered me bittersweet consolation.", + "category": "Thanksgiving Day", + "link": "https://www.nytimes.com/2019/11/22/well/family/Thanksgiving-divorce-gratitude-family-kids.html", + "creator": "Samantha Shanley", + "pubDate": "Fri, 22 Nov 2019 10:00:09 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dread the Holidays? Feasting Together Might Actually Help", + "description": "Sharing a meal with loved ones, co-workers or friends may seem like a chore, but research shows it has real benefits. Stick with us here.", + "content": "Sharing a meal with loved ones, co-workers or friends may seem like a chore, but research shows it has real benefits. Stick with us here.", + "category": "Food", + "link": "https://www.nytimes.com/2019/11/18/smarter-living/holiday-meals-family-tips.html", + "creator": "Simran Sethi", + "pubDate": "Tue, 19 Nov 2019 00:42:38 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Don’t Rinse the Bird. A Myth to Dispel Before the Holidays.", + "description": "Many home cooks wash the chicken or turkey before cooking, but that only increases the risk of food-borne illness.", + "content": "Many home cooks wash the chicken or turkey before cooking, but that only increases the risk of food-borne illness.", + "category": "Cooking and Cookbooks", + "link": "https://www.nytimes.com/2018/12/20/well/eat/turkey-chicken-poultry-food-poisoning-washing-rinsing-vegetables-fruits-food-safety.html", + "creator": "Lydia Zuraw, Kaiser Health News", + "pubDate": "Thu, 20 Dec 2018 10:03:01 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Harness Your Anxiety ", + "description": "Research shows that we can tame anxiety to use it as a resource.", + "content": "Research shows that we can tame anxiety to use it as a resource.", + "category": "Anxiety and Stress", + "link": "https://www.nytimes.com/2018/10/16/well/mind/how-to-harness-your-anxiety.html", + "creator": "Alicia H. Clark", + "pubDate": "Tue, 16 Oct 2018 09:00:01 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Out of Sorts Around the Holidays? It Could Be Family Jet Lag", + "description": "Many people describe their family jet lag and holiday stress as an overwhelming, pit-of-the-stomach sense of dread and avoidance.", + "content": "Many people describe their family jet lag and holiday stress as an overwhelming, pit-of-the-stomach sense of dread and avoidance.", + "category": "Yuko, Elizabeth", + "link": "https://www.nytimes.com/2016/12/22/well/family/out-of-sorts-around-the-holidays-it-could-be-family-jet-lag.html", + "creator": "Elizabeth Yuko", + "pubDate": "Thu, 22 Dec 2016 11:00:01 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Be Mindful at the Holiday Table", + "description": "Holidays are often filled with expectations. Take a moment to appreciate the present.", + "content": "Holidays are often filled with expectations. Take a moment to appreciate the present.", + "category": "Thanksgiving Day", + "link": "https://www.nytimes.com/2016/11/23/well/mind/how-to-be-mindful-at-the-thanksgiving-table.html", + "creator": "David Gelles", + "pubDate": "Wed, 23 Nov 2016 10:22:01 +0000", + "folder": "00.03 News/News - EN", + "feed": "NYTimes", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - EN", + "name": "NYTimes" + }, + { + "title": "World news | The Guardian", + "subtitle": "", + "link": "https://www.theguardian.com/world", + "image": "https://assets.guim.co.uk/images/guardian-logo-rss.c45beb1bafa34b347ac333af2e6fe23f.png", + "description": "Latest World news news, comment and analysis from the Guardian, the world's leading liberal voice", + "items": [ + { + "title": "Australia news live update: flood warnings for NSW; police and defence personnel fly to Solomon Islands; Victoria records 1,362 Covid cases", + "description": "

    Victoria records 1,362 new Covid cases, NSW records 261; police give update on William Tyrrell search; Australia on track for its wettest spring in a decade; Morrison government sends help to control rioting in Solomon Islands – follow the latest updates live

    Between 1.5m and 2m Australians are only one life shock away from homelessness, new research from the Australian Housing and Urban Research Institute.

    Large numbers of Australia’s renters could fall into homelessness if they go through a relationship breakup, get a serious illness or lose work.

    Continue reading...", + "content": "

    Victoria records 1,362 new Covid cases, NSW records 261; police give update on William Tyrrell search; Australia on track for its wettest spring in a decade; Morrison government sends help to control rioting in Solomon Islands – follow the latest updates live

    Between 1.5m and 2m Australians are only one life shock away from homelessness, new research from the Australian Housing and Urban Research Institute.

    Large numbers of Australia’s renters could fall into homelessness if they go through a relationship breakup, get a serious illness or lose work.

    Continue reading...", + "category": "Australia news", + "link": "https://www.theguardian.com/australia-news/live/2021/nov/26/australia-news-live-update-flood-warnings-as-more-heavy-rain-hits-nsw-australian-police-and-defence-personnel-fly-to-solomon-islands-religious-freedom-gay-students-teachers-scott-morrison-covid-south-africa-variant", + "creator": "Cait Kelly", + "pubDate": "2021-11-25T22:43:41Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Action over variant shows government keen to avoid Christmas calamity of 2020", + "description": "

    Analysis: variant provides test of whether relaxation of rules and booster push is effective policy

    Last Christmas, as ministers rashly promised five days of festive family gatherings while a new variant gathered pace, Boris Johnson held out until the final hours until he bowed to the inevitable and cancelled Christmas.

    Despite rising cases in Europe and new restrictions on the continent, ministers had been bullish about going ahead with Christmas gatherings this year. Cabinet ministers have already sent invites for the Christmas drinks dos.

    Continue reading...", + "content": "

    Analysis: variant provides test of whether relaxation of rules and booster push is effective policy

    Last Christmas, as ministers rashly promised five days of festive family gatherings while a new variant gathered pace, Boris Johnson held out until the final hours until he bowed to the inevitable and cancelled Christmas.

    Despite rising cases in Europe and new restrictions on the continent, ministers had been bullish about going ahead with Christmas gatherings this year. Cabinet ministers have already sent invites for the Christmas drinks dos.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/25/action-over-variant-shows-government-keen-to-avoid-christmas-calamity-of-2020", + "creator": "Jessica Elgot", + "pubDate": "2021-11-25T21:32:15Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "South Africa to be put on England’s travel red list over new Covid variant", + "description": "

    Flights from six countries will be banned as officials review travel measures after scientists voice concern over variant

    Flights from southern Africa will be banned, with six countries placed under England’s red list travel restrictions, after scientists raised the alarm over what is feared to be the worst Covid-19 variant yet identified.

    Whitehall sources said the B.1.1.529 variant, which is feared to be more transmissible and has the potential to evade immunity, posed “a potentially significant threat to the vaccine programme which we have to protect at all costs”.

    Continue reading...", + "content": "

    Flights from six countries will be banned as officials review travel measures after scientists voice concern over variant

    Flights from southern Africa will be banned, with six countries placed under England’s red list travel restrictions, after scientists raised the alarm over what is feared to be the worst Covid-19 variant yet identified.

    Whitehall sources said the B.1.1.529 variant, which is feared to be more transmissible and has the potential to evade immunity, posed “a potentially significant threat to the vaccine programme which we have to protect at all costs”.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/25/scientists-call-for-travel-code-red-over-covid-variant-found-in-southern-africa", + "creator": "Hannah Devlin, Ian Sample and Jessica Elgot", + "pubDate": "2021-11-25T21:22:42Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UK ministers urged to ‘stop playing politics’ over Channel crossings", + "description": "

    Aid groups say more deaths are likely and Britain must allow safe routes for asylum seekers

    More lives will be lost in the Channel unless urgent action is taken to stop “playing politics with people’s lives”, ministers have been warned as desperate refugees vowed to keep attempting the perilous journey.

    The grim prediction came as investigators tried to identify the bodies of at least 27 people, including a pregnant woman and three children and thought to be predominantly Kurds from Iraq, who drowned on Wednesday.

    Continue reading...", + "content": "

    Aid groups say more deaths are likely and Britain must allow safe routes for asylum seekers

    More lives will be lost in the Channel unless urgent action is taken to stop “playing politics with people’s lives”, ministers have been warned as desperate refugees vowed to keep attempting the perilous journey.

    The grim prediction came as investigators tried to identify the bodies of at least 27 people, including a pregnant woman and three children and thought to be predominantly Kurds from Iraq, who drowned on Wednesday.

    Continue reading...", + "category": "Refugees", + "link": "https://www.theguardian.com/world/2021/nov/25/uk-ministers-urged-to-stop-playing-politics-over-channel-crossings", + "creator": "Jamie Grierson, Jon Henley in Calais and Dan Sabbagh in Dunkirk", + "pubDate": "2021-11-25T20:59:59Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "French coastguard's mayday call after boat capsized – audio", + "description": "

    The French coastguard mayday call emerged on Thursday after 27 people drowned trying to cross the Channel. All ships were alerted in the area about \"approximately\" 15 people being overboard and to report information to Gris-Nez emergency officials.

    An emergency search began at about 2pm on Wednesday when a fishing boat sounded the alarm after spotting several people at sea off the coast of France. The cause of the accident has not been formally established but the boat used was inflatable and when found by rescuers was mostly deflated

    Continue reading...", + "content": "

    The French coastguard mayday call emerged on Thursday after 27 people drowned trying to cross the Channel. All ships were alerted in the area about \"approximately\" 15 people being overboard and to report information to Gris-Nez emergency officials.

    An emergency search began at about 2pm on Wednesday when a fishing boat sounded the alarm after spotting several people at sea off the coast of France. The cause of the accident has not been formally established but the boat used was inflatable and when found by rescuers was mostly deflated

    Continue reading...", + "category": "Migration", + "link": "https://www.theguardian.com/world/video/2021/nov/25/french-coastguards-mayday-call-after-boat-capsized-audio", + "creator": "", + "pubDate": "2021-11-25T20:55:08Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘We pray for them’: Biden pays tribute to Covid victims in Thanksgiving message", + "description": "

    President wishes Americans a closer-to-normal holiday amid rise in coronavirus infections

    President Joe Biden on Thursday wished Americans a happy and closer-to-normal Thanksgiving, the second celebrated in the shadow of the coronavirus pandemic, in remarks welcoming the resumption of holiday traditions in many homes.

    In his first holiday message as president, Biden and the first lady, Jill Biden, said this year’s celebrations were especially meaningful after last year’s family separations due to the pandemic.

    Continue reading...", + "content": "

    President wishes Americans a closer-to-normal holiday amid rise in coronavirus infections

    President Joe Biden on Thursday wished Americans a happy and closer-to-normal Thanksgiving, the second celebrated in the shadow of the coronavirus pandemic, in remarks welcoming the resumption of holiday traditions in many homes.

    In his first holiday message as president, Biden and the first lady, Jill Biden, said this year’s celebrations were especially meaningful after last year’s family separations due to the pandemic.

    Continue reading...", + "category": "Joe Biden", + "link": "https://www.theguardian.com/us-news/2021/nov/25/joe-biden-thanksgiving-covid-victims-jill-message", + "creator": "Edward Helmore in New York and agency", + "pubDate": "2021-11-25T20:45:09Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Three appear in court charged with 1996 murder of Scottish schoolgirl", + "description": "

    Robert O’Brien, Andrew Kelly and Donna Brand are accused of killing Caroline Glachan 25 years ago

    Three people have appeared in court in Scotland charged with the murder of the 14-year-old schoolgirl Caroline Glachan in 1996.

    Robert O’Brien, 43, Andrew Kelly and Donna Brand, both 42, appeared in private before Dumbarton sheriff court. Police had confirmed the arrests earlier on Thursday.

    Continue reading...", + "content": "

    Robert O’Brien, Andrew Kelly and Donna Brand are accused of killing Caroline Glachan 25 years ago

    Three people have appeared in court in Scotland charged with the murder of the 14-year-old schoolgirl Caroline Glachan in 1996.

    Robert O’Brien, 43, Andrew Kelly and Donna Brand, both 42, appeared in private before Dumbarton sheriff court. Police had confirmed the arrests earlier on Thursday.

    Continue reading...", + "category": "UK news", + "link": "https://www.theguardian.com/uk-news/2021/nov/25/three-appear-court-charged-1996-scottish-schoolgirl-caroline-glachan", + "creator": "Tom Ambrose", + "pubDate": "2021-11-25T20:42:08Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Interpol’s president: alleged torturer rises as symbol of UAE soft power", + "description": "

    Ahmed Nasser al-Raisi’s election has raised concerns about human rights and the surveillance state

    Maj Gen Ahmed Nasser al-Raisi’s ascent through the ranks of the interior ministry in Abu Dhabi is associated with the United Arab Emirates’ transformation into a hi-tech surveillance state.

    His personal achievements include a diploma in police management from the University of Cambridge, a doctorate in policing, security and community safety from London Metropolitan University and a medal of honour from Italy.

    Continue reading...", + "content": "

    Ahmed Nasser al-Raisi’s election has raised concerns about human rights and the surveillance state

    Maj Gen Ahmed Nasser al-Raisi’s ascent through the ranks of the interior ministry in Abu Dhabi is associated with the United Arab Emirates’ transformation into a hi-tech surveillance state.

    His personal achievements include a diploma in police management from the University of Cambridge, a doctorate in policing, security and community safety from London Metropolitan University and a medal of honour from Italy.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/25/interpols-president-alleged-torturer-rises-as-symbol-of-uae-soft-power", + "creator": "Ruth Michaelson", + "pubDate": "2021-11-25T18:40:39Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Shock and pity mix along UK coast where Channel tragedy played out", + "description": "

    Community reacts to the drowning of 27 people amid sense of resignation that nothing may change

    A UK Border Force perimeter at Dover Marina prevented closer contact with the few dozen men and women waiting late on Thursday morning on a red doubledecker bus marked “private” – yet exhaustion was clearly etched on each one’s face.

    It was unclear if the latest arrivals, who were on boats picked up by a Border Force cutter and a lifeboat in the Channel at 5am had embarked from France knowing 27 people had drowned making the same crossing on Wednesday.

    Continue reading...", + "content": "

    Community reacts to the drowning of 27 people amid sense of resignation that nothing may change

    A UK Border Force perimeter at Dover Marina prevented closer contact with the few dozen men and women waiting late on Thursday morning on a red doubledecker bus marked “private” – yet exhaustion was clearly etched on each one’s face.

    It was unclear if the latest arrivals, who were on boats picked up by a Border Force cutter and a lifeboat in the Channel at 5am had embarked from France knowing 27 people had drowned making the same crossing on Wednesday.

    Continue reading...", + "category": "Immigration and asylum", + "link": "https://www.theguardian.com/uk-news/2021/nov/25/shock-pity-mix-along-coast-where-channel-drowning-tragedy-played-out", + "creator": "Ben Quinn", + "pubDate": "2021-11-25T18:22:18Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Interpol appoints Emirati general accused of torture as president", + "description": "

    Ahmed Nasser al-Raisi of United Arab Emirates elected despite concerns of human rights groups and MEPs

    A general from the United Arab Emirates accused of complicity in torture has been elected as president of the international policing agency Interpol in the teeth of fierce objections from human rights groups.

    Maj Gen Ahmed Nasser al-Raisi’s victory represents a boost to the growing diplomatic clout of the UAE, where he was appointed inspector general of the interior ministry in 2015, overseeing its prisons and policing.

    Continue reading...", + "content": "

    Ahmed Nasser al-Raisi of United Arab Emirates elected despite concerns of human rights groups and MEPs

    A general from the United Arab Emirates accused of complicity in torture has been elected as president of the international policing agency Interpol in the teeth of fierce objections from human rights groups.

    Maj Gen Ahmed Nasser al-Raisi’s victory represents a boost to the growing diplomatic clout of the UAE, where he was appointed inspector general of the interior ministry in 2015, overseeing its prisons and policing.

    Continue reading...", + "category": "Interpol", + "link": "https://www.theguardian.com/world/2021/nov/25/interpol-appoints-emirati-general-accused-torture-president-ahmed-nasser-al-raisi", + "creator": "Patrick Wintour Diplomatic editor and Ruth Michaelson", + "pubDate": "2021-11-25T17:59:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Google to pay £183m in back taxes to Irish government", + "description": "

    Firm’s subsidiary in Ireland agrees to backdated settlement to be paid in addition to corporation tax for 2020

    Google’s Irish subsidiary has agreed to pay €218m (£183m) in back taxes to the Irish government, according to company filings.

    The US tech company, which had been accused of avoiding hundreds of millions in tax across Europe through loopholes known as the “double Irish, Dutch sandwich”, said it had “agreed to the resolution of certain tax matters relating to prior years”.

    Continue reading...", + "content": "

    Firm’s subsidiary in Ireland agrees to backdated settlement to be paid in addition to corporation tax for 2020

    Google’s Irish subsidiary has agreed to pay €218m (£183m) in back taxes to the Irish government, according to company filings.

    The US tech company, which had been accused of avoiding hundreds of millions in tax across Europe through loopholes known as the “double Irish, Dutch sandwich”, said it had “agreed to the resolution of certain tax matters relating to prior years”.

    Continue reading...", + "category": "Google", + "link": "https://www.theguardian.com/technology/2021/nov/25/google-to-pay-183m-in-back-taxes-to-irish-government", + "creator": "Rupert Neate Wealth correspondent", + "pubDate": "2021-11-25T17:54:48Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "French fishers to block Channel tunnel in Brexit licences row", + "description": "

    Members of industry association say large number of vehicles will be used to block key artery between nations

    French fishers are threatening to block access to the Channel tunnel and the ferry port in Calais on Friday as part of an ongoing dispute over access to the waters between France and the UK in the wake of Brexit.

    They have branded the UK’s approach as “contemptuous” and “humiliating” and say they have no other option but to block access to the port and tunnel along with two other ports, Saint-Malo and Ouistreham.

    Continue reading...", + "content": "

    Members of industry association say large number of vehicles will be used to block key artery between nations

    French fishers are threatening to block access to the Channel tunnel and the ferry port in Calais on Friday as part of an ongoing dispute over access to the waters between France and the UK in the wake of Brexit.

    They have branded the UK’s approach as “contemptuous” and “humiliating” and say they have no other option but to block access to the port and tunnel along with two other ports, Saint-Malo and Ouistreham.

    Continue reading...", + "category": "Brexit", + "link": "https://www.theguardian.com/politics/2021/nov/25/french-fishers-block-channel-tunnel-brexit-fishing-licences-row", + "creator": "Lisa O'Carroll", + "pubDate": "2021-11-25T17:14:21Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Priti Patel says UK will cooperate with France to stop refugees crossing the Channel – video", + "description": "

    The home secretary said it was up to France to stop refugees crossing the Channel in small boats, after 27 people, mostly Kurds from Iraq or Iran, drowned trying to reach the UK in an inflatable boat.

    Making a statement to MPs, Patel said that while there was no rapid solution to the issue of people seeking to make the crossing, she had reiterated a UK offer to send more police to France.

    Patel told the Commons she had just spoken to her French counterpart, Gérald Darmanin, after the disaster in which 17 men, seven women and three adolescents – two boys and a girl – drowned

    Continue reading...", + "content": "

    The home secretary said it was up to France to stop refugees crossing the Channel in small boats, after 27 people, mostly Kurds from Iraq or Iran, drowned trying to reach the UK in an inflatable boat.

    Making a statement to MPs, Patel said that while there was no rapid solution to the issue of people seeking to make the crossing, she had reiterated a UK offer to send more police to France.

    Patel told the Commons she had just spoken to her French counterpart, Gérald Darmanin, after the disaster in which 17 men, seven women and three adolescents – two boys and a girl – drowned

    Continue reading...", + "category": "Migration", + "link": "https://www.theguardian.com/world/video/2021/nov/25/priti-patel-says-uk-will-cooperate-with-france-refugees-channel-video", + "creator": "", + "pubDate": "2021-11-25T16:33:21Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Brisbane company worth just $8 when awarded $385m Nauru offshore processing contract", + "description": "

    Since 2017 the contract – now worth $1.6bn – has been amended seven times without competitive tender

    A Brisbane construction company had $8 in assets and had not commenced trading, when it was awarded a government contract – ultimately worth $1.6bn – to run Australia’s offshore processing on Nauru.

    The contract was awarded after the government ordered a “financial strength assessment” that was actually done on a different company.

    Continue reading...", + "content": "

    Since 2017 the contract – now worth $1.6bn – has been amended seven times without competitive tender

    A Brisbane construction company had $8 in assets and had not commenced trading, when it was awarded a government contract – ultimately worth $1.6bn – to run Australia’s offshore processing on Nauru.

    The contract was awarded after the government ordered a “financial strength assessment” that was actually done on a different company.

    Continue reading...", + "category": "Australia news", + "link": "https://www.theguardian.com/australia-news/2021/nov/26/brisbane-company-worth-just-8-when-awarded-385m-nauru-offshore-processing-contract", + "creator": "Ben Doherty and Ben Butler", + "pubDate": "2021-11-25T16:30:06Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Let’s talk about sex: how Cardi B and Megan Thee Stallion’s WAP sent the world into overdrive", + "description": "

    A cultural ‘cancer’, soft porn … or the height of empowerment? A revealing documentary examines the debates around one of the raunchiest – and most talked about – rap records around

    As winter forces many of us to ditch nights out with friends in favour of nights in on the sofa, Belcalis Alamanzar’s iconic words ring out across the digital ether: “A ho never gets cold!”. In a clip that went viral in 2014, the rapper better known as Cardi B parades up and down a hotel corridor, clad in a plunging, barely-there bralette and tight-fitting skirt. For women who wear little and care about it even less, Megan Thee Stallion has made a name for herself in the same vein. Together, Meg and Cardi would go on to birth a movement with their hit 2020 single, WAP, an ode to female sexuality and “wet ass pussy” which brought a slice of the club to the worlds’ living rooms at the peak of lockdown.

    In three minutes and seven seconds of poetic dirty talk, the pair walk us through the spiciest of bedroom sessions, except – contrary to patriarchal norms – they are firmly in the driver’s seat. From fellatio to make-up sex, Cardi and Megan leave their targets weak. With the video quickly becoming a talking point around the world, their sexual desire (and that of women in general) became the subject of fierce debate. While many praised their cheeky candour, others were unimpressed, with Fox News’s Candace Owens going as far as to call Cardi a “cancer cell” who was destroying culture.

    Continue reading...", + "content": "

    A cultural ‘cancer’, soft porn … or the height of empowerment? A revealing documentary examines the debates around one of the raunchiest – and most talked about – rap records around

    As winter forces many of us to ditch nights out with friends in favour of nights in on the sofa, Belcalis Alamanzar’s iconic words ring out across the digital ether: “A ho never gets cold!”. In a clip that went viral in 2014, the rapper better known as Cardi B parades up and down a hotel corridor, clad in a plunging, barely-there bralette and tight-fitting skirt. For women who wear little and care about it even less, Megan Thee Stallion has made a name for herself in the same vein. Together, Meg and Cardi would go on to birth a movement with their hit 2020 single, WAP, an ode to female sexuality and “wet ass pussy” which brought a slice of the club to the worlds’ living rooms at the peak of lockdown.

    In three minutes and seven seconds of poetic dirty talk, the pair walk us through the spiciest of bedroom sessions, except – contrary to patriarchal norms – they are firmly in the driver’s seat. From fellatio to make-up sex, Cardi and Megan leave their targets weak. With the video quickly becoming a talking point around the world, their sexual desire (and that of women in general) became the subject of fierce debate. While many praised their cheeky candour, others were unimpressed, with Fox News’s Candace Owens going as far as to call Cardi a “cancer cell” who was destroying culture.

    Continue reading...", + "category": "Television", + "link": "https://www.theguardian.com/tv-and-radio/2021/nov/25/queens-of-rap-cardi-b-megan-thee-stallion-wap", + "creator": "Danielle Koku", + "pubDate": "2021-11-25T16:30:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "National Geographic green-eyed ‘Afghan Girl’ evacuated to Italy", + "description": "

    Sharbat Gula left Afghanistan after Taliban takeover that followed US departure from country

    National Geographic magazine’s famed green-eyed “Afghan Girl” has arrived in Italy as part of the west’s evacuation of Afghans after the Taliban takeover of the country, the Italian government has said.

    The office of the prime minister, Mario Draghi, said Italy organised the evacuation of Sharbat Gula after she asked to be helped to leave the country. The Italian government would help to get her integrated into life in Italy, the statement said on Thursday.

    Continue reading...", + "content": "

    Sharbat Gula left Afghanistan after Taliban takeover that followed US departure from country

    National Geographic magazine’s famed green-eyed “Afghan Girl” has arrived in Italy as part of the west’s evacuation of Afghans after the Taliban takeover of the country, the Italian government has said.

    The office of the prime minister, Mario Draghi, said Italy organised the evacuation of Sharbat Gula after she asked to be helped to leave the country. The Italian government would help to get her integrated into life in Italy, the statement said on Thursday.

    Continue reading...", + "category": "Afghanistan", + "link": "https://www.theguardian.com/world/2021/nov/25/national-geographic-green-eyed-afghan-girl-evacuated-italy-sharbat-gulla", + "creator": "Associated Press", + "pubDate": "2021-11-25T16:04:30Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Macron calls for greater cooperation from UK over refugee Channel crossings – video", + "description": "

    Emmanuel Macron has stressed the need to develop 'stronger and responsible' partnerships with Britain and Europe after at least 27 people, including women and children, died on Wednesday trying to cross the Channel on an inflatable boat.

    Speaking on Thursday, the French president said: 'When these men and women reach the shores of the Channel, it is already too late.'

    British and French leaders have traded accusations after the tragedy

    Continue reading...", + "content": "

    Emmanuel Macron has stressed the need to develop 'stronger and responsible' partnerships with Britain and Europe after at least 27 people, including women and children, died on Wednesday trying to cross the Channel on an inflatable boat.

    Speaking on Thursday, the French president said: 'When these men and women reach the shores of the Channel, it is already too late.'

    British and French leaders have traded accusations after the tragedy

    Continue reading...", + "category": "Emmanuel Macron", + "link": "https://www.theguardian.com/world/video/2021/nov/25/emmanuel-macron-calls-greater-cooperation-uk-refugee-channel-crossings-video", + "creator": "", + "pubDate": "2021-11-25T16:01:19Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Paul Weller’s 30 greatest songs – ranked!", + "description": "

    Drawn from the Jam, the Style Council and his solo work, all of it powered by romance, storytelling and political vim, here is the best of a British songwriter unbounded by genre

    On the B-side of A Solid Bond in Your Heart lurks Weller’s mea culpa take on the sudden demise of the Jam, the arrogance of youth and the perils of becoming the Voice of a Generation. “I was a shit-stained statue / Schoolchildren would stand in awe … I thought I was lord of this crappy jungle.”

    Continue reading...", + "content": "

    Drawn from the Jam, the Style Council and his solo work, all of it powered by romance, storytelling and political vim, here is the best of a British songwriter unbounded by genre

    On the B-side of A Solid Bond in Your Heart lurks Weller’s mea culpa take on the sudden demise of the Jam, the arrogance of youth and the perils of becoming the Voice of a Generation. “I was a shit-stained statue / Schoolchildren would stand in awe … I thought I was lord of this crappy jungle.”

    Continue reading...", + "category": "Paul Weller", + "link": "https://www.theguardian.com/music/2021/nov/25/paul-wellers-30-greatest-songs-ranked", + "creator": "Alexis Petridis", + "pubDate": "2021-11-25T15:29:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "All options fraught with risk as Biden confronts Putin over Ukraine", + "description": "

    Analysis: Moscow presents Washington with a no-win situation: capitulate on Ukrainian sovereignty or risk all-out war

    Joe Biden is preparing for a virtual summit with Vladimir Putin with the aim of fending off the threat of another Russian invasion of Ukraine.

    The summit has been previewed by the Kremlin. The White House has not confirmed it, but Biden’s press secretary, Jen Psaki, said that “high-level diplomacy is a priority of the president” and pointed to the teleconference meeting with Xi Jinping earlier in November.

    Continue reading...", + "content": "

    Analysis: Moscow presents Washington with a no-win situation: capitulate on Ukrainian sovereignty or risk all-out war

    Joe Biden is preparing for a virtual summit with Vladimir Putin with the aim of fending off the threat of another Russian invasion of Ukraine.

    The summit has been previewed by the Kremlin. The White House has not confirmed it, but Biden’s press secretary, Jen Psaki, said that “high-level diplomacy is a priority of the president” and pointed to the teleconference meeting with Xi Jinping earlier in November.

    Continue reading...", + "category": "US foreign policy", + "link": "https://www.theguardian.com/us-news/2021/nov/25/all-options-fraught-with-risk-as-biden-confronts-putin-over-ukraine", + "creator": "Julian Borger in Washington", + "pubDate": "2021-11-25T15:19:20Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Warning on tackling HIV as WHO finds rise in resistance to antiretroviral drugs", + "description": "

    Nearly half of newly diagnosed infants in 10 countries have drug-resistant HIV, study finds, underlining need for new alternatives

    HIV drug resistance is on the rise, according to a new report, which found that the number of people with the virus being treated with antiretrovirals had risen to 27.5 million – an annual increase of 2 million.

    Four out of five countries with high rates had seen success in suppressing the virus with antiretroviral treatments, according to the World Health Organization’s HIV drug-resistance report.

    Continue reading...", + "content": "

    Nearly half of newly diagnosed infants in 10 countries have drug-resistant HIV, study finds, underlining need for new alternatives

    HIV drug resistance is on the rise, according to a new report, which found that the number of people with the virus being treated with antiretrovirals had risen to 27.5 million – an annual increase of 2 million.

    Four out of five countries with high rates had seen success in suppressing the virus with antiretroviral treatments, according to the World Health Organization’s HIV drug-resistance report.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/25/warning-hiv-who-finds-rise-resistance-antiretroviral-drugs", + "creator": "Kaamil Ahmed", + "pubDate": "2021-11-25T15:17:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pregnant women urged to get Covid jab as data from England shows it is safe", + "description": "

    Analysis finds vaccinated women no more likely than unvaccinated to suffer stillbirth or premature births

    Health leaders are urging thousands of unvaccinated pregnant women to get vaccinated after the first official data from England found Covid jabs are safe and effective.

    The analysis of more than 350,000 deliveries by the UK Health Security Agency (UKHSA) shows women who have had a Covid vaccine are no more likely than unvaccinated women to suffer stillbirth, premature birth or have babies with low birthweight. It reinforces international evidence that the jabs have a good safety record in pregnant women.

    Continue reading...", + "content": "

    Analysis finds vaccinated women no more likely than unvaccinated to suffer stillbirth or premature births

    Health leaders are urging thousands of unvaccinated pregnant women to get vaccinated after the first official data from England found Covid jabs are safe and effective.

    The analysis of more than 350,000 deliveries by the UK Health Security Agency (UKHSA) shows women who have had a Covid vaccine are no more likely than unvaccinated women to suffer stillbirth, premature birth or have babies with low birthweight. It reinforces international evidence that the jabs have a good safety record in pregnant women.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/25/pregnant-women-covid-jab-safe", + "creator": "Andrew Gregory Health editor", + "pubDate": "2021-11-25T15:13:39Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Naomi Campbell’s fashion charity investigated over finances", + "description": "

    Regulator examines potential mismanagement at Fashion for Relief and payments to trustee

    The fashion charity established by the supermodel Naomi Campbell has come under formal investigation from the charities watchdog over misconduct concerns relating to its management and finances.

    Campbell created Fashion for Relief in 2005 to raise funds for children living in poverty and adversity around the world, and says it has raised millions over the years for good causes through its annual charity fashion show.

    Continue reading...", + "content": "

    Regulator examines potential mismanagement at Fashion for Relief and payments to trustee

    The fashion charity established by the supermodel Naomi Campbell has come under formal investigation from the charities watchdog over misconduct concerns relating to its management and finances.

    Campbell created Fashion for Relief in 2005 to raise funds for children living in poverty and adversity around the world, and says it has raised millions over the years for good causes through its annual charity fashion show.

    Continue reading...", + "category": "Charities", + "link": "https://www.theguardian.com/society/2021/nov/25/naomi-campbells-fashion-charity-investigated-over-finances", + "creator": "Patrick Butler Social policy editor", + "pubDate": "2021-11-25T15:11:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Battery arms race’: how China has monopolised the electric vehicle industry", + "description": "

    Chinese companies dominate mining, battery and manufacturing sectors, and amid human rights concerns, Europe and the US are struggling to keep pace

    Think of an electric car and the first name that comes to mind will probably be Tesla. The California company makes the world’s bestselling electric car and was recently valued at $1tn. But behind this US success story is a tale of China’s manufacturing might.

    Tesla’s factory in Shanghai now produces more cars than its plant in California. Some of the batteries that drive them are Chinese-made and the minerals that power the batteries are largely refined and mined by Chinese companies.

    Continue reading...", + "content": "

    Chinese companies dominate mining, battery and manufacturing sectors, and amid human rights concerns, Europe and the US are struggling to keep pace

    Think of an electric car and the first name that comes to mind will probably be Tesla. The California company makes the world’s bestselling electric car and was recently valued at $1tn. But behind this US success story is a tale of China’s manufacturing might.

    Tesla’s factory in Shanghai now produces more cars than its plant in California. Some of the batteries that drive them are Chinese-made and the minerals that power the batteries are largely refined and mined by Chinese companies.

    Continue reading...", + "category": "Electric, hybrid and low-emission cars", + "link": "https://www.theguardian.com/global-development/2021/nov/25/battery-arms-race-how-china-has-monopolised-the-electric-vehicle-industry", + "creator": "Pete Pattisson", + "pubDate": "2021-11-25T14:03:45Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "EU moves to place Covid booster jabs at heart of travel rules", + "description": "

    Commission says unrestricted travel between states should apply to those who get booster nine months after jabs

    People hoping to travel to the European Union next year will have to get a booster jab once their original Covid vaccines are more than nine months old, under new proposals from Brussels.

    On Thursday, the European Commission proposed a nine-month limit for vaccine validity that would apply for travel within and to the EU.

    Continue reading...", + "content": "

    Commission says unrestricted travel between states should apply to those who get booster nine months after jabs

    People hoping to travel to the European Union next year will have to get a booster jab once their original Covid vaccines are more than nine months old, under new proposals from Brussels.

    On Thursday, the European Commission proposed a nine-month limit for vaccine validity that would apply for travel within and to the EU.

    Continue reading...", + "category": "European Union", + "link": "https://www.theguardian.com/world/2021/nov/25/eu-moves-to-place-covid-booster-jabs-at-heart-of-travel-rules", + "creator": "Jennifer Rankin in Brussels", + "pubDate": "2021-11-25T13:47:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple tells Thai activists they are targets of ‘state-sponsored attackers’", + "description": "

    At least 17 people including protest leaders have received alerts about devices possibly being compromised

    Thai activists who have called for reform of the monarchy are among at least 17 people in Thailand who say they have been warned by Apple that they have been targeted by “state-sponsored” attackers.

    Warnings were sent to the prominent activists Panusaya Sithijirawattanakul and Arnon Nampa, according to Panusaya’s sister May and the administrator of Arnon’s Facebook page. Panusaya and Arnon are in pre-trial detention after leading demonstrations calling for the power of the monarchy to be curbed.

    Continue reading...", + "content": "

    At least 17 people including protest leaders have received alerts about devices possibly being compromised

    Thai activists who have called for reform of the monarchy are among at least 17 people in Thailand who say they have been warned by Apple that they have been targeted by “state-sponsored” attackers.

    Warnings were sent to the prominent activists Panusaya Sithijirawattanakul and Arnon Nampa, according to Panusaya’s sister May and the administrator of Arnon’s Facebook page. Panusaya and Arnon are in pre-trial detention after leading demonstrations calling for the power of the monarchy to be curbed.

    Continue reading...", + "category": "Thailand", + "link": "https://www.theguardian.com/world/2021/nov/25/apple-tells-thai-activists-they-are-targets-of-state-sponsored-attackers", + "creator": "Rebecca Ratcliffe and Navaon Siradapuvadol", + "pubDate": "2021-11-25T13:42:51Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dozens killed in Siberia after coalmine explosion – reports", + "description": "

    Russian media reports emergency officials saying 52 miners and rescuers have died in the Listvyazhnaya mine

    A devastating explosion in a Siberian coalmine on Thursday left 52 miners and rescuers dead about 250 meters (820ft) underground, Russian officials have said.

    Hours after a methane gas explosion and fire filled the mine with toxic fumes, rescuers found 14 bodies but then were forced to halt the search for 38 others because of a buildup of methane and carbon monoxide gas from the fire. A total of 239 people were rescued.

    Continue reading...", + "content": "

    Russian media reports emergency officials saying 52 miners and rescuers have died in the Listvyazhnaya mine

    A devastating explosion in a Siberian coalmine on Thursday left 52 miners and rescuers dead about 250 meters (820ft) underground, Russian officials have said.

    Hours after a methane gas explosion and fire filled the mine with toxic fumes, rescuers found 14 bodies but then were forced to halt the search for 38 others because of a buildup of methane and carbon monoxide gas from the fire. A total of 239 people were rescued.

    Continue reading...", + "category": "Russia", + "link": "https://www.theguardian.com/world/2021/nov/25/dozens-trapped-underground-in-siberia-after-fatal-coalmine-fire", + "creator": "Associated Press", + "pubDate": "2021-11-25T13:32:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What is driving Europe's surge in Covid cases? – video explainer", + "description": "

    The continent is now the centre of the global coronavirus pandemic – again. As countries from the Baltic to the Med brace for harsher winter measures, the Guardian's Jon Henley looks at the reasons behind the fourth wave

    Continue reading...", + "content": "

    The continent is now the centre of the global coronavirus pandemic – again. As countries from the Baltic to the Med brace for harsher winter measures, the Guardian's Jon Henley looks at the reasons behind the fourth wave

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/video/2021/nov/25/what-is-driving-europes-surge-in-covid-cases-video-explainer", + "creator": "Monika Cvorak, Jon Henley and Nikhita Chulani", + "pubDate": "2021-11-25T12:50:29Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Matteo Salvini: ‘I refuse to think of substituting 10m Italians with 10m migrants’", + "description": "

    Exclusive: Far-right politician is in campaign mode and says he has no regrets about draconian policies he introduced when he was interior minister

    Whether they’re camped outside in freezing temperatures or stranded at sea, Matteo Salvini exhibits little sympathy for the asylum seekers blocked at European borders. The Italian far-right leader, who as interior minister attempted to stop NGO rescue boats landing in Italian ports, in one case leading to criminal charges, will travel to Warsaw next month in a show of solidarity with his Polish allies who have deployed hardcore tactics to ward off thousands of refugees trying to enter from Belarus.

    “I think that Europe is realising that illegal immigration is dangerous,” Salvini told the Guardian in an interview conducted before 27 people drowned attempting to cross the Channel in an inflatable boat. “So maybe this shock will be useful.”

    Continue reading...", + "content": "

    Exclusive: Far-right politician is in campaign mode and says he has no regrets about draconian policies he introduced when he was interior minister

    Whether they’re camped outside in freezing temperatures or stranded at sea, Matteo Salvini exhibits little sympathy for the asylum seekers blocked at European borders. The Italian far-right leader, who as interior minister attempted to stop NGO rescue boats landing in Italian ports, in one case leading to criminal charges, will travel to Warsaw next month in a show of solidarity with his Polish allies who have deployed hardcore tactics to ward off thousands of refugees trying to enter from Belarus.

    “I think that Europe is realising that illegal immigration is dangerous,” Salvini told the Guardian in an interview conducted before 27 people drowned attempting to cross the Channel in an inflatable boat. “So maybe this shock will be useful.”

    Continue reading...", + "category": "Matteo Salvini", + "link": "https://www.theguardian.com/world/2021/nov/25/matteo-salvini-interview-far-right-migration", + "creator": "Angela Giuffrida in Rome", + "pubDate": "2021-11-25T12:37:22Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Spanish police recover rare 2,000-year-old Iberian sword", + "description": "

    Double-edged, curved falcata particularly sought after because of the original condition of its blade

    More than 2,000 years after it was last wielded by a warrior somewhere on the Iberian peninsula, a rare, magnificent – and plundered – sword has been recovered by Spanish police, who tracked it down before it was sold online.

    The pre-Roman falcata, a double-edged, curved sword used by the Iberians between the fifth and first centuries BC, was seized along with 202 other archaeological pieces after it appeared on what Policía Nacional officers termed “a well known social media site”.

    Continue reading...", + "content": "

    Double-edged, curved falcata particularly sought after because of the original condition of its blade

    More than 2,000 years after it was last wielded by a warrior somewhere on the Iberian peninsula, a rare, magnificent – and plundered – sword has been recovered by Spanish police, who tracked it down before it was sold online.

    The pre-Roman falcata, a double-edged, curved sword used by the Iberians between the fifth and first centuries BC, was seized along with 202 other archaeological pieces after it appeared on what Policía Nacional officers termed “a well known social media site”.

    Continue reading...", + "category": "Spain", + "link": "https://www.theguardian.com/world/2021/nov/25/spanish-police-recover-rare-2000-year-old-iberian-sword", + "creator": "Sam Jones in Madrid", + "pubDate": "2021-11-25T12:26:09Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "HMRC to relocate to Newcastle office owned by Tory donors via tax haven", + "description": "

    Exclusive: Deal is part of north-east regeneration scheme developed by property tycoons David and Simon Reuben

    HM Revenue and Customs has struck a deal to relocate tax officials into a new office complex in Newcastle owned by major Conservative party donors through an offshore company based in a tax haven, the Guardian can reveal.

    The department’s planned new home in the north-east of England is part of a regeneration scheme developed by a British Virgin Islands (BVI) entity controlled by the billionaire property tycoons David and Simon Reuben.

    Continue reading...", + "content": "

    Exclusive: Deal is part of north-east regeneration scheme developed by property tycoons David and Simon Reuben

    HM Revenue and Customs has struck a deal to relocate tax officials into a new office complex in Newcastle owned by major Conservative party donors through an offshore company based in a tax haven, the Guardian can reveal.

    The department’s planned new home in the north-east of England is part of a regeneration scheme developed by a British Virgin Islands (BVI) entity controlled by the billionaire property tycoons David and Simon Reuben.

    Continue reading...", + "category": "HMRC", + "link": "https://www.theguardian.com/politics/2021/nov/25/hmrc-to-relocate-to-newcastle-office-owned-by-tory-donors-via-tax-haven", + "creator": "Harry Davies and Rowena Mason", + "pubDate": "2021-11-25T11:11:21Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Turkey accused of using Interpol summit to crack down on critics", + "description": "

    Campaigners claim Ankara is abusing its position as host, by pressuring the police body to harass dissidents living abroad

    Human rights activists have accused Turkey of using its role as host of Interpol’s general assembly to push for a crackdown on critics and political opponents who have fled the country.

    The alert came after the Turkish interior minister, Süleyman Soylu, said his government would use the three-day event in Istanbul to persuade the international criminal police organisation’s officials and delegates to find, arrest and extradite Turkish dissident citizens particularly those it labels terroristsabroad.

    Continue reading...", + "content": "

    Campaigners claim Ankara is abusing its position as host, by pressuring the police body to harass dissidents living abroad

    Human rights activists have accused Turkey of using its role as host of Interpol’s general assembly to push for a crackdown on critics and political opponents who have fled the country.

    The alert came after the Turkish interior minister, Süleyman Soylu, said his government would use the three-day event in Istanbul to persuade the international criminal police organisation’s officials and delegates to find, arrest and extradite Turkish dissident citizens particularly those it labels terroristsabroad.

    Continue reading...", + "category": "Interpol", + "link": "https://www.theguardian.com/global-development/2021/nov/25/turkey-accused-of-using-interpol-summit-to-crack-down-on-critics", + "creator": "Kim Willsher", + "pubDate": "2021-11-25T11:09:31Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Justice prevailed in the trial of Ahmaud Arbery’s killers. In America, that’s a shock | Moustafa Bayoumi", + "description": "

    The jury reached the right verdict – even as the criminal justice system did everything it could to exonerate the three men

    It’s shocking that Travis McMichael, Gregory McMichael, and William Bryan were found guilty of murdering Ahmaud Arbery in Brunswick, Georgia. Yet the shock doesn’t stem out of any miscarriage of justice. On the contrary, the jury in Glynn county deliberated and reached the correct decision. Stalking an innocent Black man, chasing him, cornering him, and then killing him must come with criminal consequences in this country, and each of the three murderers now faces the possibility of a life sentence.

    But the shock is that justice was served in a case where it seemed the criminal justice system and substantial portions of media coverage were doing all they could to exonerate these men. In fact, everything about this case illustrates how difficult it is to get justice for Black people in this country, starting with how often Fox News and other media outlets referred to the case as “the Arbery trial”, as if Ahmaud Arbery were the perpetrator here and not the victim.

    Continue reading...", + "content": "

    The jury reached the right verdict – even as the criminal justice system did everything it could to exonerate the three men

    It’s shocking that Travis McMichael, Gregory McMichael, and William Bryan were found guilty of murdering Ahmaud Arbery in Brunswick, Georgia. Yet the shock doesn’t stem out of any miscarriage of justice. On the contrary, the jury in Glynn county deliberated and reached the correct decision. Stalking an innocent Black man, chasing him, cornering him, and then killing him must come with criminal consequences in this country, and each of the three murderers now faces the possibility of a life sentence.

    But the shock is that justice was served in a case where it seemed the criminal justice system and substantial portions of media coverage were doing all they could to exonerate these men. In fact, everything about this case illustrates how difficult it is to get justice for Black people in this country, starting with how often Fox News and other media outlets referred to the case as “the Arbery trial”, as if Ahmaud Arbery were the perpetrator here and not the victim.

    Continue reading...", + "category": "Ahmaud Arbery", + "link": "https://www.theguardian.com/us-news/commentisfree/2021/nov/25/justice-prevailed-in-the-trial-of-ahmaud-arberys-killers-in-america-thats-a-shock", + "creator": "Moustafa Bayoumi", + "pubDate": "2021-11-25T11:00:09Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Many disabled women are assaulted each year. Forgetting my own rape feels impossible", + "description": "

    After the attack, I became preoccupied with the idea that my case would be questioned because of my disability. But what happened continues to haunt me

    I have been a wheelchair user for a number of years, due to a progressive condition. I have been a rape survivor for four. These things are more connected than you might think.

    I first met Alex (not his real name) four years ago. We were at a house party. He was drunk and I was sober; this would become a running theme.

    Continue reading...", + "content": "

    After the attack, I became preoccupied with the idea that my case would be questioned because of my disability. But what happened continues to haunt me

    I have been a wheelchair user for a number of years, due to a progressive condition. I have been a rape survivor for four. These things are more connected than you might think.

    I first met Alex (not his real name) four years ago. We were at a house party. He was drunk and I was sober; this would become a running theme.

    Continue reading...", + "category": "Rape and sexual assault", + "link": "https://www.theguardian.com/society/2021/nov/25/many-disabled-women-are-assaulted-each-year-forgetting-my-own-rape-feels-impossible", + "creator": "Guardian Staff", + "pubDate": "2021-11-25T11:00:08Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia politics live update: PM targeted on integrity bill in question time; AFP and ADF deployed to Solomon Islands for ‘riot control’", + "description": "

    Scott Morrison announces deployment of personnel to Solomon Islands as protests continue; Labor targets federal integrity commission during question time; George Christensen ‘clarifies’ Hitler, Mao, Stalin comments; Victoria records 1,254 new Covid cases and five deaths; NSW reports 276 cases and no deaths. Follow live updates

    A special Victorian Roy Morgan SMS poll shows 76% of Victorians agree that an employed worker in Victoria should not be allowed to enter their employer’s workplace unless fully vaccinated, compared with only 24% that disagree.

    Agreement with this policy is consistently strong across gender, age and location, although there are significant political differences, the poll found.

    Let’s think about how this works in practice. If a teacher applies to work at a school, whether it’s Christian, or Islamic, or whether it’s Jewish or any other, and they apply to work at a school that’s got a clearly stated policy …

    Look, I think that is something that would depend a great deal upon what that school is prepared to be upfront with the community about now. I’d suggest there would be very few schools that that want to be in a position where they’ve got to say to the community, that this is what we believe and we’re not going to hire people, unless they subscribe to a version of belief that is very, very strict on that front.

    Continue reading...", + "content": "

    Scott Morrison announces deployment of personnel to Solomon Islands as protests continue; Labor targets federal integrity commission during question time; George Christensen ‘clarifies’ Hitler, Mao, Stalin comments; Victoria records 1,254 new Covid cases and five deaths; NSW reports 276 cases and no deaths. Follow live updates

    A special Victorian Roy Morgan SMS poll shows 76% of Victorians agree that an employed worker in Victoria should not be allowed to enter their employer’s workplace unless fully vaccinated, compared with only 24% that disagree.

    Agreement with this policy is consistently strong across gender, age and location, although there are significant political differences, the poll found.

    Let’s think about how this works in practice. If a teacher applies to work at a school, whether it’s Christian, or Islamic, or whether it’s Jewish or any other, and they apply to work at a school that’s got a clearly stated policy …

    Look, I think that is something that would depend a great deal upon what that school is prepared to be upfront with the community about now. I’d suggest there would be very few schools that that want to be in a position where they’ve got to say to the community, that this is what we believe and we’re not going to hire people, unless they subscribe to a version of belief that is very, very strict on that front.

    Continue reading...", + "category": "Australia news", + "link": "https://www.theguardian.com/australia-news/live/2021/nov/25/australia-politics-live-update-scott-morrison-religious-discrimination-legislation-vaccine-mandate-gay-students-teachers-covid-coronavirus-anthony-albanese-labor", + "creator": "Josh Taylor (now) and Amy Remeikis (earlier)", + "pubDate": "2021-11-25T08:22:26Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid news live: Germany death toll passes 100,000; vaccines giving people ‘false sense of security’, WHO says", + "description": "

    Germany has recorded a total of 100,119 deaths amid a resurgence of the virus and tough new restrictions; WHO officials issue a new warning over social mixing ahead of the holiday season

    Aboriginal elders, health organisations and frontline workers in the Australia’s Northern Territory’s Covid outbreak have lashed out at false information about public health measures on social media, with the NT chief minister blaming the misinformation on “tinfoil hat wearing tossers, sitting in their parents’ basements in Florida”.

    Over the past few days false claims have been circulating online that Aboriginal people from Binjari and Rockhole were being forcibly removed from their homes and taken to enforced quarantine in Howard Springs, and people including children were being forcibly vaccinated.

    Continue reading...", + "content": "

    Germany has recorded a total of 100,119 deaths amid a resurgence of the virus and tough new restrictions; WHO officials issue a new warning over social mixing ahead of the holiday season

    Aboriginal elders, health organisations and frontline workers in the Australia’s Northern Territory’s Covid outbreak have lashed out at false information about public health measures on social media, with the NT chief minister blaming the misinformation on “tinfoil hat wearing tossers, sitting in their parents’ basements in Florida”.

    Over the past few days false claims have been circulating online that Aboriginal people from Binjari and Rockhole were being forcibly removed from their homes and taken to enforced quarantine in Howard Springs, and people including children were being forcibly vaccinated.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/live/2021/nov/25/covid-news-live-germany-death-toll-passes-100000-vaccines-giving-people-false-sense-of-security-who-says", + "creator": "Martin Belam (now) and Samantha Lock (earlier)", + "pubDate": "2021-11-25T08:16:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia sends police and troops to Honiara as violent protests continue in Solomon Islands", + "description": "

    Protesters reportedly from neighbouring island, which opposed government’s 2019 decision to switch allegiance from Taiwan to China

    Australia is deploying more than 100 police and defence force personnel to the Solomon Islands amid reports of fresh protests in the capital Honiara.

    The Australian government on Thursday said the deployment would support “riot control” and security at critical infrastructure, a day after demonstrators attempted to storm parliament and topple the prime minister, Manasseh Sogavare.

    Continue reading...", + "content": "

    Protesters reportedly from neighbouring island, which opposed government’s 2019 decision to switch allegiance from Taiwan to China

    Australia is deploying more than 100 police and defence force personnel to the Solomon Islands amid reports of fresh protests in the capital Honiara.

    The Australian government on Thursday said the deployment would support “riot control” and security at critical infrastructure, a day after demonstrators attempted to storm parliament and topple the prime minister, Manasseh Sogavare.

    Continue reading...", + "category": "Solomon Islands", + "link": "https://www.theguardian.com/world/2021/nov/25/honiaras-chinatown-targeted-as-violent-protests-break-out-for-second-day-in-solomon-islands", + "creator": "Daniel Hurst and Agence France-Presse", + "pubDate": "2021-11-25T08:03:40Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dontae Sharpe was exonerated after 24 years in prison. That was not the end of his ordeal", + "description": "

    For many exonerees the struggle for justice carries on long after the prison gates have been flung open

    Every year Dontae Sharpe braces himself for the pardoning of the Thanksgiving turkey.

    It’s not that he objects to turkeys being spared the butcher’s knife. It’s that, from where he’s sitting, there are far more urgent candidates for a reprieve from the governor of North Carolina than a bird.

    Continue reading...", + "content": "

    For many exonerees the struggle for justice carries on long after the prison gates have been flung open

    Every year Dontae Sharpe braces himself for the pardoning of the Thanksgiving turkey.

    It’s not that he objects to turkeys being spared the butcher’s knife. It’s that, from where he’s sitting, there are far more urgent candidates for a reprieve from the governor of North Carolina than a bird.

    Continue reading...", + "category": "US justice system", + "link": "https://www.theguardian.com/us-news/2021/nov/25/dontae-sharpe-exonerated-prison-pardon", + "creator": "Ed Pilkington in Charlotte, North Carolina", + "pubDate": "2021-11-25T07:00:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Return to the refugee camp: Malawi orders thousands back to ‘congested’ Dzaleka", + "description": "

    People who’ve integrated into society are expected to return to the country’s oldest refugee camp, as cost of living and anti-refugee sentiment rises

    Dzaleka, Malawi’s first refugee camp, is about 25 miles north of the capital Lilongwe. Built 25 years ago in response to a surge of people fleeing genocide and wars in Burundi, Rwanda and the Democratic Republic of the Congo, it was then home to between 10,000 and 14,000 refugees. But the camp now houses more than 48,000 people from east and southern African countries – four times more than its initial capacity.

    Several hundred continue to arrive each month, according to the UN refugee agency (UNHCR), and in August 181 babies were born there. The deteriorating situation in neighbouring Mozambique is swelling the numbers further, as is the government’s recent decree that an estimated 2,000 refugees who had over the years left Dzaleka to integrate into wider Malawian society should go back, citing them as a possible danger to national security.

    Continue reading...", + "content": "

    People who’ve integrated into society are expected to return to the country’s oldest refugee camp, as cost of living and anti-refugee sentiment rises

    Dzaleka, Malawi’s first refugee camp, is about 25 miles north of the capital Lilongwe. Built 25 years ago in response to a surge of people fleeing genocide and wars in Burundi, Rwanda and the Democratic Republic of the Congo, it was then home to between 10,000 and 14,000 refugees. But the camp now houses more than 48,000 people from east and southern African countries – four times more than its initial capacity.

    Several hundred continue to arrive each month, according to the UN refugee agency (UNHCR), and in August 181 babies were born there. The deteriorating situation in neighbouring Mozambique is swelling the numbers further, as is the government’s recent decree that an estimated 2,000 refugees who had over the years left Dzaleka to integrate into wider Malawian society should go back, citing them as a possible danger to national security.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/25/return-to-the-refugee-camp-malawi-orders-thousands-back-to-congested-dzaleka", + "creator": "Benson Kunchezera", + "pubDate": "2021-11-25T07:00:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ahmaud Arbery murder: trial laid bare America’s faultlines on race", + "description": "

    Verdict caps almost two years of anguish for the Arbery family, marked by allegations of corruption, bias and racism both inside and outside the courtroom

    As the guilty verdicts were read aloud, one after the other, Ahmaud Arbery’s mother, Wanda Cooper-Jones, could be seen in the courthouse with tears in her eyes.

    The three white men who murdered her son back in February 2020, claiming they had acted in self-defense during an attempted citizen’s arrest, expressed little emotion.

    Continue reading...", + "content": "

    Verdict caps almost two years of anguish for the Arbery family, marked by allegations of corruption, bias and racism both inside and outside the courtroom

    As the guilty verdicts were read aloud, one after the other, Ahmaud Arbery’s mother, Wanda Cooper-Jones, could be seen in the courthouse with tears in her eyes.

    The three white men who murdered her son back in February 2020, claiming they had acted in self-defense during an attempted citizen’s arrest, expressed little emotion.

    Continue reading...", + "category": "Ahmaud Arbery", + "link": "https://www.theguardian.com/us-news/2021/nov/25/ahmaud-arbery-verdict-race", + "creator": "Oliver Laughland", + "pubDate": "2021-11-25T07:00:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UK public urged to get Covid booster by 11 December if eligible to avoid waning immunity", + "description": "

    New research shows the risk of infection increases significantly six months after a second dose of the Pfizer vaccine

    Ministers are urging millions of Britons to get their Covid booster jab by 11 December to ensure they have “very high protection against Covid by Christmas Day” as new evidence shows the risk of infection increases with the time since the second dose.

    The fresh warning comes after cases broke records in parts of Europe on Wednesday, with the continent once again the centre of a pandemic that has prompted new restrictions.

    Continue reading...", + "content": "

    New research shows the risk of infection increases significantly six months after a second dose of the Pfizer vaccine

    Ministers are urging millions of Britons to get their Covid booster jab by 11 December to ensure they have “very high protection against Covid by Christmas Day” as new evidence shows the risk of infection increases with the time since the second dose.

    The fresh warning comes after cases broke records in parts of Europe on Wednesday, with the continent once again the centre of a pandemic that has prompted new restrictions.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/25/uk-public-urged-to-get-covid-booster-by-11-december-if-eligible-to-avoid-waning-immunity", + "creator": "Andrew Gregory and Hannah Devlin", + "pubDate": "2021-11-25T06:01:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘The gooey overlay of sweetness over genocide’: the myth of the ‘first Thanksgiving’", + "description": "

    Some members of the Wampanoag Nation mark Thanksgiving as their National Day of Mourning

    In 1970, Massachusetts was preparing to celebrate the 350th anniversary of the arrival of the Pilgrim Fathers on the Mayflower.

    The 53 surviving men, women and children who had left England in search of “religious freedom” are credited with starting America’s first successful colony, in Plymouth, in 1620. Their voyage to the so-called New World is celebrated by many Americans still as a powerful symbol of the birth of the United States.

    Continue reading...", + "content": "

    Some members of the Wampanoag Nation mark Thanksgiving as their National Day of Mourning

    In 1970, Massachusetts was preparing to celebrate the 350th anniversary of the arrival of the Pilgrim Fathers on the Mayflower.

    The 53 surviving men, women and children who had left England in search of “religious freedom” are credited with starting America’s first successful colony, in Plymouth, in 1620. Their voyage to the so-called New World is celebrated by many Americans still as a powerful symbol of the birth of the United States.

    Continue reading...", + "category": "Native Americans", + "link": "https://www.theguardian.com/us-news/2021/nov/25/thanksgiving-myth-wampanoag-native-american-tribe", + "creator": "Alice Hutton", + "pubDate": "2021-11-25T06:00:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Weatherwatch: Israel hit by torrential rain and flash floods", + "description": "

    Drains blocked by sand after extended dry period are thought to have worsened conditions

    Flash flooding affected some parts of Israel last week with the country hit by frequent storms. Earlier this year, the country experienced an extended period of dry and windy conditions. This is thought to have exacerbated the flooding, with drainage systems blocked by sand and the infrastructure unable to cope with torrential downpours. Vehicles skidded off roads and people became stranded in the flooding. One man found unconscious in the flood waters.

    Somalia is heading for its fourth consecutive drought, with worsening conditions expected over the coming months. So far, more than 100,000 people have fled their homes looking for water and food. Extreme drought conditions can affect 80% of the country of 2 million people. Projected to be one of the most vulnerable countries to climate change, Somalia has been ravaged by natural disasters, with 12 droughts and 19 flooding events since 1990.

    Continue reading...", + "content": "

    Drains blocked by sand after extended dry period are thought to have worsened conditions

    Flash flooding affected some parts of Israel last week with the country hit by frequent storms. Earlier this year, the country experienced an extended period of dry and windy conditions. This is thought to have exacerbated the flooding, with drainage systems blocked by sand and the infrastructure unable to cope with torrential downpours. Vehicles skidded off roads and people became stranded in the flooding. One man found unconscious in the flood waters.

    Somalia is heading for its fourth consecutive drought, with worsening conditions expected over the coming months. So far, more than 100,000 people have fled their homes looking for water and food. Extreme drought conditions can affect 80% of the country of 2 million people. Projected to be one of the most vulnerable countries to climate change, Somalia has been ravaged by natural disasters, with 12 droughts and 19 flooding events since 1990.

    Continue reading...", + "category": "Israel", + "link": "https://www.theguardian.com/weather/2021/nov/25/weatherwatch-israel-hit-by-torrential-rain-and-flash-floods", + "creator": "Jodie Woodcock (metdesk)", + "pubDate": "2021-11-25T06:00:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The seven types of rest: I spent a week trying them all. Could they help end my exhaustion?", + "description": "

    When we feel extreme fatigue most of us focus on sleep problems. But proper relaxation takes many forms. I spent a week exploring what really works

    “Are you the most tired you can ever remember being?” asks a friend. Well, yes. I have it easy – my caring responsibilities are limited and my work is physically undemanding and very low stakes – but I am wrecked. The brain fog, tearful confusion and deep lethargy I feel seems near universal. A viral tweet from February asked: “Just to confirm … everyone feels tired ALL the time no matter how much sleep they get or caffeine they consume?” The 71,000-plus retweets seemed to confirm it’s the case.

    But when we say we are exhausted, or Google “Why am I tired all the time?” (searches were reportedly at an all-time high between July and September this year), what do we mean? Yes, pandemic living is, objectively, exhausting. Existing on high alert is physically and mentally depleting; our sleep has suffered and many of us have lost a sense of basic safety, affecting our capacity to relax. But the circumstances and stresses we face are individual, which means the remedy is probably also individual.

    Continue reading...", + "content": "

    When we feel extreme fatigue most of us focus on sleep problems. But proper relaxation takes many forms. I spent a week exploring what really works

    “Are you the most tired you can ever remember being?” asks a friend. Well, yes. I have it easy – my caring responsibilities are limited and my work is physically undemanding and very low stakes – but I am wrecked. The brain fog, tearful confusion and deep lethargy I feel seems near universal. A viral tweet from February asked: “Just to confirm … everyone feels tired ALL the time no matter how much sleep they get or caffeine they consume?” The 71,000-plus retweets seemed to confirm it’s the case.

    But when we say we are exhausted, or Google “Why am I tired all the time?” (searches were reportedly at an all-time high between July and September this year), what do we mean? Yes, pandemic living is, objectively, exhausting. Existing on high alert is physically and mentally depleting; our sleep has suffered and many of us have lost a sense of basic safety, affecting our capacity to relax. But the circumstances and stresses we face are individual, which means the remedy is probably also individual.

    Continue reading...", + "category": "Sleep", + "link": "https://www.theguardian.com/lifeandstyle/2021/nov/25/the-seven-types-of-rest-i-spent-a-week-trying-them-all-could-they-help-end-my-exhaustion", + "creator": "Emma Beddington", + "pubDate": "2021-11-25T06:00:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Is society coming apart? | Jill Lepore", + "description": "

    Reconstruction after Covid: a new series of long reads

    Despite Thatcher and Reagan’s best efforts, there is and has always been such a thing as society. The question is not whether it exists, but what shape it must take in a post-pandemic world

    In March 2020, Boris Johnson, pale and exhausted, self-isolating in his flat on Downing Street, released a video of himself – that he had taken himself – reassuring Britons that they would get through the pandemic, together. “One thing I think the coronavirus crisis has already proved is that there really is such a thing as society,” the prime minister announced, confirming the existence of society while talking to his phone, alone in a room.

    All this was very odd. Johnson seemed at once frantic and weak (not long afterwards, he was admitted to hospital and put in the intensive care unit). Had he, in his feverishness, undergone a political conversion? Because, by announcing the existence of society, Johnson appeared to renounce, publicly, something Margaret Thatcher had said in an interview in 1987, in remarks that are often taken as a definition of modern conservatism. “Too many children and people have been given to understand ‘I have a problem, it is the government’s job to cope with it!’” Thatcher said. “They are casting their problems on society, and who is society? There is no such thing!” She, however, had not contracted Covid-19.

    Continue reading...", + "content": "

    Reconstruction after Covid: a new series of long reads

    Despite Thatcher and Reagan’s best efforts, there is and has always been such a thing as society. The question is not whether it exists, but what shape it must take in a post-pandemic world

    In March 2020, Boris Johnson, pale and exhausted, self-isolating in his flat on Downing Street, released a video of himself – that he had taken himself – reassuring Britons that they would get through the pandemic, together. “One thing I think the coronavirus crisis has already proved is that there really is such a thing as society,” the prime minister announced, confirming the existence of society while talking to his phone, alone in a room.

    All this was very odd. Johnson seemed at once frantic and weak (not long afterwards, he was admitted to hospital and put in the intensive care unit). Had he, in his feverishness, undergone a political conversion? Because, by announcing the existence of society, Johnson appeared to renounce, publicly, something Margaret Thatcher had said in an interview in 1987, in remarks that are often taken as a definition of modern conservatism. “Too many children and people have been given to understand ‘I have a problem, it is the government’s job to cope with it!’” Thatcher said. “They are casting their problems on society, and who is society? There is no such thing!” She, however, had not contracted Covid-19.

    Continue reading...", + "category": "Society", + "link": "https://www.theguardian.com/society/2021/nov/25/society-thatcher-reagan-covid-pandemic", + "creator": "Jill Lepore", + "pubDate": "2021-11-25T06:00:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "South Korea trials robots in preschools to prepare children for high-tech future", + "description": "

    The 25cm-tall robots that sing, dance and do kung-fu used as teaching aids in 300 childcare centres across Seoul

    Seoul has started trialling pint-sized robots as teaching aids in kindergartens – a pilot project the city government said would help prepare the next generation for a hi-tech future.

    The “Alpha Mini” is just 24.5 centimetres tall and can dance, lead sing-a-longs, recite stories and even teach kung fu moves as children mimic its push-ups and one-legged balances.

    Continue reading...", + "content": "

    The 25cm-tall robots that sing, dance and do kung-fu used as teaching aids in 300 childcare centres across Seoul

    Seoul has started trialling pint-sized robots as teaching aids in kindergartens – a pilot project the city government said would help prepare the next generation for a hi-tech future.

    The “Alpha Mini” is just 24.5 centimetres tall and can dance, lead sing-a-longs, recite stories and even teach kung fu moves as children mimic its push-ups and one-legged balances.

    Continue reading...", + "category": "South Korea", + "link": "https://www.theguardian.com/world/2021/nov/25/south-korea-trials-robots-in-preschools-to-prepare-children-for-high-tech-future", + "creator": "Agence France-Presse", + "pubDate": "2021-11-25T05:10:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Channel drownings: UK and France trade accusations after tragedy at sea", + "description": "

    Boris Johnson renews calls for France to agree to joint patrols along its coast, while Emmanuel Macron urges UK not to politicise the flow of migrants

    British and French leaders have traded accusations after at least 27 people died trying to cross the Channel in the deadliest incident since the current migration crisis began.

    In a phone call with Boris Johnson on Wednesday night, French president Emmanuel Macron stressed “the shared responsibility” of France and the UK, and told Johnson he expected full cooperation and that the situation would not be used “for political purposes”, the Élysée said.

    Continue reading...", + "content": "

    Boris Johnson renews calls for France to agree to joint patrols along its coast, while Emmanuel Macron urges UK not to politicise the flow of migrants

    British and French leaders have traded accusations after at least 27 people died trying to cross the Channel in the deadliest incident since the current migration crisis began.

    In a phone call with Boris Johnson on Wednesday night, French president Emmanuel Macron stressed “the shared responsibility” of France and the UK, and told Johnson he expected full cooperation and that the situation would not be used “for political purposes”, the Élysée said.

    Continue reading...", + "category": "Immigration and asylum", + "link": "https://www.theguardian.com/uk-news/2021/nov/25/channel-drownings-uk-and-france-trade-accusations-after-tragedy-at-sea", + "creator": "Virginia Harrison, Rajeev Syal, Angelique Chrisafis, Diane Taylor and agencies", + "pubDate": "2021-11-25T05:10:01Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pakistan orders Monday closure of schools and offices in Lahore to cut smog", + "description": "

    Officials hope three-day weekend will help reduce toxic pollution levels in country’s second largest city

    Pakistan has ordered private offices and schools to remain closed on Mondays in Lahore in the hope that a three-day weekend will help reduce toxic levels of smog in the country’s second-largest city.

    The directive, issued by Punjab relief commissioner Babar Hayat Tarar, aimed to act “as a preventive and speedy remedy” during the winter smog season and will last until 15 January.

    Continue reading...", + "content": "

    Officials hope three-day weekend will help reduce toxic pollution levels in country’s second largest city

    Pakistan has ordered private offices and schools to remain closed on Mondays in Lahore in the hope that a three-day weekend will help reduce toxic levels of smog in the country’s second-largest city.

    The directive, issued by Punjab relief commissioner Babar Hayat Tarar, aimed to act “as a preventive and speedy remedy” during the winter smog season and will last until 15 January.

    Continue reading...", + "category": "Pakistan", + "link": "https://www.theguardian.com/world/2021/nov/25/pakistan-orders-monday-closure-of-schools-and-offices-in-lahore-to-cut-smog", + "creator": "Shah Meer Baloch in Lahore", + "pubDate": "2021-11-25T05:00:01Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China seeks to spin Peng Shuai’s #MeToo allegation into an ideological dispute", + "description": "

    Analysis: experts say emphasis on the west and international diplomacy obfuscates the original allegation

    Despite endless speculation from international press in recent weeks, there has been barely a mention of tennis star Peng Shuai’s bombshell allegation against Zhang Gaoli, the country’s former vice-premier, in domestic news coverage. Outside the country, the event was initially referred to by the editor of the official nationalist tabloid Global Times, Hu Xijin, only as “the thing people talked about”.

    “For some years now, China has responded to negative global attention either by giving an unconvincing explanation, or by stoically pretending the criticism isn’t there,” Zhang Ming, a retired professor of politics at Renmin University told Reuters this week.

    Continue reading...", + "content": "

    Analysis: experts say emphasis on the west and international diplomacy obfuscates the original allegation

    Despite endless speculation from international press in recent weeks, there has been barely a mention of tennis star Peng Shuai’s bombshell allegation against Zhang Gaoli, the country’s former vice-premier, in domestic news coverage. Outside the country, the event was initially referred to by the editor of the official nationalist tabloid Global Times, Hu Xijin, only as “the thing people talked about”.

    “For some years now, China has responded to negative global attention either by giving an unconvincing explanation, or by stoically pretending the criticism isn’t there,” Zhang Ming, a retired professor of politics at Renmin University told Reuters this week.

    Continue reading...", + "category": "Peng Shuai", + "link": "https://www.theguardian.com/sport/2021/nov/25/china-seeks-peng-shuai-metoo-allegation-ideological-dispute", + "creator": "Vincent Ni, China affairs correspondent", + "pubDate": "2021-11-25T04:35:26Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Bawled my eyes out’: tears and cheers of New Zealanders free to head home", + "description": "

    Lifting of strict isolation rules brings wave of relief – but some say being locked out has soured their view of ‘home’ forever

    New Zealanders stranded overseas and desperate to return home have shed tears of relief they will soon be able to skip the country’s managed isolation system. But for many the news is bittersweet as they still face another summer separated from loved ones, amid anger that a decision did not come sooner.

    The country will reopen its borders to vaccinated visitors in the opening months of 2022, for the first time since the prime minister, Jacinda Ardern, announced their snap closure in the first month of the Covid-19 pandemic. The country’s borders have been closed to unrestricted travel for more than a year and a half.

    Continue reading...", + "content": "

    Lifting of strict isolation rules brings wave of relief – but some say being locked out has soured their view of ‘home’ forever

    New Zealanders stranded overseas and desperate to return home have shed tears of relief they will soon be able to skip the country’s managed isolation system. But for many the news is bittersweet as they still face another summer separated from loved ones, amid anger that a decision did not come sooner.

    The country will reopen its borders to vaccinated visitors in the opening months of 2022, for the first time since the prime minister, Jacinda Ardern, announced their snap closure in the first month of the Covid-19 pandemic. The country’s borders have been closed to unrestricted travel for more than a year and a half.

    Continue reading...", + "category": "New Zealand", + "link": "https://www.theguardian.com/world/2021/nov/25/bawled-my-eyes-out-tears-and-cheers-of-new-zealanders-free-to-head-home", + "creator": "Eva Corlett in Wellington", + "pubDate": "2021-11-25T04:04:33Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sweden’s first female prime minister resigns less than 12 hours into job – video", + "description": "

    Sweden’s first female prime minister, the Social Democrat Magdalena Andersson, has resigned less than 12 hours into the job when her coalition collapsed. Andersson said a decision by the Green party, the junior party in the coalition, to quit had forced her to resign from the post. 'I have asked the speaker to be relieved of my duties as prime minister,' Andersson said. 'I am ready to be prime minister in a single-party, Social Democrat government.'

    Continue reading...", + "content": "

    Sweden’s first female prime minister, the Social Democrat Magdalena Andersson, has resigned less than 12 hours into the job when her coalition collapsed. Andersson said a decision by the Green party, the junior party in the coalition, to quit had forced her to resign from the post. 'I have asked the speaker to be relieved of my duties as prime minister,' Andersson said. 'I am ready to be prime minister in a single-party, Social Democrat government.'

    Continue reading...", + "category": "Sweden", + "link": "https://www.theguardian.com/world/video/2021/nov/25/swedens-first-female-prime-minister-resigns-less-than-12-hours-into-job-video", + "creator": "", + "pubDate": "2021-11-25T02:43:44Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "North American fertilizer shortage sparks fears of higher food prices", + "description": "

    Warning to ‘get your fertilizer now’ as farmers postpone nitrogen purchases, raising threat of rush on supplies before planting season

    A global shortage of nitrogen fertilizer is driving prices to record levels, prompting North America’s farmers to delay purchases and raising the risk of a spring scramble to apply the crop nutrient before planting season.

    Farmers apply nitrogen to boost yields of corn, canola and wheat, and higher fertilizer costs could translate into higher meat and bread prices.

    Continue reading...", + "content": "

    Warning to ‘get your fertilizer now’ as farmers postpone nitrogen purchases, raising threat of rush on supplies before planting season

    A global shortage of nitrogen fertilizer is driving prices to record levels, prompting North America’s farmers to delay purchases and raising the risk of a spring scramble to apply the crop nutrient before planting season.

    Farmers apply nitrogen to boost yields of corn, canola and wheat, and higher fertilizer costs could translate into higher meat and bread prices.

    Continue reading...", + "category": "Farming", + "link": "https://www.theguardian.com/environment/2021/nov/25/fertilizer-shortage-north-america-farmers-food-prices", + "creator": "Reuters", + "pubDate": "2021-11-25T00:54:56Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New Zealand opposition leader Judith Collins ousted after move to demote rival backfires", + "description": "

    New National party leader will be chosen next week, with former Air New Zealand boss Chris Luxon a favourite for the job

    Judith Collins, leader of New Zealand’s opposition National party, has been toppled after months of poor polling and a shock move to strip a political rival of his portfolios.

    MPs voted to end Collins’ leadership at a crisis caucus meeting on Thursday. The meeting was prompted after Collins demoted Simon Bridges, a former party leader and one of her rivals. Late on Wednesday night, she stripped Bridges of all of his portfolios, citing an inappropriate comment made by Bridges in 2017 in front of a female colleague– where Bridges says he discussed “old wives tales” about how he and his wife might produce a female child. Collins described the comment as “serious misconduct”.

    Continue reading...", + "content": "

    New National party leader will be chosen next week, with former Air New Zealand boss Chris Luxon a favourite for the job

    Judith Collins, leader of New Zealand’s opposition National party, has been toppled after months of poor polling and a shock move to strip a political rival of his portfolios.

    MPs voted to end Collins’ leadership at a crisis caucus meeting on Thursday. The meeting was prompted after Collins demoted Simon Bridges, a former party leader and one of her rivals. Late on Wednesday night, she stripped Bridges of all of his portfolios, citing an inappropriate comment made by Bridges in 2017 in front of a female colleague– where Bridges says he discussed “old wives tales” about how he and his wife might produce a female child. Collins described the comment as “serious misconduct”.

    Continue reading...", + "category": "New Zealand", + "link": "https://www.theguardian.com/world/2021/nov/25/new-zealand-opposition-leader-judith-collins-ousted-after-move-to-demote-rival-backfires", + "creator": "Eva Corlett in Wellington and Tess McClure in Christchurch", + "pubDate": "2021-11-25T00:28:15Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dinghy deaths tragedy brings home our hostility to the world’s desperate", + "description": "

    Closing off all safer options forces abject refugees to approach our shores by the most perilous means

    The sheer terror of crossing the busy, dark and freezing cold Channel between France and the UK in a flimsy, unseaworthy boat was best described by 12-year-old Mohammad, who made the journey with his mother and eight-year-old sister in June after fleeing Afghanistan before the Taliban takeover. “It was like a horror movie,” he said. And that was summer – not the depths of November.

    Mohammad and his sister survived the 21-mile journey made through the night. They are among thousands of children thought to have crossed the Channel in small boats this year.

    Continue reading...", + "content": "

    Closing off all safer options forces abject refugees to approach our shores by the most perilous means

    The sheer terror of crossing the busy, dark and freezing cold Channel between France and the UK in a flimsy, unseaworthy boat was best described by 12-year-old Mohammad, who made the journey with his mother and eight-year-old sister in June after fleeing Afghanistan before the Taliban takeover. “It was like a horror movie,” he said. And that was summer – not the depths of November.

    Mohammad and his sister survived the 21-mile journey made through the night. They are among thousands of children thought to have crossed the Channel in small boats this year.

    Continue reading...", + "category": "Refugees", + "link": "https://www.theguardian.com/world/2021/nov/24/dinghy-deaths-tragedy-brings-home-our-hostility-to-the-worlds-desperate", + "creator": "Diane Taylor and Angelique Chrisafis in Paris", + "pubDate": "2021-11-24T22:22:42Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘A long fight’: relief across the US as men convicted of murdering Ahmaud Arbery", + "description": "

    ‘I never thought this day would come,’ says Ahmaud Arbery’s mother as some say it’s ‘not true justice’

    Relief, emotion and a sense of hope came flooding out in Brunswick, on social media, from the White House and across the US as the nation came to terms with the Ahmaud Arbery verdicts and their place in history.

    Outside the Georgia courthouse, a joyous, flag-waving crowd repeatedly chanted: “Ahmaud Arbery! Say his name!” as the Arbery family, surrounded by their attorneys, emerged to address them.

    Continue reading...", + "content": "

    ‘I never thought this day would come,’ says Ahmaud Arbery’s mother as some say it’s ‘not true justice’

    Relief, emotion and a sense of hope came flooding out in Brunswick, on social media, from the White House and across the US as the nation came to terms with the Ahmaud Arbery verdicts and their place in history.

    Outside the Georgia courthouse, a joyous, flag-waving crowd repeatedly chanted: “Ahmaud Arbery! Say his name!” as the Arbery family, surrounded by their attorneys, emerged to address them.

    Continue reading...", + "category": "Ahmaud Arbery", + "link": "https://www.theguardian.com/us-news/2021/nov/24/ahmaud-arbery-murder-georgia-reaction", + "creator": "Richard Luscombe", + "pubDate": "2021-11-24T21:37:56Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bosnia and surrounding region still heading for crisis, says top official", + "description": "

    International community’s high representative calls for diplomatic engagement from US and Europe

    The top international official in Bosnia has said that the Serb separatist threat to re-establish their own army had receded for now, but the country and surrounding region were still heading for crisis without substantial diplomatic engagement from the US and Europe.

    Christian Schmidt, a German former minister serving as the international community’s high representative to Bosnia-Herzegovina, said the Serb separatist leader, Milorad Dodik, had been persuaded by regional leaders to suspend his plans to pull Serb soldiers out of the Bosnian national army and reconstitute a Bosnian Serb force.

    Continue reading...", + "content": "

    International community’s high representative calls for diplomatic engagement from US and Europe

    The top international official in Bosnia has said that the Serb separatist threat to re-establish their own army had receded for now, but the country and surrounding region were still heading for crisis without substantial diplomatic engagement from the US and Europe.

    Christian Schmidt, a German former minister serving as the international community’s high representative to Bosnia-Herzegovina, said the Serb separatist leader, Milorad Dodik, had been persuaded by regional leaders to suspend his plans to pull Serb soldiers out of the Bosnian national army and reconstitute a Bosnian Serb force.

    Continue reading...", + "category": "Bosnia-Herzegovina", + "link": "https://www.theguardian.com/world/2021/nov/24/bosnia-and-surrounding-region-still-heading-for-crisis-says-top-official", + "creator": "Julian Borger in Washington", + "pubDate": "2021-11-24T20:37:29Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Logbooks linked to Antarctic explorers Shackleton and Scott found in storage room", + "description": "

    ‘Priceless’ artefacts recording details of the famed expeditions of the 1910s were discovered in the vaults of New Zealand’s meteorological service

    “Priceless” artefacts linked to Antarctic explorers Ernest Shackleton and Capt Robert Falcon Scott have been unearthed in a surprise discovery within the dark storage room of New Zealand’s meterological service.

    Metservice staff came across a set of logbooks from some of the most famous Antarctic expeditions while preparing to move buildings in Wellington.

    Continue reading...", + "content": "

    ‘Priceless’ artefacts recording details of the famed expeditions of the 1910s were discovered in the vaults of New Zealand’s meteorological service

    “Priceless” artefacts linked to Antarctic explorers Ernest Shackleton and Capt Robert Falcon Scott have been unearthed in a surprise discovery within the dark storage room of New Zealand’s meterological service.

    Metservice staff came across a set of logbooks from some of the most famous Antarctic expeditions while preparing to move buildings in Wellington.

    Continue reading...", + "category": "New Zealand", + "link": "https://www.theguardian.com/world/2021/nov/25/logbooks-linked-to-antarctic-explorers-shackleton-and-scott-found-in-storage-room", + "creator": "Eva Corlett in Wellington", + "pubDate": "2021-11-24T20:07:26Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ahmaud Arbery: the moment Travis McMichael received guilty verdict – video", + "description": "

    Travis McMichael, Greg McMichael and William Bryan have been found guilty of murdering Ahmaud Arbery.

    The three men pursued Arbery, a 25-year-old Black man, through their neighborhood on 23 February 2020, before Travis McMichael shot and killed him.

    The men were also found guilty on several other charges, including aggravated assault, false imprisonment, and criminal attempt to commit a felony.

    Continue reading...", + "content": "

    Travis McMichael, Greg McMichael and William Bryan have been found guilty of murdering Ahmaud Arbery.

    The three men pursued Arbery, a 25-year-old Black man, through their neighborhood on 23 February 2020, before Travis McMichael shot and killed him.

    The men were also found guilty on several other charges, including aggravated assault, false imprisonment, and criminal attempt to commit a felony.

    Continue reading...", + "category": "US news", + "link": "https://www.theguardian.com/us-news/video/2021/nov/24/ahmaud-arbery-the-moment-travis-mcmichael-received-guilty-verdict-video", + "creator": "", + "pubDate": "2021-11-24T19:22:25Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "From environment to economy: what to expect from new German government", + "description": "

    Analysis: coalition wants Germany to remain Europe’s ‘anchor of stability’ but there will be some changes

    Led by a party that has acted as Angela Merkel’s junior coalition partner for 12 of the last 16 years, and two parties with an energy to do things differently, Germany’s next government represents an odd mix of status quo thinking and reformist instincts.

    The coalition agreement presented by the Social Democratic party (SPD), the Greens and the Free Democratic party (FDP) on Wednesday gives a hint of how German could change – and how it could stay the same.

    Continue reading...", + "content": "

    Analysis: coalition wants Germany to remain Europe’s ‘anchor of stability’ but there will be some changes

    Led by a party that has acted as Angela Merkel’s junior coalition partner for 12 of the last 16 years, and two parties with an energy to do things differently, Germany’s next government represents an odd mix of status quo thinking and reformist instincts.

    The coalition agreement presented by the Social Democratic party (SPD), the Greens and the Free Democratic party (FDP) on Wednesday gives a hint of how German could change – and how it could stay the same.

    Continue reading...", + "category": "Germany", + "link": "https://www.theguardian.com/world/2021/nov/24/from-environment-to-economy-what-to-expect-from-new-german-government", + "creator": "Philip Oltermann in Berlin", + "pubDate": "2021-11-24T19:21:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Key moments from the Ahmaud Arbery murder trial – video report", + "description": "

    A jury returned guilty verdicts in the trial of three white men accused of murdering Ahmaud Arbery in 2020.

    Allegedly believing him to be a burglar, Travis McMichael, his father Greg McMichael and their neighbour William 'Roddie' Bryan pursued Arbery through a south Georgia neighbourhood in their pickup trucks, before a confrontation in which Travis McMichael shot Arbery dead.

    In a case that has become part of the campaign for racial justice in the US, the defendants have pleaded not guilty to all charges claiming they acted in self-defense.

    Prosecutors have argued the men had no legal right to attempt to detain Arbery, who was unarmed and described by his family as an avid runner.

    The three men face life in prison if found guilty of murder.

    Continue reading...", + "content": "

    A jury returned guilty verdicts in the trial of three white men accused of murdering Ahmaud Arbery in 2020.

    Allegedly believing him to be a burglar, Travis McMichael, his father Greg McMichael and their neighbour William 'Roddie' Bryan pursued Arbery through a south Georgia neighbourhood in their pickup trucks, before a confrontation in which Travis McMichael shot Arbery dead.

    In a case that has become part of the campaign for racial justice in the US, the defendants have pleaded not guilty to all charges claiming they acted in self-defense.

    Prosecutors have argued the men had no legal right to attempt to detain Arbery, who was unarmed and described by his family as an avid runner.

    The three men face life in prison if found guilty of murder.

    Continue reading...", + "category": "Ahmaud Arbery", + "link": "https://www.theguardian.com/us-news/video/2021/nov/24/key-moments-from-the-ahmaud-arbery-trial-video-report", + "creator": "", + "pubDate": "2021-11-24T18:53:41Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Scientists warn of new Covid variant with high number of mutations", + "description": "

    The B.1.1.529 variant was first spotted in Botswana and six cases have been found in South Africa

    Scientists have said a new Covid variant that carries an “extremely high number” of mutations may drive further waves of disease by evading the body’s defences.

    Only 10 cases in three countries have been confirmed by genomic sequencing, but the variant has sparked serious concern among some researchers because a number of the mutations may help the virus evade immunity.

    Continue reading...", + "content": "

    The B.1.1.529 variant was first spotted in Botswana and six cases have been found in South Africa

    Scientists have said a new Covid variant that carries an “extremely high number” of mutations may drive further waves of disease by evading the body’s defences.

    Only 10 cases in three countries have been confirmed by genomic sequencing, but the variant has sparked serious concern among some researchers because a number of the mutations may help the virus evade immunity.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/24/scientists-warn-of-new-covid-variant-with-high-number-of-mutations", + "creator": "Ian Sample Science editor", + "pubDate": "2021-11-24T18:30:16Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sweden’s first female prime minister resigns after less than 12 hours", + "description": "

    Magdalena Andersson quits on day one after the Green party withdraws support for her budget

    Sweden’s first female prime minister, the Social Democrat Magdalena Andersson, has resigned less than 12 hours into the job when her coalition collapsed, plunging the country into further political uncertainty.

    Andersson said a decision by the Green party, the junior party in the coalition, to quit had forced her to resign. She added that she had told the speaker of parliament she hoped to be appointed prime minister again as the head of a single-party government.

    Continue reading...", + "content": "

    Magdalena Andersson quits on day one after the Green party withdraws support for her budget

    Sweden’s first female prime minister, the Social Democrat Magdalena Andersson, has resigned less than 12 hours into the job when her coalition collapsed, plunging the country into further political uncertainty.

    Andersson said a decision by the Green party, the junior party in the coalition, to quit had forced her to resign. She added that she had told the speaker of parliament she hoped to be appointed prime minister again as the head of a single-party government.

    Continue reading...", + "category": "Sweden", + "link": "https://www.theguardian.com/world/2021/nov/24/swedens-first-female-prime-minister-resigns-after-less-than-12-hours", + "creator": "Agencies in Stockholm", + "pubDate": "2021-11-24T18:15:16Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Erdoğan gambles on economy amid protests and rocketing inflation", + "description": "

    Analysis: push for interest rate cuts has divided party and left Turkish president in precarious position, say experts

    Turkey’s president is gambling that a strong economic recovery from the pandemic will stay on track despite rocketing inflation that has hit living standards and sparked protests in major cities.

    The $750bn economy is on course to expand by 9% this year following a return of tourism and a surge in demand for exports that has pushed factory output to pre-pandemic levels.

    Continue reading...", + "content": "

    Analysis: push for interest rate cuts has divided party and left Turkish president in precarious position, say experts

    Turkey’s president is gambling that a strong economic recovery from the pandemic will stay on track despite rocketing inflation that has hit living standards and sparked protests in major cities.

    The $750bn economy is on course to expand by 9% this year following a return of tourism and a surge in demand for exports that has pushed factory output to pre-pandemic levels.

    Continue reading...", + "category": "Turkey", + "link": "https://www.theguardian.com/world/2021/nov/24/erdogan-gambles-on-economy-amid-protests-and-rocketing-inflation", + "creator": "Phillip Inman", + "pubDate": "2021-11-24T18:00:18Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Battlefield 2042 review – war in the eye of the storm", + "description": "

    PC, Xbox One/Series X/S, PlayStation 4/5; Dice/EA
    In a series known for its scale and spectacle, climate change and technical issues are the new enemies

    They say war is hell, don’t they, and also that hell is other people. So perhaps we should all have seen the chaos coming, when Electronic Arts proudly announced that 128-player matches were coming to Battlefield. We should have learned from trying to board the tube at rush hour what 128 people all vying simultaneously to complete an objective feels like, and it’s not often pleasant. Battlefield 2042 has many problems, but much potential. The ingredients for awe-inspiring war games are here, but don’t always come together – at least, not yet.

    This venerable shooter series’ characteristic bombast and spectacle is alive and well. 2042 is set under the extreme weather conditions that ravage our near future, trigger the dissolution of most nation states, and begin a war fought by stateless “no-pats” what resources are left on Earth. Running headlong into a tornado with 63 other players while another 64 await you on the other side of its vortex will leave you feeling awestruck the first time. But it doesn’t serve a match of Conquest (capture control points) or Breakthrough (capture control points, but this time in order) particularly well.

    Continue reading...", + "content": "

    PC, Xbox One/Series X/S, PlayStation 4/5; Dice/EA
    In a series known for its scale and spectacle, climate change and technical issues are the new enemies

    They say war is hell, don’t they, and also that hell is other people. So perhaps we should all have seen the chaos coming, when Electronic Arts proudly announced that 128-player matches were coming to Battlefield. We should have learned from trying to board the tube at rush hour what 128 people all vying simultaneously to complete an objective feels like, and it’s not often pleasant. Battlefield 2042 has many problems, but much potential. The ingredients for awe-inspiring war games are here, but don’t always come together – at least, not yet.

    This venerable shooter series’ characteristic bombast and spectacle is alive and well. 2042 is set under the extreme weather conditions that ravage our near future, trigger the dissolution of most nation states, and begin a war fought by stateless “no-pats” what resources are left on Earth. Running headlong into a tornado with 63 other players while another 64 await you on the other side of its vortex will leave you feeling awestruck the first time. But it doesn’t serve a match of Conquest (capture control points) or Breakthrough (capture control points, but this time in order) particularly well.

    Continue reading...", + "category": "Games", + "link": "https://www.theguardian.com/games/2021/nov/24/battlefield-2042-review-war-pc-xbox-one-series-x-s-playstation-dice-ea", + "creator": "Phil Iwaniuk", + "pubDate": "2021-11-24T13:28:59Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Belgian court awards damages to couple who had twins after IVF mix-up", + "description": "

    Parents wanted second child to act as bone marrow donor to their son but ended up with three

    A hospital in Belgium has been ordered to compensate a couple for their “shock” and “impoverishment” after they ended up having three children by IVF treatment due to a mistake in its fertility clinic.

    It is the first time the Belgian courts have found that a healthy child can be the cause of loss to parents.

    Continue reading...", + "content": "

    Parents wanted second child to act as bone marrow donor to their son but ended up with three

    A hospital in Belgium has been ordered to compensate a couple for their “shock” and “impoverishment” after they ended up having three children by IVF treatment due to a mistake in its fertility clinic.

    It is the first time the Belgian courts have found that a healthy child can be the cause of loss to parents.

    Continue reading...", + "category": "Belgium", + "link": "https://www.theguardian.com/world/2021/nov/24/belgian-court-awards-damages-to-couple-who-had-twins-after-ivf-mix-up", + "creator": "Daniel Boffey in Brussels", + "pubDate": "2021-11-24T13:28:39Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Donald Trump calls Kyle Rittenhouse ‘really a nice young man’ after visit", + "description": "

    The teenager who was acquitted after killing two people in Kenosha visited the former president at his Mar-a-Lago resort

    A teenager acquitted of murdering two men and wounding another last year during racially based protests in Wisconsin reportedly visited Donald Trump at his Florida resort, with the former president describing Kyle Rittenhouse as “really a nice young man”.

    Trump revealed the visit in an interview with the TV show host Sean Hannity that aired on Fox News on Tuesday night. It was accompanied by a photograph of the pair together at Trump’s Mar-a-Lago resort in Palm Beach, where the former president lives.

    Continue reading...", + "content": "

    The teenager who was acquitted after killing two people in Kenosha visited the former president at his Mar-a-Lago resort

    A teenager acquitted of murdering two men and wounding another last year during racially based protests in Wisconsin reportedly visited Donald Trump at his Florida resort, with the former president describing Kyle Rittenhouse as “really a nice young man”.

    Trump revealed the visit in an interview with the TV show host Sean Hannity that aired on Fox News on Tuesday night. It was accompanied by a photograph of the pair together at Trump’s Mar-a-Lago resort in Palm Beach, where the former president lives.

    Continue reading...", + "category": "Kyle Rittenhouse", + "link": "https://www.theguardian.com/us-news/2021/nov/24/donald-trump-kyle-rittenhouse-really-a-nice-young-man-after-visit", + "creator": "Richard Luscombe in Miami", + "pubDate": "2021-11-24T13:27:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid live: France to announce new measures as cases surge; Italy ‘super green pass’ could restrict unvaccinated", + "description": "

    France is to announce new Covid measures on Thursday; Italy considering plans that would only permit those with proof of jab to get into venues

    The health service in the UK is considering “radical ideas” to help tackle the backlog of care that has built-up over the last few years and been exacerbated by the Covid pandemic. That includes the idea of sending patients to different regions for treatment, the chief executive of NHS Providers has said.

    But Chris Hopson told Times Radio it is more likely that people will be asked to go to neighbouring hospitals rather than different parts of the country. PA Media quote him saying:

    Everybody across the NHS recognises that having patients wait for their care is not an acceptable situation. There is a moral obligation on trusts and their leaders to make sure that they do everything they can, no stone unturned, to get through those care backlogs as quickly as possible.

    What we’re working on at the moment is a really comprehensive plan to get through those backlogs as fast as possible. And some of it will be all the traditional things that we do, which is: we will expand temporary capacity; we will ensure that we use overtime as much as possible; we will ensure that we use the capacity that sits in the independent sector.

    Continue reading...", + "content": "

    France is to announce new Covid measures on Thursday; Italy considering plans that would only permit those with proof of jab to get into venues

    The health service in the UK is considering “radical ideas” to help tackle the backlog of care that has built-up over the last few years and been exacerbated by the Covid pandemic. That includes the idea of sending patients to different regions for treatment, the chief executive of NHS Providers has said.

    But Chris Hopson told Times Radio it is more likely that people will be asked to go to neighbouring hospitals rather than different parts of the country. PA Media quote him saying:

    Everybody across the NHS recognises that having patients wait for their care is not an acceptable situation. There is a moral obligation on trusts and their leaders to make sure that they do everything they can, no stone unturned, to get through those care backlogs as quickly as possible.

    What we’re working on at the moment is a really comprehensive plan to get through those backlogs as fast as possible. And some of it will be all the traditional things that we do, which is: we will expand temporary capacity; we will ensure that we use overtime as much as possible; we will ensure that we use the capacity that sits in the independent sector.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/live/2021/nov/24/covid-news-live-south-korea-reports-record-daily-cases-us-to-require-vaccination-proof-at-all-border-crossings", + "creator": "Miranda Bryant (now); Martin Belam and Samantha Lock (earlier)", + "pubDate": "2021-11-24T13:23:17Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "German parties agree coalition deal to make Olaf Scholz chancellor", + "description": "

    Social Democrat, Green and liberal parties agree to form government after two months of talks

    Germany’s Social Democrat, Green and liberal parties have agreed on a deal to form a new government that will see Olaf Scholz, the current finance minister, succeed Angela Merkel as the country’s new leader, local media has reported.

    The three parties, known collectively as the “traffic light coalition” due to their colours – red, green and yellow – are due to present their agreement on Wednesday afternoon in Berlin.

    Continue reading...", + "content": "

    Social Democrat, Green and liberal parties agree to form government after two months of talks

    Germany’s Social Democrat, Green and liberal parties have agreed on a deal to form a new government that will see Olaf Scholz, the current finance minister, succeed Angela Merkel as the country’s new leader, local media has reported.

    The three parties, known collectively as the “traffic light coalition” due to their colours – red, green and yellow – are due to present their agreement on Wednesday afternoon in Berlin.

    Continue reading...", + "category": "Germany", + "link": "https://www.theguardian.com/world/2021/nov/24/german-parties-agree-coalition-deal-to-make-olaf-scholz-chancellor", + "creator": "Kate Connolly Berlin", + "pubDate": "2021-11-24T13:06:12Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UK Covid scheme indirectly discriminated against maternity leave takers, court rules", + "description": "

    But ruling will not allow self-employed women whose income support was hit during pandemic to claim rebates

    Tens of thousands of self-employed women who took maternity leave were indirectly discriminated against by the UK government during the pandemic but will be unable to claim rebates, the court of appeal has ruled.

    The speed at which civil servants had to create a safety net for workers justified their actions, three judges found.

    Continue reading...", + "content": "

    But ruling will not allow self-employed women whose income support was hit during pandemic to claim rebates

    Tens of thousands of self-employed women who took maternity leave were indirectly discriminated against by the UK government during the pandemic but will be unable to claim rebates, the court of appeal has ruled.

    The speed at which civil servants had to create a safety net for workers justified their actions, three judges found.

    Continue reading...", + "category": "Court of appeal", + "link": "https://www.theguardian.com/law/2021/nov/24/uk-covid-scheme-indirectly-discriminated-against-maternity-leave-takers-court-rules", + "creator": "Alexandra Topping", + "pubDate": "2021-11-24T12:45:49Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "El Salvador rights groups fear repression after raids on seven offices", + "description": "

    NGOs believe raids, officially part of an embezzlement inquiry, are an attempt to ‘criminalise social movements’

    Rights activists in El Salvador said they will not be pressured into silence after prosecutors raided the offices of seven charities and groups in the Central American country.

    “They’re trying to criminalise social movements,” said Morena Herrera, a prominent women’s rights activist. “They can’t accept that they are in support of a better El Salvador.”

    Continue reading...", + "content": "

    NGOs believe raids, officially part of an embezzlement inquiry, are an attempt to ‘criminalise social movements’

    Rights activists in El Salvador said they will not be pressured into silence after prosecutors raided the offices of seven charities and groups in the Central American country.

    “They’re trying to criminalise social movements,” said Morena Herrera, a prominent women’s rights activist. “They can’t accept that they are in support of a better El Salvador.”

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/24/el-salvador-rights-groups-fear-repression-after-raids-on-seven-offices", + "creator": "Joe Parkin Daniels", + "pubDate": "2021-11-24T12:44:58Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Boris Johnson accused of flouting request to wear mask at theatre", + "description": "

    Exclusive: Audience member at Almeida theatre says PM was not wearing mask during Macbeth performance

    Boris Johnson once again flouted official requests to wear a mask as he watched a performance of Macbeth at a busy theatre in north London on Tuesday night, witnesses say.

    The prime minister was in the audience to see the Shakespearean tragedy at the Almeida theatre in Islington, after a torrid few days in which backbench Tories have accused him of losing the plot.

    Continue reading...", + "content": "

    Exclusive: Audience member at Almeida theatre says PM was not wearing mask during Macbeth performance

    Boris Johnson once again flouted official requests to wear a mask as he watched a performance of Macbeth at a busy theatre in north London on Tuesday night, witnesses say.

    The prime minister was in the audience to see the Shakespearean tragedy at the Almeida theatre in Islington, after a torrid few days in which backbench Tories have accused him of losing the plot.

    Continue reading...", + "category": "Boris Johnson", + "link": "https://www.theguardian.com/politics/2021/nov/24/boris-johnson-accused-of-flouting-request-to-wear-mask-at-theatre", + "creator": "Rowena Mason Deputy political editor", + "pubDate": "2021-11-24T12:09:24Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to make shortbread – recipe | Felicity Cloake's masterclass", + "description": "

    Christmas shortbread as made by our resident perfectionist, with a few choices of festive flavourings

    The world may have gone mad for spiced speculoos this year, but, for me, Christmas will always be all about two biscuits: gingerbread, for decorations, and shortbread, for actual consumption. Easy to make and a genuine crowdpleaser, shortbread will keep well for several weeks, which makes it the gift that keeps on giving well into the dark days of January. Not that it’ll last that long.

    Prep 15 min
    Chill 20 min
    Cook 30 min-1 hr
    Makes About 24

    Continue reading...", + "content": "

    Christmas shortbread as made by our resident perfectionist, with a few choices of festive flavourings

    The world may have gone mad for spiced speculoos this year, but, for me, Christmas will always be all about two biscuits: gingerbread, for decorations, and shortbread, for actual consumption. Easy to make and a genuine crowdpleaser, shortbread will keep well for several weeks, which makes it the gift that keeps on giving well into the dark days of January. Not that it’ll last that long.

    Prep 15 min
    Chill 20 min
    Cook 30 min-1 hr
    Makes About 24

    Continue reading...", + "category": "Food", + "link": "https://www.theguardian.com/food/2021/nov/24/how-to-make-shortbread-recipe-felicity-cloake-masterclass", + "creator": "Felicity Cloake", + "pubDate": "2021-11-24T12:00:44Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "French footballer Karim Benzema guilty in sex tape extortion scandal", + "description": "

    Real Madrid star given suspended jail sentence and €75,000 fine for complicity in attempted blackmail

    The French international footballer Karim Benzema has received a one-year suspended jail sentence and been fined €75,000 (£63,000) for his involvement in a sex tape extortion scandal that shocked French sport.

    A Versailles court on Wednesday found Benzema guilty of complicity in attempted blackmail against his French teammate Mathieu Valbuena over a video thought to have been stolen from Valbuena’s mobile phone.

    Continue reading...", + "content": "

    Real Madrid star given suspended jail sentence and €75,000 fine for complicity in attempted blackmail

    The French international footballer Karim Benzema has received a one-year suspended jail sentence and been fined €75,000 (£63,000) for his involvement in a sex tape extortion scandal that shocked French sport.

    A Versailles court on Wednesday found Benzema guilty of complicity in attempted blackmail against his French teammate Mathieu Valbuena over a video thought to have been stolen from Valbuena’s mobile phone.

    Continue reading...", + "category": "France", + "link": "https://www.theguardian.com/world/2021/nov/24/french-footballer-karim-benzema-guilty-sex-tape-extortion-scandal", + "creator": "Angelique Chrisafis in Paris", + "pubDate": "2021-11-24T11:56:53Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Brother pays tribute to Bobbi-Anne McLeod after body found", + "description": "

    Lee McLeod describes 18-year-old who went missing in Plymouth as ‘beautiful and talented’

    The brother of an 18-year-old woman whose body was found three days after she went missing near her home in Devon has led tributes to her, describing her as “beautiful and talented”.

    Police in Plymouth launched a murder inquiry after finding a body believed to be that of Bobbi-Anne McLeod. Two men aged 24 and 26 have been arrested.

    Continue reading...", + "content": "

    Lee McLeod describes 18-year-old who went missing in Plymouth as ‘beautiful and talented’

    The brother of an 18-year-old woman whose body was found three days after she went missing near her home in Devon has led tributes to her, describing her as “beautiful and talented”.

    Police in Plymouth launched a murder inquiry after finding a body believed to be that of Bobbi-Anne McLeod. Two men aged 24 and 26 have been arrested.

    Continue reading...", + "category": "UK news", + "link": "https://www.theguardian.com/uk-news/2021/nov/24/brother-pays-tribute-to-bobbi-anne-mcleod-after-body-found", + "creator": "Steven Morris", + "pubDate": "2021-11-24T11:48:38Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Norwegian journalists reporting on World Cup workers arrested in Qatar", + "description": "

    Pair investigating conditions for labourers detained as they tried to fly home

    Two Norwegian journalists investigating conditions for migrant workers in Qatar ahead of the 2022 Fifa World Cup were arrested and detained for 36 hours as they tried to leave the country, Norwegian media have reported.

    The VG newspaper reported that Halvor Ekeland, a sports journalist for the public broadcaster NRK, and Lokman Ghorbani, an NRK cameraman, were picked up by police late on Sunday as they were preparing to leave for Doha airport.

    Continue reading...", + "content": "

    Pair investigating conditions for labourers detained as they tried to fly home

    Two Norwegian journalists investigating conditions for migrant workers in Qatar ahead of the 2022 Fifa World Cup were arrested and detained for 36 hours as they tried to leave the country, Norwegian media have reported.

    The VG newspaper reported that Halvor Ekeland, a sports journalist for the public broadcaster NRK, and Lokman Ghorbani, an NRK cameraman, were picked up by police late on Sunday as they were preparing to leave for Doha airport.

    Continue reading...", + "category": "Qatar", + "link": "https://www.theguardian.com/world/2021/nov/24/norwegian-journalists-reporting-labourers-qatar-world-cup-arrested", + "creator": "Jon Henley", + "pubDate": "2021-11-24T11:03:00Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "George Christensen advocates for civil disobedience as vaccine mandates rock Coalition", + "description": "

    Labor leader calls on Morrison to condemn member for Dawson after he likened mandates to decrees by ‘Hitler and Pol Pot’

    Scott Morrison is continuing to battle insurgencies within his own ranks, with Queensland National George Christensen sanctioning civil disobedience in response to vaccine mandates, and veteran Victorian Liberal Russell Broadbent declaring mandates “without reasonable exemptions are not only unconscionable, they are criminal”.

    Senior ministers on Wednesday persuaded two rebel Liberal senators, Gerard Rennick and Alex Antic, who have threatened to withhold support for government legislation, to support the government on procedural votes during the final sitting fortnight. The government has agreed to a tweak to the vaccine indemnity scheme.

    Continue reading...", + "content": "

    Labor leader calls on Morrison to condemn member for Dawson after he likened mandates to decrees by ‘Hitler and Pol Pot’

    Scott Morrison is continuing to battle insurgencies within his own ranks, with Queensland National George Christensen sanctioning civil disobedience in response to vaccine mandates, and veteran Victorian Liberal Russell Broadbent declaring mandates “without reasonable exemptions are not only unconscionable, they are criminal”.

    Senior ministers on Wednesday persuaded two rebel Liberal senators, Gerard Rennick and Alex Antic, who have threatened to withhold support for government legislation, to support the government on procedural votes during the final sitting fortnight. The government has agreed to a tweak to the vaccine indemnity scheme.

    Continue reading...", + "category": "Coalition", + "link": "https://www.theguardian.com/australia-news/2021/nov/24/george-christensen-advocates-for-civil-disobedience-as-vaccine-mandates-rock-coalition", + "creator": "Katharine Murphy and Paul Karp", + "pubDate": "2021-11-24T10:38:18Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘People are nasty as hell on there’: the battle to close Tattle – the most hate-filled corner of the web", + "description": "

    The gossip forum Tattle Life is a trolls’ paradise, created to scrutinise the lives of influencers. It has made a lot of enemies. Will one of them bring it down?

    Abbie Draper was so excited when she heard there was to be a big Tattle reveal that she set a reminder on her phone. On Friday, 1 October, at 7pm, Andy Malone was going to reveal the identity of the founder of the notorious website Tattle Life – the mysterious “Helen”.

    Founded in 2018, Tattle Life is a gossip forum dedicated to dissecting the lives of women in the public eye. Quietly, without mainstream recognition, Tattle has become one of the most-visited – and hate-filled – websites in the UK. There were 43.2m visits to Tattle in the last six months alone, mostly from British users. (Almost all the people discussed on Tattle are British.)

    Continue reading...", + "content": "

    The gossip forum Tattle Life is a trolls’ paradise, created to scrutinise the lives of influencers. It has made a lot of enemies. Will one of them bring it down?

    Abbie Draper was so excited when she heard there was to be a big Tattle reveal that she set a reminder on her phone. On Friday, 1 October, at 7pm, Andy Malone was going to reveal the identity of the founder of the notorious website Tattle Life – the mysterious “Helen”.

    Founded in 2018, Tattle Life is a gossip forum dedicated to dissecting the lives of women in the public eye. Quietly, without mainstream recognition, Tattle has become one of the most-visited – and hate-filled – websites in the UK. There were 43.2m visits to Tattle in the last six months alone, mostly from British users. (Almost all the people discussed on Tattle are British.)

    Continue reading...", + "category": "Cyberbullying", + "link": "https://www.theguardian.com/society/2021/nov/24/people-nasty-as-hell-on-there-battle-close-tattle-most-hate-filled-corner-web", + "creator": "Sirin Kale", + "pubDate": "2021-11-24T10:00:42Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Readers review Adele’s 30: ‘so powerful’ or a ‘depressive black hole’?", + "description": "

    It’s the biggest album of the year – and Guardian readers are split on whether Adele’s latest magnum mope-us is raw or overdone

    It’s so upfront and honest. You know exactly the story she’s telling, and even if you haven’t experienced divorce yourself, you feel every word of it. Her voice is sounding better than it’s ever done, using so much more of her range – just listen to Love is A Game. Gone are the lofty metaphors that hint at heartbreak, replaced with extremely raw and naked lyrics that welcome you in to her experiences. I think it’s much more poetic than before. Best album so far.

    Continue reading...", + "content": "

    It’s the biggest album of the year – and Guardian readers are split on whether Adele’s latest magnum mope-us is raw or overdone

    It’s so upfront and honest. You know exactly the story she’s telling, and even if you haven’t experienced divorce yourself, you feel every word of it. Her voice is sounding better than it’s ever done, using so much more of her range – just listen to Love is A Game. Gone are the lofty metaphors that hint at heartbreak, replaced with extremely raw and naked lyrics that welcome you in to her experiences. I think it’s much more poetic than before. Best album so far.

    Continue reading...", + "category": "Adele", + "link": "https://www.theguardian.com/music/2021/nov/24/readers-review-adeles-30-so-powerful-or-a-depressive-black-hole", + "creator": "Guardian readers, Rachel Obordo and Alfie Packham", + "pubDate": "2021-11-24T09:30:41Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nasa launches spacecraft in first ever mission to deflect asteroid", + "description": "

    Spacecraft heads off on 6.8m-mile journey to crash into moonlet Dimorphos in test to see if asteroids can be diverted from collision with Earth

    A spacecraft that must ultimately crash in order to succeed lifted off late on Tuesday from California on a Nasa mission to demonstrate the world’s first planetary defence system.

    Carried aboard a SpaceX-owned Falcon 9 rocket, the Dart (Double Asteroid Redirection Test) spacecraft soared into the sky at 10.21pm Pacific time from the Vandenberg US Space Force Base, about 150 miles (240km) north-west of Los Angeles.

    Continue reading...", + "content": "

    Spacecraft heads off on 6.8m-mile journey to crash into moonlet Dimorphos in test to see if asteroids can be diverted from collision with Earth

    A spacecraft that must ultimately crash in order to succeed lifted off late on Tuesday from California on a Nasa mission to demonstrate the world’s first planetary defence system.

    Carried aboard a SpaceX-owned Falcon 9 rocket, the Dart (Double Asteroid Redirection Test) spacecraft soared into the sky at 10.21pm Pacific time from the Vandenberg US Space Force Base, about 150 miles (240km) north-west of Los Angeles.

    Continue reading...", + "category": "Asteroids", + "link": "https://www.theguardian.com/science/2021/nov/24/nasa-launches-dart-mission-to-deflect-asteroid-in-planetary-defence-test", + "creator": "Reuters", + "pubDate": "2021-11-24T08:38:21Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The world finally has a malaria vaccine. Now it must invest in it | Ngozi Okonjo-Iweala", + "description": "

    As an economist I know it makes financial as well as ethical sense to get this world-first vaccine to the millions who need it

    I vividly remember the day I learned a harsh lesson in the tragic burden of malaria that too many of us from the African continent have endured. I was 15, living amid the chaos of Nigeria’s Biafran war, when my three-year-old sister fell sick. Her body burning with fever, I tied her on my back and carried her to a medical clinic, a six-mile trek from my home.

    We arrived at the clinic to find a huge crowd trying to break through locked doors. I knew my sister’s condition could not wait. I dropped to the ground and crawled between legs, my sister propped listlessly on my back, until I reached an open window and climbed through. By the time I was inside, my sister was barely moving. The doctor worked rapidly, injecting antimalarial drugs and infusing her with fluids to rehydrate her body. In a few hours, she started to revive. If we had waited any longer, my sister might not have survived.

    Continue reading...", + "content": "

    As an economist I know it makes financial as well as ethical sense to get this world-first vaccine to the millions who need it

    I vividly remember the day I learned a harsh lesson in the tragic burden of malaria that too many of us from the African continent have endured. I was 15, living amid the chaos of Nigeria’s Biafran war, when my three-year-old sister fell sick. Her body burning with fever, I tied her on my back and carried her to a medical clinic, a six-mile trek from my home.

    We arrived at the clinic to find a huge crowd trying to break through locked doors. I knew my sister’s condition could not wait. I dropped to the ground and crawled between legs, my sister propped listlessly on my back, until I reached an open window and climbed through. By the time I was inside, my sister was barely moving. The doctor worked rapidly, injecting antimalarial drugs and infusing her with fluids to rehydrate her body. In a few hours, she started to revive. If we had waited any longer, my sister might not have survived.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/24/the-world-finally-has-a-malaria-vaccine-now-it-must-invest-in-it", + "creator": "Ngozi Okonjo-Iweala", + "pubDate": "2021-11-24T08:00:40Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Parliament building and police station burned down during protests in Solomon Islands", + "description": "

    Police used tear gas and rubber bullets to disperse protesters demanding the prime minister step down, amid reports of looting

    Police in Solomon Islands have used tear gas and rubber bullets to disperse hundreds of protesters, who allegedly burned down a building in the parliament precinct, a police station and a store in the nation’s capital of Honiara, amid reports of looting.

    The protesters marched on the parliamentary precinct in the east of Honiara, where they allegedly set fire to a leaf hut next to Parliament House where MPs and staffers go to smoke and eat lunch.

    Continue reading...", + "content": "

    Police used tear gas and rubber bullets to disperse protesters demanding the prime minister step down, amid reports of looting

    Police in Solomon Islands have used tear gas and rubber bullets to disperse hundreds of protesters, who allegedly burned down a building in the parliament precinct, a police station and a store in the nation’s capital of Honiara, amid reports of looting.

    The protesters marched on the parliamentary precinct in the east of Honiara, where they allegedly set fire to a leaf hut next to Parliament House where MPs and staffers go to smoke and eat lunch.

    Continue reading...", + "category": "Solomon Islands", + "link": "https://www.theguardian.com/world/2021/nov/24/parliament-building-and-police-station-burned-down-during-protests-in-solomon-islands", + "creator": "Georgina Kekea in Honiara", + "pubDate": "2021-11-24T07:56:56Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "NFT beats cheugy to be Collins Dictionary’s word of the year", + "description": "

    The abbreviation of ‘non-fungible token’ tops a shortlist also including pingdemic, climate anxiety and metaverse

    In a year that has seen the musician Grimes sell a collection of digital artworks for almost $6m (£4.4m), and the original photo behind the 2005 Disaster Girl meme go for $473,000 (£354,000), Collins Dictionary has made NFT its word of the year.

    The abbreviation of non-fungible token has seen a “meteoric” rise in usage over the last year, said Collins, up 11,000% in the last year. Any digital creation can become an NFT, with the term referring to a certificate of ownership, registered on a blockchain, or digital ledger of transactions. The most valuable NFT to date is a collage by digital artist Beeple, which sold for £50.3m at Christie’s in March.

    Continue reading...", + "content": "

    The abbreviation of ‘non-fungible token’ tops a shortlist also including pingdemic, climate anxiety and metaverse

    In a year that has seen the musician Grimes sell a collection of digital artworks for almost $6m (£4.4m), and the original photo behind the 2005 Disaster Girl meme go for $473,000 (£354,000), Collins Dictionary has made NFT its word of the year.

    The abbreviation of non-fungible token has seen a “meteoric” rise in usage over the last year, said Collins, up 11,000% in the last year. Any digital creation can become an NFT, with the term referring to a certificate of ownership, registered on a blockchain, or digital ledger of transactions. The most valuable NFT to date is a collage by digital artist Beeple, which sold for £50.3m at Christie’s in March.

    Continue reading...", + "category": "Books", + "link": "https://www.theguardian.com/books/2021/nov/24/nft-is-collins-dictionary-word-of-the-year", + "creator": "Alison Flood", + "pubDate": "2021-11-24T07:01:38Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How wild turkeys’ rough and rowdy ways are creating havoc in US cities", + "description": "

    Booming populations are a conservation success story, but not all terrorised residents are happy about it

    There’s a violent gang stalking urban America.

    In New Hampshire a motorcyclist crashed after being assaulted. In New Jersey, a terrified postman rang 911 after a dozen members attacked at once. And in Michigan, one town armed public workers with pepper spray.

    Continue reading...", + "content": "

    Booming populations are a conservation success story, but not all terrorised residents are happy about it

    There’s a violent gang stalking urban America.

    In New Hampshire a motorcyclist crashed after being assaulted. In New Jersey, a terrified postman rang 911 after a dozen members attacked at once. And in Michigan, one town armed public workers with pepper spray.

    Continue reading...", + "category": "Birds", + "link": "https://www.theguardian.com/environment/2021/nov/24/wild-turkeys-us-cities-havoc-hunting", + "creator": "Alice Hutton", + "pubDate": "2021-11-24T07:00:40Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A moment that changed me: The haircut that liberated me as a butch lesbian", + "description": "

    I came out in my late teens, but still felt repressed by my appearance. Almost 10 years after first booking a short back and sides, I finally took the plunge – and immediately felt revitalised

    The hairdresser steadied my head as I sat in the swivel chair, face mask on, staring into the mirror. In December 2020, another lockdown loomed, and nearly 12 months earlier I had made it a New Year’s resolution to get short hair that year. Within 45 minutes, my shoulder-length mop was down to a couple of inches.

    People often get radical haircuts in response to life-changing events, such as a breakup or the loss of a loved one. I got mine because I wanted to embrace how I felt as a butch lesbian.

    Continue reading...", + "content": "

    I came out in my late teens, but still felt repressed by my appearance. Almost 10 years after first booking a short back and sides, I finally took the plunge – and immediately felt revitalised

    The hairdresser steadied my head as I sat in the swivel chair, face mask on, staring into the mirror. In December 2020, another lockdown loomed, and nearly 12 months earlier I had made it a New Year’s resolution to get short hair that year. Within 45 minutes, my shoulder-length mop was down to a couple of inches.

    People often get radical haircuts in response to life-changing events, such as a breakup or the loss of a loved one. I got mine because I wanted to embrace how I felt as a butch lesbian.

    Continue reading...", + "category": "Sexuality", + "link": "https://www.theguardian.com/lifeandstyle/2021/nov/24/a-moment-that-changed-me-the-haircut-that-liberated-me-as-a-butch-lesbian", + "creator": "Ella Braidwood", + "pubDate": "2021-11-24T07:00:39Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Joe Lieberman on Biden, Trump and centrism: ‘It’s a strategy for making democracy work’", + "description": "

    The Democratic ex-senator preaches a deeply unfashionable gospel of compromise in a country paralysed by civil war

    A friend once joked to Joe Lieberman, former senator and vice-presidential nominee, that the Democratic party was like his appendix: it was there but not doing much for him.

    “It’s a funny line,” he says by phone from his law office in New York, “but the truth is that it’s more than that because I feel good physically when the Democrats do well – in my terms – and I do get pain when they go off and do things that I don’t agree with.

    Continue reading...", + "content": "

    The Democratic ex-senator preaches a deeply unfashionable gospel of compromise in a country paralysed by civil war

    A friend once joked to Joe Lieberman, former senator and vice-presidential nominee, that the Democratic party was like his appendix: it was there but not doing much for him.

    “It’s a funny line,” he says by phone from his law office in New York, “but the truth is that it’s more than that because I feel good physically when the Democrats do well – in my terms – and I do get pain when they go off and do things that I don’t agree with.

    Continue reading...", + "category": "US news", + "link": "https://www.theguardian.com/us-news/2021/nov/24/joe-lieberman-most-republicans-democrats-centrists", + "creator": "David Smith in Washington", + "pubDate": "2021-11-24T07:00:38Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pig patrol: Amsterdam airport’s innovative approach to flight safety", + "description": "

    Farm animals are being used to prevent bird strikes as numbers of geese boom around Schiphol, one of Europe’s busiest flight hubs

    A group of animals has been drafted in to combat a hazard in the skies above the runways of Amsterdam’s Schiphol airport, the Netherlands’ aviation hub.

    A six-week pilot project is studying whether a small herd of pigs can deter flocks of geese and other birds attracted to discarded sugar beet on nearby farmland.

    Continue reading...", + "content": "

    Farm animals are being used to prevent bird strikes as numbers of geese boom around Schiphol, one of Europe’s busiest flight hubs

    A group of animals has been drafted in to combat a hazard in the skies above the runways of Amsterdam’s Schiphol airport, the Netherlands’ aviation hub.

    A six-week pilot project is studying whether a small herd of pigs can deter flocks of geese and other birds attracted to discarded sugar beet on nearby farmland.

    Continue reading...", + "category": "Air transport", + "link": "https://www.theguardian.com/environment/2021/nov/24/pig-patrol-amsterdam-airports-innovative-approach-to-flight-safety", + "creator": "Senay Boztas in Amsterdam", + "pubDate": "2021-11-24T06:30:37Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "India’s apple farmers count cost of climate crisis as snow decimates crops", + "description": "

    Kashmiri farmers lose half their harvest to early snows for third year, with fears for future of the region’s orchards

    The homegrown apple is in danger of becoming a rarity in India, as farmers have lost up to half their harvest this year, with predictions that the country’s main orchards could soon be all but wiped out.

    Early snowfalls in Kashmir, where almost 80% of India’s apples are grown, have seen the region’s farmers lose half their crops in the third year of disastrous harvests.

    Continue reading...", + "content": "

    Kashmiri farmers lose half their harvest to early snows for third year, with fears for future of the region’s orchards

    The homegrown apple is in danger of becoming a rarity in India, as farmers have lost up to half their harvest this year, with predictions that the country’s main orchards could soon be all but wiped out.

    Early snowfalls in Kashmir, where almost 80% of India’s apples are grown, have seen the region’s farmers lose half their crops in the third year of disastrous harvests.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/24/india-kashmiri-apple-farmers-climate-crisis-snow-decimates-crops", + "creator": "Aakash Hassan in Ramnagri, Kashmir", + "pubDate": "2021-11-24T06:00:38Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China accuses US of ‘mistake’ after Biden invites Taiwan to democracy summit", + "description": "

    Beijing urges Washington to stick to the ‘one China’ principle amid rising tensions over Taiwan

    China’s government has accused Joe Biden of “a mistake” in inviting Taiwan to participate in a democracy summit alongside 109 other democratic governments.

    Taiwan was included in a list of participants for next month’s Summit for Democracy, published by the state department on Tuesday. Taiwan is a democracy and self-governing, but Beijing claims it is a province of China and has accused its government of separatism.

    Continue reading...", + "content": "

    Beijing urges Washington to stick to the ‘one China’ principle amid rising tensions over Taiwan

    China’s government has accused Joe Biden of “a mistake” in inviting Taiwan to participate in a democracy summit alongside 109 other democratic governments.

    Taiwan was included in a list of participants for next month’s Summit for Democracy, published by the state department on Tuesday. Taiwan is a democracy and self-governing, but Beijing claims it is a province of China and has accused its government of separatism.

    Continue reading...", + "category": "Taiwan", + "link": "https://www.theguardian.com/world/2021/nov/24/china-accuses-us-of-mistake-after-biden-invites-taiwan-to-democracy-summit", + "creator": "Helen Davidson in Taipei, and agencies", + "pubDate": "2021-11-24T05:58:01Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "South Korea Covid cases hit daily record as pressure on hospitals rises", + "description": "

    Prime minister Kim Boo-kyum says emergency measures may be imposed as cases spike just weeks after the country reopened

    South Korea reported a new daily record of 4,116 new coronavirus cases as the country battles to contain a spike in serious cases requiring hospitalisation, health authorities said.

    South Korea this month switched to a “living with Covid-19” plan aimed at lifting rigid distancing rules and ultimately reopening after reaching vaccination goals last month.

    Continue reading...", + "content": "

    Prime minister Kim Boo-kyum says emergency measures may be imposed as cases spike just weeks after the country reopened

    South Korea reported a new daily record of 4,116 new coronavirus cases as the country battles to contain a spike in serious cases requiring hospitalisation, health authorities said.

    South Korea this month switched to a “living with Covid-19” plan aimed at lifting rigid distancing rules and ultimately reopening after reaching vaccination goals last month.

    Continue reading...", + "category": "South Korea", + "link": "https://www.theguardian.com/world/2021/nov/24/south-korea-covid-cases-hit-daily-record-as-pressure-on-hospitals-rises", + "creator": "Reuters", + "pubDate": "2021-11-24T03:02:56Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New Zealand to reopen borders to vaccinated visitors from new year", + "description": "

    Border will first open to New Zealand citizens coming from Australia, then from the rest of the world, and finally to all other vaccinated visitors from April

    New Zealand has announced it will reopen its borders to vaccinated visitors in the opening months of 2022, for the first time since prime minister Jacinda Ardern announced their snap closure in the first month of the Covid-19 pandemic. The country’s borders have been closed for more than a year and a half.

    The border will initially open to New Zealand citizens and visa holders coming from Australia, then from the rest of the world, and finally to all other vaccinated visitors from the end of April. They will still have to self-isolate at home for a week, but will no longer have to pass through the country’s expensive and highly-space limited managed isolation facilities.

    Continue reading...", + "content": "

    Border will first open to New Zealand citizens coming from Australia, then from the rest of the world, and finally to all other vaccinated visitors from April

    New Zealand has announced it will reopen its borders to vaccinated visitors in the opening months of 2022, for the first time since prime minister Jacinda Ardern announced their snap closure in the first month of the Covid-19 pandemic. The country’s borders have been closed for more than a year and a half.

    The border will initially open to New Zealand citizens and visa holders coming from Australia, then from the rest of the world, and finally to all other vaccinated visitors from the end of April. They will still have to self-isolate at home for a week, but will no longer have to pass through the country’s expensive and highly-space limited managed isolation facilities.

    Continue reading...", + "category": "New Zealand", + "link": "https://www.theguardian.com/world/2021/nov/24/new-zealand-to-reopen-borders-to-vaccinated-visitors-from-new-year", + "creator": "Tess McClure in Christchurch", + "pubDate": "2021-11-24T01:38:10Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Libya: UN special envoy quits a month before presidential elections", + "description": "

    Ján Kubiš gives no reason for resignation, having only taken post in war-torn country in January

    The UN special envoy for Libya, Ján Kubiš, has quit just a month before crucial presidential elections in the war-torn nation – without giving security council members a clear reason for his sudden departure.

    “Mr Kubiš has tendered his resignation to the secretary general, who has accepted it with regret,” UN spokesman Stéphane Dujarric told reporters, adding that António Guterres was “working on an appropriate replacement”.

    Continue reading...", + "content": "

    Ján Kubiš gives no reason for resignation, having only taken post in war-torn country in January

    The UN special envoy for Libya, Ján Kubiš, has quit just a month before crucial presidential elections in the war-torn nation – without giving security council members a clear reason for his sudden departure.

    “Mr Kubiš has tendered his resignation to the secretary general, who has accepted it with regret,” UN spokesman Stéphane Dujarric told reporters, adding that António Guterres was “working on an appropriate replacement”.

    Continue reading...", + "category": "Libya", + "link": "https://www.theguardian.com/world/2021/nov/23/libya-un-special-envoy-quits-a-month-before-presidential-elections", + "creator": "AFP at the United Nations", + "pubDate": "2021-11-23T23:00:37Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "In a crisis, you want Jacinda Ardern. That’s why her poll numbers will remain robust | Morgan Godfery", + "description": "

    Ardern is imperfect and her government often struggles to implement its agenda – but they excel at crisis management

    “If you want to know me, look at my surface”, Andy Warhol once said, or something along those lines. It’s an invitation to the obvious that should apply in politics, and yet the public regard politicians with – at best – a good deal of suspicion and, at worst, contempt. And who can blame them? In New Zealand the workers’ party (Labour) was responsible for introducing and administering neoliberalism in the 1980s, a dramatic break with their social democratic history that the Australian Labor party was also undertaking in the 1980s, the US Democrats in the 1990s, and UK Labour shortly after. As the old joke goes, capturing the distrust most people feel for left and right, “it doesn’t matter who you vote for, a politician always gets in”.

    But what distinguishes prime minister Jacinda Ardern from the politicians who bite at her heels is that the Warholian doctrine is probably true. At least in her case. In New Zealand’s double disasters – the Christchurch massacre and the Whakaari eruption – Ardern met each tragedy with immediate action, crisp and clear communication, and an extraordinary human care almost entirely absent in modern politics. She met with victims, their families took her into their own homes and at every opportunity she made an invitation to act in solidarity – from the country’s successful gun reforms to the “Christchurch call”, an international bid to stamp out violent extremism online.

    Continue reading...", + "content": "

    Ardern is imperfect and her government often struggles to implement its agenda – but they excel at crisis management

    “If you want to know me, look at my surface”, Andy Warhol once said, or something along those lines. It’s an invitation to the obvious that should apply in politics, and yet the public regard politicians with – at best – a good deal of suspicion and, at worst, contempt. And who can blame them? In New Zealand the workers’ party (Labour) was responsible for introducing and administering neoliberalism in the 1980s, a dramatic break with their social democratic history that the Australian Labor party was also undertaking in the 1980s, the US Democrats in the 1990s, and UK Labour shortly after. As the old joke goes, capturing the distrust most people feel for left and right, “it doesn’t matter who you vote for, a politician always gets in”.

    But what distinguishes prime minister Jacinda Ardern from the politicians who bite at her heels is that the Warholian doctrine is probably true. At least in her case. In New Zealand’s double disasters – the Christchurch massacre and the Whakaari eruption – Ardern met each tragedy with immediate action, crisp and clear communication, and an extraordinary human care almost entirely absent in modern politics. She met with victims, their families took her into their own homes and at every opportunity she made an invitation to act in solidarity – from the country’s successful gun reforms to the “Christchurch call”, an international bid to stamp out violent extremism online.

    Continue reading...", + "category": "New Zealand", + "link": "https://www.theguardian.com/world/commentisfree/2021/nov/24/in-a-crisis-you-want-jacinda-ardern-thats-why-her-poll-numbers-will-remain-robust", + "creator": "Morgan Godfery", + "pubDate": "2021-11-23T19:00:24Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A child injured in the Waukesha parade has died, bringing the toll to six", + "description": "

    Driver has been charged with five counts of intentional homicide and more charges are pending

    Prosecutors in Wisconsin on Tuesday charged a man with intentional homicide in the deaths of five people who were killed when an SUV was driven into a Christmas parade earlier this week that also left 62 people injured, including many children.

    Prosecutors say a sixth person, a child, has died and more charges are pending. Several of those injured remain in critical condition.

    Continue reading...", + "content": "

    Driver has been charged with five counts of intentional homicide and more charges are pending

    Prosecutors in Wisconsin on Tuesday charged a man with intentional homicide in the deaths of five people who were killed when an SUV was driven into a Christmas parade earlier this week that also left 62 people injured, including many children.

    Prosecutors say a sixth person, a child, has died and more charges are pending. Several of those injured remain in critical condition.

    Continue reading...", + "category": "Wisconsin", + "link": "https://www.theguardian.com/us-news/2021/nov/23/waukesha-parade-children-injured", + "creator": "Maya Yang and agencies", + "pubDate": "2021-11-23T18:32:43Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New York city hall removes Thomas Jefferson statue", + "description": "

    City public design commission voted to send 884lb, 7ft statue to the New York Historical Society because Jefferson enslaved people

    A statue of Thomas Jefferson has been removed from city hall in New York, because the founder and third president enslaved people.

    A work crew spent several hours on Monday freeing the 884lb, 7ft statue from its pedestal in the council chambers and carefully maneuvering it into a padded wooden crate, for the short journey to the New York Historical Society.

    Continue reading...", + "content": "

    City public design commission voted to send 884lb, 7ft statue to the New York Historical Society because Jefferson enslaved people

    A statue of Thomas Jefferson has been removed from city hall in New York, because the founder and third president enslaved people.

    A work crew spent several hours on Monday freeing the 884lb, 7ft statue from its pedestal in the council chambers and carefully maneuvering it into a padded wooden crate, for the short journey to the New York Historical Society.

    Continue reading...", + "category": "New York", + "link": "https://www.theguardian.com/us-news/2021/nov/23/thomas-jefferson-statuue-new-york-city-hall", + "creator": "Richard Luscombe", + "pubDate": "2021-11-23T14:05:40Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Carnival photos add to woe of coach accused of faking Covid pass", + "description": "

    Markus Anfang resigned as Werder Bremen coach after doubts voiced about authenticity of Covid certificate

    A German football coach who resigned over allegations that he forged his vaccine certificate has drawn condemnation and derision after it emerged he attended a carnival party this month that was exclusive to those who had got the jab or recovered from the virus.

    Markus Anfang on Saturday morning announced his resignation as the head coach of German second division club Werder Bremen, after the state prosecutor in the northern city revealed there were doubts about the authenticity of the document supposedly proving the 47-year-old had received two doses of the BioNTech/Pfizer vaccine.

    Continue reading...", + "content": "

    Markus Anfang resigned as Werder Bremen coach after doubts voiced about authenticity of Covid certificate

    A German football coach who resigned over allegations that he forged his vaccine certificate has drawn condemnation and derision after it emerged he attended a carnival party this month that was exclusive to those who had got the jab or recovered from the virus.

    Markus Anfang on Saturday morning announced his resignation as the head coach of German second division club Werder Bremen, after the state prosecutor in the northern city revealed there were doubts about the authenticity of the document supposedly proving the 47-year-old had received two doses of the BioNTech/Pfizer vaccine.

    Continue reading...", + "category": "Germany", + "link": "https://www.theguardian.com/world/2021/nov/23/anger-as-it-emerges-german-football-coach-in-vaccine-pass-scandal-attended-party", + "creator": "Philip Oltermann in Berlin", + "pubDate": "2021-11-23T13:48:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Home Office tells councils to take unaccompanied migrant children", + "description": "

    Voluntary scheme, where local authorities accept those arriving without parents, will now become compulsory

    Councils across England will be forced to care for unaccompanied children who have arrived on small boats under new rules put forward by the Home Office.

    The decision follows complaints from Kent county council and others in the south of England that they are being overwhelmed by a growing number of children entering the country.

    Continue reading...", + "content": "

    Voluntary scheme, where local authorities accept those arriving without parents, will now become compulsory

    Councils across England will be forced to care for unaccompanied children who have arrived on small boats under new rules put forward by the Home Office.

    The decision follows complaints from Kent county council and others in the south of England that they are being overwhelmed by a growing number of children entering the country.

    Continue reading...", + "category": "Immigration and asylum", + "link": "https://www.theguardian.com/world/2021/nov/23/home-office-tells-councils-to-take-unaccompanied-migrant-children", + "creator": "Rajeev Syal and Libby Brooks", + "pubDate": "2021-11-23T13:46:55Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid deaths in Europe to top 2 million by March, says WHO", + "description": "

    Dr Hans Kluge describes situation as ‘very serious’ with increasing strain on health services

    Total deaths across Europe from Covid-19 are likely to exceed 2 million by March next year, the World Health Organization (WHO) has said, adding that the pandemic had become the number one cause of death in the region.

    Reported deaths have risen to nearly 4,200 a day, double the number being recorded in September, the agency said, while cumulative reported deaths in the region, which includes the UK, have already surpassed 1.5 million.

    Continue reading...", + "content": "

    Dr Hans Kluge describes situation as ‘very serious’ with increasing strain on health services

    Total deaths across Europe from Covid-19 are likely to exceed 2 million by March next year, the World Health Organization (WHO) has said, adding that the pandemic had become the number one cause of death in the region.

    Reported deaths have risen to nearly 4,200 a day, double the number being recorded in September, the agency said, while cumulative reported deaths in the region, which includes the UK, have already surpassed 1.5 million.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/23/covid-deaths-in-europe-to-top-2-million-by-march-says-who", + "creator": "Jon Henley, Europe correspondent", + "pubDate": "2021-11-23T13:38:20Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jennifer Lawrence defends Leonardo DiCaprio’s higher pay for Don’t Look Up", + "description": "

    Despite their equal billing on the forthcoming Adam McKay disaster comedy, Lawrence says she is ‘extremely fortunate and happy with my deal’

    Jennifer Lawrence has defended the higher salary paid to Leonardo DiCaprio for Don’t Look Up, their forthcoming film for which they receive equal billing.

    Speaking to Vanity Fair, Lawrence said: “Leo brings in more box office than I do. I’m extremely fortunate and happy with my deal.” A recently published report in Variety suggested that DiCaprio will receive $30m (£22.5m) for the movie, and Lawrence will be paid $25m ($18.7m) – meaning DiCaprio’s fee is 20% higher.

    Continue reading...", + "content": "

    Despite their equal billing on the forthcoming Adam McKay disaster comedy, Lawrence says she is ‘extremely fortunate and happy with my deal’

    Jennifer Lawrence has defended the higher salary paid to Leonardo DiCaprio for Don’t Look Up, their forthcoming film for which they receive equal billing.

    Speaking to Vanity Fair, Lawrence said: “Leo brings in more box office than I do. I’m extremely fortunate and happy with my deal.” A recently published report in Variety suggested that DiCaprio will receive $30m (£22.5m) for the movie, and Lawrence will be paid $25m ($18.7m) – meaning DiCaprio’s fee is 20% higher.

    Continue reading...", + "category": "Film", + "link": "https://www.theguardian.com/film/2021/nov/23/jennifer-lawrence-leonardo-dicaprio-higher-pay-for-dont-look-up", + "creator": "Andrew Pulver", + "pubDate": "2021-11-23T13:21:24Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Hong Kong activist Tony Chung jailed under national security law", + "description": "

    Judge sentences 20-year-old to three years and seven months in prison for secession and money laundering

    A 20-year-old student activist who was arrested while attempting to seek asylum at the US consulate in Hong Kong has become the youngest person sentenced under the city’s draconian national security law.

    Tony Chung was sentenced to three years and seven months in prison after being convicted of secession and money laundering.

    Continue reading...", + "content": "

    Judge sentences 20-year-old to three years and seven months in prison for secession and money laundering

    A 20-year-old student activist who was arrested while attempting to seek asylum at the US consulate in Hong Kong has become the youngest person sentenced under the city’s draconian national security law.

    Tony Chung was sentenced to three years and seven months in prison after being convicted of secession and money laundering.

    Continue reading...", + "category": "Hong Kong", + "link": "https://www.theguardian.com/world/2021/nov/23/hong-kong-activist-tony-chung-jailed-under-national-security-law", + "creator": "Helen Davidson in Taipei", + "pubDate": "2021-11-23T12:28:22Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Neat enough for Pepys: Magdalene college Cambridge’s inventive new library", + "description": "

    The famous diarist’s dedicated building, left to his Cambridge alma mater, could not be altered. So architect Níall McLaughlin created a magical solution

    “My delight is in the neatness of everything,” wrote Samuel Pepys in his diary in 1663, “and so cannot be pleased with anything unless it be very neat, which is a strange folly.”

    He was referring in part to the fastidious organisation of his magnificent collection of books. By the time of his death in 1703 he had amassed 3,000 of them, which he left to his alma mater, Magdalene College, Cambridge, to be housed in a dedicated building with his name above the door. He gave strict instructions that his library be kept intact for posterity, without addition or subtraction, its contents arranged “according to heighth” in the bespoke glass-fronted bookcases he had especially commissioned. The responsibility came with an added threat: if one volume goes missing, he instructed, the whole library must be transferred to Trinity.

    Continue reading...", + "content": "

    The famous diarist’s dedicated building, left to his Cambridge alma mater, could not be altered. So architect Níall McLaughlin created a magical solution

    “My delight is in the neatness of everything,” wrote Samuel Pepys in his diary in 1663, “and so cannot be pleased with anything unless it be very neat, which is a strange folly.”

    He was referring in part to the fastidious organisation of his magnificent collection of books. By the time of his death in 1703 he had amassed 3,000 of them, which he left to his alma mater, Magdalene College, Cambridge, to be housed in a dedicated building with his name above the door. He gave strict instructions that his library be kept intact for posterity, without addition or subtraction, its contents arranged “according to heighth” in the bespoke glass-fronted bookcases he had especially commissioned. The responsibility came with an added threat: if one volume goes missing, he instructed, the whole library must be transferred to Trinity.

    Continue reading...", + "category": "Architecture", + "link": "https://www.theguardian.com/artanddesign/2021/nov/23/magdalene-college-cambridge-library-pepys-niall-mclaughlin", + "creator": "Oliver Wainwright", + "pubDate": "2021-11-23T12:24:19Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Post-Brexit scheme to lure Nobel winners to UK fails to attract single applicant", + "description": "

    Programme to allow those with prestigious global prizes to get fast-track visas dismissed as ‘elitist’ and a ‘joke’

    A post-Brexit scheme to draw the world’s most celebrated academics and other leading figures to the UK has failed to attract a single applicant in the six months since it opened, it has been reported.

    The visa route open to Nobel laureates and other prestigious global prize winners in the fields of science, engineering, humanities and medicine – among others – was described as a joke by experts after ministers admitted its failure to garner any interest.

    Continue reading...", + "content": "

    Programme to allow those with prestigious global prizes to get fast-track visas dismissed as ‘elitist’ and a ‘joke’

    A post-Brexit scheme to draw the world’s most celebrated academics and other leading figures to the UK has failed to attract a single applicant in the six months since it opened, it has been reported.

    The visa route open to Nobel laureates and other prestigious global prize winners in the fields of science, engineering, humanities and medicine – among others – was described as a joke by experts after ministers admitted its failure to garner any interest.

    Continue reading...", + "category": "Immigration and asylum", + "link": "https://www.theguardian.com/uk-news/2021/nov/23/post-brexit-scheme-to-lure-nobel-winners-to-uk-fails-to-attract-single-applicant", + "creator": "Kevin Rawlinson", + "pubDate": "2021-11-23T12:04:42Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UK will press governments to stick to climate pledges, says Cop26 president", + "description": "

    Alok Sharma says shared goals must be steered to safety by ensuring countries deliver on their promises

    The UK will continue to press governments around the world to cut greenhouse gas emissions urgently in the next year to limit global heating to 1.5C, after the UN climate talks that concluded last week, the president of the summit has pledged.

    Alok Sharma, the cabinet minister who led the Cop26 talks, said the world had shown in Glasgow that countries could work together to establish a framework for climate action but the next year must focus on keeping the promises made there.

    Continue reading...", + "content": "

    Alok Sharma says shared goals must be steered to safety by ensuring countries deliver on their promises

    The UK will continue to press governments around the world to cut greenhouse gas emissions urgently in the next year to limit global heating to 1.5C, after the UN climate talks that concluded last week, the president of the summit has pledged.

    Alok Sharma, the cabinet minister who led the Cop26 talks, said the world had shown in Glasgow that countries could work together to establish a framework for climate action but the next year must focus on keeping the promises made there.

    Continue reading...", + "category": "Climate crisis", + "link": "https://www.theguardian.com/environment/2021/nov/23/uk-governments-climate-pledges-cop26-president-alok-sharma", + "creator": "Fiona Harvey Environment correspondent", + "pubDate": "2021-11-23T12:00:15Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "AstraZeneca chief links Europe’s Covid surge to rejection of firm’s vaccine", + "description": "

    Pascal Soriot says heightened T-cell immunity from Oxford jab may give more durable protection

    A decision not to use AstraZeneca’s Covid-19 vaccine for elderly people in some European countries could help explain why the virus is currently triggering such high levels of infections in mainland Europe, the company’s chief executive has said.

    Pascal Soriot told BBC Radio 4’s Today programme that heightened T-cell immunity could be giving those who received the Oxford/AstraZeneca jab more durable immune protection against the virus.

    Continue reading...", + "content": "

    Pascal Soriot says heightened T-cell immunity from Oxford jab may give more durable protection

    A decision not to use AstraZeneca’s Covid-19 vaccine for elderly people in some European countries could help explain why the virus is currently triggering such high levels of infections in mainland Europe, the company’s chief executive has said.

    Pascal Soriot told BBC Radio 4’s Today programme that heightened T-cell immunity could be giving those who received the Oxford/AstraZeneca jab more durable immune protection against the virus.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/23/astrazeneca-chief-links-europes-covid-surge-to-rejection-of-firms-vaccine", + "creator": "Linda Geddes Science correspondent", + "pubDate": "2021-11-23T11:53:34Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Crazy Frog returns, like it or not: ‘There will always be a place for novelty songs’", + "description": "

    With genitalia proudly exposed, the amphibian raced up the charts in 2005 and irritated much of the UK. Why has it been allowed a second chance? Its handler explains himself

    For a few months in 2005, you couldn’t move without encountering Crazy Frog. First sold as a ringtone, his nonsensical catchphrase, “Rring ding ding ding baa baa”, entered the national vocabulary. Then it became the most popular – and divisive – single of 2005, coupled with a CGI video of an explicitly naked frog on the lam in a futuristic cityscape. “The frog is irritating to the point of distraction and back again,” wrote BBC News. “And yet at the same, it’s strangely compelling.”

    The craze lasted for five Top 20 hits and then mercifully dwindled. The character was so hated that hackers found success with a virus offering to show users an image of him being killed off. But now the frog is staging a comeback. Next month, the once-ubiquitous amphibian will release a new single – a mash-up of a classic and a more recent song, the details of which the frog’s guardians are keeping under wraps, other than to say that both are popular on TikTok.

    Continue reading...", + "content": "

    With genitalia proudly exposed, the amphibian raced up the charts in 2005 and irritated much of the UK. Why has it been allowed a second chance? Its handler explains himself

    For a few months in 2005, you couldn’t move without encountering Crazy Frog. First sold as a ringtone, his nonsensical catchphrase, “Rring ding ding ding baa baa”, entered the national vocabulary. Then it became the most popular – and divisive – single of 2005, coupled with a CGI video of an explicitly naked frog on the lam in a futuristic cityscape. “The frog is irritating to the point of distraction and back again,” wrote BBC News. “And yet at the same, it’s strangely compelling.”

    The craze lasted for five Top 20 hits and then mercifully dwindled. The character was so hated that hackers found success with a virus offering to show users an image of him being killed off. But now the frog is staging a comeback. Next month, the once-ubiquitous amphibian will release a new single – a mash-up of a classic and a more recent song, the details of which the frog’s guardians are keeping under wraps, other than to say that both are popular on TikTok.

    Continue reading...", + "category": "Music", + "link": "https://www.theguardian.com/music/2021/nov/23/crazy-frog-returns-like-it-or-not-there-will-always-be-a-place-for-novelty-songs", + "creator": "Ralph Jones", + "pubDate": "2021-11-23T11:30:28Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Call to British Airways might have averted 1990 Kuwait hostage crisis", + "description": "

    Ambassador warned Foreign Office an Iraqi invasion was under way but this was not passed on to airline

    Hundreds of British passengers might have avoided being taken hostage by the Iraqi dictator Saddam Hussein in 1990 if a UK diplomatic call informing Whitehall of Iraq’s invasion of Kuwait had been relayed to British Airways, the Foreign Office has disclosed.

    New papers revealed under the 20-year-rule show that the UK ambassador to Kuwait rang the Foreign Office duty clerk to warn him that an Iraqi invasion of Kuwait was under way. The message was then passed around Whitehall, including to Downing Street and the intelligence services.

    Continue reading...", + "content": "

    Ambassador warned Foreign Office an Iraqi invasion was under way but this was not passed on to airline

    Hundreds of British passengers might have avoided being taken hostage by the Iraqi dictator Saddam Hussein in 1990 if a UK diplomatic call informing Whitehall of Iraq’s invasion of Kuwait had been relayed to British Airways, the Foreign Office has disclosed.

    New papers revealed under the 20-year-rule show that the UK ambassador to Kuwait rang the Foreign Office duty clerk to warn him that an Iraqi invasion of Kuwait was under way. The message was then passed around Whitehall, including to Downing Street and the intelligence services.

    Continue reading...", + "category": "Foreign, Commonwealth and Development Office", + "link": "https://www.theguardian.com/politics/2021/nov/23/call-to-british-airways-might-have-averted-1990-kuwait-hostage-crisis", + "creator": "Patrick Wintour Diplomatic correspondent", + "pubDate": "2021-11-23T11:08:29Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Frog back from the dead helps fight plans for mine in Ecuador", + "description": "

    Campaigners say if copper mine gets go-ahead in cloud forest, the longnose harlequin, once thought to be extinct, will be threatened again

    Reports of the longnose harlequin frog’s death appear to have been greatly exaggerated – or, at least, premature. The Mark Twain of the frog world is listed by the International Union for Conservation of Nature (IUCN) as extinct, which may come as a surprise to those alive and well in the cloud forests of Ecuador’s tropical Andes.

    Known for its pointed snout, the longnose harlequin frog (Atelopus longirostris) is about to play a central role in a legal battle to stop a mining project in the Intag valley in Imbabura province, which campaigners say would be a disaster for the highly biodiverse cloud forests.

    Continue reading...", + "content": "

    Campaigners say if copper mine gets go-ahead in cloud forest, the longnose harlequin, once thought to be extinct, will be threatened again

    Reports of the longnose harlequin frog’s death appear to have been greatly exaggerated – or, at least, premature. The Mark Twain of the frog world is listed by the International Union for Conservation of Nature (IUCN) as extinct, which may come as a surprise to those alive and well in the cloud forests of Ecuador’s tropical Andes.

    Known for its pointed snout, the longnose harlequin frog (Atelopus longirostris) is about to play a central role in a legal battle to stop a mining project in the Intag valley in Imbabura province, which campaigners say would be a disaster for the highly biodiverse cloud forests.

    Continue reading...", + "category": "Mining", + "link": "https://www.theguardian.com/environment/2021/nov/23/frog-back-from-the-dead-helps-fight-mine-plans-in-ecuadors-cloud-forest-aoe", + "creator": "Graeme Green", + "pubDate": "2021-11-23T11:00:14Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Labor blasts Barnaby Joyce for appointing Tamworth mayor and ‘solid supporter’ for infrastructure role", + "description": "

    Nationals leader accused opposition of being ‘academic snobs’ who lacked commitment to regional Australia

    Labor has blasted Nationals leader Barnaby Joyce for being set to appoint the retiring mayor of Tamworth, Col Murray, as the new chair of Infrastructure Australia.

    Asked on Tuesday by the shadow infrastructure Catherine King whether he could confirm that the Morrison government had decided, but not yet announced, that Murray, “who has described himself as a fairly solid Barnaby supporter” would be the new chair of the infrastructure advisory body, Joyce rounded on the opposition.

    Sign up to receive an email with the top stories from Guardian Australia every morning

    Continue reading...", + "content": "

    Nationals leader accused opposition of being ‘academic snobs’ who lacked commitment to regional Australia

    Labor has blasted Nationals leader Barnaby Joyce for being set to appoint the retiring mayor of Tamworth, Col Murray, as the new chair of Infrastructure Australia.

    Asked on Tuesday by the shadow infrastructure Catherine King whether he could confirm that the Morrison government had decided, but not yet announced, that Murray, “who has described himself as a fairly solid Barnaby supporter” would be the new chair of the infrastructure advisory body, Joyce rounded on the opposition.

    Sign up to receive an email with the top stories from Guardian Australia every morning

    Continue reading...", + "category": "Barnaby Joyce", + "link": "https://www.theguardian.com/australia-news/2021/nov/23/labor-blasts-barnaby-joyce-for-appointing-tamworth-mayor-and-solid-supporter-for-infrastructure-role", + "creator": "Katharine Murphy", + "pubDate": "2021-11-23T10:53:37Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China condemns ‘malicious hyping’ over Peng Shuai", + "description": "

    Foreign ministry takes unrepentant stance to concerns in west over wellbeing of tennis player

    China’s foreign ministry has accused unnamed people of “malicious hyping” in the case of the tennis star Peng Shuai, in a hardline and unrepentant response to questions in the west over her wellbeing.

    The whereabouts and wellbeing of Peng, a former doubles world number one, has become a matter of international concern over the past three weeks, after she alleged in a message on the Chinese social media site Weibo that the country’s former vice-premier, Zhang Gaoli, had sexually assaulted her. Peng ceased to be seen in public shortly after she made her allegation on 2 November.

    Continue reading...", + "content": "

    Foreign ministry takes unrepentant stance to concerns in west over wellbeing of tennis player

    China’s foreign ministry has accused unnamed people of “malicious hyping” in the case of the tennis star Peng Shuai, in a hardline and unrepentant response to questions in the west over her wellbeing.

    The whereabouts and wellbeing of Peng, a former doubles world number one, has become a matter of international concern over the past three weeks, after she alleged in a message on the Chinese social media site Weibo that the country’s former vice-premier, Zhang Gaoli, had sexually assaulted her. Peng ceased to be seen in public shortly after she made her allegation on 2 November.

    Continue reading...", + "category": "China", + "link": "https://www.theguardian.com/world/2021/nov/23/china-peng-shuai-tennis-player-west", + "creator": "Vincent Ni China affairs correspondent", + "pubDate": "2021-11-23T10:40:42Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Chinese birthrate falls to lowest since 1978", + "description": "

    Official statistics show 8.5 births per 1,000 people in 2020, the first time under 10 in decades

    China’s birthrate has plummeted to its lowest level since 1978 as the government struggles to stave off a looming demographic crisis.

    Data released by the country’s national bureau of statistics shows there were 8.5 births per 1,000 people in 2020, the first time in decades that the figure has fallen below 10. The statistical yearbook, released at the weekend, said the natural rate of population growth – taking in births and deaths – was at a new low of 1.45.

    Continue reading...", + "content": "

    Official statistics show 8.5 births per 1,000 people in 2020, the first time under 10 in decades

    China’s birthrate has plummeted to its lowest level since 1978 as the government struggles to stave off a looming demographic crisis.

    Data released by the country’s national bureau of statistics shows there were 8.5 births per 1,000 people in 2020, the first time in decades that the figure has fallen below 10. The statistical yearbook, released at the weekend, said the natural rate of population growth – taking in births and deaths – was at a new low of 1.45.

    Continue reading...", + "category": "China", + "link": "https://www.theguardian.com/world/2021/nov/23/chinese-birthrate-falls-to-lowest-since-1978", + "creator": "Helen Davidson in Taipei", + "pubDate": "2021-11-23T09:37:07Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samantha Willis was a beloved young pregnant mother. Did bad vaccine advice cost her her life?", + "description": "

    When the UK’s jab programme began, expectant mothers were told to steer clear – so Samantha decided to wait until she had had her baby. Two weeks after giving birth, she died in hospital

    It was typical of Samantha Willis that she bought the food for her baby shower herself. No fuss; she didn’t want other people to be put out. She even bought a cheese board, despite the fact that, because she was pregnant, she couldn’t eat half of it.

    On 1 August, the care worker and mother of three from Derry was eight months pregnant with her third daughter. The weather was beautiful, so Samantha stood out in the sun, ironing clothes and getting everything organised for the baby.

    Continue reading...", + "content": "

    When the UK’s jab programme began, expectant mothers were told to steer clear – so Samantha decided to wait until she had had her baby. Two weeks after giving birth, she died in hospital

    It was typical of Samantha Willis that she bought the food for her baby shower herself. No fuss; she didn’t want other people to be put out. She even bought a cheese board, despite the fact that, because she was pregnant, she couldn’t eat half of it.

    On 1 August, the care worker and mother of three from Derry was eight months pregnant with her third daughter. The weather was beautiful, so Samantha stood out in the sun, ironing clothes and getting everything organised for the baby.

    Continue reading...", + "category": "Pregnancy", + "link": "https://www.theguardian.com/society/2021/nov/23/samantha-willis-was-a-beloved-young-pregnant-mother-did-bad-vaccine-advice-cost-her-her-life", + "creator": "Sirin Kale", + "pubDate": "2021-11-23T08:00:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid news live: India records smallest daily rise in cases in 18 months despite festivals", + "description": "

    India’s daily Covid cases saw the slimmest daily rise in one-and-a-half-years despite recent large festivals such as Diwali as vaccination and antibody levels rise

    In the UK, Labour MP and member of the health select committee at parliament Sarah Owen has been on Sky News. She was asked about three things. Firstly on AstraZeneca suggesting they would offer tiered pricing and still offer vaccines not-for-profit to developing nations, and the risk of new variants developing due to vaccine inequality, she said:

    We are in a global pandemic, the clue is in the title and we need an international response. So moves from AstraZeneca that you’re talking about just now are very welcome because we need to ensure that everyone across the world has access to a vaccination.

    We’ve always got to be scanning the horizon. For new variants. For changes. And possible solutions, new solutions for dealing with this pandemic. And we can’t take our eye off the ball particularly as we’re staring down the barrel of winter again.

    Children should just be able to go to school. I think they’ve had a horrible last two years. The last thing they should be doing is being confronted with people who are being aggressive, or who are looking to threaten them, or threaten teaching staff or their parents. It’s completely unacceptable. Children should just be able to go to school.

    Continue reading...", + "content": "

    India’s daily Covid cases saw the slimmest daily rise in one-and-a-half-years despite recent large festivals such as Diwali as vaccination and antibody levels rise

    In the UK, Labour MP and member of the health select committee at parliament Sarah Owen has been on Sky News. She was asked about three things. Firstly on AstraZeneca suggesting they would offer tiered pricing and still offer vaccines not-for-profit to developing nations, and the risk of new variants developing due to vaccine inequality, she said:

    We are in a global pandemic, the clue is in the title and we need an international response. So moves from AstraZeneca that you’re talking about just now are very welcome because we need to ensure that everyone across the world has access to a vaccination.

    We’ve always got to be scanning the horizon. For new variants. For changes. And possible solutions, new solutions for dealing with this pandemic. And we can’t take our eye off the ball particularly as we’re staring down the barrel of winter again.

    Children should just be able to go to school. I think they’ve had a horrible last two years. The last thing they should be doing is being confronted with people who are being aggressive, or who are looking to threaten them, or threaten teaching staff or their parents. It’s completely unacceptable. Children should just be able to go to school.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/live/2021/nov/23/covid-news-live-india-records-smallest-daily-rise-in-cases-in-18-months-despite-festivals", + "creator": "Martin Belam (now) and Samantha Lock (earlier)", + "pubDate": "2021-11-23T07:28:59Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Camels bearing healthcare deliver hope in Kenya – photo essay", + "description": "

    When the roads are not up to it, a mobile clinic on hooves brings family planning and other medical supplies to remote communities. Photographer Ami Vitale visits Lekiji to see how the villagers have reaped the benefits

    Thirteen camels amble their way across the dusty, drought-stricken landscape, accompanied by seven men in bright yellow T-shirts and three nurses. The camels are loaded with trunks full of medicines, bandages and family planning products. It’s a mobile health clinic on hooves. When the camels arrive at their destination, men, women and children form a line as they wait for the handlers to unload the boxes and set up tables and tents.

    Among those waiting is Jecinta Peresia, who first encountered the health visitors six years ago after she nearly died giving birth to her 11th child, a daughter called Emali.

    No roads, no problem. Communities Health Africa Trust (Chat) delivers health care to hard-to-reach areas of Kenya

    Continue reading...", + "content": "

    When the roads are not up to it, a mobile clinic on hooves brings family planning and other medical supplies to remote communities. Photographer Ami Vitale visits Lekiji to see how the villagers have reaped the benefits

    Thirteen camels amble their way across the dusty, drought-stricken landscape, accompanied by seven men in bright yellow T-shirts and three nurses. The camels are loaded with trunks full of medicines, bandages and family planning products. It’s a mobile health clinic on hooves. When the camels arrive at their destination, men, women and children form a line as they wait for the handlers to unload the boxes and set up tables and tents.

    Among those waiting is Jecinta Peresia, who first encountered the health visitors six years ago after she nearly died giving birth to her 11th child, a daughter called Emali.

    No roads, no problem. Communities Health Africa Trust (Chat) delivers health care to hard-to-reach areas of Kenya

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/23/camels-bearing-healthcare-deliver-hope-in-kenya-photo-essay", + "creator": "Ami Vitale and Wanjiku Kinuthia", + "pubDate": "2021-11-23T07:01:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Outlander author Diana Gabaldon: ‘I needed Scotsmen because of the kilt factor’", + "description": "

    She secretly wrote the first of her time-travelling novels while her husband slept. Now she’s published the ninth in the smash hit series. She talks explosive sex scenes – and where George RR Martin went wrong

    Writing a novel shouldn’t have been high on Diana Gabaldon’s list of priorities in the late 1980s. She already had two jobs, as a university professor at Arizona State, with an expertise in scientific computation, and as a software reviewer for the computer press. And she had three children under six. But she’d known since she was eight years old that she was “supposed to be a novelist”, so she decided it was time to give it a try.

    With three degrees – a bachelor’s in zoology, a master’s in marine biology, and a PhD in quantitative behavioural ecology (her thesis was on “nest site selection in pinyon jays”) – Gabaldon says she “liked science, I was good at it. But I knew that was not my vocation, that’s not my calling. So when I turned 35, I said to myself, well, you know, Mozart was dead at 36. If you want to be a novelist, maybe you’d better start.”

    Continue reading...", + "content": "

    She secretly wrote the first of her time-travelling novels while her husband slept. Now she’s published the ninth in the smash hit series. She talks explosive sex scenes – and where George RR Martin went wrong

    Writing a novel shouldn’t have been high on Diana Gabaldon’s list of priorities in the late 1980s. She already had two jobs, as a university professor at Arizona State, with an expertise in scientific computation, and as a software reviewer for the computer press. And she had three children under six. But she’d known since she was eight years old that she was “supposed to be a novelist”, so she decided it was time to give it a try.

    With three degrees – a bachelor’s in zoology, a master’s in marine biology, and a PhD in quantitative behavioural ecology (her thesis was on “nest site selection in pinyon jays”) – Gabaldon says she “liked science, I was good at it. But I knew that was not my vocation, that’s not my calling. So when I turned 35, I said to myself, well, you know, Mozart was dead at 36. If you want to be a novelist, maybe you’d better start.”

    Continue reading...", + "category": "Books", + "link": "https://www.theguardian.com/books/2021/nov/23/outlander-tv-series-author-diana-gabaldon", + "creator": "Alison Flood", + "pubDate": "2021-11-23T06:00:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "I got help for postnatal depression that saved me. Most women in India do not | Priyali Sur", + "description": "

    With up to one in five new mothers suffering depression or psychosis, experts say the need for help is ‘overwhelming’ India

    A month after giving birth, Divya tried to suffocate her new daughter with a pillow. “There were moments when I loved my baby; at other times I would try and suffocate her to death,” says the 26-year-old from the southern Indian state of Kerala.

    She sought help from women’s organisations and the women’s police station, staffed by female officers, in her town. But Divya was told that the safest place for a child was with her mother.

    Continue reading...", + "content": "

    With up to one in five new mothers suffering depression or psychosis, experts say the need for help is ‘overwhelming’ India

    A month after giving birth, Divya tried to suffocate her new daughter with a pillow. “There were moments when I loved my baby; at other times I would try and suffocate her to death,” says the 26-year-old from the southern Indian state of Kerala.

    She sought help from women’s organisations and the women’s police station, staffed by female officers, in her town. But Divya was told that the safest place for a child was with her mother.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/23/help-for-postnatal-depression-psychosis-india-mental-health", + "creator": "Priyali Sur in New Delhi", + "pubDate": "2021-11-23T06:00:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Priti Patel put under ‘immense pressure’ by No 10 and Tory MPs over Channel crossings", + "description": "

    Downing Street declines to praise home secretary over attempts to stem record crossings in small boats

    Priti Patel is being put under “immense pressure” from Downing Street and Conservative MPs over government efforts to halt Channel crossings in small boats, with No 10 refusing to say the home secretary had done a good job.

    As figures revealed, the number of people making perilous crossings has tripled since 2020, Boris Johnson’s spokesperson twice declined to praise Patel’s strategy on Monday. He said the prime minister had “confidence in the home secretary” but would only say she has “worked extremely hard and no one can doubt this is a priority for her”.

    Continue reading...", + "content": "

    Downing Street declines to praise home secretary over attempts to stem record crossings in small boats

    Priti Patel is being put under “immense pressure” from Downing Street and Conservative MPs over government efforts to halt Channel crossings in small boats, with No 10 refusing to say the home secretary had done a good job.

    As figures revealed, the number of people making perilous crossings has tripled since 2020, Boris Johnson’s spokesperson twice declined to praise Patel’s strategy on Monday. He said the prime minister had “confidence in the home secretary” but would only say she has “worked extremely hard and no one can doubt this is a priority for her”.

    Continue reading...", + "category": "Immigration and asylum", + "link": "https://www.theguardian.com/uk-news/2021/nov/23/priti-patel-put-under-immense-pressure-by-no-10-and-tory-mps-over-channel-crossings", + "creator": "Rowena Mason, Rajeev Syal and Jessica Elgot", + "pubDate": "2021-11-23T06:00:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A tale of two pandemics: the true cost of Covid in the global south | Kwame Anthony Appiah", + "description": "

    Reconstruction after Covid: a new series of long reads

    While the rich nations focus on booster jabs and returning to the office, much of the world is facing devastating second-order coronavirus effects. Now is the time to build a fairer, more responsible international system for the future

    For the past year and a half, people everywhere have been in the grip of a pandemic – but not necessarily the same one. In the affluent world, a viral respiratory disease, Covid-19, suddenly became a leading cause of death. In much of the developing world, by contrast, the main engine of destruction wasn’t this new disease, but its second-order effects: measures they took, and we took, in response to the coronavirus. Richer nations and poorer nations differ in their vulnerabilities.

    Whenever I talk with members of my family in Ghana, Nigeria and Namibia, I’m reminded that a global event can also be a profoundly local one. Lives and livelihoods have been affected in these places very differently from the way they have in Europe or the US. That’s true in the economic and educational realm, but it’s true, too, in the realm of public health. And across all these realms, the stakes are often life or death.

    Continue reading...", + "content": "

    Reconstruction after Covid: a new series of long reads

    While the rich nations focus on booster jabs and returning to the office, much of the world is facing devastating second-order coronavirus effects. Now is the time to build a fairer, more responsible international system for the future

    For the past year and a half, people everywhere have been in the grip of a pandemic – but not necessarily the same one. In the affluent world, a viral respiratory disease, Covid-19, suddenly became a leading cause of death. In much of the developing world, by contrast, the main engine of destruction wasn’t this new disease, but its second-order effects: measures they took, and we took, in response to the coronavirus. Richer nations and poorer nations differ in their vulnerabilities.

    Whenever I talk with members of my family in Ghana, Nigeria and Namibia, I’m reminded that a global event can also be a profoundly local one. Lives and livelihoods have been affected in these places very differently from the way they have in Europe or the US. That’s true in the economic and educational realm, but it’s true, too, in the realm of public health. And across all these realms, the stakes are often life or death.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/23/a-tale-of-two-pandemics-the-true-cost-of-covid-in-the-global-south", + "creator": "Kwame Anthony Appiah", + "pubDate": "2021-11-23T06:00:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UK employers step up demand for workers vaccinated against Covid", + "description": "

    Analysis shows job adverts requiring candidates to be jabbed rose by 189% between August and October

    Employers in the UK are following the lead of their counterparts in the US by stepping up demands for staff to be vaccinated against Covid-19, analysis of recruitment adverts reveals.

    According to figures from the jobs website Adzuna, the number of ads explicitly requiring candidates to be vaccinated rose by 189% between August and October as more firms ask for workers to be jabbed before they start on the job.

    Continue reading...", + "content": "

    Analysis shows job adverts requiring candidates to be jabbed rose by 189% between August and October

    Employers in the UK are following the lead of their counterparts in the US by stepping up demands for staff to be vaccinated against Covid-19, analysis of recruitment adverts reveals.

    According to figures from the jobs website Adzuna, the number of ads explicitly requiring candidates to be vaccinated rose by 189% between August and October as more firms ask for workers to be jabbed before they start on the job.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/23/uk-employers-step-up-demand-for-workers-vaccinated-against-covid", + "creator": "Richard Partington Economics correspondent", + "pubDate": "2021-11-23T06:00:01Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bulgaria bus crash kills at least 45 people", + "description": "

    Ministry officials say children are among the dead after a bus from North Macedonia crashed and caught fire on highway

    At least 46 people have died, including 12 children, after a bus caught fire in western Bulgaria on Tuesday.

    “We have an enormous tragedy here,” Bulgarian interim prime minister Stefan Yanev, who travelled to the scene, told reporters. His interior minister, Boyko Rashkov, said: “The picture is terrifying, terrifying. I have never seen anything like that before.”

    Continue reading...", + "content": "

    Ministry officials say children are among the dead after a bus from North Macedonia crashed and caught fire on highway

    At least 46 people have died, including 12 children, after a bus caught fire in western Bulgaria on Tuesday.

    “We have an enormous tragedy here,” Bulgarian interim prime minister Stefan Yanev, who travelled to the scene, told reporters. His interior minister, Boyko Rashkov, said: “The picture is terrifying, terrifying. I have never seen anything like that before.”

    Continue reading...", + "category": "Bulgaria", + "link": "https://www.theguardian.com/world/2021/nov/23/bulgaria-bus-crash-fire-kills-dozens-north-macedonia", + "creator": "Reuters", + "pubDate": "2021-11-23T05:15:53Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Former South Korean dictator Chun Doo-hwan dies aged 90", + "description": "

    Chun ruled for eight years after seizing power in a coup in 1979, and presided over the infamous 1980 Gwanju student massacre

    Former South Korean president, Chun Doo-hwan, who presided over the infamous Gwanju massacre during his iron-fisted eight-year rule, has died aged 90.

    Chun had multiple myeloma, a blood cancer which was in remission, and his health had deteriorated recently, his former press secretary Min Chung-ki told reporters. He passed away at his Seoul home early in the morning and his body will be moved to a hospital for a funeral later in the day.

    Continue reading...", + "content": "

    Chun ruled for eight years after seizing power in a coup in 1979, and presided over the infamous 1980 Gwanju student massacre

    Former South Korean president, Chun Doo-hwan, who presided over the infamous Gwanju massacre during his iron-fisted eight-year rule, has died aged 90.

    Chun had multiple myeloma, a blood cancer which was in remission, and his health had deteriorated recently, his former press secretary Min Chung-ki told reporters. He passed away at his Seoul home early in the morning and his body will be moved to a hospital for a funeral later in the day.

    Continue reading...", + "category": "South Korea", + "link": "https://www.theguardian.com/world/2021/nov/23/former-south-korean-dictator-chun-doo-hwan-dies-aged-90", + "creator": "Reuters", + "pubDate": "2021-11-23T05:08:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Thai student accused of mocking king with crop top protest denied bail", + "description": "

    Lawyers say judgment demonstrates increasingly harsh stance taken by authorities over lese-majesty law

    It was last December that Panusaya Sithijirawattanakul, a Thai student activist, and her friends strolled into a shopping mall in Bangkok wearing crop tops. They ate ice cream and carried dog-shaped balloons. Phrases such as “I have only one father” were written in marker pen on their skin.

    Now, four of them are in pre-trial detention over the outing, which royalists say was an insult to the monarchy.

    Continue reading...", + "content": "

    Lawyers say judgment demonstrates increasingly harsh stance taken by authorities over lese-majesty law

    It was last December that Panusaya Sithijirawattanakul, a Thai student activist, and her friends strolled into a shopping mall in Bangkok wearing crop tops. They ate ice cream and carried dog-shaped balloons. Phrases such as “I have only one father” were written in marker pen on their skin.

    Now, four of them are in pre-trial detention over the outing, which royalists say was an insult to the monarchy.

    Continue reading...", + "category": "Thailand", + "link": "https://www.theguardian.com/world/2021/nov/23/thai-student-accused-of-mocking-king-with-crop-top-protest-denied-bail", + "creator": "Rebecca Ratcliffe in Bangkok", + "pubDate": "2021-11-23T05:00:01Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pandemic hits mental health of women and young people hardest, survey finds", + "description": "

    Survey also finds adults aged 18-24 and women more concerned about personal finances than other groups

    Young people and women have taken the hardest psychological and financial hit from the pandemic, a YouGov survey has found – but few people anywhere are considering changing their lives as a result of it.

    The annual YouGov-Cambridge Globalism Project found that in many of the 27 countries surveyed, young people were consistently more likely than their elders to feel the Covid crisis had made their financial and mental health concerns worse.

    Continue reading...", + "content": "

    Survey also finds adults aged 18-24 and women more concerned about personal finances than other groups

    Young people and women have taken the hardest psychological and financial hit from the pandemic, a YouGov survey has found – but few people anywhere are considering changing their lives as a result of it.

    The annual YouGov-Cambridge Globalism Project found that in many of the 27 countries surveyed, young people were consistently more likely than their elders to feel the Covid crisis had made their financial and mental health concerns worse.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/23/pandemic-hits-mental-health-of-women-and-young-people-hardest-survey-finds", + "creator": "Jon Henley", + "pubDate": "2021-11-23T05:00:00Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kevin Spacey to pay House of Cards studio more than $30m over alleged misconduct losses", + "description": "

    Court ruling made public on Monday finds Spacey violated his contract’s demands for professional behaviour

    Kevin Spacey and his production companies must pay the studio behind House of Cards more than $30m because of losses brought on by his firing for alleged sexual misconduct, according to an arbitration decision made final on Monday.

    A document filed in Los Angeles superior court requesting a judge’s approval of the ruling says that the arbitrators found that Spacey violated his contract’s demands for professional behaviour by engaging in “certain conduct in connection with several crew members in each of the five seasons that he starred in and executive produced House of Cards”.

    Continue reading...", + "content": "

    Court ruling made public on Monday finds Spacey violated his contract’s demands for professional behaviour

    Kevin Spacey and his production companies must pay the studio behind House of Cards more than $30m because of losses brought on by his firing for alleged sexual misconduct, according to an arbitration decision made final on Monday.

    A document filed in Los Angeles superior court requesting a judge’s approval of the ruling says that the arbitrators found that Spacey violated his contract’s demands for professional behaviour by engaging in “certain conduct in connection with several crew members in each of the five seasons that he starred in and executive produced House of Cards”.

    Continue reading...", + "category": "Kevin Spacey", + "link": "https://www.theguardian.com/culture/2021/nov/23/kevin-spacey-to-pay-house-of-cards-studio-more-than-30m-over-alleged-misconduct-losses", + "creator": "Associated Press", + "pubDate": "2021-11-23T04:19:07Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "South Korean horror Hellbound takes over Squid Game as most popular Netflix series globally", + "description": "

    Violent fantasy series tops streaming ratings in more than 80 countries within 24 hours of its debut

    Another South Korean fantasy horror series from Netflix has become an overnight global phenomenon, with Hellbound toppling Squid Game as the most-watched TV show on the streaming platform.

    According to FlixPatrol analytics, Hellbound became the world’s most watched Netflix television series on 20 November, topping the streaming ratings in more than 80 countries within 24 hours of the show’s debut.

    Continue reading...", + "content": "

    Violent fantasy series tops streaming ratings in more than 80 countries within 24 hours of its debut

    Another South Korean fantasy horror series from Netflix has become an overnight global phenomenon, with Hellbound toppling Squid Game as the most-watched TV show on the streaming platform.

    According to FlixPatrol analytics, Hellbound became the world’s most watched Netflix television series on 20 November, topping the streaming ratings in more than 80 countries within 24 hours of the show’s debut.

    Continue reading...", + "category": "Television", + "link": "https://www.theguardian.com/tv-and-radio/2021/nov/23/south-korean-horror-hellbound-takes-over-squid-game-as-most-popular-netflix-series-globally", + "creator": "Kelly Burke", + "pubDate": "2021-11-23T03:56:06Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Whey too expensive: New Zealand cheese lovers forced to eke out supplies as prices jump", + "description": "

    Range of issues blamed for spike in cost to $20 a block, including inflation, Covid-related supply issues and high milk prices

    Facing decades-high cheese prices, cheddar-loving New Zealanders are being forced to chase specials, downgrade their flavour expectations, or abandon the blocks entirely in favour of grated substitutes.

    A mixture of inflation, Covid-19 supply pressures and high milk prices was sending prices for hunks of cheddar through the roof, with blocks ranging from $11 to over $20 a block.

    Continue reading...", + "content": "

    Range of issues blamed for spike in cost to $20 a block, including inflation, Covid-related supply issues and high milk prices

    Facing decades-high cheese prices, cheddar-loving New Zealanders are being forced to chase specials, downgrade their flavour expectations, or abandon the blocks entirely in favour of grated substitutes.

    A mixture of inflation, Covid-19 supply pressures and high milk prices was sending prices for hunks of cheddar through the roof, with blocks ranging from $11 to over $20 a block.

    Continue reading...", + "category": "New Zealand", + "link": "https://www.theguardian.com/world/2021/nov/23/new-zealand-cheese-lovers-forced-to-eke-out-supplies-as-prices-jump", + "creator": "Tess McClure in Christchurch", + "pubDate": "2021-11-23T02:51:09Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "As China threat rises, can Aukus alliance recover from rancorous birth?", + "description": "

    Questions mount about pact’s ultimate purpose and implications for other Asean countries

    It was initially seen as an audacious enlistment by Joe Biden of Australia into the 21st-century struggle against China, elevating the country in the process to a significant regional military power and finally giving substance to Global Britain and its tilt to the Indo-Pacific.

    But since then the “ruckus” about Aukus, as Boris Johnson described it, has not stopped. If this was the start of a new “anti-hegemonic coalition” to balance China’s rise, it has not quite blown up on the launchpad, but nor has it taken off as smoothly as intended.

    Continue reading...", + "content": "

    Questions mount about pact’s ultimate purpose and implications for other Asean countries

    It was initially seen as an audacious enlistment by Joe Biden of Australia into the 21st-century struggle against China, elevating the country in the process to a significant regional military power and finally giving substance to Global Britain and its tilt to the Indo-Pacific.

    But since then the “ruckus” about Aukus, as Boris Johnson described it, has not stopped. If this was the start of a new “anti-hegemonic coalition” to balance China’s rise, it has not quite blown up on the launchpad, but nor has it taken off as smoothly as intended.

    Continue reading...", + "category": "Aukus", + "link": "https://www.theguardian.com/world/2021/nov/23/as-china-threat-rises-can-aukus-alliance-recover-from-rancorous-birth", + "creator": "Patrick Wintour Diplomatic editor", + "pubDate": "2021-11-23T01:47:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Diego Maradona: Cuban woman alleges footballer raped her when she was 16", + "description": "
    • Mavys Álvarez claims Argentina great had ‘stolen her childhood’
    • Complaint relates to a journey Álvarez took to Argentina in 2001

    Mavys Álvarez, a Cuban woman who had a relationship with the late footballer Diego Maradona two decades ago, has alleged the Argentine player raped her when she was a teenager and “stolen her childhood”.

    Álvarez, now 37, gave testimony last week to an Argentine Ministry of Justice court that is investigating her allegations of trafficking against Maradona’s former entourage, linked to events when she was 16.

    Continue reading...", + "content": "
    • Mavys Álvarez claims Argentina great had ‘stolen her childhood’
    • Complaint relates to a journey Álvarez took to Argentina in 2001

    Mavys Álvarez, a Cuban woman who had a relationship with the late footballer Diego Maradona two decades ago, has alleged the Argentine player raped her when she was a teenager and “stolen her childhood”.

    Álvarez, now 37, gave testimony last week to an Argentine Ministry of Justice court that is investigating her allegations of trafficking against Maradona’s former entourage, linked to events when she was 16.

    Continue reading...", + "category": "Diego Maradona", + "link": "https://www.theguardian.com/football/2021/nov/23/diego-maradona-cuban-woman-alleges-footballer-raped-her-when-she-was-16", + "creator": "Reuters", + "pubDate": "2021-11-23T01:19:14Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Wheel of Time actor Madeleine Madden: ‘As an Aboriginal woman, my life is politicised’", + "description": "

    The star of the new Amazon Prime fantasy series and granddaughter of Charles Perkins discusses her ‘dream role’, multiracial casting and finding freedom outside Australia

    When she walked into the London casting room of The Wheel of Time, Madeleine Madden scanned the faces – a sea of white – and thought, “Yep, standard.”

    To announce her presence, she politely inquired, “The Wheel of Time?”

    Continue reading...", + "content": "

    The star of the new Amazon Prime fantasy series and granddaughter of Charles Perkins discusses her ‘dream role’, multiracial casting and finding freedom outside Australia

    When she walked into the London casting room of The Wheel of Time, Madeleine Madden scanned the faces – a sea of white – and thought, “Yep, standard.”

    To announce her presence, she politely inquired, “The Wheel of Time?”

    Continue reading...", + "category": "Culture", + "link": "https://www.theguardian.com/culture/2021/nov/23/the-wheel-of-time-actor-madeleine-madden-as-an-aboriginal-woman-my-life-is-politicised", + "creator": "Jenny Valentish", + "pubDate": "2021-11-23T01:14:14Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Princes and the Press review – more degrading airing of the royal dirty laundry", + "description": "

    BBC programme is a compelling analysis of the troubled relationship between media and monarchy

    A few days before her wedding, Meghan decided she wanted to wear a particular tiara with emeralds. True, this isn’t the sort of issue that should trouble citizens of a mature democracy but when it comes to royals, Britain is neither mature nor, let’s face it, democratic. Indeed, Amol Rajan, the BBC media editor who presented the Princes and the Press (BBC Two), is a declared republican who once branded the royal family as “absurd” and the media as a “propaganda outlet” for the monarchy. As his measured, compelling analysis of the troubled relationship showed, he may have been right about the former, but the latter? Not so much. The media, we might conclude from his programme, may be driving the monarchy to self-destruct, which would, ironically enough, suit his earlier republican views.

    Back to tiaras. There was a problem: the Duchess of Sussex could not be allowed to wear the emerald tiara because it had some unfortunate history to do with Russia, according to the Sun’s former correspondent Dan Wootton. We never learned what that history was nor why it should matter. What we did learn from Wootton’s report is that Harry reportedly shouted at a royal dresser (who is a person, not a thing) that “whatever Meghan wants, Meghan gets.” This in turn prompted the Queen to tell somebody off.

    Continue reading...", + "content": "

    BBC programme is a compelling analysis of the troubled relationship between media and monarchy

    A few days before her wedding, Meghan decided she wanted to wear a particular tiara with emeralds. True, this isn’t the sort of issue that should trouble citizens of a mature democracy but when it comes to royals, Britain is neither mature nor, let’s face it, democratic. Indeed, Amol Rajan, the BBC media editor who presented the Princes and the Press (BBC Two), is a declared republican who once branded the royal family as “absurd” and the media as a “propaganda outlet” for the monarchy. As his measured, compelling analysis of the troubled relationship showed, he may have been right about the former, but the latter? Not so much. The media, we might conclude from his programme, may be driving the monarchy to self-destruct, which would, ironically enough, suit his earlier republican views.

    Back to tiaras. There was a problem: the Duchess of Sussex could not be allowed to wear the emerald tiara because it had some unfortunate history to do with Russia, according to the Sun’s former correspondent Dan Wootton. We never learned what that history was nor why it should matter. What we did learn from Wootton’s report is that Harry reportedly shouted at a royal dresser (who is a person, not a thing) that “whatever Meghan wants, Meghan gets.” This in turn prompted the Queen to tell somebody off.

    Continue reading...", + "category": "Television & radio", + "link": "https://www.theguardian.com/tv-and-radio/2021/nov/23/the-princes-and-the-press-review-more-degrading-airing-of-the-royal-dirty-laundry", + "creator": "Stuart Jeffries", + "pubDate": "2021-11-23T00:22:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia politics live update: Albanese says PM has ‘a problem with just telling the truth’ as Morrison faces growing backbench resistance", + "description": "

    Victoria reports 19 Covid deaths and 827 new cases; NSW two deaths and 173 cases; Chinese foreign ministry responds to Peter Dutton; Labor leader asked about PM’s claims he was informed about 2019 Hawaii trip; Coalition backbenchers threaten legislative agenda; voters endorse ALP’s economic management. Follow all the day’s news live

    Anthony Albanese was also asked about the text Scott Morrison sent him in 2019, ahead of his Hawaiian holiday during the 2019 bushfires.

    For those who need a refresher, Labor, as part of a “let’s remind everyone of all those times the prime minister didn’t tell the truth” campaign in QT, asked why the PMO had misled journalists over the whereabouts of the prime minister as Australia burned.

    I can only speak to what I have said, as the leader of the opposition will know, because I texted him from the plane when I was going on that leave and told him where I was going, and he was fully aware of where I was travelling with my family.

    Where I was going was on leave. That was the importance of the text message sent to the leader of the opposition. He knew I was taking leave. I told him I was taking leave. He chose to politicise that and has done so ever since.

    I wish to add to an answer. I want to confirm what the leader of the opposition said – that, in that text, I did not tell him the destination of where I was going on leave with my family; I simply communicated to him that I was taking leave. When I referred to him knowing where I was going and being fully aware I was travelling with my family, what I meant was that we were going on leave together. I know I didn’t tell him where we were going, because where members take leave is a private matter. I know I didn’t tell him the destination, nor would I, and nor would he expect me to have told him where I was going. I simply told him that I was taking leave with my family, and he was aware of that at that time.

    I just think this is a prime minister who can’t control his own party room, let alone capable of governing us into the future in the way that we need.

    If you can’t govern your party, how can you govern the country?

    Continue reading...", + "content": "

    Victoria reports 19 Covid deaths and 827 new cases; NSW two deaths and 173 cases; Chinese foreign ministry responds to Peter Dutton; Labor leader asked about PM’s claims he was informed about 2019 Hawaii trip; Coalition backbenchers threaten legislative agenda; voters endorse ALP’s economic management. Follow all the day’s news live

    Anthony Albanese was also asked about the text Scott Morrison sent him in 2019, ahead of his Hawaiian holiday during the 2019 bushfires.

    For those who need a refresher, Labor, as part of a “let’s remind everyone of all those times the prime minister didn’t tell the truth” campaign in QT, asked why the PMO had misled journalists over the whereabouts of the prime minister as Australia burned.

    I can only speak to what I have said, as the leader of the opposition will know, because I texted him from the plane when I was going on that leave and told him where I was going, and he was fully aware of where I was travelling with my family.

    Where I was going was on leave. That was the importance of the text message sent to the leader of the opposition. He knew I was taking leave. I told him I was taking leave. He chose to politicise that and has done so ever since.

    I wish to add to an answer. I want to confirm what the leader of the opposition said – that, in that text, I did not tell him the destination of where I was going on leave with my family; I simply communicated to him that I was taking leave. When I referred to him knowing where I was going and being fully aware I was travelling with my family, what I meant was that we were going on leave together. I know I didn’t tell him where we were going, because where members take leave is a private matter. I know I didn’t tell him the destination, nor would I, and nor would he expect me to have told him where I was going. I simply told him that I was taking leave with my family, and he was aware of that at that time.

    I just think this is a prime minister who can’t control his own party room, let alone capable of governing us into the future in the way that we need.

    If you can’t govern your party, how can you govern the country?

    Continue reading...", + "category": "Australia news", + "link": "https://www.theguardian.com/australia-news/live/2021/nov/23/australia-politics-morrison-coalition-labor-corona-poll-parliament-economy-albanese-andrews-canberra-victoria-nsw-act-sa-perrottet-rennick", + "creator": "Amy Remeikis", + "pubDate": "2021-11-22T22:41:06Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden pushes back against progressive criticism over renominating Powell as Fed chair – live", + "description": "

    America’s democracy will be at “critical risk” if the US Senate fails to pass sweeping voting rights legislation, more than 150 scholars of American democratic systems said in an open letter published Sunday.

    The academics called on the US Senate to get rid of the filibuster, the rule that requires 60 votes to advance most legislation through the upper chamber.

    Continue reading...", + "content": "

    America’s democracy will be at “critical risk” if the US Senate fails to pass sweeping voting rights legislation, more than 150 scholars of American democratic systems said in an open letter published Sunday.

    The academics called on the US Senate to get rid of the filibuster, the rule that requires 60 votes to advance most legislation through the upper chamber.

    Continue reading...", + "category": "US politics", + "link": "https://www.theguardian.com/us-news/live/2021/nov/22/build-back-better-senate-house-joe-biden-us-politics-latest", + "creator": "Abené Clayton (now), Gloria Oladipo and Joan E Greve (earlier)", + "pubDate": "2021-11-22T22:36:20Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China must answer serious questions about tennis star Peng Shuai, Australia says", + "description": "

    Human rights activists step up calls for diplomatic boycott of Beijing Winter Olympics

    Chinese authorities must answer serious concerns about the tennis star Peng Shuai’s welfare, the Australian government has said.

    The intervention comes as human rights activists and an independent senator step up calls for Australia to join a diplomatic boycott of the Beijing Winter Olympics over broader allegations of rights abuses against Uyghur Muslims in Xinjiang.

    Sign up to receive an email with the top stories from Guardian Australia every morning

    Continue reading...", + "content": "

    Human rights activists step up calls for diplomatic boycott of Beijing Winter Olympics

    Chinese authorities must answer serious concerns about the tennis star Peng Shuai’s welfare, the Australian government has said.

    The intervention comes as human rights activists and an independent senator step up calls for Australia to join a diplomatic boycott of the Beijing Winter Olympics over broader allegations of rights abuses against Uyghur Muslims in Xinjiang.

    Sign up to receive an email with the top stories from Guardian Australia every morning

    Continue reading...", + "category": "Australian foreign policy", + "link": "https://www.theguardian.com/australia-news/2021/nov/23/china-must-answer-serious-questions-about-tennis-star-peng-shuai-australia-says", + "creator": "Daniel Hurst", + "pubDate": "2021-11-22T21:57:36Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia's Covid pandemic in 60 seconds: Victoria and Melbourne map – video", + "description": "

    The coronavirus pandemic in Australia has caused almost 2,000 deaths and resulted in close to 200,000 cases. In the worst-hit states of New South Wales and Victoria, high vaccination rates have now reduced the rate of hospital admissions. Here we have used an experimental mapping method to show how the outbreak spread across the two states from the start of the pandemic until now. Each dot represents a person who tested positive to Covid-19, and has been placed randomly within their postcode or local government area to visualise the number of cases in a region. It’s important to remember that this is not necessarily where they caught the virus and instead is where they live. Blue dots represent those who probably caught the coronavirus overseas, and red dots are those who caught the coronavirus locally. All dots fade to grey and are removed after two weeks

    ► Subscribe to Guardian Australia on YouTube

    Continue reading...", + "content": "

    The coronavirus pandemic in Australia has caused almost 2,000 deaths and resulted in close to 200,000 cases. In the worst-hit states of New South Wales and Victoria, high vaccination rates have now reduced the rate of hospital admissions. Here we have used an experimental mapping method to show how the outbreak spread across the two states from the start of the pandemic until now. Each dot represents a person who tested positive to Covid-19, and has been placed randomly within their postcode or local government area to visualise the number of cases in a region. It’s important to remember that this is not necessarily where they caught the virus and instead is where they live. Blue dots represent those who probably caught the coronavirus overseas, and red dots are those who caught the coronavirus locally. All dots fade to grey and are removed after two weeks

    ► Subscribe to Guardian Australia on YouTube

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/video/2021/nov/23/australias-covid-pandemic-in-60-seconds-victoria-and-melbourne-map-video", + "creator": "Nick Evershed, David Fanner, Adam Adada", + "pubDate": "2021-11-22T21:53:50Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ethiopian PM vows to lead troops in war against rebels", + "description": "

    Nobel Peace prize winner Abiy Ahmed’s statement came as the Tigray People’s Liberation Front continued to press towards Addis Ababa

    Ethiopia’s prime minister, Abiy Ahmed, has vowed to lead his country’s troops “from the battlefront”, the latest dramatic step by the Nobel Peace prize winner in a devastating year-long war with rebel groups.

    “Starting tomorrow, I will mobilise to the front to lead the defence forces,” Abiy, said in a statement posted on Twitter on Monday.

    Continue reading...", + "content": "

    Nobel Peace prize winner Abiy Ahmed’s statement came as the Tigray People’s Liberation Front continued to press towards Addis Ababa

    Ethiopia’s prime minister, Abiy Ahmed, has vowed to lead his country’s troops “from the battlefront”, the latest dramatic step by the Nobel Peace prize winner in a devastating year-long war with rebel groups.

    “Starting tomorrow, I will mobilise to the front to lead the defence forces,” Abiy, said in a statement posted on Twitter on Monday.

    Continue reading...", + "category": "Ethiopia", + "link": "https://www.theguardian.com/world/2021/nov/22/ethiopian-pm-vows-to-marshal-troops-in-war-against-rebels", + "creator": "Staff and agencies in Addis Ababa", + "pubDate": "2021-11-22T21:49:35Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Murder inquiry launched after man and woman die in Somerset village", + "description": "

    Two men aged 34 and 67 have been arrested, as neighbours describe shock in quiet area

    A murder inquiry has been launched after a husband and wife suffered fatal injuries at their home in a Somerset village while their young children were in the house.

    Neighbours said there had previously been rows in the street over parking, and though Avon and Somerset police declined to discuss a possible motive, the force referred itself to the watchdog because of previous contact it had had with those involved.

    Continue reading...", + "content": "

    Two men aged 34 and 67 have been arrested, as neighbours describe shock in quiet area

    A murder inquiry has been launched after a husband and wife suffered fatal injuries at their home in a Somerset village while their young children were in the house.

    Neighbours said there had previously been rows in the street over parking, and though Avon and Somerset police declined to discuss a possible motive, the force referred itself to the watchdog because of previous contact it had had with those involved.

    Continue reading...", + "category": "UK news", + "link": "https://www.theguardian.com/uk-news/2021/nov/22/two-arrests-after-man-and-woman-die-at-house-in-somerset-village", + "creator": "Steven Morris", + "pubDate": "2021-11-22T21:08:17Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Johnson ‘losing the confidence’ of Tory party after rambling CBI speech", + "description": "

    Senior party members concerned after chaotic fortnight, with PM said to be losing his grip over key policies

    Conservative MPs are increasingly worried about Boris Johnson’s competence and drive after he gave a rambling speech to business leaders and was accused of losing his grip over a series of key policies from social care to rail.

    Senior members of his own party said they needed Johnson to get the government back on track after a disastrous two weeks amid dismay about his performance at the Confederation of British Industry (CBI) conference, where he lost his place in his speech for about 20 seconds and diverted into a lengthy tangent about Peppa Pig.

    Continue reading...", + "content": "

    Senior party members concerned after chaotic fortnight, with PM said to be losing his grip over key policies

    Conservative MPs are increasingly worried about Boris Johnson’s competence and drive after he gave a rambling speech to business leaders and was accused of losing his grip over a series of key policies from social care to rail.

    Senior members of his own party said they needed Johnson to get the government back on track after a disastrous two weeks amid dismay about his performance at the Confederation of British Industry (CBI) conference, where he lost his place in his speech for about 20 seconds and diverted into a lengthy tangent about Peppa Pig.

    Continue reading...", + "category": "Boris Johnson", + "link": "https://www.theguardian.com/politics/2021/nov/22/johnson-losing-the-confidence-of-tory-party-after-rambling-cbi-speech", + "creator": "Aubrey Allegretti, Rowena Mason, Joanna Partridge and Rob Davies", + "pubDate": "2021-11-22T21:05:13Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Waukesha Christmas parade: man charged with homicide after five killed", + "description": "

    Darrell E Brooks, 39, in custody as police chief says suspect was involved in a domestic disturbance before the incident

    Authorities in Wisconsin on Monday identified a 39-year-old man as the person who ploughed his vehicle into a Christmas parade on Sunday night, killing five people and injuring another 48, including two children who remained in a critical condition.

    Darrell E Brooks was in custody, charged with five counts of intentional first-degree homicide, Daniel Thompson, police chief of Waukesha, a city 20 miles west of Milwaukee, said at an afternoon press conference.

    Continue reading...", + "content": "

    Darrell E Brooks, 39, in custody as police chief says suspect was involved in a domestic disturbance before the incident

    Authorities in Wisconsin on Monday identified a 39-year-old man as the person who ploughed his vehicle into a Christmas parade on Sunday night, killing five people and injuring another 48, including two children who remained in a critical condition.

    Darrell E Brooks was in custody, charged with five counts of intentional first-degree homicide, Daniel Thompson, police chief of Waukesha, a city 20 miles west of Milwaukee, said at an afternoon press conference.

    Continue reading...", + "category": "Wisconsin", + "link": "https://www.theguardian.com/us-news/2021/nov/22/waukesha-christmas-parade-investigators-suspect-wisconsin", + "creator": "Richard Luscombe", + "pubDate": "2021-11-22T20:13:32Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid live: UK records 44,917 new cases; strict restrictions for unvaccinated come into effect in Greece", + "description": "

    UK also reports 45 further Covid-related deaths; from today Greeks barred from all enclosed public spaces if they are unvaccinated

    Here’s some more detail from Agence France-Presse in Vienna on Austria’s move into its fourth Covid lockdown:

    People in Austria are not allowed to leave home except to go to work, shop for essentials and exercise, as the country returned to a Covid-19 lockdown on Monday morning.

    Continue reading...", + "content": "

    UK also reports 45 further Covid-related deaths; from today Greeks barred from all enclosed public spaces if they are unvaccinated

    Here’s some more detail from Agence France-Presse in Vienna on Austria’s move into its fourth Covid lockdown:

    People in Austria are not allowed to leave home except to go to work, shop for essentials and exercise, as the country returned to a Covid-19 lockdown on Monday morning.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/live/2021/nov/22/covid-news-live-austria-enters-nationwide-lockdown-australia-eases-international-border-restrictions", + "creator": "Miranda Bryant (now); Sarah Marsh, Martin Belam and Samantha Lock (earlier)", + "pubDate": "2021-11-22T19:19:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kenyan police launch investigation into death of British BBC employee", + "description": "

    Kate Mitchell’s body was found shortly after an emergency alarm was activated in her hotel room

    A murder investigation has been launched in Kenya into the death of a British woman who worked for the BBC’s international development charity.

    The body of Kate Mitchell, a senior manager at BBC Media Action, was found on Friday in the capital Nairobi shortly after an emergency alarm was activated in her room. Police in Kenya said the window to her eighth-floor hotel room had been broken and the body of a man Mitchell had been with earlier was found on the ground below.

    Continue reading...", + "content": "

    Kate Mitchell’s body was found shortly after an emergency alarm was activated in her hotel room

    A murder investigation has been launched in Kenya into the death of a British woman who worked for the BBC’s international development charity.

    The body of Kate Mitchell, a senior manager at BBC Media Action, was found on Friday in the capital Nairobi shortly after an emergency alarm was activated in her room. Police in Kenya said the window to her eighth-floor hotel room had been broken and the body of a man Mitchell had been with earlier was found on the ground below.

    Continue reading...", + "category": "Kenya", + "link": "https://www.theguardian.com/world/2021/nov/22/kenyan-police-launch-investigation-into-death-of-british-bbc-employee", + "creator": "Matthew Weaver", + "pubDate": "2021-11-22T18:48:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Germany and Netherlands face tightening Covid rules as Austria enters lockdown", + "description": "

    German foreign minister says most of country will be ‘vaccinated, cured or dead’ by end of winter

    Germany and the Netherlands have been told they should face still tougher Covid restrictions as the German health minister, Jens Spahn, made the startling prediction that most of his compatriots would be “vaccinated, cured or dead” by the end of winter.

    With Europe again the centre of the pandemic, ushering in tighter controls mainly on the unvaccinated across the continent, on Monday Austria became the first west European country to re-enter lockdown since vaccination began earlier this year.

    Continue reading...", + "content": "

    German foreign minister says most of country will be ‘vaccinated, cured or dead’ by end of winter

    Germany and the Netherlands have been told they should face still tougher Covid restrictions as the German health minister, Jens Spahn, made the startling prediction that most of his compatriots would be “vaccinated, cured or dead” by the end of winter.

    With Europe again the centre of the pandemic, ushering in tighter controls mainly on the unvaccinated across the continent, on Monday Austria became the first west European country to re-enter lockdown since vaccination began earlier this year.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/22/germany-and-netherlands-face-fresh-covid-rules-as-austria-enters-lockdown", + "creator": "Jon Henley, Europe correspondent, Kate Connolly in Berlin and Jennifer Rankin in Brussels", + "pubDate": "2021-11-22T18:37:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Chile’s right rejoices after pro-Pinochet candidate wins presidential first round", + "description": "

    José Antonio Kast will face progressive former student leader Gabriel Boric in runoff election next month

    Chile’s right wing have claimed a jubilant victory after José Antonio Kast, a former congressman with a history of defending the Pinochet dictatorship, secured a surprise win in the first round of the country’s presidential election.

    Kast, who campaigned on a platform of public order, migration controls and conservative social values, confounded expectations to take 28% of the vote and beat the progressive former student leader Gabriel Boric by two percentage points.

    Continue reading...", + "content": "

    José Antonio Kast will face progressive former student leader Gabriel Boric in runoff election next month

    Chile’s right wing have claimed a jubilant victory after José Antonio Kast, a former congressman with a history of defending the Pinochet dictatorship, secured a surprise win in the first round of the country’s presidential election.

    Kast, who campaigned on a platform of public order, migration controls and conservative social values, confounded expectations to take 28% of the vote and beat the progressive former student leader Gabriel Boric by two percentage points.

    Continue reading...", + "category": "Chile", + "link": "https://www.theguardian.com/world/2021/nov/22/jose-antonio-kast-chile-right-wing-presidential-election", + "creator": "John Bartlett in Santiago", + "pubDate": "2021-11-22T18:18:52Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Hogging the limelight: how Peppa Pig became a global phenomenon", + "description": "

    Boris Johnson threw spotlight on show that has run for 17 years and been exported to 118 countries

    To many families taking their excited children to Peppa Pig World, the most surreal aspect isn’t the pastel-hued streets or the giant cartoon animals milling around; it’s the soundtrack. Piped from speakers spread around the park, the can’t-get-it-out-of-your-head theme tune plays on a continuous loop, and parents could be forgiven for feeling they’ve entered a nightmare rather than a toddler’s dreamscape.

    Not so for Boris Johnson. The prime minister was so buoyed by his Sunday enjoying delights such an egg-shaped boat ride overlooked by Grampy Rabbit, where he was photographed grinning alongside his one-year-old son Wilfred and wife Carrie, that he was moved to praise the New Forest amusement park effusively in a speech to business leaders on Monday.

    Continue reading...", + "content": "

    Boris Johnson threw spotlight on show that has run for 17 years and been exported to 118 countries

    To many families taking their excited children to Peppa Pig World, the most surreal aspect isn’t the pastel-hued streets or the giant cartoon animals milling around; it’s the soundtrack. Piped from speakers spread around the park, the can’t-get-it-out-of-your-head theme tune plays on a continuous loop, and parents could be forgiven for feeling they’ve entered a nightmare rather than a toddler’s dreamscape.

    Not so for Boris Johnson. The prime minister was so buoyed by his Sunday enjoying delights such an egg-shaped boat ride overlooked by Grampy Rabbit, where he was photographed grinning alongside his one-year-old son Wilfred and wife Carrie, that he was moved to praise the New Forest amusement park effusively in a speech to business leaders on Monday.

    Continue reading...", + "category": "Peppa Pig", + "link": "https://www.theguardian.com/tv-and-radio/2021/nov/22/boris-johnson-hogging-the-limelight-how-peppa-pig-became-a-global-phenomenon", + "creator": "Rachel Hall", + "pubDate": "2021-11-22T17:47:14Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aid workers say Mediterranean a ‘liquid graveyard’ after 75 feared dead off Libya", + "description": "

    People smugglers are putting hundreds to sea this autumn despite stormy weather

    More than 75 people are feared dead after their boat capsized in stormy seas off the coast of Libya while attempting to reach Europe in one of the deadliest shipwrecks this year, according to the UN.

    Fifteen survivors were rescued by local fishers and brought to the port of Zuwara in north-western Libya. They said there were about 92 people onboard the vessel when the incident took place on 17 November. Most of those who died came from sub-Saharan Africa.

    Continue reading...", + "content": "

    People smugglers are putting hundreds to sea this autumn despite stormy weather

    More than 75 people are feared dead after their boat capsized in stormy seas off the coast of Libya while attempting to reach Europe in one of the deadliest shipwrecks this year, according to the UN.

    Fifteen survivors were rescued by local fishers and brought to the port of Zuwara in north-western Libya. They said there were about 92 people onboard the vessel when the incident took place on 17 November. Most of those who died came from sub-Saharan Africa.

    Continue reading...", + "category": "Migration", + "link": "https://www.theguardian.com/world/2021/nov/22/aid-workers-say-mediterranean-a-liquid-graveyard-after-75-feared-dead-off-libya", + "creator": "Lorenzo Tondo in Palermo", + "pubDate": "2021-11-22T17:41:00Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Meredith Kercher killer Rudy Guede could be freed within days", + "description": "

    Man convicted of murdering British student asks for sentence, due to end in January, to be reduced

    Rudy Guede, the only person definitively convicted of the murder of the British student Meredith Kercher, could be freed in the coming days after completing 13 years of a 16-year sentence.

    Guede’s sentence is due to end on 4 January, but he has asked magistrates to reduce it by a further 45 days.

    Continue reading...", + "content": "

    Man convicted of murdering British student asks for sentence, due to end in January, to be reduced

    Rudy Guede, the only person definitively convicted of the murder of the British student Meredith Kercher, could be freed in the coming days after completing 13 years of a 16-year sentence.

    Guede’s sentence is due to end on 4 January, but he has asked magistrates to reduce it by a further 45 days.

    Continue reading...", + "category": "Meredith Kercher", + "link": "https://www.theguardian.com/world/2021/nov/22/meredith-kercher-killer-rudy-guede-could-be-freed-within-days", + "creator": "Angela Giuffrida in Rome", + "pubDate": "2021-11-22T17:22:29Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Improving migrant workers’ lives in Qatar | Letter", + "description": "

    Faha Al-Mana responds to a report on allegations of exploitation and abuse by migrant workers in the run-up to the 2022 World Cup

    Your report (‘We have fallen into a trap’: Qatar’s World Cup dream is a nightmare for hotel staff, 18 November) fails to acknowledge the progress Qatar has made to improve living and working standards for foreign workers, including those in the hospitality sector.

    The impact of Qatar’s reforms is best highlighted through its numbers: over 240,000 workers have successfully changed jobs since barriers were removed in September 2020; more than 400,000 have directly benefited from the new minimum wage; improvements to the wage protection system now protect 96% of eligible workers from wage abuse; and hundreds of thousands of workers have left Qatar and returned without permission from their employer since exit permits were abolished.

    Continue reading...", + "content": "

    Faha Al-Mana responds to a report on allegations of exploitation and abuse by migrant workers in the run-up to the 2022 World Cup

    Your report (‘We have fallen into a trap’: Qatar’s World Cup dream is a nightmare for hotel staff, 18 November) fails to acknowledge the progress Qatar has made to improve living and working standards for foreign workers, including those in the hospitality sector.

    The impact of Qatar’s reforms is best highlighted through its numbers: over 240,000 workers have successfully changed jobs since barriers were removed in September 2020; more than 400,000 have directly benefited from the new minimum wage; improvements to the wage protection system now protect 96% of eligible workers from wage abuse; and hundreds of thousands of workers have left Qatar and returned without permission from their employer since exit permits were abolished.

    Continue reading...", + "category": "Workers' rights", + "link": "https://www.theguardian.com/global-development/2021/nov/22/improving-migrant-workers-lives-in-qatar", + "creator": "Letters", + "pubDate": "2021-11-22T17:19:01Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Priceless Roman mosaic spent 50 years as a coffee table in New York apartment", + "description": "

    Long-lost mosaic commissioned by Emperor Caligula disappeared from Italian museum during second world war

    A priceless Roman mosaic that once decorated a ship used by the emperor Caligula was used for almost 50 years as a coffee table in an apartment in New York City.

    Dario Del Bufalo, an Italian expert on ancient stone and marble, described how he found the mosaic in an interview with CBS’s 60 Minutes on Sunday.

    Continue reading...", + "content": "

    Long-lost mosaic commissioned by Emperor Caligula disappeared from Italian museum during second world war

    A priceless Roman mosaic that once decorated a ship used by the emperor Caligula was used for almost 50 years as a coffee table in an apartment in New York City.

    Dario Del Bufalo, an Italian expert on ancient stone and marble, described how he found the mosaic in an interview with CBS’s 60 Minutes on Sunday.

    Continue reading...", + "category": "Art and design", + "link": "https://www.theguardian.com/artanddesign/2021/nov/22/priceless-roman-mosaic-coffee-table-new-york-apartment", + "creator": "Gloria Oladipo", + "pubDate": "2021-11-22T16:45:43Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peng Shuai backlash leaves IOC facing familiar criticism over human rights", + "description": "

    Analysis: Olympic committee is accused of engaging in a ‘publicity stunt’ by taking part in video call

    As human rights organisations and the world’s media questioned the whereabouts of the Chinese tennis player Peng Shuai, the International Olympic Committee opted for a “quiet diplomacy” approach, arguing that was the most effective way to deal with such a case.

    “Experience shows that quiet diplomacy offers the best opportunity to find a solution for questions of such nature. This explains why the IOC will not comment any further at this stage,” the Lausanne-based organisation said in an emailed statement on Thursday about the case of Peng, who disappeared from public view after she made an accusation of sexual assault against a former senior Chinese official.

    Continue reading...", + "content": "

    Analysis: Olympic committee is accused of engaging in a ‘publicity stunt’ by taking part in video call

    As human rights organisations and the world’s media questioned the whereabouts of the Chinese tennis player Peng Shuai, the International Olympic Committee opted for a “quiet diplomacy” approach, arguing that was the most effective way to deal with such a case.

    “Experience shows that quiet diplomacy offers the best opportunity to find a solution for questions of such nature. This explains why the IOC will not comment any further at this stage,” the Lausanne-based organisation said in an emailed statement on Thursday about the case of Peng, who disappeared from public view after she made an accusation of sexual assault against a former senior Chinese official.

    Continue reading...", + "category": "Peng Shuai", + "link": "https://www.theguardian.com/sport/2021/nov/22/peng-shuai-backlash-ioc-familiar-criticism-human-rights", + "creator": "Vincent Ni China affairs correspondent", + "pubDate": "2021-11-22T16:37:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Base of the iceberg: the tragic cost of concussion in amateur sport | Emma Kemp", + "description": "

    Former footy player Paul Wheatley is serving a prison sentence – the culmination of a chain of events that could be traced back to numerous on-field head knocks

    Paul Wheatley is often in bed by 7.30pm. There is little else to do once locked in his prison cell well before the sun’s light fades. So he reads a bit, then attempts to drift into unconsciousness.

    It is the only sure way to push out the voice which follows him everywhere. The one most familiar and cherished in his world frantically repeating his name, each an anguished attempt to rouse him from a seizure before they were off the road and the tree appeared and it was too late.

    Continue reading...", + "content": "

    Former footy player Paul Wheatley is serving a prison sentence – the culmination of a chain of events that could be traced back to numerous on-field head knocks

    Paul Wheatley is often in bed by 7.30pm. There is little else to do once locked in his prison cell well before the sun’s light fades. So he reads a bit, then attempts to drift into unconsciousness.

    It is the only sure way to push out the voice which follows him everywhere. The one most familiar and cherished in his world frantically repeating his name, each an anguished attempt to rouse him from a seizure before they were off the road and the tree appeared and it was too late.

    Continue reading...", + "category": "Concussion in sport", + "link": "https://www.theguardian.com/sport/2021/nov/23/base-of-the-iceberg-the-tragic-cost-of-concussion-in-amateur-sport", + "creator": "Emma Kemp", + "pubDate": "2021-11-22T16:30:30Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Outrage after two journalists detained at Indigenous protest in Canada", + "description": "

    Press organizations condemn arrest of Amber Bracken and Michael Toledano at pipeline protest in British Columbia

    Press organizations in Canada have condemned the arrest of two journalists who were detained while covering Indigenous-led resistance to a controversial pipeline project and remain in custody.

    Amber Bracken, an award-winning photojournalist who has previously worked with the Guardian, and Michael Toledano, a documentary film-maker, were arrested on Friday by Royal Canadian Mounted police officers who were enforcing a court-ordered injunction in British Columbia. More than a dozen protesters were also arrested.

    Continue reading...", + "content": "

    Press organizations condemn arrest of Amber Bracken and Michael Toledano at pipeline protest in British Columbia

    Press organizations in Canada have condemned the arrest of two journalists who were detained while covering Indigenous-led resistance to a controversial pipeline project and remain in custody.

    Amber Bracken, an award-winning photojournalist who has previously worked with the Guardian, and Michael Toledano, a documentary film-maker, were arrested on Friday by Royal Canadian Mounted police officers who were enforcing a court-ordered injunction in British Columbia. More than a dozen protesters were also arrested.

    Continue reading...", + "category": "Canada", + "link": "https://www.theguardian.com/world/2021/nov/22/canada-two-journalists-detained-indigenous-pipeline-protest", + "creator": "Leyland Ceccoin Ottawa", + "pubDate": "2021-11-22T16:23:17Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "West weighs up costs of boycotting China’s Winter Olympics", + "description": "

    Analysis: calls growing amid Xinjiang allegations and Peng Shuai fallout, but Beijing takes slights very seriously

    Boycotting the Beijing Winter Olympics in February may seem a simple, symbolic diplomatic gesture – when put alongside the allegations of labour camps in Xinjiang province and the apparent sexual exploitation of the Chinese tennis star Peng Shuai – but such is the contemporary economic power of China that the step will only be taken after much agonising.

    The threats and economic boycotts that Australia, Canada and more recently Lithuania have suffered at the hands of the Chinese for challenging Beijing’s authority in one way or another are not experiences other countries will want to copy lightly.

    Continue reading...", + "content": "

    Analysis: calls growing amid Xinjiang allegations and Peng Shuai fallout, but Beijing takes slights very seriously

    Boycotting the Beijing Winter Olympics in February may seem a simple, symbolic diplomatic gesture – when put alongside the allegations of labour camps in Xinjiang province and the apparent sexual exploitation of the Chinese tennis star Peng Shuai – but such is the contemporary economic power of China that the step will only be taken after much agonising.

    The threats and economic boycotts that Australia, Canada and more recently Lithuania have suffered at the hands of the Chinese for challenging Beijing’s authority in one way or another are not experiences other countries will want to copy lightly.

    Continue reading...", + "category": "China", + "link": "https://www.theguardian.com/world/2021/nov/22/west-weighs-up-costs-of-boycotting-china-beijing-winter-olympics", + "creator": "Patrick Wintour Diplomatic editor", + "pubDate": "2021-11-22T16:15:24Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nasa to slam spacecraft into asteroid in mission to avoid future Armaggedon", + "description": "

    Test drive of planetary defence system aims to provide data on how to deflect asteroids away from Earth

    That’s one large rock, one momentous shift in our relationship with space. On Wednesday, Nasa will launch a mission to deliberately slam a spacecraft into an asteroid to try to alter its orbit – the first time humanity has tried to interfere in the gravitational dance of the solar system. The aim is to test drive a planetary defence system that could prevent us from going the same way as the dinosaurs, providing the first real data about what it would take to deflect an Armageddon-inducing asteroid away from Earth.

    Our planet is constantly being bombarded with small pieces of debris, but these are usually burned or broken up long before they hit the ground. Once in a while, however, something large enough to do significant damage hits the ground. About 66m years ago, one such collision is thought to have ended the reign of the dinosaurs, ejecting vast amounts of dust and debris into the upper atmosphere, which obscured the sun and caused food chains to collapse. Someday, something similar could call time on humanity’s reign – unless we can find a way to deflect it.

    Continue reading...", + "content": "

    Test drive of planetary defence system aims to provide data on how to deflect asteroids away from Earth

    That’s one large rock, one momentous shift in our relationship with space. On Wednesday, Nasa will launch a mission to deliberately slam a spacecraft into an asteroid to try to alter its orbit – the first time humanity has tried to interfere in the gravitational dance of the solar system. The aim is to test drive a planetary defence system that could prevent us from going the same way as the dinosaurs, providing the first real data about what it would take to deflect an Armageddon-inducing asteroid away from Earth.

    Our planet is constantly being bombarded with small pieces of debris, but these are usually burned or broken up long before they hit the ground. Once in a while, however, something large enough to do significant damage hits the ground. About 66m years ago, one such collision is thought to have ended the reign of the dinosaurs, ejecting vast amounts of dust and debris into the upper atmosphere, which obscured the sun and caused food chains to collapse. Someday, something similar could call time on humanity’s reign – unless we can find a way to deflect it.

    Continue reading...", + "category": "Asteroids", + "link": "https://www.theguardian.com/science/2021/nov/22/nasa-slam-spacecraft-into-asteroid-to-avoid-armaggedon", + "creator": "Linda Geddes", + "pubDate": "2021-11-22T16:04:03Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘She believed in every one of us’: ex-pupils on their inspirational teachers", + "description": "

    After Adele’s tearful reunion with a former teacher, four readers recall their own school memories

    “So bloody cool, so engaging.” That’s how Adele described her English teacher at Chestnut Grove school in Balham, south-west London, Ms McDonald, when asked who had inspired her.

    Answering a question from the actor Emma Thompson during ITV’s An Audience With Adele on Sunday, Adele said: “She really made us care, and we knew that she cared about us and stuff like that.”

    Continue reading...", + "content": "

    After Adele’s tearful reunion with a former teacher, four readers recall their own school memories

    “So bloody cool, so engaging.” That’s how Adele described her English teacher at Chestnut Grove school in Balham, south-west London, Ms McDonald, when asked who had inspired her.

    Answering a question from the actor Emma Thompson during ITV’s An Audience With Adele on Sunday, Adele said: “She really made us care, and we knew that she cared about us and stuff like that.”

    Continue reading...", + "category": "Teaching", + "link": "https://www.theguardian.com/education/2021/nov/22/she-believed-in-us-ex-pupils-on-their-inspirational-teachers-adele", + "creator": "Jamie Grierson", + "pubDate": "2021-11-22T15:50:59Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Russia accuses west of building up forces on its borders", + "description": "

    Moscow, which has nearly 100,000 troops near Ukraine border, also criticises ‘provocative policy’ of US and EU towards Kyiv

    Russia has accused the west of building up forces on its borders as well as those of Belarus in remarks that appeared tailored to mirror recent US warnings about Moscow’s aggressive positioning towards Ukraine.

    The Kremlin, as well as Russian intelligence, security, and diplomatic officials, have all gone on the offensive in the past 48 hours after Vladimir Putin publicly instructed his diplomats that tensions should be maintained with the west as a form of aggressive deterrence.

    Continue reading...", + "content": "

    Moscow, which has nearly 100,000 troops near Ukraine border, also criticises ‘provocative policy’ of US and EU towards Kyiv

    Russia has accused the west of building up forces on its borders as well as those of Belarus in remarks that appeared tailored to mirror recent US warnings about Moscow’s aggressive positioning towards Ukraine.

    The Kremlin, as well as Russian intelligence, security, and diplomatic officials, have all gone on the offensive in the past 48 hours after Vladimir Putin publicly instructed his diplomats that tensions should be maintained with the west as a form of aggressive deterrence.

    Continue reading...", + "category": "Russia", + "link": "https://www.theguardian.com/world/2021/nov/22/russia-accuses-west-of-building-up-forces-on-its-borders", + "creator": "Andrew Roth in Moscow", + "pubDate": "2021-11-22T15:28:22Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "After sex and on the toilet: why we can’t put our phones down – but we really, really should", + "description": "

    A new survey has found that nowhere is sacred for a society of phone addicts, not even weddings and funerals

    Age: Fresh out of the poll oven. A new one, of 1,098 American adults by the games website Solitaired, finds we use our phones all the time and everywhere.

    No way! People are addicted to phones? I honestly had no idea … Hey, less of the sarcasm. You might not realise the extent of it. Nowhere or no occasion is sacred.

    Continue reading...", + "content": "

    A new survey has found that nowhere is sacred for a society of phone addicts, not even weddings and funerals

    Age: Fresh out of the poll oven. A new one, of 1,098 American adults by the games website Solitaired, finds we use our phones all the time and everywhere.

    No way! People are addicted to phones? I honestly had no idea … Hey, less of the sarcasm. You might not realise the extent of it. Nowhere or no occasion is sacred.

    Continue reading...", + "category": "Life and style", + "link": "https://www.theguardian.com/lifeandstyle/2021/nov/22/after-sex-on-toilet-crossing-road-cant-put-phones-down", + "creator": "", + "pubDate": "2021-11-22T15:06:34Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How a dream coach helped Benedict Cumberbatch and Jane Campion put the unconscious on screen", + "description": "

    Kim Gillingham explains how her work on The Power of the Dog enabled the ‘lioness of an artist’ and her ‘translucent’ star to access their inmost drives

    To access his dreams the surrealist artist Salvador Dalí napped while sitting on a chair, holding keys over an upturned metal plate. After he lost consciousness, the keys dropped onto the plate, jangling him awake so he could paint fresh from his unconscious. Kim Gillingham tells this story to connect her practice to the history of artistic endeavour. She is a Jungian dream coach, based in LA, who combines ideas from psychoanalysis and the method acting of the Actors Studio to, in her words: “access the incredible resource of the unconscious through dreams and through work with the body and to use that material to bring authenticity, truth and aliveness up through whatever discipline the artist is working in”.

    Jane Campion sought Gillingham’s services to help conjure the forces at play in her first film in 12 years, The Power of the Dog. It’s a western adapted from Thomas Savage’s 1967 novel that riffs on themes of masculinity and stars Benedict Cumberbatch as Phil Burbank, a toxic alpha cowboy whose personality is designed to hide a secret that would have made him vulnerable in the story’s setting of 1920s Montana.

    The Power of the Dog is streaming now on Netflix.

    Continue reading...", + "content": "

    Kim Gillingham explains how her work on The Power of the Dog enabled the ‘lioness of an artist’ and her ‘translucent’ star to access their inmost drives

    To access his dreams the surrealist artist Salvador Dalí napped while sitting on a chair, holding keys over an upturned metal plate. After he lost consciousness, the keys dropped onto the plate, jangling him awake so he could paint fresh from his unconscious. Kim Gillingham tells this story to connect her practice to the history of artistic endeavour. She is a Jungian dream coach, based in LA, who combines ideas from psychoanalysis and the method acting of the Actors Studio to, in her words: “access the incredible resource of the unconscious through dreams and through work with the body and to use that material to bring authenticity, truth and aliveness up through whatever discipline the artist is working in”.

    Jane Campion sought Gillingham’s services to help conjure the forces at play in her first film in 12 years, The Power of the Dog. It’s a western adapted from Thomas Savage’s 1967 novel that riffs on themes of masculinity and stars Benedict Cumberbatch as Phil Burbank, a toxic alpha cowboy whose personality is designed to hide a secret that would have made him vulnerable in the story’s setting of 1920s Montana.

    The Power of the Dog is streaming now on Netflix.

    Continue reading...", + "category": "The Power of the Dog", + "link": "https://www.theguardian.com/film/2021/nov/22/dream-coach-benedict-cumberbatch-jane-campion-unconscious-on-screen-the-power-of-the-dog", + "creator": "Sophie Monks Kaufman", + "pubDate": "2021-11-22T15:00:28Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Covid has formed the person I am’: young people on how the pandemic changed them", + "description": "

    While some were inspired to make the most of life when they finally could, others say they felt unvalued and overlooked, as well as disappointed by the government

    For the past 12 months, the Guardian has tracked the journey of a group of young people from across the UK, capturing their intimate feelings and experiences as the pandemic upends their lives. Here they tell us how the past year has affected them – and transformed their futures.

    Aadam Patel, 22, lives in Dewsbury, West Yorkshire, with his parents, Musa and Zubeda, and his brother and two sisters

    Continue reading...", + "content": "

    While some were inspired to make the most of life when they finally could, others say they felt unvalued and overlooked, as well as disappointed by the government

    For the past 12 months, the Guardian has tracked the journey of a group of young people from across the UK, capturing their intimate feelings and experiences as the pandemic upends their lives. Here they tell us how the past year has affected them – and transformed their futures.

    Aadam Patel, 22, lives in Dewsbury, West Yorkshire, with his parents, Musa and Zubeda, and his brother and two sisters

    Continue reading...", + "category": "Young people", + "link": "https://www.theguardian.com/society/2021/nov/22/covid-has-formed-the-person-i-am-young-people-on-how-the-pandemic-changed-them", + "creator": "Amelia Hill", + "pubDate": "2021-11-22T14:36:10Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Women bore brunt of social and economic impacts of Covid – Red Cross", + "description": "

    In 82% of countries surveyed, women were disproportionately hit, from loss of income to extra responsibility for caring, report shows

    The social and economic burden of Covid-19 has fallen disproportionately on women around the world, the Red Cross has warned, in a stark analysis of the impact of the pandemic.

    Women were particularly affected by loss of income and education, rises in domestic violence, child marriage and trafficking, and responsibility for caring for children and sick relatives, according to a comprehensive report published by the International Federation of Red Cross and Red Crescent Societies (IFRC) on Monday.

    Continue reading...", + "content": "

    In 82% of countries surveyed, women were disproportionately hit, from loss of income to extra responsibility for caring, report shows

    The social and economic burden of Covid-19 has fallen disproportionately on women around the world, the Red Cross has warned, in a stark analysis of the impact of the pandemic.

    Women were particularly affected by loss of income and education, rises in domestic violence, child marriage and trafficking, and responsibility for caring for children and sick relatives, according to a comprehensive report published by the International Federation of Red Cross and Red Crescent Societies (IFRC) on Monday.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/22/women-bore-brunt-of-social-and-economic-impacts-of-covid-red-cross", + "creator": "Jessie McDonald", + "pubDate": "2021-11-22T14:07:21Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘All my friends went home’: a fruit picker on life without EU workers", + "description": "

    With fellow Europeans leaving the UK, and no British workers taking their place, Eleanor Popa’s job harvesting strawberries has gone from tough to tough and lonely. Will the farm survive another year?

    Eleanor Popa used to sleep in a six-berth caravan on the site of Sharrington Strawberries, a 16-hectare (40-acre) strawberry farm in Melton Constable, Norfolk. Now, there are only four people in her caravan: everyone else has left to work in EU countries. “My friends,” she says, “they went home, or to work in Spain and Germany. A lot of them did not come back to work this year.”

    Popa, who is from Bulgaria, has been a fruit picker for two years. “It’s hard work,” she says. “We have to get up early and pick. It’s 6am in the summer. Now we get up at 7.30am. And we work in tunnels. Sometimes it’s cold, sometimes it’s hot. Sometimes it’s windy. It can be boring.” Picking strawberries is skilled work. “It took me a month to learn how to pick the fruit,” she says.

    Continue reading...", + "content": "

    With fellow Europeans leaving the UK, and no British workers taking their place, Eleanor Popa’s job harvesting strawberries has gone from tough to tough and lonely. Will the farm survive another year?

    Eleanor Popa used to sleep in a six-berth caravan on the site of Sharrington Strawberries, a 16-hectare (40-acre) strawberry farm in Melton Constable, Norfolk. Now, there are only four people in her caravan: everyone else has left to work in EU countries. “My friends,” she says, “they went home, or to work in Spain and Germany. A lot of them did not come back to work this year.”

    Popa, who is from Bulgaria, has been a fruit picker for two years. “It’s hard work,” she says. “We have to get up early and pick. It’s 6am in the summer. Now we get up at 7.30am. And we work in tunnels. Sometimes it’s cold, sometimes it’s hot. Sometimes it’s windy. It can be boring.” Picking strawberries is skilled work. “It took me a month to learn how to pick the fruit,” she says.

    Continue reading...", + "category": "Work & careers", + "link": "https://www.theguardian.com/lifeandstyle/2021/nov/22/all-my-friends-went-home-a-fruit-picker-on-life-without-eu-workers", + "creator": "Sirin Kale", + "pubDate": "2021-11-22T14:00:27Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Another Covid Christmas: Britons urged to delay festive plans", + "description": "

    Analysis: scientists say high transmission rates mean caution is critical if people are to stay safe

    As Christmas approached in 2020, it was not a Dickensian spirit but the spectre of Covid that haunted households up and down the UK.

    With cases soaring, government-approved plans to allow three households to mix for five days in England were scrapped within weeks of being made, while scientists urged families to connect over Zoom or host drinks on the pavement rather than meeting for a hug.

    Continue reading...", + "content": "

    Analysis: scientists say high transmission rates mean caution is critical if people are to stay safe

    As Christmas approached in 2020, it was not a Dickensian spirit but the spectre of Covid that haunted households up and down the UK.

    With cases soaring, government-approved plans to allow three households to mix for five days in England were scrapped within weeks of being made, while scientists urged families to connect over Zoom or host drinks on the pavement rather than meeting for a hug.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/22/another-covid-christmas-britons-urged-delay-festive-plans", + "creator": "Nicola Davis Science correspondent", + "pubDate": "2021-11-22T13:35:00Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Violence breaks out in Brussels in protests against Covid restrictions – video", + "description": "

    Riot police and protesters clashed in the streets of Brussels on Sunday in demonstrations over government-imposed Covid-19 restrictions, with police firing water cannon and teargas at crowds. Protesters threw smoke bombs, fireworks and rocks at officers. Belgium tightened its coronavirus restrictions on Wednesday, mandating wider use of masks and enforcing working from home, as cases surged in the country

    Continue reading...", + "content": "

    Riot police and protesters clashed in the streets of Brussels on Sunday in demonstrations over government-imposed Covid-19 restrictions, with police firing water cannon and teargas at crowds. Protesters threw smoke bombs, fireworks and rocks at officers. Belgium tightened its coronavirus restrictions on Wednesday, mandating wider use of masks and enforcing working from home, as cases surged in the country

    Continue reading...", + "category": "Belgium", + "link": "https://www.theguardian.com/world/video/2021/nov/22/violence-breaks-out-in-brussels-in-protests-against-covid-restrictions-video", + "creator": "", + "pubDate": "2021-11-22T10:41:47Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The road to reform: have things improved for Qatar’s World Cup migrant workers?", + "description": "

    A year before kick off, workers claim companies are refusing to enforce sweeping new labour laws created to stamp out human rights abuses

    When Qatar won the bid to host the World Cup in 2010, the triumphant Gulf state unveiled plans to host the most spectacular of all World Cup tournaments and began an ambitious building plan of state-of-the-art stadiums, luxury hotels and a sparkling new metro.

    Yet, over the next decade, the brutal conditions in which hundreds of thousands of migrant workers toiled in searing heat to build Qatar’s World Cup vision has been exposed, with investigations into the forced labour , debt bondage and worker death toll causing international outrage.

    Continue reading...", + "content": "

    A year before kick off, workers claim companies are refusing to enforce sweeping new labour laws created to stamp out human rights abuses

    When Qatar won the bid to host the World Cup in 2010, the triumphant Gulf state unveiled plans to host the most spectacular of all World Cup tournaments and began an ambitious building plan of state-of-the-art stadiums, luxury hotels and a sparkling new metro.

    Yet, over the next decade, the brutal conditions in which hundreds of thousands of migrant workers toiled in searing heat to build Qatar’s World Cup vision has been exposed, with investigations into the forced labour , debt bondage and worker death toll causing international outrage.

    Continue reading...", + "category": "Workers' rights", + "link": "https://www.theguardian.com/global-development/2021/nov/22/qatar-labour-rights-reforms-world-cup-legacy", + "creator": "Pete Pattisson in Doha", + "pubDate": "2021-11-22T08:00:20Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pregnant women at risk in Malawi as drug shortage prevents caesareans", + "description": "

    Patients travelling long distances to find surgery cancelled as lack of anaesthetics shuts operating theatres in half of hospitals

    Almost half of Malawi’s district hospitals have closed their operating theatres due to a dire shortage of anaesthetics.

    Maternity care has been affected by a lack of drugs, said doctors. Surgery, including caesareans, has been cancelled and patients needing emergency care have been moved hundreds of miles around the country.

    Continue reading...", + "content": "

    Patients travelling long distances to find surgery cancelled as lack of anaesthetics shuts operating theatres in half of hospitals

    Almost half of Malawi’s district hospitals have closed their operating theatres due to a dire shortage of anaesthetics.

    Maternity care has been affected by a lack of drugs, said doctors. Surgery, including caesareans, has been cancelled and patients needing emergency care have been moved hundreds of miles around the country.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/22/pregnant-women-at-risk-in-malawi-as-drug-shortage-prevents-caesareans", + "creator": "Charles Pensulo in Lilongwe", + "pubDate": "2021-11-22T07:00:19Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Social media footage shows SUV speeding through Wisconsin Christmas parade – video", + "description": "

    Social media footage shows a SUV speeding through a Christmas parade in Waukesha, Wisconsin, narrowly missing a small child. The red vehicle continued down the road and hit more than 20 people, including children. Waukesha police chief Dan Thompson said a person of interest was in custody and the suspect vehicle had been recovered. 

    Continue reading...", + "content": "

    Social media footage shows a SUV speeding through a Christmas parade in Waukesha, Wisconsin, narrowly missing a small child. The red vehicle continued down the road and hit more than 20 people, including children. Waukesha police chief Dan Thompson said a person of interest was in custody and the suspect vehicle had been recovered. 

    Continue reading...", + "category": "US news", + "link": "https://www.theguardian.com/us-news/video/2021/nov/22/social-media-footage-shows-suv-speeding-through-wisconsin-christmas-parade-video", + "creator": "", + "pubDate": "2021-11-22T03:35:00Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Bank of Mum and Dad has allowed New Zealand’s wealthy to become ‘opportunity hoarders’ | Max Rashbrooke", + "description": "

    When people are born into money it’s like they’ve stepped on an up escalator, borne effortlessly upwards while the poor go down

    In the last few decades, an apparently ordinary financial institution has assumed an importance that could hardly have been foreseen. It is not a finance company, a payday lender or even a crypto-currency. It is, rather, the Bank of Mum and Dad. Barely a day goes by without a media story about the struggles of young people to afford a first home, and their experience is rarely free from some kind of parental influence. Even the young grafters who have supposedly pulled themselves up by the bootstraps into homeownership often turn out to have lived rent-free with their parents or received some other kind of family support. Even more often, of course, they have simply relied on a large deposit from mum and dad.

    This is, in one sense, innocuous: parents want to assist their offspring financially, and have surely been doing so for as long as money has existed. But it is also insidious, because it allows some young people a significant – and completely unfair – advantage over others. And because those who can help their children into homeownership are themselves more likely to be homeowners, it ensures that advantage and disadvantage are passed down the generations. The economist Shamubeel Eaqub, with his eye for a well-turned phrase, calls this “the return of the landed gentry”.

    Continue reading...", + "content": "

    When people are born into money it’s like they’ve stepped on an up escalator, borne effortlessly upwards while the poor go down

    In the last few decades, an apparently ordinary financial institution has assumed an importance that could hardly have been foreseen. It is not a finance company, a payday lender or even a crypto-currency. It is, rather, the Bank of Mum and Dad. Barely a day goes by without a media story about the struggles of young people to afford a first home, and their experience is rarely free from some kind of parental influence. Even the young grafters who have supposedly pulled themselves up by the bootstraps into homeownership often turn out to have lived rent-free with their parents or received some other kind of family support. Even more often, of course, they have simply relied on a large deposit from mum and dad.

    This is, in one sense, innocuous: parents want to assist their offspring financially, and have surely been doing so for as long as money has existed. But it is also insidious, because it allows some young people a significant – and completely unfair – advantage over others. And because those who can help their children into homeownership are themselves more likely to be homeowners, it ensures that advantage and disadvantage are passed down the generations. The economist Shamubeel Eaqub, with his eye for a well-turned phrase, calls this “the return of the landed gentry”.

    Continue reading...", + "category": "New Zealand", + "link": "https://www.theguardian.com/world/commentisfree/2021/nov/22/the-bank-of-mum-and-dad-is-allowing-new-zealands-wealthy-to-become-opportunity-hoarders", + "creator": "Max Rashbrooke", + "pubDate": "2021-11-21T19:00:04Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'We need your criticism', Pope tells young people – video", + "description": "

    Speaking at St Peter's Basilica in the Vatican, Pope Francis encourages young people in their efforts to protect the environment, telling them to be 'the critical conscience of society'

    Continue reading...", + "content": "

    Speaking at St Peter's Basilica in the Vatican, Pope Francis encourages young people in their efforts to protect the environment, telling them to be 'the critical conscience of society'

    Continue reading...", + "category": "Pope Francis", + "link": "https://www.theguardian.com/world/video/2021/nov/21/we-need-your-criticism-pope-tells-young-people-video", + "creator": "", + "pubDate": "2021-11-21T16:55:17Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sudanese PM’s release is only small step in resolving crisis", + "description": "

    Analysis: deal satisfies some international demands but route to democratic transition after fall of Omar al-Bashir remains unclear

    The deal to secure the release of the detained Sudanese prime minister, Abdalla Hamdok, signed by Hamdok and Gen Abdel Fattah al-Burhan, who seized power in a military coup on 25 October, leaves Sudan in a continuing crisis.

    While the agreement satisfies some of the immediate demands of the international community and mediators from the US and UN – not least securing the release of Hamdok and other political detainees – it leaves many of the country’s most serious issues in its political transition unresolved.

    Continue reading...", + "content": "

    Analysis: deal satisfies some international demands but route to democratic transition after fall of Omar al-Bashir remains unclear

    The deal to secure the release of the detained Sudanese prime minister, Abdalla Hamdok, signed by Hamdok and Gen Abdel Fattah al-Burhan, who seized power in a military coup on 25 October, leaves Sudan in a continuing crisis.

    While the agreement satisfies some of the immediate demands of the international community and mediators from the US and UN – not least securing the release of Hamdok and other political detainees – it leaves many of the country’s most serious issues in its political transition unresolved.

    Continue reading...", + "category": "Sudan", + "link": "https://www.theguardian.com/world/2021/nov/21/sudanese-pms-release-is-only-small-step-in-resolving-crisis", + "creator": "Peter Beaumont", + "pubDate": "2021-11-21T16:25:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "People used as 'living shields' in migration crisis, says Polish PM – video", + "description": "

    The Polish prime minister, Mateusz Morawiecki, says people from the Middle East are being used as 'living shields' as his country faces a 'new type of war', in reference to the migration crisis on its border with Belarus.

    Critics in the west have accused Belarus of artificially creating the crisis by bringing in people – mostly from the Middle East – and taking them to the border with promises of an easy crossing into the EU

    Continue reading...", + "content": "

    The Polish prime minister, Mateusz Morawiecki, says people from the Middle East are being used as 'living shields' as his country faces a 'new type of war', in reference to the migration crisis on its border with Belarus.

    Critics in the west have accused Belarus of artificially creating the crisis by bringing in people – mostly from the Middle East – and taking them to the border with promises of an easy crossing into the EU

    Continue reading...", + "category": "Poland", + "link": "https://www.theguardian.com/world/video/2021/nov/21/people-living-shields-migration-polish-pm-video-belarus-morawiecki", + "creator": "", + "pubDate": "2021-11-21T13:41:31Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sajid Javid rules out compulsory Covid vaccinations in UK – video", + "description": "

    The health secretary says the UK 'won't ever look at' mandatory vaccinations for the general public, after Austria announced it would become the first country in Europe to make coronavirus jabs compulsory. This comes as several countries, including Belgium, Germany and Norway, revealed last week they were preparing to beef up measures to tackle low uptake of Covid-19 vaccines

    Continue reading...", + "content": "

    The health secretary says the UK 'won't ever look at' mandatory vaccinations for the general public, after Austria announced it would become the first country in Europe to make coronavirus jabs compulsory. This comes as several countries, including Belgium, Germany and Norway, revealed last week they were preparing to beef up measures to tackle low uptake of Covid-19 vaccines

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/video/2021/nov/21/sajid-javid-rules-out-compulsory-covid-vaccinations-in-uk-video", + "creator": "", + "pubDate": "2021-11-21T11:31:19Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Indigenous community evicted as land clashes over agribusiness rock Paraguay", + "description": "

    Police in riot gear tore down a community’s homes and ripped up crops, highlighting the country’s highly unequal land ownership

    Armed police with water cannons and a low-flying helicopter have faced off against indigenous villagers brandishing sticks and bows in the latest clash over land rights in Paraguay, a country with one of the highest inequalities of land ownership in the world.

    Videos of Thursday’s confrontation showed officers in riot armour jostling members of the Hugua Po’i community – including children and elderly people – out of their homes and into torrential rain.

    Continue reading...", + "content": "

    Police in riot gear tore down a community’s homes and ripped up crops, highlighting the country’s highly unequal land ownership

    Armed police with water cannons and a low-flying helicopter have faced off against indigenous villagers brandishing sticks and bows in the latest clash over land rights in Paraguay, a country with one of the highest inequalities of land ownership in the world.

    Videos of Thursday’s confrontation showed officers in riot armour jostling members of the Hugua Po’i community – including children and elderly people – out of their homes and into torrential rain.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/21/paraguay-evictions-land-indigenous-agribusiness", + "creator": "Laurence Blair in Raúl Arsenio Oviedo", + "pubDate": "2021-11-21T10:30:09Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "ICU is full of the unvaccinated – my patience with them is wearing thin | Anonymous", + "description": "

    Most of the resources the NHS is devoting to Covid in hospital are being spent on people who have not had their jab

    In hospital, Covid-19 has largely become a disease of the unvaccinated. The man in his 20s who had always watched what he ate, worked out in the gym, was too healthy to ever catch Covid badly. The 48-year-old who never got round to making the appointment.

    The person in their 50s whose friend had side-effects. The woman who wanted to wait for more evidence. The young pregnant lady worried about the effect on her baby.

    The writer is an NHS respiratory consultant who works across a number of hospitals

    Continue reading...", + "content": "

    Most of the resources the NHS is devoting to Covid in hospital are being spent on people who have not had their jab

    In hospital, Covid-19 has largely become a disease of the unvaccinated. The man in his 20s who had always watched what he ate, worked out in the gym, was too healthy to ever catch Covid badly. The 48-year-old who never got round to making the appointment.

    The person in their 50s whose friend had side-effects. The woman who wanted to wait for more evidence. The young pregnant lady worried about the effect on her baby.

    The writer is an NHS respiratory consultant who works across a number of hospitals

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/21/icu-is-full-of-the-unvaccinated-my-patience-with-them-is-wearing-thin", + "creator": "Anonymous", + "pubDate": "2021-11-21T09:16:25Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Large fire breaks out near Paris opera – video", + "description": "

    A large fire has broken out in a building on Boulevard des Capucines, near the Place de L’Opéra in central Paris, sending clouds of smoke rising into the air. People were told to avoid the area, which is popular with tourists, as fire crews tackled the blaze

    Continue reading...", + "content": "

    A large fire has broken out in a building on Boulevard des Capucines, near the Place de L’Opéra in central Paris, sending clouds of smoke rising into the air. People were told to avoid the area, which is popular with tourists, as fire crews tackled the blaze

    Continue reading...", + "category": "Paris", + "link": "https://www.theguardian.com/world/video/2021/nov/20/large-fire-breaks-out-near-paris-opera-video", + "creator": "", + "pubDate": "2021-11-20T17:36:22Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Drivers scramble to grab cash that spilled on to California motorway – video", + "description": "

    Drivers in southern California have scrambled to pick up cash after bags of money fell out of an armoured vehicle on a motorway. Several bags broke open, spreading mainly $1 and $20 bills all over the lanes and bringing the motorway to a chaotic halt. Videos posted online showed people laughing and jumping into the air as they held wads of money

    Continue reading...", + "content": "

    Drivers in southern California have scrambled to pick up cash after bags of money fell out of an armoured vehicle on a motorway. Several bags broke open, spreading mainly $1 and $20 bills all over the lanes and bringing the motorway to a chaotic halt. Videos posted online showed people laughing and jumping into the air as they held wads of money

    Continue reading...", + "category": "California", + "link": "https://www.theguardian.com/us-news/video/2021/nov/20/drivers-scramble-to-grab-cash-that-spilled-on-to-california-motorway-video", + "creator": "", + "pubDate": "2021-11-20T16:15:15Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Migrant caravan and Qatar’s tarnished World Cup: human rights this fortnight – in pictures", + "description": "

    A roundup of the struggle for human rights and freedoms, from Pakistan to Poland

    Continue reading...", + "content": "

    A roundup of the struggle for human rights and freedoms, from Pakistan to Poland

    Continue reading...", + "category": "World news", + "link": "https://www.theguardian.com/global-development/gallery/2021/nov/20/migrant-caravan-and-qatars-tarnished-world-cup-human-rights-this-fortnight-in-pictures", + "creator": "Sarah Johnson, compiled by Eric Hilaire", + "pubDate": "2021-11-20T07:30:21Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid live: Dutch police open fire at protest; German government not ruling out full lockdown", + "description": "

    Two injured as police in Rotterdam fire warning shots; German health minister says nothing can be ruled out

    A quick snap from Reuters here that the UK government has announced it will add booster shot status to the Covid-19 pass for outbound international travel, though it said they would not be added to the domestic pass at this time.

    The health ministry said that travellers who have had a booster or a third dose would be able to demonstrate their vaccine status through the NHS Covid pass from Friday, adding that a booster was not necessary to travel into England.

    This pandemic has exposed a vulnerability to whole-system emergencies – that is, emergencies that are so broad that they engage the entire system. Although the government had plans for an influenza pandemic, it did not have detailed plans for many non-health consequences and some health consequences of a pandemic like Covid-19. There were lessons from previous simulation exercises that were not fully implemented and would have helped prepare for a pandemic like Covid-19. There was limited oversight and assurance of plans in place, and many pre-pandemic plans were not adequate. In addition, there is variation in capacity, capability and maturity of risk management across government departments.

    Continue reading...", + "content": "

    Two injured as police in Rotterdam fire warning shots; German health minister says nothing can be ruled out

    A quick snap from Reuters here that the UK government has announced it will add booster shot status to the Covid-19 pass for outbound international travel, though it said they would not be added to the domestic pass at this time.

    The health ministry said that travellers who have had a booster or a third dose would be able to demonstrate their vaccine status through the NHS Covid pass from Friday, adding that a booster was not necessary to travel into England.

    This pandemic has exposed a vulnerability to whole-system emergencies – that is, emergencies that are so broad that they engage the entire system. Although the government had plans for an influenza pandemic, it did not have detailed plans for many non-health consequences and some health consequences of a pandemic like Covid-19. There were lessons from previous simulation exercises that were not fully implemented and would have helped prepare for a pandemic like Covid-19. There was limited oversight and assurance of plans in place, and many pre-pandemic plans were not adequate. In addition, there is variation in capacity, capability and maturity of risk management across government departments.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/live/2021/nov/19/covid-news-live-macron-says-locking-down-frances-unvaccinated-not-necessary", + "creator": "Nadeem Badshah (now); Lucy Campbell, Martin Belam and Samantha Lock (earlier)", + "pubDate": "2021-11-19T22:49:41Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australia live news updates: Victoria Covid protests expected to escalate; NSW records 182 new cases; William Tyrrell search in sixth day", + "description": "

    Anti-fascist activists vow to counter-rally against another wave of planned ‘freedom rallies’ they claim have been infiltrated by far-right groups

    Asked about whether we can expect to see the introduction of a legislation for a federal anti-corruption commission in parliament in the next couple of weeks, Tim Wilson says it’s important that they “get the legislation right”:

    Because what we’ve had too often is proposals which are designed to establish, kind of, kangaroo courts, and actually would do more to breed distrust in the political conversation. We’ve seen that particularly in the consequence of what’s happening in ICAC in New South Wales.

    We want a process that’s based around integrity, that’s been consulted with the Australian community, and is actually going to do the job we need it to do, which is actually to breed trust and strength in the political system, not simply to create show trials, as I’ve seen it many times.

    I think this is pretty simple. You’ve got a group of people marching down the street with a life-sized execution device. You’ve got people threatening to kill the Premier of Victoria. If you’re any sort of leader, you just condemn that, full stop. You don’t go on and then say, “But I understand why people are frustrated.”

    I think it is legitimate to point out that Scott Morrison has pulled the sheet out of the Trump handbook here. Lie, deny, blame other people, never take responsibility for anything, try and divide the community, pander to the extreme right - this is Trump without the toupee. And, seriously, I think the Australian people deserve better than that.

    Continue reading...", + "content": "

    Anti-fascist activists vow to counter-rally against another wave of planned ‘freedom rallies’ they claim have been infiltrated by far-right groups

    Asked about whether we can expect to see the introduction of a legislation for a federal anti-corruption commission in parliament in the next couple of weeks, Tim Wilson says it’s important that they “get the legislation right”:

    Because what we’ve had too often is proposals which are designed to establish, kind of, kangaroo courts, and actually would do more to breed distrust in the political conversation. We’ve seen that particularly in the consequence of what’s happening in ICAC in New South Wales.

    We want a process that’s based around integrity, that’s been consulted with the Australian community, and is actually going to do the job we need it to do, which is actually to breed trust and strength in the political system, not simply to create show trials, as I’ve seen it many times.

    I think this is pretty simple. You’ve got a group of people marching down the street with a life-sized execution device. You’ve got people threatening to kill the Premier of Victoria. If you’re any sort of leader, you just condemn that, full stop. You don’t go on and then say, “But I understand why people are frustrated.”

    I think it is legitimate to point out that Scott Morrison has pulled the sheet out of the Trump handbook here. Lie, deny, blame other people, never take responsibility for anything, try and divide the community, pander to the extreme right - this is Trump without the toupee. And, seriously, I think the Australian people deserve better than that.

    Continue reading...", + "category": "Australia news", + "link": "https://www.theguardian.com/australia-news/live/2021/nov/20/australia-live-news-updates-victoria-covid-protests-expected-to-escalate-william-tyrrell-search-enters-in-sixth-day", + "creator": "Stephanie Convery", + "pubDate": "2021-11-19T22:49:38Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse: Biden accepts verdict as acquittal sparks outrage – live", + "description": "

    Jerrold Nadler of New York, the Democratic chair of the House judiciary committee, is out with a much stronger statement than President Biden:

    “This heartbreaking verdict is a miscarriage of justice and sets a dangerous precedent which justifies federal review by [the Department of Justice].

    I stand by what the jury has to say. The jury system works.”

    Continue reading...", + "content": "

    Jerrold Nadler of New York, the Democratic chair of the House judiciary committee, is out with a much stronger statement than President Biden:

    “This heartbreaking verdict is a miscarriage of justice and sets a dangerous precedent which justifies federal review by [the Department of Justice].

    I stand by what the jury has to say. The jury system works.”

    Continue reading...", + "category": "Kyle Rittenhouse", + "link": "https://www.theguardian.com/us-news/live/2021/nov/19/kyle-rittenhouse-verdict-not-guilty-kenosha-shooting-latest", + "creator": "Kari Paul (now) and Martin Pengelly (earlier)", + "pubDate": "2021-11-19T22:30:24Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Omar Souleyman: singer held by Turkey over alleged militant links is freed", + "description": "

    Syrian questioned by police after reports he has ties to banned Kurdish People’s Protection Units

    Celebrated Syrian singer Omar Souleyman, who has performed at festivals around the world, has been released after being detained over alleged links to Kurdish militants.

    Souleyman was freed at 10.30pm (19.30 GMT) after a confusing day during which he was released in the morning before being taken back to a detention centre.

    Continue reading...", + "content": "

    Syrian questioned by police after reports he has ties to banned Kurdish People’s Protection Units

    Celebrated Syrian singer Omar Souleyman, who has performed at festivals around the world, has been released after being detained over alleged links to Kurdish militants.

    Souleyman was freed at 10.30pm (19.30 GMT) after a confusing day during which he was released in the morning before being taken back to a detention centre.

    Continue reading...", + "category": "Turkey", + "link": "https://www.theguardian.com/world/2021/nov/19/singer-omar-souleyman-held-by-turkey-over-alleged-militant-links-is-freed", + "creator": "AFP in Ankara", + "pubDate": "2021-11-19T22:23:28Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse verdict declares open hunting season on progressive protesters | Cas Mudde", + "description": "

    Demonstrators in the US must fear not only police brutality but also rightwing vigilantes

    Kyle Rittenhouse – the armed white teenager whose mother drove him from Illinois to Wisconsin to allegedly “protect” local businesses from anti-racism protesters in Kenosha, whereupon he shot and killed two people and injured another – has been acquitted of all charges. I don’t think anyone who has followed the trial even casually will be surprised by this verdict. After the various antics by the elected judge, which seemed to indicate where his sympathies lay, and the fact that the prosecution asked the jurors to consider charges lesser than murder, the writing was on the wall.

    I do not want to discuss the legal particulars of the verdict. It is clear that the prosecution made many mistakes and got little to no leeway from the judge, unlike the defense team. Moreover, we know that “self-defense” – often better known as vigilantism – is legally protected and highly racialized in this country. Think of the acquittal of George Zimmerman of the killing of Trayvon Martin in 2013.

    Continue reading...", + "content": "

    Demonstrators in the US must fear not only police brutality but also rightwing vigilantes

    Kyle Rittenhouse – the armed white teenager whose mother drove him from Illinois to Wisconsin to allegedly “protect” local businesses from anti-racism protesters in Kenosha, whereupon he shot and killed two people and injured another – has been acquitted of all charges. I don’t think anyone who has followed the trial even casually will be surprised by this verdict. After the various antics by the elected judge, which seemed to indicate where his sympathies lay, and the fact that the prosecution asked the jurors to consider charges lesser than murder, the writing was on the wall.

    I do not want to discuss the legal particulars of the verdict. It is clear that the prosecution made many mistakes and got little to no leeway from the judge, unlike the defense team. Moreover, we know that “self-defense” – often better known as vigilantism – is legally protected and highly racialized in this country. Think of the acquittal of George Zimmerman of the killing of Trayvon Martin in 2013.

    Continue reading...", + "category": "Kyle Rittenhouse", + "link": "https://www.theguardian.com/us-news/commentisfree/2021/nov/19/kyle-rittenhouse-verdict-acquitted-protest", + "creator": "Cas Mudde", + "pubDate": "2021-11-19T21:53:51Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "US wildfires have killed nearly 20% of world’s giant sequoias in two years", + "description": "

    Blazes in western US have hit thousands of Earth’s largest trees, once considered almost fire-proof

    Lightning-sparked wildfires killed thousands of giant sequoias this year, adding to a staggering two-year death toll that accounts for up to nearly a fifth of Earth’s largest trees, officials said on Friday.

    Fires in Sequoia national park and the surrounding national forest that also bears the trees’ name tore through more than a third of groves in California and torched an estimated 2,261 to 3,637 sequoias. Fires in the same area last year killed an unprecedented 7,500 to 10,400 of the 75,000 trees.

    Continue reading...", + "content": "

    Blazes in western US have hit thousands of Earth’s largest trees, once considered almost fire-proof

    Lightning-sparked wildfires killed thousands of giant sequoias this year, adding to a staggering two-year death toll that accounts for up to nearly a fifth of Earth’s largest trees, officials said on Friday.

    Fires in Sequoia national park and the surrounding national forest that also bears the trees’ name tore through more than a third of groves in California and torched an estimated 2,261 to 3,637 sequoias. Fires in the same area last year killed an unprecedented 7,500 to 10,400 of the 75,000 trees.

    Continue reading...", + "category": "Climate crisis in the American west", + "link": "https://www.theguardian.com/us-news/2021/nov/19/giant-sequoias-wildfires-killed", + "creator": "Associated Press", + "pubDate": "2021-11-19T21:15:39Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'I'm not surprised': mixed reactions outside courthouse after Kyle Rittenhouse verdict – video", + "description": "

    A jury acquitted teenager Kyle Rittenhouse on Friday of murder after the fatal shooting of two men in a trial that highlighted divisions over gun rights and stirred fierce debate about the boundaries of self-defence in the United States. Amid a heavy law enforcement presence, several dozen protesters lined the steps outside the courthouse after the verdict was read, some carrying placards in support of Rittenhouse and others expressing disappointment

    Continue reading...", + "content": "

    A jury acquitted teenager Kyle Rittenhouse on Friday of murder after the fatal shooting of two men in a trial that highlighted divisions over gun rights and stirred fierce debate about the boundaries of self-defence in the United States. Amid a heavy law enforcement presence, several dozen protesters lined the steps outside the courthouse after the verdict was read, some carrying placards in support of Rittenhouse and others expressing disappointment

    Continue reading...", + "category": "Kyle Rittenhouse", + "link": "https://www.theguardian.com/us-news/video/2021/nov/19/im-not-surprised-mixed-reaction-outside-courthouse-after-kyle-rittenhouse-verdict-video", + "creator": "", + "pubDate": "2021-11-19T20:54:26Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse found not guilty after fatally shooting two in Kenosha unrest", + "description": "

    Rittenhouse killed two people and injured a third at protests last year after a white officer shot a Black man, Jacob Blake, in the back

    A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped America.

    Rittenhouse killed Joseph Rosenbaum, 36, and Anthony Huber, 26, and wounded Gaige Grosskreutz, 27, when he shot them with an assault rifle as he roamed the streets of Kenosha with other armed men acting as a self-described militia during protests in August 2020, after a white police officer shot a Black man, Jacob Blake, in the back.

    Continue reading...", + "content": "

    Rittenhouse killed two people and injured a third at protests last year after a white officer shot a Black man, Jacob Blake, in the back

    A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped America.

    Rittenhouse killed Joseph Rosenbaum, 36, and Anthony Huber, 26, and wounded Gaige Grosskreutz, 27, when he shot them with an assault rifle as he roamed the streets of Kenosha with other armed men acting as a self-described militia during protests in August 2020, after a white police officer shot a Black man, Jacob Blake, in the back.

    Continue reading...", + "category": "Kyle Rittenhouse", + "link": "https://www.theguardian.com/us-news/2021/nov/19/kyle-rittenhouse-verdict-kenosha-shooting", + "creator": "Maya Yang and Joanna Walters", + "pubDate": "2021-11-19T20:36:20Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kiribati’s attempts to keep stranded Australian judge out of the country ruled unconstitutional", + "description": "

    In a landmark ruling, Kiribati’s chief justice ordered the government to allow high court judge David Lambourne to return

    A landmark judgment in the Pacific country of Kiribati has ruled the government’s actions in blocking an Australian, a judge on Kiribati’s high court, from returning to the island were unconstitutional.

    When David Lambourne left Kiribati in February 2020 to attend a conference in Australia, he thought it would be a brief and uneventful trip. Instead, the Australian judge, who has been resident of the Pacific nation for over two decades, found himself stranded after Covid-19 hit.

    Continue reading...", + "content": "

    In a landmark ruling, Kiribati’s chief justice ordered the government to allow high court judge David Lambourne to return

    A landmark judgment in the Pacific country of Kiribati has ruled the government’s actions in blocking an Australian, a judge on Kiribati’s high court, from returning to the island were unconstitutional.

    When David Lambourne left Kiribati in February 2020 to attend a conference in Australia, he thought it would be a brief and uneventful trip. Instead, the Australian judge, who has been resident of the Pacific nation for over two decades, found himself stranded after Covid-19 hit.

    Continue reading...", + "category": "Kiribati", + "link": "https://www.theguardian.com/world/2021/nov/20/kiribatis-attempts-to-keep-stranded-australian-judge-out-of-the-country-ruled-unconstitutional", + "creator": "Kieran Pender", + "pubDate": "2021-11-19T20:00:07Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘I thought I was a goner’: survivors detail harrowing stories of Canada mudslides", + "description": "

    Emergency crews continue search for victims after flash floods tear through region

    Emergency crews in western Canada continued searching on Friday for victims of flash floods and mudslides which tore through the region this week, as survivors described harrowing escapes from the disaster.

    British Columbia declared its third state of emergency in a year on Wednesday after a month’s worth of rain fell in two days, swamping towns and cities, blocking major highways and leaving much of the province under water.

    Continue reading...", + "content": "

    Emergency crews continue search for victims after flash floods tear through region

    Emergency crews in western Canada continued searching on Friday for victims of flash floods and mudslides which tore through the region this week, as survivors described harrowing escapes from the disaster.

    British Columbia declared its third state of emergency in a year on Wednesday after a month’s worth of rain fell in two days, swamping towns and cities, blocking major highways and leaving much of the province under water.

    Continue reading...", + "category": "Canada", + "link": "https://www.theguardian.com/world/2021/nov/19/canada-floods-mudslides-survivors", + "creator": "Leyland Cecco in Toronto", + "pubDate": "2021-11-19T19:15:10Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kenosha shooting: jury finds Kyle Rittenhouse not guilty – video", + "description": "

    A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped the US

    Continue reading...", + "content": "

    A jury on Friday found Kyle Rittenhouse not guilty on charges related to his shooting dead two people at an anti-racism protest and injuring a third in Kenosha, Wisconsin, last year, after a tumultuous trial that gripped the US

    Continue reading...", + "category": "Kyle Rittenhouse", + "link": "https://www.theguardian.com/us-news/video/2021/nov/19/kenosha-shooting-jury-finds-kyle-rittenhouse-not-guilty-video", + "creator": "", + "pubDate": "2021-11-19T18:40:17Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Oxford University identifies 145 artefacts looted in Benin raid", + "description": "

    Plundered items likely to be returned to Nigeria include plaques, bronze figures and musical instruments

    The University of Oxford is holding 145 objects looted by British troops during an assault on the city of Benin in 1897 that are likely to be repatriated to Nigeria, a report has said.

    More than two-thirds of the plundered items are owned by the university’s Pitt Rivers Museum, and 45 are on loan. They include brass plaques, bronze figures, carved ivory tusks, musical instruments, weaving equipment, jewellery, and ceramic and coral objects dating to the 13th century.

    Continue reading...", + "content": "

    Plundered items likely to be returned to Nigeria include plaques, bronze figures and musical instruments

    The University of Oxford is holding 145 objects looted by British troops during an assault on the city of Benin in 1897 that are likely to be repatriated to Nigeria, a report has said.

    More than two-thirds of the plundered items are owned by the university’s Pitt Rivers Museum, and 45 are on loan. They include brass plaques, bronze figures, carved ivory tusks, musical instruments, weaving equipment, jewellery, and ceramic and coral objects dating to the 13th century.

    Continue reading...", + "category": "University of Oxford", + "link": "https://www.theguardian.com/education/2021/nov/19/oxford-university-identifies-145-artefacts-looted-in-benin-raid", + "creator": "Harriet Sherwood Arts and culture correspondent", + "pubDate": "2021-11-19T18:28:23Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lewis Hamilton praised after wearing rainbow helmet in Qatar GP practice", + "description": "
    • Hamilton earns praise for LGBTQ+ ‘incredible act of allyship’
    • World champion has criticised Qatar’s human rights record

    Lewis Hamilton has been praised for “an incredible act of allyship” after wearing a rainbow-coloured helmet in practice at the inaugural Qatar Grand Prix.

    The seven-time Formula One world champion’s helmet bore the colours of the Progress Pride flag – a banner which includes the traditional rainbow design with additional colours that recognise the diversity of the LGBTQ+ community.

    Continue reading...", + "content": "
    • Hamilton earns praise for LGBTQ+ ‘incredible act of allyship’
    • World champion has criticised Qatar’s human rights record

    Lewis Hamilton has been praised for “an incredible act of allyship” after wearing a rainbow-coloured helmet in practice at the inaugural Qatar Grand Prix.

    The seven-time Formula One world champion’s helmet bore the colours of the Progress Pride flag – a banner which includes the traditional rainbow design with additional colours that recognise the diversity of the LGBTQ+ community.

    Continue reading...", + "category": "Lewis Hamilton", + "link": "https://www.theguardian.com/sport/2021/nov/19/lewis-hamilton-rainbow-helmet-qatar-grand-prix-formula-one", + "creator": "PA Media", + "pubDate": "2021-11-19T18:23:07Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "York’s anti-terror measures make centre a ‘no go zone’ for disabled people", + "description": "

    Campaigners say removal of blue badge parking to make way for new defences is in breach of Equality Act

    Disability rights campaigners are planning a legal challenge against York council after it voted to ban blue badge parking on key streets in the city centre.

    York Accessibility Action (YAA), an organisation founded by disabled York residents and carers, said the city has become a “no go zone” for many disabled people and there was now no suitable parking within 150 metres of the city centre.

    Continue reading...", + "content": "

    Campaigners say removal of blue badge parking to make way for new defences is in breach of Equality Act

    Disability rights campaigners are planning a legal challenge against York council after it voted to ban blue badge parking on key streets in the city centre.

    York Accessibility Action (YAA), an organisation founded by disabled York residents and carers, said the city has become a “no go zone” for many disabled people and there was now no suitable parking within 150 metres of the city centre.

    Continue reading...", + "category": "York", + "link": "https://www.theguardian.com/uk-news/2021/nov/19/york-anti-terror-measures-disabled-people-blue-badge-parking", + "creator": "Miranda Bryant", + "pubDate": "2021-11-19T18:16:46Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Work on ‘Chinese military base’ in UAE abandoned after US intervenes – report", + "description": "

    Satellite images reportedly detected construction of secret facility at Khalifa port amid growing US-China rivalry

    US intelligence agencies found evidence this year of construction work on what they believed was a secret Chinese military facility in the United Arab Emirates, which was stopped after Washington’s intervention, according to a report on Friday.

    The Wall Street Journal reported that satellite imagery of the port of Khalifa had revealed suspicious construction work inside a container terminal built and operated by a Chinese shipping corporation, Cosco.

    Continue reading...", + "content": "

    Satellite images reportedly detected construction of secret facility at Khalifa port amid growing US-China rivalry

    US intelligence agencies found evidence this year of construction work on what they believed was a secret Chinese military facility in the United Arab Emirates, which was stopped after Washington’s intervention, according to a report on Friday.

    The Wall Street Journal reported that satellite imagery of the port of Khalifa had revealed suspicious construction work inside a container terminal built and operated by a Chinese shipping corporation, Cosco.

    Continue reading...", + "category": "China", + "link": "https://www.theguardian.com/world/2021/nov/19/chinese-military-base-uae-construction-abandoned-us-intelligence-report", + "creator": "Julian Borger in Washington", + "pubDate": "2021-11-19T18:13:08Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "House Democrats pass Biden’s expansive Build Back Better policy plan", + "description": "

    Bill now goes back to the Senate, where it faces total opposition from Republicans and an uphill battle against centrist Democrats

    Joe Biden has hailed the US House of Representatives for passing a $1.75tn social and climate spending bill, a central pillar of his agenda that must now go before the Senate.

    The Democratic majority in the House approved the Build Back Better Act on Friday despite fierce opposition from Republicans.

    Continue reading...", + "content": "

    Bill now goes back to the Senate, where it faces total opposition from Republicans and an uphill battle against centrist Democrats

    Joe Biden has hailed the US House of Representatives for passing a $1.75tn social and climate spending bill, a central pillar of his agenda that must now go before the Senate.

    The Democratic majority in the House approved the Build Back Better Act on Friday despite fierce opposition from Republicans.

    Continue reading...", + "category": "House of Representatives", + "link": "https://www.theguardian.com/us-news/2021/nov/19/house-democrats-pass-biden-expansive-build-back-better-policy-plan", + "creator": "Lauren Gambino and David Smith in Washington and Vivian Ho", + "pubDate": "2021-11-19T17:43:16Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "David Lacey obituary", + "description": "Guardian sports writer whose wit and talent redefined what a football column could be

    It is not customary to look forward to Monday mornings but, in the heyday of the Guardian’s print sales in the late 1970s and 80s, many readers relished Monday’s paper more than anything else.

    On a features page would be Posy Simmonds’ weekly dissection of middle-class life. And, further back, stretched across the width of the main sports page, David Lacey would offer his weekly dissection of football. Like Posy’s cartoon strip, this was one of the great institutions of British journalism.

    Continue reading...", + "content": "Guardian sports writer whose wit and talent redefined what a football column could be

    It is not customary to look forward to Monday mornings but, in the heyday of the Guardian’s print sales in the late 1970s and 80s, many readers relished Monday’s paper more than anything else.

    On a features page would be Posy Simmonds’ weekly dissection of middle-class life. And, further back, stretched across the width of the main sports page, David Lacey would offer his weekly dissection of football. Like Posy’s cartoon strip, this was one of the great institutions of British journalism.

    Continue reading...", + "category": "Football", + "link": "https://www.theguardian.com/football/2021/nov/19/david-lacey-obituary", + "creator": "Matthew Engel", + "pubDate": "2021-11-19T17:41:00Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "England and Wales ‘one step closer to ending child marriage’ after MP vote", + "description": "

    Second reading of bill to ban marriage for under-18s receives cross-party support

    A ban on child marriage in England and Wales came a step closer Friday with cross-party support for a new bill in the House of Commons.

    The marriage and civil partnership (minimum age) bill had its second reading in parliament, with government and opposition MPs supporting the private member’s bill brought by Conservative MP Pauline Latham.

    Continue reading...", + "content": "

    Second reading of bill to ban marriage for under-18s receives cross-party support

    A ban on child marriage in England and Wales came a step closer Friday with cross-party support for a new bill in the House of Commons.

    The marriage and civil partnership (minimum age) bill had its second reading in parliament, with government and opposition MPs supporting the private member’s bill brought by Conservative MP Pauline Latham.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/19/england-and-wales-one-step-closer-to-ending-child-marriage-after-mp-vote", + "creator": "Karen McVeigh", + "pubDate": "2021-11-19T17:33:09Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Croatia violated rights of Afghan girl who was killed by train, court rules", + "description": "

    Madina Hussiny, 6, died after police refused to let her family apply for asylum and made them walk back to Serbia

    After four years of legal struggle, the European court of human rights (ECHR) has ruled that Croatian police were responsible for the death of a six-year-old Afghan girl when they forced her family to return to Serbia via train tracks without giving them the opportunity to seek asylum.

    The little girl, named Madina Hussiny, was struck and killed by a train after being pushed back with her family by the Croatian authorities in 2017.

    Continue reading...", + "content": "

    Madina Hussiny, 6, died after police refused to let her family apply for asylum and made them walk back to Serbia

    After four years of legal struggle, the European court of human rights (ECHR) has ruled that Croatian police were responsible for the death of a six-year-old Afghan girl when they forced her family to return to Serbia via train tracks without giving them the opportunity to seek asylum.

    The little girl, named Madina Hussiny, was struck and killed by a train after being pushed back with her family by the Croatian authorities in 2017.

    Continue reading...", + "category": "Serbia", + "link": "https://www.theguardian.com/global-development/2021/nov/19/croatia-violated-rights-of-afghan-girl-who-was-killed-by-train-court-rules", + "creator": "Lorenzo Tondo", + "pubDate": "2021-11-19T17:29:22Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kamala Harris takes on presidential role – briefly – as Biden has colonoscopy", + "description": "

    The vice-president became the first woman to wield the powers of the US presidency, during Biden’s routine medical procedure

    Kamala Harris on Friday morning became the first woman to wield presidential power in the US – temporarily, when Joe Biden had a colonoscopy under anesthetic.

    In a statement, the White House press secretary, Jen Psaki, said: “This morning, the president will travel to Walter Reed Medical Center for a routine physical. While he is there, the president will undergo a routine colonoscopy.

    Continue reading...", + "content": "

    The vice-president became the first woman to wield the powers of the US presidency, during Biden’s routine medical procedure

    Kamala Harris on Friday morning became the first woman to wield presidential power in the US – temporarily, when Joe Biden had a colonoscopy under anesthetic.

    In a statement, the White House press secretary, Jen Psaki, said: “This morning, the president will travel to Walter Reed Medical Center for a routine physical. While he is there, the president will undergo a routine colonoscopy.

    Continue reading...", + "category": "Kamala Harris", + "link": "https://www.theguardian.com/us-news/2021/nov/19/kamala-harris-presidential-powers-biden-colonoscopy", + "creator": "Martin Pengelly", + "pubDate": "2021-11-19T17:20:20Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lukashenko says Belarusian troops may have helped refugees reach Europe", + "description": "

    Leader acknowledges it was ‘absolutely possible’ his army had a part in creating migrant crisis at Polish border

    The Belarusian leader, Alexander Lukashenko, has acknowledged that his troops probably helped Middle Eastern asylum seekers cross into Europe, in the clearest admission yet that he engineered the new migrant crisis on the border with the EU.

    In an interview with the BBC at his presidential palace in Minsk, he said it was “absolutely possible” that his troops helped migrants across the frontier into Poland.

    Continue reading...", + "content": "

    Leader acknowledges it was ‘absolutely possible’ his army had a part in creating migrant crisis at Polish border

    The Belarusian leader, Alexander Lukashenko, has acknowledged that his troops probably helped Middle Eastern asylum seekers cross into Europe, in the clearest admission yet that he engineered the new migrant crisis on the border with the EU.

    In an interview with the BBC at his presidential palace in Minsk, he said it was “absolutely possible” that his troops helped migrants across the frontier into Poland.

    Continue reading...", + "category": "Alexander Lukashenko", + "link": "https://www.theguardian.com/world/2021/nov/19/lukashenko-says-belarusian-troops-may-have-helped-refugees-reach-europe", + "creator": "Andrew Roth in Moscow", + "pubDate": "2021-11-19T17:03:46Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Peng Shuai: UN calls on China to prove tennis star’s whereabouts", + "description": "

    Women’s Tennis Association adds to pressure by saying it is considering pulling its tournaments out of China

    The UN has called on Chinese authorities to give proof of the whereabouts of tennis star Peng Shuai, as the White House said it was “deeply concerned” and the Women’s Tennis Association said it was prepared to pull its tournaments out of China over the matter.

    Peng, a former doubles world No 1, has not been seen in public since she accused the former high-ranking official Zhang Gaoli of sexual assault on 2 November.

    Continue reading...", + "content": "

    Women’s Tennis Association adds to pressure by saying it is considering pulling its tournaments out of China

    The UN has called on Chinese authorities to give proof of the whereabouts of tennis star Peng Shuai, as the White House said it was “deeply concerned” and the Women’s Tennis Association said it was prepared to pull its tournaments out of China over the matter.

    Peng, a former doubles world No 1, has not been seen in public since she accused the former high-ranking official Zhang Gaoli of sexual assault on 2 November.

    Continue reading...", + "category": "China", + "link": "https://www.theguardian.com/world/2021/nov/19/peng-shuai-wta-prepared-to-pull-out-of-china-over-tennis-stars-disappearance", + "creator": "Helen Davidson in Taipei, Vincent Ni and Tumaini Carayol", + "pubDate": "2021-11-19T16:41:53Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘The strongman blinks’: why Narendra Modi has backed down to farmers", + "description": "

    Analysis: the authoritarian PM’s first retreat is a much needed triumph of democracy

    “The strongman finally blinks,” was how one commentator put it. On Friday morning, India woke to a surprise announcement by the prime minister, Narendra Modi, that he was repealing the farm laws, which have been at the heart of one of the greatest challenges his government had faced in almost eight years in power.

    It was a significant turning point, not only for the farmers, but for Indian politics and the reputation of the Bharatiya Janata party (BJP) government. Since Modi was first elected in 2014, his modus operandi has been that of a tough, unyielding, authoritarian strongman leader who does not bow to public pressure.

    Continue reading...", + "content": "

    Analysis: the authoritarian PM’s first retreat is a much needed triumph of democracy

    “The strongman finally blinks,” was how one commentator put it. On Friday morning, India woke to a surprise announcement by the prime minister, Narendra Modi, that he was repealing the farm laws, which have been at the heart of one of the greatest challenges his government had faced in almost eight years in power.

    It was a significant turning point, not only for the farmers, but for Indian politics and the reputation of the Bharatiya Janata party (BJP) government. Since Modi was first elected in 2014, his modus operandi has been that of a tough, unyielding, authoritarian strongman leader who does not bow to public pressure.

    Continue reading...", + "category": "India", + "link": "https://www.theguardian.com/world/2021/nov/19/the-strongman-blinks-why-narendra-modi-has-backed-down-to-farmers", + "creator": "Hannah Ellis-Petersen South Asia correspondent", + "pubDate": "2021-11-19T16:14:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'An attack on our health system': Austria's chancellor condemns anti-vaxxers – video", + "description": "

    Austria is to go into a national lockdown to contain a fourth wave of coronavirus cases, the chancellor, Alexander Schallenberg, announced on Friday, as new infections hit a record high amid a pandemic surge across Europe. Despite all the persuasion and campaigns, too few people had decided to get vaccinated, Schallenberg said, leaving the country no other choice but to introduce mandatory vaccinations in February

    Continue reading...", + "content": "

    Austria is to go into a national lockdown to contain a fourth wave of coronavirus cases, the chancellor, Alexander Schallenberg, announced on Friday, as new infections hit a record high amid a pandemic surge across Europe. Despite all the persuasion and campaigns, too few people had decided to get vaccinated, Schallenberg said, leaving the country no other choice but to introduce mandatory vaccinations in February

    Continue reading...", + "category": "Austria", + "link": "https://www.theguardian.com/world/video/2021/nov/19/an-attack-on-our-health-system-austrias-chancellor-condemns-anti-vaxxers-video", + "creator": "", + "pubDate": "2021-11-19T15:52:18Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "WTA’s hardline approach to Peng Shuai presents China with new problem", + "description": "

    Analysis: Up to now sports associations have rapidly backed down from rows with Beijing

    It is perhaps no coincidence that Chinese state media published an email purportedly written by the missing Chinese tennis star Peng Shuai shortly after reports emerged that the Biden administration was considering a “diplomatic boycott” of February’s Winter Olympics in Beijing.

    China says the Games are apolitical and – in the words of its embassy in Washington – “a grand gathering for countries and a fair stage for athletes from all over the world to compete”.

    Continue reading...", + "content": "

    Analysis: Up to now sports associations have rapidly backed down from rows with Beijing

    It is perhaps no coincidence that Chinese state media published an email purportedly written by the missing Chinese tennis star Peng Shuai shortly after reports emerged that the Biden administration was considering a “diplomatic boycott” of February’s Winter Olympics in Beijing.

    China says the Games are apolitical and – in the words of its embassy in Washington – “a grand gathering for countries and a fair stage for athletes from all over the world to compete”.

    Continue reading...", + "category": "China", + "link": "https://www.theguardian.com/world/2021/nov/19/wtas-hardline-approach-to-peng-shuai-presents-china-with-new-problem", + "creator": "Vincent Ni China affairs correspondent", + "pubDate": "2021-11-19T15:10:33Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Do long jail sentences stop crime? We ask the expert", + "description": "

    Penelope Gibbs, former magistrate and founder of Transform Justice, on whether harsher sentences are effective

    Until recently, the subject of criminal punishment hasn’t been a massive concern for the public (putting aside that small demographic committed to a “hang ’em all!” approach). But in the wake of Sarah Everard’s murder, calls for misogyny to become a hate crime have gone from a whisper to a roar. That change would give judges the power to increase sentences when misogyny was found to be an aggravating factor in a crime. But would harsher sentences do much to stop such crimes happening? I asked Penelope Gibbs, former magistrate and founder of Transform Justice, a charity campaigning for a more effective justice system.

    Did you hear about the Thai fraudster who was sentenced to jail for more than 13,000 years? I guess they needed a number to describe ‘throwing away the key’. Are long sentences becoming more common?
    I don’t know about across the world, but I can tell you that in England and Wales sentences have been getting steadily longer over the past decade, by roughly 20%.

    Continue reading...", + "content": "

    Penelope Gibbs, former magistrate and founder of Transform Justice, on whether harsher sentences are effective

    Until recently, the subject of criminal punishment hasn’t been a massive concern for the public (putting aside that small demographic committed to a “hang ’em all!” approach). But in the wake of Sarah Everard’s murder, calls for misogyny to become a hate crime have gone from a whisper to a roar. That change would give judges the power to increase sentences when misogyny was found to be an aggravating factor in a crime. But would harsher sentences do much to stop such crimes happening? I asked Penelope Gibbs, former magistrate and founder of Transform Justice, a charity campaigning for a more effective justice system.

    Did you hear about the Thai fraudster who was sentenced to jail for more than 13,000 years? I guess they needed a number to describe ‘throwing away the key’. Are long sentences becoming more common?
    I don’t know about across the world, but I can tell you that in England and Wales sentences have been getting steadily longer over the past decade, by roughly 20%.

    Continue reading...", + "category": "Social trends", + "link": "https://www.theguardian.com/lifeandstyle/2021/nov/19/do-long-jail-sentences-stop-we-ask-the-expert", + "creator": "Coco Khan", + "pubDate": "2021-11-19T15:00:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Abducted Afghan psychiatrist found dead weeks after disappearance", + "description": "

    Family say the body of Dr Nader Alemi, who was taken by armed men in September, showed signs of torture

    One of Afghanistan’s most prominent psychiatrists, who was abducted by armed men in September, has been found dead, his family has confirmed.

    Dr Nader Alemi’s daughter, Manizheh Abreen, said that her father had been tortured before he died.

    Continue reading...", + "content": "

    Family say the body of Dr Nader Alemi, who was taken by armed men in September, showed signs of torture

    One of Afghanistan’s most prominent psychiatrists, who was abducted by armed men in September, has been found dead, his family has confirmed.

    Dr Nader Alemi’s daughter, Manizheh Abreen, said that her father had been tortured before he died.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/19/abducted-afghan-psychiatrist-found-dead-weeks-after-disappearance", + "creator": "Haroon Janjua in Islamabad", + "pubDate": "2021-11-19T14:44:35Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Marry Me: do you take the J-Lo/Owen Wilson romcom to be the weirdest film of 2022?", + "description": "

    Jennifer Lopez proposes to Owen Wilson, a maths teacher she’s never met. What was she thinking? How will it end? And does anyone care?

    Nobody really wants it to be 2021, do they? A vicious global pandemic is about to enter its third year, the world is on fire and populist politics threatens to overturn democracy as we know it. Some people have reacted to these terrible times by trying to change things. Others are willing themselves back to a more innocent era.

    By “others”, I mean Jennifer Lopez and Owen Wilson, who are doing their level best to make it 2005 again. How? By making a romcom, that’s how. If this was a decade and a half ago, then Marry Me would automatically be one of the biggest hits of the year, bringing together the unstoppable forces responsible for Maid in Manhattan and Wedding Crashers. But it isn’t 2005, it’s 2021, and the thought of watching Lopez and Wilson shuffle through a romcom together is baffling. Perhaps it’d help to go through the Marry Me trailer beat by beat.

    Continue reading...", + "content": "

    Jennifer Lopez proposes to Owen Wilson, a maths teacher she’s never met. What was she thinking? How will it end? And does anyone care?

    Nobody really wants it to be 2021, do they? A vicious global pandemic is about to enter its third year, the world is on fire and populist politics threatens to overturn democracy as we know it. Some people have reacted to these terrible times by trying to change things. Others are willing themselves back to a more innocent era.

    By “others”, I mean Jennifer Lopez and Owen Wilson, who are doing their level best to make it 2005 again. How? By making a romcom, that’s how. If this was a decade and a half ago, then Marry Me would automatically be one of the biggest hits of the year, bringing together the unstoppable forces responsible for Maid in Manhattan and Wedding Crashers. But it isn’t 2005, it’s 2021, and the thought of watching Lopez and Wilson shuffle through a romcom together is baffling. Perhaps it’d help to go through the Marry Me trailer beat by beat.

    Continue reading...", + "category": "Film", + "link": "https://www.theguardian.com/film/2021/nov/19/marry-me-do-you-take-the-j-loowen-wilson-romcom-to-be-the-weirdest-film-of-2022", + "creator": "Stuart Heritage", + "pubDate": "2021-11-19T14:42:26Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Diagnosis is rebirth’: women who found out they were autistic as adults", + "description": "

    Women from around the world describe the life-changing impact of finally receiving a diagnosis

    Less than 20 hours after asking women who had received a late diagnosis of autism, we received 139 replies from around the world.

    There were women whose lives had been scarred by victimisation, from bullying to rape, because without a diagnosis they did not know they were highly vulnerable to manipulation and abuse.

    Continue reading...", + "content": "

    Women from around the world describe the life-changing impact of finally receiving a diagnosis

    Less than 20 hours after asking women who had received a late diagnosis of autism, we received 139 replies from around the world.

    There were women whose lives had been scarred by victimisation, from bullying to rape, because without a diagnosis they did not know they were highly vulnerable to manipulation and abuse.

    Continue reading...", + "category": "Autism", + "link": "https://www.theguardian.com/society/2021/nov/19/diagnosis-women-autism-later-life", + "creator": "Amelia Hill", + "pubDate": "2021-11-19T14:36:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "First known Covid case was Wuhan market vendor, says scientist", + "description": "

    Claim will reignite debate about origins of pandemic, a continuing source of tension between US and China

    The first known Covid-19 case was a vendor at the live-animal market in Wuhan, according to a scientist who has scrutinised public accounts of the earliest cases in China.

    The chronology is at odds with a timeline laid out in an influential World Health Organization (WHO) report, which suggested an accountant with no apparent link to the Hunan market was the first known case.

    Continue reading...", + "content": "

    Claim will reignite debate about origins of pandemic, a continuing source of tension between US and China

    The first known Covid-19 case was a vendor at the live-animal market in Wuhan, according to a scientist who has scrutinised public accounts of the earliest cases in China.

    The chronology is at odds with a timeline laid out in an influential World Health Organization (WHO) report, which suggested an accountant with no apparent link to the Hunan market was the first known case.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/19/first-covid-patient-in-wuhan-was-at-animal-market-study-finds", + "creator": "Hannah Devlin Science correspondent", + "pubDate": "2021-11-19T14:08:44Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Modi repeals controversial laws in surprise victory for Indian farmers – video report", + "description": "

    Narendra Modi has announced he will repeal three contentious farm laws that prompted a year of protests and unrest in India, in one of the most significant concessions made by his government and a huge victory for India’s farmers. They had fought hard for the repeal of what the farmers called the 'black laws' that put their livelihoods at risk and gave private corporations control over the pricing of their crops

    Continue reading...", + "content": "

    Narendra Modi has announced he will repeal three contentious farm laws that prompted a year of protests and unrest in India, in one of the most significant concessions made by his government and a huge victory for India’s farmers. They had fought hard for the repeal of what the farmers called the 'black laws' that put their livelihoods at risk and gave private corporations control over the pricing of their crops

    Continue reading...", + "category": "India", + "link": "https://www.theguardian.com/world/video/2021/nov/19/modi-repeals-controversial-laws-victory-indian-farmers-video-report", + "creator": "Maheen Sadiq", + "pubDate": "2021-11-19T14:07:16Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘It was mind-boggling’: Richard Gere on the rescue boat at the heart of Salvini trial", + "description": "

    Exclusive: the Hollywood actor, who lawyers have listed as a key witness, describes scenes of desperation on the Open Arms vessel

    The Hollywood actor Richard Gere has revealed for the first time the full story behind his mercy mission to the NGO rescue boat Open Arms as he prepares to testify as a witness against Italy’s former interior minister and far-right leader, Matteo Salvini, who is on trial for attempting to block the 147 people onboard from landing in Italy.

    In an exclusive interview with the Guardian, Gere, 72, who lawyers have listed as a key witness to the situation aboard the NGO rescue boat Open Arms, described the scenes of desperation he saw when he arrived on the vessel being held off the Italian island of Lampedusa in the summer of 2019 with conditions rapidly deteriorating.

    Continue reading...", + "content": "

    Exclusive: the Hollywood actor, who lawyers have listed as a key witness, describes scenes of desperation on the Open Arms vessel

    The Hollywood actor Richard Gere has revealed for the first time the full story behind his mercy mission to the NGO rescue boat Open Arms as he prepares to testify as a witness against Italy’s former interior minister and far-right leader, Matteo Salvini, who is on trial for attempting to block the 147 people onboard from landing in Italy.

    In an exclusive interview with the Guardian, Gere, 72, who lawyers have listed as a key witness to the situation aboard the NGO rescue boat Open Arms, described the scenes of desperation he saw when he arrived on the vessel being held off the Italian island of Lampedusa in the summer of 2019 with conditions rapidly deteriorating.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/19/richard-gere-open-arms-rescue-boat-heart-of-salvini-trial", + "creator": "Lorenzo Tondo in Palermo", + "pubDate": "2021-11-19T14:00:00Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘We are more powerful than Modi’: Indian farmers celebrate U-turn on laws", + "description": "

    Camp outside Delhi cheers after PM announced revoking of farm laws following a year of protests

    The scent of victory was in the air. As tractors rolled through the protest camp on the outskirts of Delhi set up by farmers almost exactly a year ago, rousing cries of “long live the revolution” and “we defeated Modi” rang out. Old men with trailing silver beards and rainbow turbans danced on tractor roofs and flag-waving children were held up high.

    “For one year we have been at war,” said Ranjeet Singh, 32. “We have suffered, people have died. But today farmers won the war.”

    Continue reading...", + "content": "

    Camp outside Delhi cheers after PM announced revoking of farm laws following a year of protests

    The scent of victory was in the air. As tractors rolled through the protest camp on the outskirts of Delhi set up by farmers almost exactly a year ago, rousing cries of “long live the revolution” and “we defeated Modi” rang out. Old men with trailing silver beards and rainbow turbans danced on tractor roofs and flag-waving children were held up high.

    “For one year we have been at war,” said Ranjeet Singh, 32. “We have suffered, people have died. But today farmers won the war.”

    Continue reading...", + "category": "India", + "link": "https://www.theguardian.com/world/2021/nov/19/we-are-more-powerful-than-modi-indian-farmers-celebrate-laws-repealing", + "creator": "Hannah Ellis-Petersen in Singhu", + "pubDate": "2021-11-19T13:39:57Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "As millions face famine #CongoIsStarving is calling on Joe Biden to help | Vava Tampa", + "description": "

    Only a UN tribunal, sponsored by the US president, can end the culture of impunity fuelling violence and poverty in the DRC

    The numbers are difficult to absorb. According to a new IPC report, a record 27 million Congolese – roughly a quarter of the Democratic Republic of the Congo’s (DRC’s) population – are facing hunger, with 860,000 children under five acutely malnourished. The DRC is home to more starving people than any other country in the world. This could have been prevented.

    Without faith that their own president Félix Tshisekedi will act, people are turning to the US president, hoping that lobbying using the hashtag #CongoIsStarving on Twitter will urge Joe Biden to back the creation of an international criminal tribunal for the DRC to end the impunity fuelling violence and famine risk. Shockingly, it could be that simple to bring an end to this suffering; we are asking for solidarity, not charity, to save lives and end this nightmarish crisis.

    Continue reading...", + "content": "

    Only a UN tribunal, sponsored by the US president, can end the culture of impunity fuelling violence and poverty in the DRC

    The numbers are difficult to absorb. According to a new IPC report, a record 27 million Congolese – roughly a quarter of the Democratic Republic of the Congo’s (DRC’s) population – are facing hunger, with 860,000 children under five acutely malnourished. The DRC is home to more starving people than any other country in the world. This could have been prevented.

    Without faith that their own president Félix Tshisekedi will act, people are turning to the US president, hoping that lobbying using the hashtag #CongoIsStarving on Twitter will urge Joe Biden to back the creation of an international criminal tribunal for the DRC to end the impunity fuelling violence and famine risk. Shockingly, it could be that simple to bring an end to this suffering; we are asking for solidarity, not charity, to save lives and end this nightmarish crisis.

    Continue reading...", + "category": "Global development", + "link": "https://www.theguardian.com/global-development/2021/nov/19/as-millions-face-famine-congo-is-starving-is-calling-on-joe-biden-to-help", + "creator": "Vava Tampa", + "pubDate": "2021-11-19T12:40:13Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Good or bad? Top cardiologist gives verdict on chocolate, coffee and wine", + "description": "

    Exclusive: Prof Thomas Lüscher assesses the heart healthiness of some of our favourite treats

    Dark chocolate is a “joy” when it comes to keeping your heart healthy, coffee is likely protective, but wine is at best “neutral”, according to one of the world’s leading cardiologists.

    As editor of the European Heart Journal for more than a decade, Prof Thomas Lüscher led a team that sifted through 3,200 manuscripts from scientists and doctors every year. Only a fraction – those deemed “truly novel” and backed up with “solid data” – would be selected for publication.

    Continue reading...", + "content": "

    Exclusive: Prof Thomas Lüscher assesses the heart healthiness of some of our favourite treats

    Dark chocolate is a “joy” when it comes to keeping your heart healthy, coffee is likely protective, but wine is at best “neutral”, according to one of the world’s leading cardiologists.

    As editor of the European Heart Journal for more than a decade, Prof Thomas Lüscher led a team that sifted through 3,200 manuscripts from scientists and doctors every year. Only a fraction – those deemed “truly novel” and backed up with “solid data” – would be selected for publication.

    Continue reading...", + "category": "Health", + "link": "https://www.theguardian.com/society/2021/nov/19/good-or-bad-top-cardiologist-gives-verdict-chocolate-coffee-wine", + "creator": "Andrew Gregory Health editor", + "pubDate": "2021-11-19T12:29:35Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Storm clouds’ over Europe – but UK Covid rates remain high", + "description": "

    Analysis: likes of Slovakia and Austria have worse figures but UK’s have topped EU average for months

    As Covid infection rates surged again across Europe, Boris Johnson spoke this week of “storm clouds gathering” over parts of the continent and said it was unclear when or how badly the latest wave would “wash up on our shores”.

    The situation in some EU member states, particularly those with low vaccination rates, is indeed dramatic. In central and eastern Europe in particular, but also Austria, Belgium and the Netherlands, case numbers are rocketing.

    Continue reading...", + "content": "

    Analysis: likes of Slovakia and Austria have worse figures but UK’s have topped EU average for months

    As Covid infection rates surged again across Europe, Boris Johnson spoke this week of “storm clouds gathering” over parts of the continent and said it was unclear when or how badly the latest wave would “wash up on our shores”.

    The situation in some EU member states, particularly those with low vaccination rates, is indeed dramatic. In central and eastern Europe in particular, but also Austria, Belgium and the Netherlands, case numbers are rocketing.

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/2021/nov/19/storm-clouds-over-europe-but-uk-covid-rates-remain-higher", + "creator": "Jon Henley Europe correspondent", + "pubDate": "2021-11-19T12:25:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rap battles return in Rio’s City of God – in pictures", + "description": "

    Artists in the favela are starting to compete again after the Covid-19 pandemic curtailed public gatherings, a show that signals a return to normality for music lovers

    Continue reading...", + "content": "

    Artists in the favela are starting to compete again after the Covid-19 pandemic curtailed public gatherings, a show that signals a return to normality for music lovers

    Continue reading...", + "category": "Brazil", + "link": "https://www.theguardian.com/world/gallery/2021/nov/19/rap-battles-return-in-rio-city-of-god-in-pictures", + "creator": "Silvia Izquierdo/AP", + "pubDate": "2021-11-19T10:33:46Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘No way around it’: Austrians queue for jabs as unvaccinated told to stay home", + "description": "

    In Linz, jab willingness is rising as police check Covid passports – but confusion remains on what is essential travel

    On a street of shops in the Austrian city of Linz, a stone’s throw from the winding Danube river, two police officers in navy-blue uniforms and peaked white caps stop random passersby to check their vaccine passports.

    Elderly shoppers rummage around in their handbags and comply with a smile, but a fortysomething woman with a nose piercing is less forthcoming: she says she left her immunisation certificate on the kitchen table as she had to dash across town to see a dentist.

    Continue reading...", + "content": "

    In Linz, jab willingness is rising as police check Covid passports – but confusion remains on what is essential travel

    On a street of shops in the Austrian city of Linz, a stone’s throw from the winding Danube river, two police officers in navy-blue uniforms and peaked white caps stop random passersby to check their vaccine passports.

    Elderly shoppers rummage around in their handbags and comply with a smile, but a fortysomething woman with a nose piercing is less forthcoming: she says she left her immunisation certificate on the kitchen table as she had to dash across town to see a dentist.

    Continue reading...", + "category": "Austria", + "link": "https://www.theguardian.com/world/2021/nov/19/austrians-queue-for-covid-jabs-as-unvaccinated-told-to-stay-home", + "creator": "Philip Oltermann in Linz", + "pubDate": "2021-11-19T10:30:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Has Covid ended the neoliberal era? – podcast", + "description": "

    The year 2020 exposed the risks and weaknesses of the market-driven global system like never before. It’s hard to avoid the sense that a turning point has been reached. By Adam Tooze

    Continue reading...", + "content": "

    The year 2020 exposed the risks and weaknesses of the market-driven global system like never before. It’s hard to avoid the sense that a turning point has been reached. By Adam Tooze

    Continue reading...", + "category": "Coronavirus", + "link": "https://www.theguardian.com/world/audio/2021/nov/19/has-covid-ended-the-neoliberal-era-podcast", + "creator": "Written by Adam Tooze, read by Ben Norris and produced by Esther Opoku-Gyeni", + "pubDate": "2021-11-19T10:00:31Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "18,000 people stranded after floods and landslides in British Columbia – video", + "description": "

    Authorities and emergency crews in Canada are trying \nto reach 18,000 people stranded by \nmajor floods and landslides. The province of\nBritish Columbia declared\na state of emergency with concerns over further falls in coming days. Some grocery store shelves\nin affected areas have\nalso been stripped bare while floods and mudslides destroyed\nroads, houses and bridges,\nhampering rescue efforts

    Continue reading...", + "content": "

    Authorities and emergency crews in Canada are trying \nto reach 18,000 people stranded by \nmajor floods and landslides. The province of\nBritish Columbia declared\na state of emergency with concerns over further falls in coming days. Some grocery store shelves\nin affected areas have\nalso been stripped bare while floods and mudslides destroyed\nroads, houses and bridges,\nhampering rescue efforts

    Continue reading...", + "category": "Canada", + "link": "https://www.theguardian.com/world/video/2021/nov/19/18000-people-stranded-after-floods-and-landslides-in-british-columbia-video", + "creator": "", + "pubDate": "2021-11-19T07:38:27Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rio Tinto’s past casts a shadow over Serbia’s hopes of a lithium revolution", + "description": "

    People in the Jadar valley fear environmental catastrophe as Europe presses for self-sufficiency in battery technology

    Photographs by Vladimir Zivojinovic

    A battery sign, flashing dangerously low, appears superimposed over a view of the globe as seen from space. “Green technologies, electric cars, clean air – all of these depend on one of the most significant lithium deposits in the world, which is located right here in Jadar, Serbia,” a gravel-voiced narrator announces. “We completely understand your concerns about the environment. Rio Tinto is carrying out detailed analyses, so as to make all of us sure that we develop the Jadar project in line with the highest environmental, security and health standards.”

    Beamed into the country’s living rooms on the public service channel RTS, the slick television ad, shown just after the evening news, finishes with images of reassuring scientists and a comforted young couple walking into the sunset: “Rio Tinto: Together we have the chance to save the planet.”

    Continue reading...", + "content": "

    People in the Jadar valley fear environmental catastrophe as Europe presses for self-sufficiency in battery technology

    Photographs by Vladimir Zivojinovic

    A battery sign, flashing dangerously low, appears superimposed over a view of the globe as seen from space. “Green technologies, electric cars, clean air – all of these depend on one of the most significant lithium deposits in the world, which is located right here in Jadar, Serbia,” a gravel-voiced narrator announces. “We completely understand your concerns about the environment. Rio Tinto is carrying out detailed analyses, so as to make all of us sure that we develop the Jadar project in line with the highest environmental, security and health standards.”

    Beamed into the country’s living rooms on the public service channel RTS, the slick television ad, shown just after the evening news, finishes with images of reassuring scientists and a comforted young couple walking into the sunset: “Rio Tinto: Together we have the chance to save the planet.”

    Continue reading...", + "category": "Serbia", + "link": "https://www.theguardian.com/global-development/2021/nov/19/rio-tintos-past-casts-a-shadow-over-serbias-hopes-of-a-lithium-revolution", + "creator": "Daniel Boffey in the Jadar valley, Serbia", + "pubDate": "2021-11-19T04:00:24Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘We have fallen into a trap’: for hotel staff Qatar’s World Cup dream is a nightmare", + "description": "

    Exclusive: Seduced by salary promises, workers at Fifa-endorsed hotels allege they have been exploited and abused

    When Fifa executives step on to the asphalt in Doha next November for the start of the 2022 World Cup finals, their next stop is likely to be the check-in at one of Qatar’s glittering array of opulent hotels, built to provide the most luxurious possible backdrop to the biggest sporting event on earth.

    Now, with a year to go before the first match, fans who want to emulate the lifestyle of the sporting elite can head to Fifa’s hospitality website to plan their stay in the host nation. There they can scroll through a catalogue of exclusive, Fifa-endorsed accommodation, from boutique hotels to five-star resorts.

    Continue reading...", + "content": "

    Exclusive: Seduced by salary promises, workers at Fifa-endorsed hotels allege they have been exploited and abused

    When Fifa executives step on to the asphalt in Doha next November for the start of the 2022 World Cup finals, their next stop is likely to be the check-in at one of Qatar’s glittering array of opulent hotels, built to provide the most luxurious possible backdrop to the biggest sporting event on earth.

    Now, with a year to go before the first match, fans who want to emulate the lifestyle of the sporting elite can head to Fifa’s hospitality website to plan their stay in the host nation. There they can scroll through a catalogue of exclusive, Fifa-endorsed accommodation, from boutique hotels to five-star resorts.

    Continue reading...", + "category": "Workers' rights", + "link": "https://www.theguardian.com/global-development/2021/nov/18/we-have-fallen-into-a-trap-for-hotel-staff-qatar-world-cup-dream-is-a-nightmare", + "creator": "Pete Pattisson in Doha", + "pubDate": "2021-11-18T12:00:05Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lukashenko has got the ear of the EU at last – but it won’t help him", + "description": "

    The Belarusian leader may have won phone talks with Angela Merkel but Europe remains united against him

    As migrants camped out in the woods prepared for another night of sub-zero temperatures, the Estonian foreign minister, Eva-Maria Liimets, on Tuesday revealed to an evening news programme the gist of what Alexander Lukashenko demanded of Angela Merkel in the first call between a European leader and Belarus’s dictator in more than a year.

    “He wants the sanctions to be halted, [and] to be recognised as head of state so he can continue,” she said he told Merkel.

    Continue reading...", + "content": "

    The Belarusian leader may have won phone talks with Angela Merkel but Europe remains united against him

    As migrants camped out in the woods prepared for another night of sub-zero temperatures, the Estonian foreign minister, Eva-Maria Liimets, on Tuesday revealed to an evening news programme the gist of what Alexander Lukashenko demanded of Angela Merkel in the first call between a European leader and Belarus’s dictator in more than a year.

    “He wants the sanctions to be halted, [and] to be recognised as head of state so he can continue,” she said he told Merkel.

    Continue reading...", + "category": "Alexander Lukashenko", + "link": "https://www.theguardian.com/world/2021/nov/18/lukashenko-has-got-the-ear-of-the-eu-at-last-but-it-wont-help-him", + "creator": "Andrew Roth in Moscow", + "pubDate": "2021-11-18T05:00:02Z", + "folder": "00.03 News/News - EN", + "feed": "The Guardian", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - EN", + "name": "The Guardian" + }, + { + "title": "RSSOpinion", + "subtitle": "", + "link": "http://online.wsj.com/page/2_0006.html", + "image": "http://online.wsj.com/img/wsj_sm_logo.gif", + "description": "RSSOpinion", + "items": [ + { + "title": "Biden's Covid Death Milestone", + "description": "More Americans have died of the virus in 2021 than in all of 2020.", + "content": "More Americans have died of the virus in 2021 than in all of 2020.", + "category": "PAID", + "link": "https://www.wsj.com/articles/bidens-covid-death-milestone-biden-administration-trump-11637708781", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:44:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Tax Break for Union Dues", + "description": "The House budget bill includes a $250 per worker write-off.", + "content": "The House budget bill includes a $250 per worker write-off.", + "category": "PAID", + "link": "https://www.wsj.com/articles/a-tax-break-for-union-dues-labor-house-democrats-budget-bill-11637689873", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:43:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Did Jamie Dimon Hit a Nerve?", + "description": "Jokes about Communist Party longevity are no laughing matter in China.", + "content": "Jokes about Communist Party longevity are no laughing matter in China.", + "category": "PAID", + "link": "https://www.wsj.com/articles/did-jamie-dimon-hit-a-nerve-china-communist-party-11637862914", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:42:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Democrats Have a Waukesha Problem", + "description": "The massacre at a Christmas parade reveals the dangers of their crime policies.", + "content": "The massacre at a Christmas parade reveals the dangers of their crime policies.", + "category": "PAID", + "link": "https://www.wsj.com/articles/democrats-waukesha-aoc-progressive-prosecutors-crime-wisconsin-bail-reform-11637796347", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:34:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How Did Activision Pass the ESG Test?", + "description": "Asset managers seem willing to include any company paying lip service to progressive priorities.", + "content": "Asset managers seem willing to include any company paying lip service to progressive priorities.", + "category": "PAID", + "link": "https://www.wsj.com/articles/activision-esg-vanguard-blackrock-fidelity-woke-gaming-investing-sexual-misconduct-11637794901", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:33:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Housing Gang Is Getting Back Together for Another Bust", + "description": "Fan and Fred will buy mortgages up to $1 million, repeating the mistakes that led to the 2008 crash.", + "content": "Fan and Fred will buy mortgages up to $1 million, repeating the mistakes that led to the 2008 crash.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-housing-gang-is-getting-back-together-for-another-bust-inflation-mortgage-rates-11637794694", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:31:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Film That Taught Me to 'Let It Be'", + "description": "The Beatles start to say goodbye in the 1970 documentary.", + "content": "The Beatles start to say goodbye in the 1970 documentary.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-beatles-let-it-be-peter-jackson-john-paul-george-ringo-friendship-1970-11637795405", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:29:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why My Church Grew During the Pandemic", + "description": "Our priests had no intention of limiting access to the Lord.", + "content": "Our priests had no intention of limiting access to the Lord.", + "category": "PAID", + "link": "https://www.wsj.com/articles/why-my-church-grew-during-the-pandemic-mass-service-catholic-adoration-eucharist-11637795847", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:27:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Social Distancing Was a Problem Before Covid", + "description": "Marriage and childbirth rates, declining for years, reached new lows during the pandemic.", + "content": "Marriage and childbirth rates, declining for years, reached new lows during the pandemic.", + "category": "PAID", + "link": "https://www.wsj.com/articles/social-distancing-was-a-problem-before-covid-family-marriage-pandemic-religion-11637795685", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:00:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Breaking News From 1795: Jane Austen Falls in Love", + "description": "A poem in the author’s irresistible novel ‘Emma’ may reveal the Irishman who captured her heart.", + "content": "A poem in the author’s irresistible novel ‘Emma’ may reveal the Irishman who captured her heart.", + "category": "PAID", + "link": "https://www.wsj.com/articles/jane-austen-tom-lefroy-kipling-emma-persuasion-love-decoding-pride-prejudice-11637794443", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 14:59:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Leadership Germans Wanted", + "description": "A more-of-the-same government emerges from a muddled vote.", + "content": "A more-of-the-same government emerges from a muddled vote.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-leadership-germans-wanted-olaf-scholz-angela-merkel-christian-lindner-11637773238", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 19:42:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Ahmaud Arbery Verdict", + "description": "A Georgia jury rejects a citizen’s-arrest defense in the 2020 killing.", + "content": "A Georgia jury rejects a citizen’s-arrest defense in the 2020 killing.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-ahmaud-arbery-verdict-travis-greg-mcmichael-william-bryan-11637800000", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 19:41:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'One More at the Table'", + "description": "High prices and shortages challenge consumers and food pantries, but the joy of Thanksgiving remains in abundance.", + "content": "High prices and shortages challenge consumers and food pantries, but the joy of Thanksgiving remains in abundance.", + "category": "PAID", + "link": "https://www.wsj.com/articles/one-more-at-the-table-11637783628", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 14:53:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "What the Kyle Rittenhouse Trial Says About America", + "description": "Students weigh in on American culture and the criminal-justice system.", + "content": "Students weigh in on American culture and the criminal-justice system.", + "category": "PAID", + "link": "https://www.wsj.com/articles/what-the-kyle-rittenhouse-trial-says-about-america-kenosha-shooting-acquitted-riots-11637706467", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:44:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Desolate Wilderness", + "description": "An account of the Pilgrims’ journey to Plymouth in 1620, as recorded by Nathaniel Morton.", + "content": "An account of the Pilgrims’ journey to Plymouth in 1620, as recorded by Nathaniel Morton.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-desolate-wilderness-william-bradford-nathaniel-morton-plymouth-pilgrims-11637708909", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:41:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "And the Fair Land", + "description": "For all our social discord we yet remain the longest enduring society of free men governing themselves without benefit of kings or dictators.", + "content": "For all our social discord we yet remain the longest enduring society of free men governing themselves without benefit of kings or dictators.", + "category": "PAID", + "link": "https://www.wsj.com/articles/and-the-fair-land-11637710823", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:40:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Strategic Political Oil Reserve", + "description": "Biden taps the U.S. emergency supply but prices still rise.", + "content": "Biden taps the U.S. emergency supply but prices still rise.", + "category": "PAID", + "link": "https://www.wsj.com/articles/strategic-political-oil-reserve-opec-biden-11637701493", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:36:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Great Ohio Opioid Stick-Up", + "description": "A jury verdict against pharmacies distorts product liability law.", + "content": "A jury verdict against pharmacies distorts product liability law.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-great-ohio-opioid-stick-up-dan-polster-cvs-walmart-walgreens-jury-11637709510", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:33:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "College Testing Bait-and-Switch", + "description": "After dropping the SAT, the University of California kills plans for a new test.", + "content": "After dropping the SAT, the University of California kills plans for a new test.", + "category": "PAID", + "link": "https://www.wsj.com/articles/college-testing-bait-and-switch-university-of-california-sat-janet-napolitano-11637689492", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:30:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "America Repeated Vietnam's Mistakes in Afghanistan", + "description": "Lessons from both conflicts should become part of the military’s education requirements.", + "content": "Lessons from both conflicts should become part of the military’s education requirements.", + "category": "PAID", + "link": "https://www.wsj.com/articles/america-vietnam-mistakes-afghanistan-quagmire-binladen-strategy-11637705112", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:19:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "How to Protect Your Brain From Injury", + "description": "A direct blow isn’t the only source of trauma, and it’s crucial to know the symptoms.", + "content": "A direct blow isn’t the only source of trauma, and it’s crucial to know the symptoms.", + "category": "PAID", + "link": "https://www.wsj.com/articles/how-to-protect-your-brain-from-injury-abbott-test-concussion-football-nfl-11637703934", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:18:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Notable & Quotable: Ruy Teixeira on Voter Turnout", + "description": "‘No myth is stronger in progressive circles than the magical, wonderworking powers of voter turnout.’", + "content": "‘No myth is stronger in progressive circles than the magical, wonderworking powers of voter turnout.’", + "category": "PAID", + "link": "https://www.wsj.com/articles/notable-quotable-ruy-teixeira-on-voter-turnout-elections-voting-democrats-11637706161", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:16:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Justice, Not Revenge, for Ahmaud Arbery and Kyle Rittenhouse", + "description": "The purpose of a trial is to assess the facts in each case, not to settle scores between identity groups.", + "content": "The purpose of a trial is to assess the facts in each case, not to settle scores between identity groups.", + "category": "PAID", + "link": "https://www.wsj.com/articles/justice-ahmaud-arbery-kyle-rittenhouse-kenosha-riots-11637704695", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:16:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "After COP26, Electric Vehicles Galore!", + "description": "What surging stocks say about a favorite climate non-solution.", + "content": "What surging stocks say about a favorite climate non-solution.", + "category": "PAID", + "link": "https://www.wsj.com/articles/after-cop26-electric-vehicles-galore-rivian-tesla-subsidies-emissions-passenger-batteries-11637704766", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:15:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Do Not Talk About Flight Club", + "description": "Coastal columnists still don’t like explaining why Californians are fleeing to Texas.", + "content": "Coastal columnists still don’t like explaining why Californians are fleeing to Texas.", + "category": "PAID", + "link": "https://www.wsj.com/articles/do-not-talk-about-flight-club-11637706285", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 17:24:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Can Biden Come Back? Many Others Have", + "description": "After GOP midterm losses in the House, Reagan’s approval was 35% as 1983 began.", + "content": "After GOP midterm losses in the House, Reagan’s approval was 35% as 1983 began.", + "category": "PAID", + "link": "https://www.wsj.com/articles/can-biden-come-back-many-others-have-clinton-reagan-obama-approval-poll-popularity-11637684716", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:59:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Don't Let Ideologues Steal Thanksgiving", + "description": "For the left, it’s become an occasion to air grievances ranging from ‘colonialism’ to ‘carbon footprints.’", + "content": "For the left, it’s become an occasion to air grievances ranging from ‘colonialism’ to ‘carbon footprints.’", + "category": "PAID", + "link": "https://www.wsj.com/articles/dont-let-ideologues-steal-thanksgiving-cancel-culture-native-americans-holiday-11637684786", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:58:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden Signs Up for Powell's Inflation", + "description": "Republicans are under no obligation to endorse his Fed nominees.", + "content": "Republicans are under no obligation to endorse his Fed nominees.", + "category": "PAID", + "link": "https://www.wsj.com/articles/biden-and-the-jerome-powell-inflation-lael-brainard-federal-reserve-11637613794", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:53:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Waukesha Rampage", + "description": "The suspected assailant was free on a $1,000 bond despite recent charges of violence.", + "content": "The suspected assailant was free on a $1,000 bond despite recent charges of violence.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-waukesha-rampage-darrell-brooks-wisconsin-john-chisholm-11637622563", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:49:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Censoring the Pilgrims", + "description": "The left wants to cancel the WSJ’s annual Thanksgiving editorials.", + "content": "The left wants to cancel the WSJ’s annual Thanksgiving editorials.", + "category": "PAID", + "link": "https://www.wsj.com/articles/censoring-the-pilgrims-thanksgiving-editorials-vermont-royster-cancel-culture-11637617548", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:45:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Piling on the Business Fines", + "description": "The House spending bill targets employers with huge new penalties.", + "content": "The House spending bill targets employers with huge new penalties.", + "category": "PAID", + "link": "https://www.wsj.com/articles/piling-on-the-business-fines-osha-build-back-better-house-spending-bill-penalities-11637518976", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:43:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "On ObamaCare, Democrats Defy the Supreme Court", + "description": "The justices said in 2012 that Congress couldn’t punish states that refuse the Medicaid expansion.", + "content": "The justices said in 2012 that Congress couldn’t punish states that refuse the Medicaid expansion.", + "category": "PAID", + "link": "https://www.wsj.com/articles/on-obamacare-democrats-defy-the-supreme-court-hospitals-uninsured-patients-bill-11637619017", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:41:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Yes, You Should Get a Covid Booster", + "description": "Vaccine effectiveness is waning. A third shot restores it with few side effects.", + "content": "Vaccine effectiveness is waning. A third shot restores it with few side effects.", + "category": "PAID", + "link": "https://www.wsj.com/articles/yes-get-a-covid-booster-vaccine-third-dose-shot-safe-effective-side-effects-11637617768", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:40:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Ping-Pong Table and a Lifetime of Memories", + "description": "Steve Fortuna paid $15 for it half a century ago. When his father died, he kept the paddles.", + "content": "Steve Fortuna paid $15 for it half a century ago. When his father died, he kept the paddles.", + "category": "PAID", + "link": "https://www.wsj.com/articles/a-ping-pong-table-and-a-lifetime-of-memories-table-tennis-play-11637619379", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:39:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Notable & Quotable: 76 Years After the A-Bomb", + "description": "‘Hirohito made the surrender official Aug. 15. I was spared my date with death, 2½ months later.’", + "content": "‘Hirohito made the surrender official Aug. 15. I was spared my date with death, 2½ months later.’", + "category": "PAID", + "link": "https://www.wsj.com/articles/notable-quotable-76-years-after-the-atomic-bomb-world-war-two-japan-invasion-11637618711", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:36:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Campaign to Distract Biden From Asia", + "description": "China and Russia form an entente to hobble America, with a little help from Iran.", + "content": "China and Russia form an entente to hobble America, with a little help from Iran.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-campaign-to-distract-biden-from-asia-russia-china-xi-putin-foreign-policy-allies-11637617569", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:35:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "China's Peng Shuai Goes 'Missing'", + "description": "The tennis star accused a top Communist of sexual assault. Beijing can’t deal with it.", + "content": "The tennis star accused a top Communist of sexual assault. Beijing can’t deal with it.", + "category": "PAID", + "link": "https://www.wsj.com/articles/china-missing-tennis-star-peng-shuai-australia-foreign-policy-trade-assault-11637620780", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:33:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "President Biden and American Gratitude", + "description": "Why hasn’t the White House announced a posthumous Medal of Honor for Alwyn Cashe yet?", + "content": "Why hasn’t the White House announced a posthumous Medal of Honor for Alwyn Cashe yet?", + "category": "PAID", + "link": "https://www.wsj.com/articles/president-biden-and-american-gratitude-11637617891", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:51:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Woke Imperialism Harms U.S. Interests", + "description": "The Biden Administration promotes an avant-garde concept of ‘rights’ that isolates America.", + "content": "The Biden Administration promotes an avant-garde concept of ‘rights’ that isolates America.", + "category": "PAID", + "link": "https://www.wsj.com/articles/woke-imperialism-harms-u-s-interests-china-russia-equity-worldview-11637596572", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 13:04:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kyle Rittenhouse and the Left's Terrifying Assault on Due Process", + "description": "They want revolutionary justice. The legal system’s verdict will be supplanted by the people’s judgment.", + "content": "They want revolutionary justice. The legal system’s verdict will be supplanted by the people’s judgment.", + "category": "PAID", + "link": "https://www.wsj.com/articles/kyle-rittenhouse-and-the-lefts-terrifying-assault-on-due-process-trial-verdict-not-guilty-11637597046", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 13:01:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "COP26 Prepared the World to Beat Climate Change", + "description": "We can bemoan that there is still a gap between our ambitions and actions. Or we can work to close it.", + "content": "We can bemoan that there is still a gap between our ambitions and actions. Or we can work to close it.", + "category": "PAID", + "link": "https://www.wsj.com/articles/cop26-prepared-the-world-to-beat-climate-change-global-warming-emissions-glasgow-11637526170", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 17:18:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Coddling of American Children Is a Boon to Beijing", + "description": "In China, my son had to study hard. Here in the U.S., he just needs to bring a ‘healthy snack’ to school.", + "content": "In China, my son had to study hard. Here in the U.S., he just needs to bring a ‘healthy snack’ to school.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-coddling-of-american-children-is-a-boon-to-beijing-china-education-college-victim-11637525811", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 17:17:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Honduras and the Clinton Legacy", + "description": "Will the country follow the undemocratic paths of El Salvador and Nicaragua?", + "content": "Will the country follow the undemocratic paths of El Salvador and Nicaragua?", + "category": "PAID", + "link": "https://www.wsj.com/articles/honduras-and-the-clinton-legacy-democracy-socialism-national-security-imperialism-11637526692", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:47:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Kamikaze Democrats", + "description": "Pelosi and Biden march swing-district House Members to the end of their careers.", + "content": "Pelosi and Biden march swing-district House Members to the end of their careers.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-kamikaze-democrats-nancy-pelosi-joe-biden-build-back-better-house-welfare-2022-11637362201", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:34:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Cuba Libre' at the Latin Grammys", + "description": "The patriotic protest anthem ‘Patria y Vida’ wins song of the year.", + "content": "The patriotic protest anthem ‘Patria y Vida’ wins song of the year.", + "category": "PAID", + "link": "https://www.wsj.com/articles/cuba-libre-latin-grammys-patria-y-vida-osorbo-yotuel-gente-de-zona-el-funky-descemer-bueno-11637366048", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:33:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Tax Cut for the Tarheel State", + "description": "Democratic Gov. Roy Cooper heeds the message from Virginia.", + "content": "Democratic Gov. Roy Cooper heeds the message from Virginia.", + "category": "PAID", + "link": "https://www.wsj.com/articles/a-tax-cut-for-the-tarheel-state-north-carolina-cooper-personal-income-virginia-youngkin-11637516606", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:33:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Losing by Five, With 1,400 Votes Rejected", + "description": "In a squeaker House race, bad mail votes are 275 times the margin.", + "content": "In a squeaker House race, bad mail votes are 275 times the margin.", + "category": "PAID", + "link": "https://www.wsj.com/articles/losing-by-five-with-1-400-votes-rejected-florida-primary-election-voting-by-mail-usps-11637159981", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:32:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Politicians Have Earned Your Distrust", + "description": "Our leaders care more about putting ‘points on the board’ than doing what’s right.", + "content": "Our leaders care more about putting ‘points on the board’ than doing what’s right.", + "category": "PAID", + "link": "https://www.wsj.com/articles/politicos-earned-distrust-biden-inflation-reconciliation-cuomo-covid-deaths-nursing-homes-11637504680", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 13:45:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Left Betrays the Working Class on Covid Mandates", + "description": "Some unions are even siding with management against employees who resist vaccination.", + "content": "Some unions are even siding with management against employees who resist vaccination.", + "category": "PAID", + "link": "https://www.wsj.com/articles/left-betrays-working-class-covid-mandates-vaccine-religious-approval-exemption-nyc-osha-11637505203", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 13:44:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Enes Kanter: Move the Olympics for Peng Shuai's Sake", + "description": "The IOC shockingly echoes Beijing’s rhetoric on the tennis star’s disappearance.", + "content": "The IOC shockingly echoes Beijing’s rhetoric on the tennis star’s disappearance.", + "category": "PAID", + "link": "https://www.wsj.com/articles/enes-kanter-move-the-olympics-for-peng-shuais-sake-11637444316", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 16:38:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "As Joe Biden Turns 79, a Panic Over Kamala Harris", + "description": "He’s unlikely to run in 2024, and his VP is deeply unpopular.", + "content": "He’s unlikely to run in 2024, and his VP is deeply unpopular.", + "category": "PAID", + "link": "https://www.wsj.com/articles/as-biden-turns-79-a-panic-over-kamala-harris-11637362818", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:03:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "CNN's Modified Limited Steele Climbdown", + "description": "We are right even when we are wrong, says the network about its part in the collusion hoax.", + "content": "We are right even when we are wrong, says the network about its part in the collusion hoax.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-media-steele-climbdown-cnn-dossier-trump-russia-collusion-durham-clinton-2016-election-11637354774", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:25:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comrade Omarova vs. Margaret Thatcher", + "description": "Some aspiring apparatchiks will say anything to seize power.", + "content": "Some aspiring apparatchiks will say anything to seize power.", + "category": "PAID", + "link": "https://www.wsj.com/articles/comrade-omarova-vs-margaret-thatcher-11637352783", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:13:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Impossible Insurrection of January 6", + "description": "The right couldn’t stage a coup because liberals dominate nearly every institution of American politics and culture. Yet liberals refuse to see it.", + "content": "The right couldn’t stage a coup because liberals dominate nearly every institution of American politics and culture. Yet liberals refuse to see it.", + "category": "PAID", + "link": "https://www.wsj.com/articles/impossible-insurrection-jan-6-capitol-hill-riot-conservative-liberalism-colleges-media-trump-11637344629", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:25:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Democrats Turn a Blind Eye to Connecticut's Juvenile Crime Wave", + "description": "The state desperately needs a special session of the Legislature to address it, but Gov. Lamont refuses.", + "content": "The state desperately needs a special session of the Legislature to address it, but Gov. Lamont refuses.", + "category": "PAID", + "link": "https://www.wsj.com/articles/democrats-connecticut-juvenile-crime-gun-violence-homicide-shootings-murder-lamont-11637345153", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:24:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Real Biden Bill: At Least $4.6 Trillion", + "description": "Program by program, here’s how Democrats disguise the real cost of their entitlement blowout.", + "content": "Program by program, here’s how Democrats disguise the real cost of their entitlement blowout.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-real-biden-bill-at-least-4-6-trillion-congressional-budget-office-score-congress-democrats-11637275848", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 21:50:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "America Slowly Learns to Live With Covid", + "description": "Shots are an achievement but not a miracle, and other realities with which we’re coming to terms.", + "content": "Shots are an achievement but not a miracle, and other realities with which we’re coming to terms.", + "category": "PAID", + "link": "https://www.wsj.com/articles/america-slowly-learns-to-live-with-covid-vaccines-shots-flu-fauci-antivax-infection-11637275001", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:43:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "John Deere, Inflation Bellwether", + "description": "The company’s union workers win automatic cost-of-living increases, which should raise alarms at the Federal Reserve.", + "content": "The company’s union workers win automatic cost-of-living increases, which should raise alarms at the Federal Reserve.", + "category": "PAID", + "link": "https://www.wsj.com/articles/john-deere-inflation-bellwether-united-auto-workers-union-wages-11637276050", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:39:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "On China, Women's Tennis Beats the NBA", + "description": "The WTA calls for an investigation into a charge of sexual assault.", + "content": "The WTA calls for an investigation into a charge of sexual assault.", + "category": "PAID", + "link": "https://www.wsj.com/articles/on-china-womens-tennis-association-beats-the-nba-peng-shuai-steve-simon-11637191294", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:38:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The FBI's Raid on James O'Keefe", + "description": "Justice had better have good reason for seizing a journalist’s records.", + "content": "Justice had better have good reason for seizing a journalist’s records.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-fbis-raid-on-james-okeefe-project-veritas-department-of-justice-merrick-garland-11637091882", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:34:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Congress Needs to Get Back to Regular Order", + "description": "Reconciliation wasn’t meant to be the vehicle for social change.", + "content": "Reconciliation wasn’t meant to be the vehicle for social change.", + "category": "PAID", + "link": "https://www.wsj.com/articles/congress-needs-order-filibuster-reconciliation-spending-build-back-better-cbo-byrd-rule-11637270597", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:29:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Xi Jinping's War on Tibetan Buddhism", + "description": "Beijing wants future lamas and monks to learn the faith only in Mandarin.", + "content": "Beijing wants future lamas and monks to learn the faith only in Mandarin.", + "category": "PAID", + "link": "https://www.wsj.com/articles/xi-jinping-war-on-tibetan-buddhism-lanugage-china-monks-education-unity-sixth-plenum-11637269866", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:27:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "On Reconciliation Bill, Senate Moderates Hide Behind Joe Manchin and Kyrsten Sinema", + "description": "Sens. Maggie Hassan, Mark Kelly and Catherine Cortez Masto have been awfully quiet. All are up for re-election in 2022.", + "content": "Sens. Maggie Hassan, Mark Kelly and Catherine Cortez Masto have been awfully quiet. All are up for re-election in 2022.", + "category": "PAID", + "link": "https://www.wsj.com/articles/reconciliation-bill-moderates-let-joe-manchin-kyrsten-sinema-hassan-kelly-build-back-better-11637276328", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:25:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Toshiba Split: A Farewell to Poor Japanese Management?", + "description": "Having shed inefficiencies since the 1990s, the corporate environment may be ready for reform.", + "content": "Having shed inefficiencies since the 1990s, the corporate environment may be ready for reform.", + "category": "PAID", + "link": "https://www.wsj.com/articles/toshiba-split-japan-management-division-keiretsu-cross-shareholding-foreign-activist-investor-11637272011", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 18:06:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Will Joe Manchin Stand His Ground on Inflation?", + "description": "Federal spending is its biggest driver. He has demanded an honest accounting, due this week.", + "content": "Federal spending is its biggest driver. He has demanded an honest accounting, due this week.", + "category": "PAID", + "link": "https://www.wsj.com/articles/joe-manchin-stand-his-ground-on-inflation-budget-debt-economy-build-back-better-cbo-11637248788", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 12:05:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The U.S. Navy's Range Has Diminished Dangerously", + "description": "Carrier air wings aren’t prepared to overcome weapons that push U.S. ships away from shore.", + "content": "Carrier air wings aren’t prepared to overcome weapons that push U.S. ships away from shore.", + "category": "PAID", + "link": "https://www.wsj.com/articles/the-navy-range-has-diminished-dangerously-missile-aircraft-carrier-killer-china-ngad-air-dominance-11637248615", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 12:03:00 -0500", + "folder": "00.03 News/News - EN", + "feed": "Wall Street Journal", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - EN", + "name": "Wall Street Journal" + }, + { + "title": "Courrier international - Actualités France et Monde", + "subtitle": "", + "link": "https://www.courrierinternational.com/", + "image": "https://www.courrierinternational.com/sites/ci_master/themes/ci/images/courrier-logo-default-rss.png", + "description": "Derniers articles parus sur Courrier international", + "items": [ + { + "title": "Le chantier de la gare de Stuttgart entaché de soupçons de pots-de-vin", + "description": "La Deutsche Bahn est accusée par deux lanceurs d’alerte d’avoir ignoré leurs signalements répétés de fraudes et de détournements de fonds dans le projet d’infrastructures le plus coûteux d’Allemagne, la gare souterraine de Stuttgart.", + "content": "La Deutsche Bahn est accusée par deux lanceurs d’alerte d’avoir ignoré leurs signalements répétés de fraudes et de détournements de fonds dans le projet d’infrastructures le plus coûteux d’Allemagne, la gare souterraine de Stuttgart.", + "category": "", + "link": "https://www.courrierinternational.com/article/grands-travaux-le-chantier-de-la-gare-de-stuttgart-entache-de-soupcons-de-pots-de-vin", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:42:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Biden puise dans les réserves stratégiques pour lutter contre la crise de l’énergie", + "description": "Les États-Unis ont convaincu la Chine, l’Inde, le Royaume-Uni, le Japon et la Corée du Sud de libérer une partie de leurs réserves nationales de pétrole afin de faire baisser les prix du baril. Un effet d’annonce qui risque de faire flop.", + "content": "Les États-Unis ont convaincu la Chine, l’Inde, le Royaume-Uni, le Japon et la Corée du Sud de libérer une partie de leurs réserves nationales de pétrole afin de faire baisser les prix du baril. Un effet d’annonce qui risque de faire flop.", + "category": "", + "link": "https://www.courrierinternational.com/article/petrole-biden-puise-dans-les-reserves-strategiques-pour-lutter-contre-la-crise-de-lenergie", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 18:01:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La marque Tolkien met fin à l’aventure de la cryptomonnaie JRR Token", + "description": "Une nouvelle monnaie numérique avait fait parler d’elle en abusant des clins d’œil à l’univers du Seigneur des anneaux. Elle jouait notamment sur la proximité du mot “token” (“jeton”) avec le nom “Tolkien”. Les ayants droit du célèbre écrivain ont obtenu sa suppression.", + "content": "Une nouvelle monnaie numérique avait fait parler d’elle en abusant des clins d’œil à l’univers du Seigneur des anneaux. Elle jouait notamment sur la proximité du mot “token” (“jeton”) avec le nom “Tolkien”. Les ayants droit du célèbre écrivain ont obtenu sa suppression.", + "category": "", + "link": "https://www.courrierinternational.com/article/epilogue-la-marque-tolkien-met-fin-laventure-de-la-cryptomonnaie-jrr-token", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 15:27:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Hongrie, la monnaie nationale plombée par l’inflation et la pandémie", + "description": "Le forint enregistre une perte de valeur record. Plus largement, relève le journal Népszava, “l’économie hongroise est malade”.", + "content": "Le forint enregistre une perte de valeur record. Plus largement, relève le journal Népszava, “l’économie hongroise est malade”.", + "category": "", + "link": "https://www.courrierinternational.com/revue-de-presse/economie-en-hongrie-la-monnaie-nationale-plombee-par-linflation-et-la-pandemie", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 15:06:37 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La folie des grandeurs agricoles du président Joko Widodo", + "description": "Pour anticiper une crise alimentaire majeure annoncée par les Nations unies, le gouvernement indonésien a lancé en 2020 un programme de gigantesques domaines agricoles à Kalimantan et Sumatra. Il est plus que jamais dénoncé par les organisations environnementales, souligne Koran Tempo.\n \n \n\n   ", + "content": "Pour anticiper une crise alimentaire majeure annoncée par les Nations unies, le gouvernement indonésien a lancé en 2020 un programme de gigantesques domaines agricoles à Kalimantan et Sumatra. Il est plus que jamais dénoncé par les organisations environnementales, souligne Koran Tempo.\n \n \n\n   ", + "category": "", + "link": "https://www.courrierinternational.com/article/indonesie-la-folie-des-grandeurs-agricoles-du-president-joko-widodo", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 14:35:54 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple poursuit le concepteur israélien du logiciel espion Pegasus", + "description": "La marque à la pomme voudrait interdire d’accès à ses iPhones le programme de surveillance de NSO, qu’elle accuse de “violation flagrante de la loi”.", + "content": "La marque à la pomme voudrait interdire d’accès à ses iPhones le programme de surveillance de NSO, qu’elle accuse de “violation flagrante de la loi”.", + "category": "", + "link": "https://www.courrierinternational.com/article/surveillance-apple-poursuit-le-concepteur-israelien-du-logiciel-espion-pegasus", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 14:23:48 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comment les ouvriers vietnamiens ont sauvé la production d’Apple et de Samsung", + "description": "Le Covid-19 a fortement perturbé l’activité des sous-traitants électroniques implantés au Vietnam. Grâce à l’installation de campements au sein même des complexes industriels, les ouvriers vietnamiens ont maintenu le rythme de production au prix de leur santé, raconte Rest of World.", + "content": "Le Covid-19 a fortement perturbé l’activité des sous-traitants électroniques implantés au Vietnam. Grâce à l’installation de campements au sein même des complexes industriels, les ouvriers vietnamiens ont maintenu le rythme de production au prix de leur santé, raconte Rest of World.", + "category": "", + "link": "https://www.courrierinternational.com/article/exploitation-comment-les-ouvriers-vietnamiens-ont-sauve-la-production-dapple-et-de-samsung", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 16:51:59 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samsung investit 17 milliards de dollars dans une usine de puces au Texas", + "description": "Le numéro deux mondial des semi-conducteurs installera ses nouvelles lignes de production à Austin. Il répond ainsi à la pression de l’administration Biden pour relocaliser la fabrication des composants électroniques, dont la pénurie pénalise l’économie mondiale.", + "content": "Le numéro deux mondial des semi-conducteurs installera ses nouvelles lignes de production à Austin. Il répond ainsi à la pression de l’administration Biden pour relocaliser la fabrication des composants électroniques, dont la pénurie pénalise l’économie mondiale.", + "category": "", + "link": "https://www.courrierinternational.com/article/electronique-samsung-investit-17-milliards-de-dollars-dans-une-usine-de-puces-au-texas", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 15:32:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "“Au revoir Hong Kong” : la capitale financière ne se remet pas du Covid-19", + "description": "Nikkei Asia constate la désaffection des milieux d’affaires pour la ville à cause des interminables restrictions liées au Covid-19. Une remise en cause du statut de Hong Kong sur le marché financier, note le magazine économique japonais.", + "content": "Nikkei Asia constate la désaffection des milieux d’affaires pour la ville à cause des interminables restrictions liées au Covid-19. Une remise en cause du statut de Hong Kong sur le marché financier, note le magazine économique japonais.", + "category": "", + "link": "https://www.courrierinternational.com/une/contrecoup-au-revoir-hong-kong-la-capitale-financiere-ne-se-remet-pas-du-covid-19", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:43:15 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les brise-fer de l’espace, les bricoleurs d’Apple, l’improbable TGV et les nouveaux détecteurs de mensonge", + "description": "“‘Désolé de vous réveiller si tôt’, dit la voix dans le haut-parleur, ‘mais un satellite s’est fragmenté et vous allez devoir commencer les procédures pour vous mettre en lieu sûr’”, raconte Space.com. La bande-son de la conversation entre la base de Houston et les astronautes de la Station spatiale internationale, le 15 novembre, rappelle de manière saisissante celle des personnages du film Gravity, quelques minutes avant la destruction de...", + "content": "“‘Désolé de vous réveiller si tôt’, dit la voix dans le haut-parleur, ‘mais un satellite s’est fragmenté et vous allez devoir commencer les procédures pour vous mettre en lieu sûr’”, raconte Space.com. La bande-son de la conversation entre la base de Houston et les astronautes de la Station spatiale internationale, le 15 novembre, rappelle de manière saisissante celle des personnages du film Gravity, quelques minutes avant la destruction de...", + "category": "", + "link": "https://www.courrierinternational.com/article/la-lettre-tech-les-brise-fer-de-lespace-les-bricoleurs-dapple-limprobable-tgv-et-les", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:14:06 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le patron de la banque centrale américaine reconduit pour un second mandat", + "description": "Jerome Powell, le patron de la Fed, la banque centrale américaine, sera reconduit pour un second mandat de quatre ans, a annoncé lundi Joe Biden, qui mise sur “la stabilité et l’indépendance” de l’institution. M. Powell aura la lourde tâche de dompter l’inflation sans mettre en péril la reprise économique.", + "content": "Jerome Powell, le patron de la Fed, la banque centrale américaine, sera reconduit pour un second mandat de quatre ans, a annoncé lundi Joe Biden, qui mise sur “la stabilité et l’indépendance” de l’institution. M. Powell aura la lourde tâche de dompter l’inflation sans mettre en péril la reprise économique.", + "category": "", + "link": "https://www.courrierinternational.com/article/economie-le-patron-de-la-banque-centrale-americaine-reconduit-pour-un-second-mandat", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:51:33 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Et si la pénurie de main-d’œuvre était une chance pour les travailleurs ? ", + "description": "De la “grande démission” cet été à la vague de grèves cet automne, la grogne sociale des Américains marque une inversion du rapport de forces dans l’entreprise et leur donne plus de poids pour réclamer de meilleures conditions de travail.\n ", + "content": "De la “grande démission” cet été à la vague de grèves cet automne, la grogne sociale des Américains marque une inversion du rapport de forces dans l’entreprise et leur donne plus de poids pour réclamer de meilleures conditions de travail.\n ", + "category": "", + "link": "https://www.courrierinternational.com/article/etats-unis-et-si-la-penurie-de-main-doeuvre-etait-une-chance-pour-les-travailleurs", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:51:33 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dans sa guerre contre les taux d’intérêt, Erdogan fait s’effondrer la monnaie nationale", + "description": "La politique monétaire voulue par le président turc, centrée sur la réduction des taux d’intérêt, affecte sévèrement le pouvoir d’achat de la population. Surtout, elle déconcerte les économistes, qui critiquent l’obstination d’Erdogan.", + "content": "La politique monétaire voulue par le président turc, centrée sur la réduction des taux d’intérêt, affecte sévèrement le pouvoir d’achat de la population. Surtout, elle déconcerte les économistes, qui critiquent l’obstination d’Erdogan.", + "category": "", + "link": "https://www.courrierinternational.com/revue-de-presse/inflation-dans-sa-guerre-contre-les-taux-dinteret-erdogan-fait-seffondrer-la-monnaie", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:59:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le pire est passé pour les chaînes d’approvisionnement", + "description": "Les ports sont encore saturés mais le coût du fret maritime baisse. La reprise de la demande de biens de consommation, la recrudescence du Covid-19 et les aléas climatiques entravent encore le retour à la normale. Qui devrait intervenir au début de 2022.", + "content": "Les ports sont encore saturés mais le coût du fret maritime baisse. La reprise de la demande de biens de consommation, la recrudescence du Covid-19 et les aléas climatiques entravent encore le retour à la normale. Qui devrait intervenir au début de 2022.", + "category": "", + "link": "https://www.courrierinternational.com/article/commerce-le-pire-est-passe-pour-les-chaines-dapprovisionnement", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:21:11 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Faut-il avoir peur de ce “monstre” qu’est l’inflation ?", + "description": "Économistes et banques centrales avaient anticipé une hausse des prix après le ralentissement de l’économie imposé par la pandémie. Mais ces derniers mois, des doutes ont émergé sur le caractère “transitoire” de la poussée inflationniste actuelle, observe Bloomberg Businessweek.", + "content": "Économistes et banques centrales avaient anticipé une hausse des prix après le ralentissement de l’économie imposé par la pandémie. Mais ces derniers mois, des doutes ont émergé sur le caractère “transitoire” de la poussée inflationniste actuelle, observe Bloomberg Businessweek.", + "category": "", + "link": "https://www.courrierinternational.com/une/economie-faut-il-avoir-peur-de-ce-monstre-quest-linflation", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 13:04:58 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’Espagne testera la semaine de quatre jours en 2022 ", + "description": "L’année prochaine, 200 entreprises volontaires, de différents secteurs et tailles, expérimenteront les 32 heures de travail hebdomadaires, conformément à une proposition du parti de gauche radicale Más País.", + "content": "L’année prochaine, 200 entreprises volontaires, de différents secteurs et tailles, expérimenteront les 32 heures de travail hebdomadaires, conformément à une proposition du parti de gauche radicale Más País.", + "category": "", + "link": "https://www.courrierinternational.com/article/travail-lespagne-testera-la-semaine-de-quatre-jours-en-2022", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 06:22:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Japon en passe d’accorder un titre de séjour illimité aux travailleurs étrangers qualifiés", + "description": "La mesure, dont le Nihon Keizai Shimbun se fait l’écho, est un tournant pour le Japon qui a toujours rechigné à accueillir un grand nombre d’immigrés. Face à la pression démographique, les autorités ont décidé d’assouplir les règles de délivrance des visas aux travailleurs qualifiés et d’autoriser le regroupement familial.", + "content": "La mesure, dont le Nihon Keizai Shimbun se fait l’écho, est un tournant pour le Japon qui a toujours rechigné à accueillir un grand nombre d’immigrés. Face à la pression démographique, les autorités ont décidé d’assouplir les règles de délivrance des visas aux travailleurs qualifiés et d’autoriser le regroupement familial.", + "category": "", + "link": "https://www.courrierinternational.com/article/demographie-le-japon-en-passe-daccorder-un-titre-de-sejour-illimite-aux-travailleurs", + "creator": "", + "pubDate": "Sat, 20 Nov 2021 16:59:35 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un nouveau plan de relance massif au Japon", + "description": "Le Premier ministre japonais Fumio Kishida a dévoilé un plan de relance d’une ampleur historique afin de renouer avec la croissance et rétablir une économie moribonde.", + "content": "Le Premier ministre japonais Fumio Kishida a dévoilé un plan de relance d’une ampleur historique afin de renouer avec la croissance et rétablir une économie moribonde.", + "category": "", + "link": "https://www.courrierinternational.com/article/le-chiffre-du-jour-un-nouveau-plan-de-relance-massif-au-japon", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:27:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’inflation peut-elle couler la présidence de Joe Biden ?", + "description": "La hausse des prix s’accélère un peu partout dans le monde, en particulier aux États-Unis, où le président Biden risque d’en payer le prix politique, comme Jimmy Carter avant lui. Cette hausse est-elle temporaire ou faut-il s’en alarmer ?", + "content": "La hausse des prix s’accélère un peu partout dans le monde, en particulier aux États-Unis, où le président Biden risque d’en payer le prix politique, comme Jimmy Carter avant lui. Cette hausse est-elle temporaire ou faut-il s’en alarmer ?", + "category": "", + "link": "https://www.courrierinternational.com/article/economie-linflation-peut-elle-couler-la-presidence-de-joe-biden", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 17:24:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon interdit Visa à ses clients britanniques", + "description": "Le géant du commerce électronique n’acceptera plus de paiement avec une carte de crédit Visa sur sa plateforme au Royaume-Uni à partir du 19 janvier. Une manière d’obliger le réseau mondial à réduire ses frais de transactions.", + "content": "Le géant du commerce électronique n’acceptera plus de paiement avec une carte de crédit Visa sur sa plateforme au Royaume-Uni à partir du 19 janvier. Une manière d’obliger le réseau mondial à réduire ses frais de transactions.", + "category": "", + "link": "https://www.courrierinternational.com/article/e-commerce-amazon-interdit-visa-ses-clients-britanniques", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 17:03:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Fin de la grève “historique” chez John Deere aux États-Unis", + "description": "Les grévistes du fabricant de matériel agricole américain ont voté la reprise du travail après avoir obtenu de substantielles hausses de salaire. Le conflit, qui durait depuis un mois, symbolisait la résurgence du mouvement social après deux ans de pandémie.", + "content": "Les grévistes du fabricant de matériel agricole américain ont voté la reprise du travail après avoir obtenu de substantielles hausses de salaire. Le conflit, qui durait depuis un mois, symbolisait la résurgence du mouvement social après deux ans de pandémie.", + "category": "", + "link": "https://www.courrierinternational.com/article/social-fin-de-la-greve-historique-chez-john-deere-aux-etats-unis", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 14:15:50 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Shell file à l’anglaise, les Pays-Bas accusent le coup", + "description": "La compagnie énergétique anglo-néerlandaise a annoncé lundi 15 novembre sa décision de s’installer fiscalement au Royaume-Uni. Pour une partie des Pays-Bas, et en particulier pour le Premier ministre de droite libérale Mark Rutte, la nouvelle a beaucoup de mal à passer.", + "content": "La compagnie énergétique anglo-néerlandaise a annoncé lundi 15 novembre sa décision de s’installer fiscalement au Royaume-Uni. Pour une partie des Pays-Bas, et en particulier pour le Premier ministre de droite libérale Mark Rutte, la nouvelle a beaucoup de mal à passer.", + "category": "", + "link": "https://www.courrierinternational.com/revue-de-presse/fiscalite-shell-file-langlaise-les-pays-bas-accusent-le-coup", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 10:27:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La semaine de quatre jours, c’est bon pour la planète", + "description": "Diminuer le temps de travail permet de réduire les déplacements, la production et la consommation. Et donc les émissions polluantes, plaide le quotidien de la City.", + "content": "Diminuer le temps de travail permet de réduire les déplacements, la production et la consommation. Et donc les émissions polluantes, plaide le quotidien de la City.", + "category": "", + "link": "https://www.courrierinternational.com/article/boulot-la-semaine-de-quatre-jours-cest-bon-pour-la-planete", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 06:06:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le patron d’Activision Blizzard mis en cause pour sa gestion du harcèlement sexuel", + "description": "Contrairement à ses affirmations, Bobby Kotick aurait eu une parfaite connaissance du sexisme ambiant au sein du géant américain des jeux vidéo qu’il dirige. Les appels à sa démission se multiplient après les révélations d’une retentissante enquête parue dans le Wall Street Journal.", + "content": "Contrairement à ses affirmations, Bobby Kotick aurait eu une parfaite connaissance du sexisme ambiant au sein du géant américain des jeux vidéo qu’il dirige. Les appels à sa démission se multiplient après les révélations d’une retentissante enquête parue dans le Wall Street Journal.", + "category": "", + "link": "https://www.courrierinternational.com/revue-de-presse/jeux-video-le-patron-dactivision-blizzard-mis-en-cause-pour-sa-gestion-du", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 17:58:58 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le bitcoin à la peine après les nouvelles attaques de la Chine contre le minage", + "description": "La principale agence de planification chinoise a annoncé, le mardi 16 novembre, le détail des mesures de répression des cryptomonnaies. Les deux principales monnaies virtuelles, le bitcoin et l’ether, ont aussitôt dévissé.", + "content": "La principale agence de planification chinoise a annoncé, le mardi 16 novembre, le détail des mesures de répression des cryptomonnaies. Les deux principales monnaies virtuelles, le bitcoin et l’ether, ont aussitôt dévissé.", + "category": "", + "link": "https://www.courrierinternational.com/article/cryptomonnaie-le-bitcoin-la-peine-apres-les-nouvelles-attaques-de-la-chine-contre-le-minage", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 17:21:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La première mini-centrale nucléaire de Bill Gates en fonction d’ici sept ans aux États-Unis", + "description": "Porté par le milliardaire américain via sa start-up TerraPower depuis 2006, le premier petit réacteur nucléaire Natrium sera implanté à Kemmerer, dans le Wyoming, et serait opérationnel d’ici sept ans. Sa construction sera financée pour moitié par le plan d’infrastructures de Joe Biden.", + "content": "Porté par le milliardaire américain via sa start-up TerraPower depuis 2006, le premier petit réacteur nucléaire Natrium sera implanté à Kemmerer, dans le Wyoming, et serait opérationnel d’ici sept ans. Sa construction sera financée pour moitié par le plan d’infrastructures de Joe Biden.", + "category": "", + "link": "https://www.courrierinternational.com/article/energie-la-premiere-mini-centrale-nucleaire-de-bill-gates-en-fonction-dici-sept-ans-aux", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 13:01:18 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Remettre le travail à sa place", + "description": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous nous interrogeons sur notre rapport au travail. Aux États-Unis, le rapport de force s’inverse dans les entreprises. Après l’Islande, l’Espagne et l’Irlande testent la semaine de quatre jours. Comment rééquilibrer nos vies ? En travaillant moins ? Les décryptages de la presse étrangère.", + "content": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous nous interrogeons sur notre rapport au travail. Aux États-Unis, le rapport de force s’inverse dans les entreprises. Après l’Islande, l’Espagne et l’Irlande testent la semaine de quatre jours. Comment rééquilibrer nos vies ? En travaillant moins ? Les décryptages de la presse étrangère.", + "category": "", + "link": "https://www.courrierinternational.com/article/la-une-de-lhebdo-remettre-le-travail-sa-place", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 09:19:17 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le plan stratégique de Google à 650 millions d’euros pour l’Australie", + "description": "Changement de ton entre le géant américain et le pouvoir australien. Alors qu’en janvier Google menaçait de couper l’accès à son moteur de recherche, ce mardi, son PDG a lancé le projet Digital Future, qui prévoit 6 000 emplois directs d’ici cinq ans, en présence du Premier ministre.", + "content": "Changement de ton entre le géant américain et le pouvoir australien. Alors qu’en janvier Google menaçait de couper l’accès à son moteur de recherche, ce mardi, son PDG a lancé le projet Digital Future, qui prévoit 6 000 emplois directs d’ici cinq ans, en présence du Premier ministre.", + "category": "", + "link": "https://www.courrierinternational.com/article/big-tech-le-plan-strategique-de-google-650-millions-deuros-pour-laustralie", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 17:51:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La tour de Babel du streaming, les chauffards d’Amazon et le malheur des hackeurs", + "description": "Grâce à Netflix, Hulu et aux autres géants du streaming, nos écrans sont devenus des kaléidoscopes bigarrés, pleins de petites merveilles danoises, coréennes, indiennes ou brésiliennes. Après le succès planétaire de la série coréenne Squid Game, une enquête du magazine Rest of World révèle une conséquence méconnue de cette nouvelle tour de Babel culturelle : la pénurie de traducteurs...", + "content": "Grâce à Netflix, Hulu et aux autres géants du streaming, nos écrans sont devenus des kaléidoscopes bigarrés, pleins de petites merveilles danoises, coréennes, indiennes ou brésiliennes. Après le succès planétaire de la série coréenne Squid Game, une enquête du magazine Rest of World révèle une conséquence méconnue de cette nouvelle tour de Babel culturelle : la pénurie de traducteurs...", + "category": "", + "link": "https://www.courrierinternational.com/article/la-lettre-tech-la-tour-de-babel-du-streaming-les-chauffards-damazon-et-le-malheur-des", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 10:49:01 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "De Barcelone à Paris, l’offensive anti-Airbnb", + "description": "La pandémie a permis de le mesurer : Airbnb participe à l’inflation des loyers et des prix à la vente dans les grandes métropoles. Beaucoup d’entre elles déploient désormais un arsenal contre la plateforme de location.", + "content": "La pandémie a permis de le mesurer : Airbnb participe à l’inflation des loyers et des prix à la vente dans les grandes métropoles. Beaucoup d’entre elles déploient désormais un arsenal contre la plateforme de location.", + "category": "", + "link": "https://www.courrierinternational.com/article/immobilier-de-barcelone-paris-loffensive-anti-airbnb", + "creator": "", + "pubDate": "Tue, 16 Nov 2021 06:37:50 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Airbus décroche un mégacontrat de 255 avions", + "description": "Au salon aéronautique de Dubaï, l’avionneur européen a annoncé un contrat estimé à 30 milliards de dollars avec le fonds d’investissement Indigo Partners, représentant des compagnies aériennes low cost. Et veut y voir le signe du retour à la normale post-pandémie.", + "content": "Au salon aéronautique de Dubaï, l’avionneur européen a annoncé un contrat estimé à 30 milliards de dollars avec le fonds d’investissement Indigo Partners, représentant des compagnies aériennes low cost. Et veut y voir le signe du retour à la normale post-pandémie.", + "category": "", + "link": "https://www.courrierinternational.com/article/aviation-airbus-decroche-un-megacontrat-de-255-avions", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 18:16:17 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les semaines de 75 heures des sous-traitants du géant de la mode Shein", + "description": "Une enquête de l’ONG Public Eye dénonce les conditions de travail de certains fournisseurs de la marque d’ultrafast fashion chinoise. Pour tenir le rythme, certains multiplient les heures supplémentaires en violation du droit du travail.", + "content": "Une enquête de l’ONG Public Eye dénonce les conditions de travail de certains fournisseurs de la marque d’ultrafast fashion chinoise. Pour tenir le rythme, certains multiplient les heures supplémentaires en violation du droit du travail.", + "category": "", + "link": "https://www.courrierinternational.com/article/social-les-semaines-de-75-heures-des-sous-traitants-du-geant-de-la-mode-shein", + "creator": "", + "pubDate": "Mon, 15 Nov 2021 17:43:11 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La gomme arabique, moisson dorée du Soudan", + "description": "La récolte ancestrale de la sève d’acacia fait du Soudan le premier producteur mondial de cet ingrédient essentiel à l’industrie mondiale, depuis le chewing-gum jusqu’aux médicaments. Mais les paysans ne perçoivent qu’une petite fraction des profits engendrés par cette ressource. \n \n ", + "content": "La récolte ancestrale de la sève d’acacia fait du Soudan le premier producteur mondial de cet ingrédient essentiel à l’industrie mondiale, depuis le chewing-gum jusqu’aux médicaments. Mais les paysans ne perçoivent qu’une petite fraction des profits engendrés par cette ressource. \n \n ", + "category": "", + "link": "https://www.courrierinternational.com/long-format/reportage-la-gomme-arabique-moisson-doree-du-soudan", + "creator": "", + "pubDate": "Sun, 14 Nov 2021 06:52:54 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "AstraZeneca veut tirer des bénéfices de son vaccin contre le Covid-19", + "description": "Le géant pharmaceutique s’était engagé à ne pas gagner d’argent avant la fin de la pandémie, en vendant à prix coûtant ses doses contre le Covid-19. Mais l’entreprise suédo-britannique estime que la maladie est devenue endémique. Et signe des contrats aux marges bénéficiaires “modestes” pour 2022.", + "content": "Le géant pharmaceutique s’était engagé à ne pas gagner d’argent avant la fin de la pandémie, en vendant à prix coûtant ses doses contre le Covid-19. Mais l’entreprise suédo-britannique estime que la maladie est devenue endémique. Et signe des contrats aux marges bénéficiaires “modestes” pour 2022.", + "category": "", + "link": "https://www.courrierinternational.com/article/industrie-astrazeneca-veut-tirer-des-benefices-de-son-vaccin-contre-le-covid-19", + "creator": "", + "pubDate": "Fri, 12 Nov 2021 19:48:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Quand Adele, Ed Sheeran et Abba embouteillent l’industrie du vinyle", + "description": "Le retour en force du vinyle atteint de tels sommets que le secteur est en forte tension, peu aidé par des sorties pop attendues et des problèmes de chaîne d’approvisionnement.", + "content": "Le retour en force du vinyle atteint de tels sommets que le secteur est en forte tension, peu aidé par des sorties pop attendues et des problèmes de chaîne d’approvisionnement.", + "category": "", + "link": "https://www.courrierinternational.com/article/musique-quand-adele-ed-sheeran-et-abba-embouteillent-lindustrie-du-vinyle", + "creator": "", + "pubDate": "Fri, 12 Nov 2021 06:02:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tremblez, chers Français, le vin anglais sort de sa cave", + "description": "À la faveur du réchauffement climatique et d’investissements importants, y compris de la part de maisons françaises, la production et la qualité du pétillant britannique explosent, s’enthousiasme ce journal londonien. Les vins tranquilles, quant à eux, signent une percée remarquée.", + "content": "À la faveur du réchauffement climatique et d’investissements importants, y compris de la part de maisons françaises, la production et la qualité du pétillant britannique explosent, s’enthousiasme ce journal londonien. Les vins tranquilles, quant à eux, signent une percée remarquée.", + "category": "", + "link": "https://www.courrierinternational.com/article/boom-tremblez-chers-francais-le-vin-anglais-sort-de-sa-cave", + "creator": "", + "pubDate": "Fri, 12 Nov 2021 06:02:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aux quatre coins du globe, le marché du logement est devenu fou", + "description": "Prix galopants, loyers exorbitants pour des surfaces sans cesse réduites, jeunes professionnels contraints de retourner vivre chez leurs parents… De Buenos Aires à Melbourne, en passant par Berlin ou Dublin, le marché de l’immobilier s’emballe et rien ne semble pouvoir le freiner.", + "content": "Prix galopants, loyers exorbitants pour des surfaces sans cesse réduites, jeunes professionnels contraints de retourner vivre chez leurs parents… De Buenos Aires à Melbourne, en passant par Berlin ou Dublin, le marché de l’immobilier s’emballe et rien ne semble pouvoir le freiner.", + "category": "", + "link": "https://www.courrierinternational.com/article/immobilier-aux-quatre-coins-du-globe-le-marche-du-logement-est-devenu-fou", + "creator": "", + "pubDate": "Thu, 11 Nov 2021 06:19:27 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les États-Unis enregistrent la plus forte hausse des prix depuis trente ans", + "description": "Outre-Atlantique, en octobre, une augmentation de 6,2 % des prix a été enregistrée par rapport au même mois en 2020. Un record qui inquiète les ménages américains et leur président.\n ", + "content": "Outre-Atlantique, en octobre, une augmentation de 6,2 % des prix a été enregistrée par rapport au même mois en 2020. Un record qui inquiète les ménages américains et leur président.\n ", + "category": "", + "link": "https://www.courrierinternational.com/article/inflation-les-etats-unis-enregistrent-la-plus-forte-hausse-des-prix-depuis-trente-ans", + "creator": "", + "pubDate": "Wed, 10 Nov 2021 19:44:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le “South China Morning Post” bientôt absorbé par Pékin ?", + "description": "Le grand quotidien anglophone de Hong Kong semble être sur le point de changer de propriétaire. Alors que son rapprochement avec Pékin était de plus en plus visible, le journal pourrait cette fois passer directement sous le contrôle de l’État chinois.", + "content": "Le grand quotidien anglophone de Hong Kong semble être sur le point de changer de propriétaire. Alors que son rapprochement avec Pékin était de plus en plus visible, le journal pourrait cette fois passer directement sous le contrôle de l’État chinois.", + "category": "", + "link": "https://www.courrierinternational.com/revue-de-presse/hong-kong-le-south-china-morning-post-bientot-absorbe-par-pekin", + "creator": "", + "pubDate": "Wed, 10 Nov 2021 17:27:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Logement : la loi du plus riche", + "description": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous décryptons la surchauffe de l’immobilier, de Buenos Aires à Singapour en passant par Dublin et Melbourne. Une bombe à retardement pour l’économie mondiale, qui risque d’alimenter la colère des classes moyennes.", + "content": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous décryptons la surchauffe de l’immobilier, de Buenos Aires à Singapour en passant par Dublin et Melbourne. Une bombe à retardement pour l’économie mondiale, qui risque d’alimenter la colère des classes moyennes.", + "category": "", + "link": "https://www.courrierinternational.com/article/la-une-de-lhebdo-logement-la-loi-du-plus-riche", + "creator": "", + "pubDate": "Wed, 10 Nov 2021 10:07:40 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Alibaba installe sa plateforme logistique européenne à Liège sans tambour ni trompette", + "description": "Depuis cet été, trois avions par jour transportent des tonnes de marchandises du géant du e-commerce chinois à destination de l’Europe. Annoncée depuis 2018, l’arrivée du groupe chinois suscite toujours l’inquiétude des riverains.", + "content": "Depuis cet été, trois avions par jour transportent des tonnes de marchandises du géant du e-commerce chinois à destination de l’Europe. Annoncée depuis 2018, l’arrivée du groupe chinois suscite toujours l’inquiétude des riverains.", + "category": "", + "link": "https://www.courrierinternational.com/article/belgique-alibaba-installe-sa-plateforme-logistique-europeenne-liege-sans-tambour-ni", + "creator": "", + "pubDate": "Tue, 09 Nov 2021 17:28:37 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le retour de Greg LeMond, le nouvel empire d’Amazon et le métavers au boulot", + "description": "Qui pourrait oublier Greg LeMond, trois fois vainqueur du Tour de France ? Wired est allé le traquer au fond du Tennessee, à Knoxville, où l’ancien champion et légendaire grande gueule du sport international, aujourd’hui âgé de 60 ans et un peu grassouillet, s’acharne à révolutionner le vélo. Le vélo électrique. Lemond n’en est pas à sa première entreprise de ce genre, et ses premiers essais de reconversion dans la tech sportive avaient failli être compromis par l’opprobre des annonceurs...", + "content": "Qui pourrait oublier Greg LeMond, trois fois vainqueur du Tour de France ? Wired est allé le traquer au fond du Tennessee, à Knoxville, où l’ancien champion et légendaire grande gueule du sport international, aujourd’hui âgé de 60 ans et un peu grassouillet, s’acharne à révolutionner le vélo. Le vélo électrique. Lemond n’en est pas à sa première entreprise de ce genre, et ses premiers essais de reconversion dans la tech sportive avaient failli être compromis par l’opprobre des annonceurs...", + "category": "", + "link": "https://www.courrierinternational.com/article/la-lettre-tech-le-retour-de-greg-lemond-le-nouvel-empire-damazon-et-le-metavers-au-boulot", + "creator": "", + "pubDate": "Tue, 09 Nov 2021 09:25:52 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Paytm vise le record d’introduction en Bourse en Inde", + "description": "Le pionnier du paiement en ligne espère lever 2,46 milliards de dollars à partir de ce lundi 8 novembre sur la place boursière de Bombay. Le grand quotidien de la capitale économique du pays met en garde contre les mirages de la fintech.", + "content": "Le pionnier du paiement en ligne espère lever 2,46 milliards de dollars à partir de ce lundi 8 novembre sur la place boursière de Bombay. Le grand quotidien de la capitale économique du pays met en garde contre les mirages de la fintech.", + "category": "", + "link": "https://www.courrierinternational.com/article/le-chiffre-du-jour-paytm-vise-le-record-dintroduction-en-bourse-en-inde", + "creator": "", + "pubDate": "Mon, 08 Nov 2021 17:55:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Face à la pénurie de routiers, le Royaume-Uni s’en remet aux trains", + "description": "Pour éviter les rayons vides à Noël, le gestionnaire du réseau ferré britannique consacre un nombre croissant de sillons aux trains de marchandise, constate la presse. Certains espèrent un virage durable en direction du rail, sur fond de transition écologique.", + "content": "Pour éviter les rayons vides à Noël, le gestionnaire du réseau ferré britannique consacre un nombre croissant de sillons aux trains de marchandise, constate la presse. Certains espèrent un virage durable en direction du rail, sur fond de transition écologique.", + "category": "", + "link": "https://www.courrierinternational.com/article/logistique-face-la-penurie-de-routiers-le-royaume-uni-sen-remet-aux-trains", + "creator": "", + "pubDate": "Mon, 08 Nov 2021 16:42:13 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Elon Musk a-t-il gagné son coup de poker contre la taxe des milliardaires ?", + "description": "En lançant sur Twitter samedi un sondage pour décider s’il devait vendre 10 % des actions de Tesla, l’entrepreneur américain s’opposait au projet démocrate de taxation des plus-values. Ce lundi, l’action du constructeur automobile dégringole.", + "content": "En lançant sur Twitter samedi un sondage pour décider s’il devait vendre 10 % des actions de Tesla, l’entrepreneur américain s’opposait au projet démocrate de taxation des plus-values. Ce lundi, l’action du constructeur automobile dégringole.", + "category": "", + "link": "https://www.courrierinternational.com/article/bourse-elon-musk-t-il-gagne-son-coup-de-poker-contre-la-taxe-des-milliardaires", + "creator": "", + "pubDate": "Mon, 08 Nov 2021 16:31:17 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les petits boulots les plus bizarres d’Allemagne", + "description": "Le travail à temps partiel concerne 3,4 millions de personnes, principalement des étudiants et des retraités. Des journalistes de Die Zeit ont raconté leurs expériences les plus étranges.", + "content": "Le travail à temps partiel concerne 3,4 millions de personnes, principalement des étudiants et des retraités. Des journalistes de Die Zeit ont raconté leurs expériences les plus étranges.", + "category": "", + "link": "https://www.courrierinternational.com/article/travail-les-petits-boulots-les-plus-bizarres-dallemagne", + "creator": "", + "pubDate": "Mon, 08 Nov 2021 09:20:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ces abattoirs européens qui exploitent les ouvriers étrangers", + "description": "S’il y a de la viande bon marché en Europe, c’est aussi parce que les industriels du secteur ont externalisé une partie de la main-d’œuvre. Des milliers d’étrangers, employés par des intermédiaires, sont sous-payés et travaillent dans des conditions déplorables, explique cette enquête du Guardian.", + "content": "S’il y a de la viande bon marché en Europe, c’est aussi parce que les industriels du secteur ont externalisé une partie de la main-d’œuvre. Des milliers d’étrangers, employés par des intermédiaires, sont sous-payés et travaillent dans des conditions déplorables, explique cette enquête du Guardian.", + "category": "", + "link": "https://www.courrierinternational.com/article/agroalimentaire-ces-abattoirs-europeens-qui-exploitent-les-ouvriers-etrangers", + "creator": "", + "pubDate": "Mon, 08 Nov 2021 05:57:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La cocotte-minute de la livraison express", + "description": "À Londres comme à Paris, une nouvelle génération de start-up tente de mettre la main sur le marché déjà concurrentiel du quick commerce, les livraisons de courses ultrarapides, en moins de dix minutes. Le Wall Street Journal décrypte ce phénomène en plein essor.", + "content": "À Londres comme à Paris, une nouvelle génération de start-up tente de mettre la main sur le marché déjà concurrentiel du quick commerce, les livraisons de courses ultrarapides, en moins de dix minutes. Le Wall Street Journal décrypte ce phénomène en plein essor.", + "category": "", + "link": "https://www.courrierinternational.com/article/concurrence-la-cocotte-minute-de-la-livraison-express", + "creator": "", + "pubDate": "Sat, 06 Nov 2021 14:35:11 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La France, détrônée par l’Espagne, n’est plus le deuxième plus gros producteur de vin", + "description": "Même si elle n’a pas été épargnée par les intempéries cette année, l’Espagne a ravi sa deuxième place à la France dans le classement des plus gros producteurs de vin, constate le quotidien barcelonais La Vanguardia.", + "content": "Même si elle n’a pas été épargnée par les intempéries cette année, l’Espagne a ravi sa deuxième place à la France dans le classement des plus gros producteurs de vin, constate le quotidien barcelonais La Vanguardia.", + "category": "", + "link": "https://www.courrierinternational.com/article/classement-la-france-detronee-par-lespagne-nest-plus-le-deuxieme-plus-gros-producteur-de-vin", + "creator": "", + "pubDate": "Fri, 05 Nov 2021 16:59:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Des engagements encourageants pour délaisser les énergies fossiles", + "description": "Plusieurs pays promettent de ne plus financer les énergies fossiles ou de mettre fin aux projets de centrale à charbon, explique le New Scientist.", + "content": "Plusieurs pays promettent de ne plus financer les énergies fossiles ou de mettre fin aux projets de centrale à charbon, explique le New Scientist.", + "category": "", + "link": "https://www.courrierinternational.com/article/cop26-des-engagements-encourageants-pour-delaisser-les-energies-fossiles", + "creator": "", + "pubDate": "Fri, 05 Nov 2021 15:44:45 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vaccination quasi obligatoire pour plus de 100 millions de salariés américains", + "description": "À compter du 4 janvier prochain, les employés non vaccinés des entreprises de plus de 100 salariés devront se soumettre à un test de dépistage Covid hebdomadaire, à leurs frais. La décision, qui vise à faire “sortir définitivement” les États-Unis de la pandémie, se heurte à l’opposition des républicains.", + "content": "À compter du 4 janvier prochain, les employés non vaccinés des entreprises de plus de 100 salariés devront se soumettre à un test de dépistage Covid hebdomadaire, à leurs frais. La décision, qui vise à faire “sortir définitivement” les États-Unis de la pandémie, se heurte à l’opposition des républicains.", + "category": "", + "link": "https://www.courrierinternational.com/article/pandemie-vaccination-quasi-obligatoire-pour-plus-de-100-millions-de-salaries-americains", + "creator": "", + "pubDate": "Fri, 05 Nov 2021 05:55:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Banque centrale américaine ralentit son soutien à l’économie", + "description": "La Fed a annoncé mercredi 3 novembre qu’elle allait progressivement cesser d’injecter des liquidités sur les marchés aux États-Unis, repoussant l’éventualité d’une hausse des taux d’intérêt.", + "content": "La Fed a annoncé mercredi 3 novembre qu’elle allait progressivement cesser d’injecter des liquidités sur les marchés aux États-Unis, repoussant l’éventualité d’une hausse des taux d’intérêt.", + "category": "", + "link": "https://www.courrierinternational.com/article/monnaie-la-banque-centrale-americaine-ralentit-son-soutien-leconomie", + "creator": "", + "pubDate": "Thu, 04 Nov 2021 16:31:25 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’économie argentine vire au cauchemar avec ses multiples taux de change en dollars", + "description": "Il existe au moins sept taux de change en devises différents en Argentine. Un symptôme d’une économie qui se noie depuis longtemps entre dette, inflation et dévaluation, comme une véritable malédiction.", + "content": "Il existe au moins sept taux de change en devises différents en Argentine. Un symptôme d’une économie qui se noie depuis longtemps entre dette, inflation et dévaluation, comme une véritable malédiction.", + "category": "", + "link": "https://www.courrierinternational.com/article/monnaie-leconomie-argentine-vire-au-cauchemar-avec-ses-multiples-taux-de-change-en-dollars", + "creator": "", + "pubDate": "Thu, 04 Nov 2021 11:58:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les pays du Nord engagent 8,5 milliards de dollars pour décarboner l’Afrique du Sud", + "description": "Réunis à Glasgow pour la 26e Conférence des Nations unies pour le climat, les États-Unis, le Royaume-Uni, l’Union européenne, mais aussi la France et l’Allemagne, ont annoncé, le mardi 2 novembre, avoir conclu un accord avec Johannesburg pour soutenir la “transition énergétique juste” de l’Afrique du Sud, très dépendante du charbon.", + "content": "Réunis à Glasgow pour la 26e Conférence des Nations unies pour le climat, les États-Unis, le Royaume-Uni, l’Union européenne, mais aussi la France et l’Allemagne, ont annoncé, le mardi 2 novembre, avoir conclu un accord avec Johannesburg pour soutenir la “transition énergétique juste” de l’Afrique du Sud, très dépendante du charbon.", + "category": "", + "link": "https://www.courrierinternational.com/article/cop26-les-pays-du-nord-engagent-85-milliards-de-dollars-pour-decarboner-lafrique-du-sud", + "creator": "", + "pubDate": "Wed, 03 Nov 2021 17:48:37 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Des salaires en hausse de 10 % ? Pas assez, selon les grévistes de John Deere aux États-Unis", + "description": "La direction avait doublé la mise, mais les 10 000 salariés du fabricant de matériel agricole Deere & Company ont rejeté mardi l’accord et poursuivent leur grève. Alimentant le mouvement social qui enfle face à la pénurie de main-d’œuvre.", + "content": "La direction avait doublé la mise, mais les 10 000 salariés du fabricant de matériel agricole Deere & Company ont rejeté mardi l’accord et poursuivent leur grève. Alimentant le mouvement social qui enfle face à la pénurie de main-d’œuvre.", + "category": "", + "link": "https://www.courrierinternational.com/article/social-des-salaires-en-hausse-de-10-pas-assez-selon-les-grevistes-de-john-deere-aux-etats", + "creator": "", + "pubDate": "Wed, 03 Nov 2021 12:34:19 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Facebook cesse d’utiliser son système de reconnaissance faciale", + "description": "Invoquant des “inquiétudes sociétales”, la maison-mère de Facebook, Meta, a annoncé qu’elle n’utiliserait plus la reconnaissance faciale pour proposer un “tag” automatiquement sur les photos. Les données sur plus d’un milliard d’utilisateurs devraient être effacées.", + "content": "Invoquant des “inquiétudes sociétales”, la maison-mère de Facebook, Meta, a annoncé qu’elle n’utiliserait plus la reconnaissance faciale pour proposer un “tag” automatiquement sur les photos. Les données sur plus d’un milliard d’utilisateurs devraient être effacées.", + "category": "", + "link": "https://www.courrierinternational.com/article/technologie-facebook-cesse-dutiliser-son-systeme-de-reconnaissance-faciale", + "creator": "", + "pubDate": "Tue, 02 Nov 2021 21:24:54 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Chine suscite des peurs en demandant à ses habitants de stocker des provisions", + "description": "Le gouvernement de Pékin a appelé les foyers à faire des réserves de produits de base, en prévision, d’après les autorités, de nouveaux confinements locaux.", + "content": "Le gouvernement de Pékin a appelé les foyers à faire des réserves de produits de base, en prévision, d’après les autorités, de nouveaux confinements locaux.", + "category": "", + "link": "https://www.courrierinternational.com/article/asie-la-chine-suscite-des-peurs-en-demandant-ses-habitants-de-stocker-des-provisions", + "creator": "", + "pubDate": "Tue, 02 Nov 2021 19:42:26 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Epic Games met fin à la version chinoise du jeu Fortnite", + "description": "L’éditeur américain du très populaire jeu en ligne, qui avait fait alliance avec le géant numérique local Tencent pour pénétrer le marché chinois, a annoncé la fermeture définitive de Fortress Night.", + "content": "L’éditeur américain du très populaire jeu en ligne, qui avait fait alliance avec le géant numérique local Tencent pour pénétrer le marché chinois, a annoncé la fermeture définitive de Fortress Night.", + "category": "", + "link": "https://www.courrierinternational.com/article/game-over-epic-games-met-fin-la-version-chinoise-du-jeu-fortnite", + "creator": "", + "pubDate": "Tue, 02 Nov 2021 17:09:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’Espagne, victime collatérale de l’arrêt de l’activité du gazoduc Maghreb-Europe", + "description": "Madrid est pris au piège par les tensions entre l’Algérie et le Maroc, qui ont conduit à la suspension de l’activité du gazoduc Maghreb-Europe. La pénurie de gaz devrait être évitée, rassure la presse espagnole, mais les coûts d’approvisionnement vont augmenter.", + "content": "Madrid est pris au piège par les tensions entre l’Algérie et le Maroc, qui ont conduit à la suspension de l’activité du gazoduc Maghreb-Europe. La pénurie de gaz devrait être évitée, rassure la presse espagnole, mais les coûts d’approvisionnement vont augmenter.", + "category": "", + "link": "https://www.courrierinternational.com/revue-de-presse/energie-lespagne-victime-collaterale-de-larret-de-lactivite-du-gazoduc-maghreb", + "creator": "", + "pubDate": "Tue, 02 Nov 2021 17:06:45 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le premier accord de la COP26 engage plus de cent pays à inverser la déforestation", + "description": "Au deuxième jour du sommet sur le climat à Glasgow, les chefs d’États qui abritent plus de 85 % des forêts mondiales s’accordent à mettre fin à la déforestation d’ici 2030 et promettent d’allouer à cet effet 16,5 milliards d’euros de fonds publics et privés.", + "content": "Au deuxième jour du sommet sur le climat à Glasgow, les chefs d’États qui abritent plus de 85 % des forêts mondiales s’accordent à mettre fin à la déforestation d’ici 2030 et promettent d’allouer à cet effet 16,5 milliards d’euros de fonds publics et privés.", + "category": "", + "link": "https://www.courrierinternational.com/article/le-chiffre-du-jour-le-premier-accord-de-la-cop26-engage-plus-de-cent-pays-inverser-la", + "creator": "", + "pubDate": "Tue, 02 Nov 2021 14:26:32 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Parole de baleine, le dernier des poumons d’acier, le secret des pénuries et les fous du tungstène", + "description": "On devrait lire plus souvent Hakai Magazine, une publication canadienne de Victoria, en Colombie-Britannique, consacrée à la vie scientifique et culturelle des régions côtières. L’un des articles décrit magistralement le nouveau projet d’un groupe international de biologistes et de spécialistes de l’intelligence artificielle, formé en 2017 au hasard d’un séminaire à l’université Harvard, qui tente de décrypter le langage des baleines dans l’espoir d’engager un jour la...", + "content": "On devrait lire plus souvent Hakai Magazine, une publication canadienne de Victoria, en Colombie-Britannique, consacrée à la vie scientifique et culturelle des régions côtières. L’un des articles décrit magistralement le nouveau projet d’un groupe international de biologistes et de spécialistes de l’intelligence artificielle, formé en 2017 au hasard d’un séminaire à l’université Harvard, qui tente de décrypter le langage des baleines dans l’espoir d’engager un jour la...", + "category": "", + "link": "https://www.courrierinternational.com/article/la-lettre-tech-parole-de-baleine-le-dernier-des-poumons-dacier-le-secret-des-penuries-et-les", + "creator": "", + "pubDate": "Tue, 02 Nov 2021 12:19:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dans la plus grande usine du monde de séquestration du CO2", + "description": "Retirer le dioxyde de carbone de l’air. Le pétrifier sous terre pour accélérer la décarbonation. Cette méthode, utilisée par un nouveau site pilote en Islande, est-elle vraiment la solution à l’urgence climatique ?", + "content": "Retirer le dioxyde de carbone de l’air. Le pétrifier sous terre pour accélérer la décarbonation. Cette méthode, utilisée par un nouveau site pilote en Islande, est-elle vraiment la solution à l’urgence climatique ?", + "category": "", + "link": "https://www.courrierinternational.com/article/technologie-dans-la-plus-grande-usine-du-monde-de-sequestration-du-co2", + "creator": "", + "pubDate": "Tue, 02 Nov 2021 06:03:30 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Japon dit enfin adieu à la disquette", + "description": "Sony n’en produit plus, elles sont difficiles à trouver en magasin. Et pourtant, les bonnes vieilles disquettes sont toujours utilisées par certaines entreprises et collectivités territoriales du Japon. Qui, en 2021, lancent enfin leur modernisation numérique. Les explications de la presse japonaise.", + "content": "Sony n’en produit plus, elles sont difficiles à trouver en magasin. Et pourtant, les bonnes vieilles disquettes sont toujours utilisées par certaines entreprises et collectivités territoriales du Japon. Qui, en 2021, lancent enfin leur modernisation numérique. Les explications de la presse japonaise.", + "category": "", + "link": "https://www.courrierinternational.com/article/anachronisme-le-japon-dit-enfin-adieu-la-disquette", + "creator": "", + "pubDate": "Mon, 01 Nov 2021 17:26:58 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après le burger sans viande, les œufs végétaux", + "description": "Vendredi 29 octobre, une entreprise suisse a dit avoir conçu le premier œuf dur végétal au monde. Le journal Le Temps raconte comment ce marché représente le nouveau terrain de chasse des géants de l’agroalimentaire.", + "content": "Vendredi 29 octobre, une entreprise suisse a dit avoir conçu le premier œuf dur végétal au monde. Le journal Le Temps raconte comment ce marché représente le nouveau terrain de chasse des géants de l’agroalimentaire.", + "category": "", + "link": "https://www.courrierinternational.com/article/veganisme-apres-le-burger-sans-viande-les-oeufs-vegetaux", + "creator": "", + "pubDate": "Mon, 01 Nov 2021 17:21:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "On taxe bien l’alcool, pourquoi pas le carbone ?", + "description": "Et si la meilleure politique pour le climat consistait à prélever un impôt sur la pollution ? L’histoire de la taxe sur l’alcool aux États-Unis est à cet égard édifiante.", + "content": "Et si la meilleure politique pour le climat consistait à prélever un impôt sur la pollution ? L’histoire de la taxe sur l’alcool aux États-Unis est à cet égard édifiante.", + "category": "", + "link": "https://www.courrierinternational.com/article/crise-climatique-taxe-bien-lalcool-pourquoi-pas-le-carbone", + "creator": "", + "pubDate": "Mon, 01 Nov 2021 05:44:48 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "À Miami, les riches Latino-Américains se ruent sur l’immobilier", + "description": "Les crises sociales, les bouleversements politiques, la pandémie de Covid-19 ont provoqué un important afflux d’investisseurs des pays d’Amérique latine dans des biens immobiliers de la capitale de la Floride. Nouveauté : ils achètent souvent pour en faire leur résidence principale et télétravailler.", + "content": "Les crises sociales, les bouleversements politiques, la pandémie de Covid-19 ont provoqué un important afflux d’investisseurs des pays d’Amérique latine dans des biens immobiliers de la capitale de la Floride. Nouveauté : ils achètent souvent pour en faire leur résidence principale et télétravailler.", + "category": "", + "link": "https://www.courrierinternational.com/article/tendance-miami-les-riches-latino-americains-se-ruent-sur-limmobilier", + "creator": "", + "pubDate": "Sun, 31 Oct 2021 13:49:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "À Rome, le G20 approuve une taxation des multinationales “qui bénéficiera aux pays riches”", + "description": "En ouvrant le sommet du G20 ce 30 octobre, le chef du gouvernement italien Mario Draghi a invité à relancer le multilatéralisme pour répondre aux défis mondiaux. Dans la foulée, les dirigeants ont donné leur “bénédiction” à un taux d’imposition minimal des grandes entreprises. Ce dernier représente une victoire pour Joe Biden et pour les pays riches, observe la presse étrangère.\n\n\n ", + "content": "En ouvrant le sommet du G20 ce 30 octobre, le chef du gouvernement italien Mario Draghi a invité à relancer le multilatéralisme pour répondre aux défis mondiaux. Dans la foulée, les dirigeants ont donné leur “bénédiction” à un taux d’imposition minimal des grandes entreprises. Ce dernier représente une victoire pour Joe Biden et pour les pays riches, observe la presse étrangère.\n\n\n ", + "category": "", + "link": "https://www.courrierinternational.com/article/fiscalite-rome-le-g20-approuve-une-taxation-des-multinationales-qui-beneficiera-aux-pays", + "creator": "", + "pubDate": "Sat, 30 Oct 2021 16:19:38 +0200", + "folder": "00.03 News/News - FR", + "feed": "Courier International - Eco", + "read": true, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - FR", + "name": "Courier International - Eco" + }, + { + "title": "Le Monde.fr - Actualités et Infos en France et dans le monde", + "subtitle": "", + "link": "https://www.lemonde.fr/rss/en_continu.xml", + "image": null, + "description": "Le Monde.fr - 1er site d’information. Les articles du journal et toute l’actualité en continu : International, France, Société, Economie, Culture, Environnement, Blogs ...", + "items": [ + { + "title": "Covid-19 : le Royaume-Uni va interdire son territoire aux voyageurs en provenance de six pays d’Afrique en raison d’un nouveau variant", + "description": "Les vols en provenance d’Afrique du Sud, de Namibie, du Lesotho, d’Eswatini, du Zimbabwe et du Botswana seront suspendus à compter de vendredi midi. Ce variant détecté en Afrique du Sud présente un « potentiel de propagation très rapide ».", + "content": "Les vols en provenance d’Afrique du Sud, de Namibie, du Lesotho, d’Eswatini, du Zimbabwe et du Botswana seront suspendus à compter de vendredi midi. Ce variant détecté en Afrique du Sud présente un « potentiel de propagation très rapide ».", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/covid-19-le-royaume-uni-va-interdire-son-territoire-aux-voyageurs-en-provenance-de-six-pays-d-afrique-en-raison-du-nouveau-variant_6103630_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 23:00:45 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Naufrage de migrants : à Calais et à Dunkerque, des rassemblements en hommage aux victimes", + "description": "Les soutiens des migrants ont observé une minute de silence et déployé une banderole portant les noms de la plupart des 309 personnes ayant trouvé la mort à cette frontière entre la France et la Grande-Bretagne depuis 1999, selon un décompte associatif.", + "content": "Les soutiens des migrants ont observé une minute de silence et déployé une banderole portant les noms de la plupart des 309 personnes ayant trouvé la mort à cette frontière entre la France et la Grande-Bretagne depuis 1999, selon un décompte associatif.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/naufrage-de-migrants-a-calais-et-a-dunkerque-des-rassemblements-en-hommage-aux-victimes_6103629_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 22:10:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les trottinettes électriques vont être bridées à 10 km/h dans Paris", + "description": "La Mairie a décidé de durcir sa politique dès le mois de décembre pour faire face aux accidents qui tendent à se multiplier. Par ailleurs, le nombre de sociétés proposant des scooters et motos en libre-service va être limité à deux ou trois.", + "content": "La Mairie a décidé de durcir sa politique dès le mois de décembre pour faire face aux accidents qui tendent à se multiplier. Par ailleurs, le nombre de sociétés proposant des scooters et motos en libre-service va être limité à deux ou trois.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/25/les-trottinettes-electriques-vont-etre-bridees-a-10-km-h-dans-paris_6103627_823448.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 21:07:33 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Milos Zeman, le président tchèque, de nouveau hospitalisé après un test positif au Covid-19", + "description": "Il avait été hospitalisé le 10 octobre en soins intensifs, où il était resté plus de trois semaines avant d’être transféré dans une unité de convalescence.", + "content": "Il avait été hospitalisé le 10 octobre en soins intensifs, où il était resté plus de trois semaines avant d’être transféré dans une unité de convalescence.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/milos-zeman-le-president-tcheque-de-nouveau-hospitalise-apres-un-test-positif-au-covid-19_6103625_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 20:43:00 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A la Guadeloupe, la « grève générale » peine à mobiliser une grande partie de la population", + "description": "Les blocages des routes à l’aide de barrages par les manifestants ont donné une forte visibilité au mouvement, mais empêchent la tenue de grands rassemblements.", + "content": "Les blocages des routes à l’aide de barrages par les manifestants ont donné une forte visibilité au mouvement, mais empêchent la tenue de grands rassemblements.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/25/a-la-guadeloupe-la-greve-generale-peine-a-mobiliser-une-grande-partie-de-la-population_6103624_823448.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 20:08:37 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "JO 2024 : l’Agence française de lutte antidopage veut devenir « une référence internationale »", + "description": "Augmentation du nombre de tests, nouveaux pouvoirs d’enquête, missions de prévention… L’AFLD a dévoilé, jeudi, sa stratégie 2022-2024.", + "content": "Augmentation du nombre de tests, nouveaux pouvoirs d’enquête, missions de prévention… L’AFLD a dévoilé, jeudi, sa stratégie 2022-2024.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/25/jo-2024-l-afld-veut-devenir-une-reference-internationale-en-matiere-d-antidopage_6103623_3242.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 20:00:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : à l’école primaire, le protocole sanitaire va être assoupli pour limiter les fermetures de classes", + "description": "La nouvelle stratégie promue par le ministère de l’éducation nationale repose sur le test de tous les élèves d’un groupe où un cas positif a été détecté. Des expérimentations ont déjà été menées, non sans difficultés.", + "content": "La nouvelle stratégie promue par le ministère de l’éducation nationale repose sur le test de tous les élèves d’un groupe où un cas positif a été détecté. Des expérimentations ont déjà été menées, non sans difficultés.", + "category": "", + "link": "https://www.lemonde.fr/education/article/2021/11/25/covid-19-a-l-ecole-primaire-le-protocole-sanitaire-va-etre-assoupli-pour-limiter-les-fermetures-de-classes_6103621_1473685.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 19:18:33 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sharbat Gula, la célèbre « Afghane aux yeux verts » de « National Geographic » réfugiée en Italie", + "description": "Sharbat Gula est devenue célèbre après la publication d’une photo prise dans un camp de réfugiés afghans au Pakistan par le photographe Steve McCurry.", + "content": "Sharbat Gula est devenue célèbre après la publication d’une photo prise dans un camp de réfugiés afghans au Pakistan par le photographe Steve McCurry.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/sharbat-gula-la-celebre-afghane-aux-yeux-verts-de-national-geographic-refugiee-en-italie_6103618_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:58:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Paris, le stationnement payant des deux-roues motorisés repoussé à septembre 2022", + "description": "Des « contraintes techniques » empêchent de mettre en place le stationnement payant des « 2RM » à Paris dès janvier, comme cela avait été voté en juillet par le Conseil de Paris, a déclaré la Ville.", + "content": "Des « contraintes techniques » empêchent de mettre en place le stationnement payant des « 2RM » à Paris dès janvier, comme cela avait été voté en juillet par le Conseil de Paris, a déclaré la Ville.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/a-paris-le-stationnement-payant-des-deux-roues-motorises-repousse-a-septembre-2022_6103617_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:37:23 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un blogueur chinois sur les traces des camps de rééducation du Xinjiang", + "description": "Guanguan a diffusé une vidéo de vingt minutes dans laquelle il identifie plus d’une quinzaine de lieux de détention où sont internés des Ouïgours dans la région autonome du nord-ouest de la Chine.", + "content": "Guanguan a diffusé une vidéo de vingt minutes dans laquelle il identifie plus d’une quinzaine de lieux de détention où sont internés des Ouïgours dans la région autonome du nord-ouest de la Chine.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/un-blogueur-chinois-sur-les-traces-des-camps-de-reeducation-du-xinjiang_6103615_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:25:51 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un haut gradé de la sécurité publique chinoise entre à Interpol", + "description": "Hu Binchen a été élu membre du comité exécutif jeudi malgré les protestations de défenseurs des droits de l’homme.", + "content": "Hu Binchen a été élu membre du comité exécutif jeudi malgré les protestations de défenseurs des droits de l’homme.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/un-haut-grade-de-la-securite-publique-chinoise-entre-a-interpol_6103614_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:25:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Une légère taxe sur le fioul des navires ne passe pas aux Nations unies", + "description": "Défendue par de nombreux pays et des armateurs, la redevance financerait la « recherche et développement » sur les carburants verts et les nouveaux moteurs.", + "content": "Défendue par de nombreux pays et des armateurs, la redevance financerait la « recherche et développement » sur les carburants verts et les nouveaux moteurs.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/une-legere-taxe-sur-le-fioul-des-navires-bute-aux-nations-unies_6103613_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 18:19:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : le Maroc suspend les vols à destination et en provenance de la France à partir du 26 novembre", + "description": "Le Maroc a annoncé jeudi qu’il suspendait les vols réguliers à destination et en provenance de France en raison de la reprise épidémique de Covid-19. La décision entrera en vigueur à partir du 26 novembre à 23 h 59, « et ce jusqu’à nouvel ordre », selon les autorités marocaines.", + "content": "Le Maroc a annoncé jeudi qu’il suspendait les vols réguliers à destination et en provenance de France en raison de la reprise épidémique de Covid-19. La décision entrera en vigueur à partir du 26 novembre à 23 h 59, « et ce jusqu’à nouvel ordre », selon les autorités marocaines.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/covid-19-le-maroc-suspend-les-vols-a-destination-et-en-provenance-de-france_6103604_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 17:37:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’écrivain Mario Vargas Llosa rejoint l’Académie française", + "description": "Le lauréat du prix Nobel de littérature 2010 entre sous la coupole en dépit de son âge. Sa candidature avait été retenue par les Immortels alors que, depuis 2010 justement, il faut avoir moins de 75 ans pour se présenter à cette élection.", + "content": "Le lauréat du prix Nobel de littérature 2010 entre sous la coupole en dépit de son âge. Sa candidature avait été retenue par les Immortels alors que, depuis 2010 justement, il faut avoir moins de 75 ans pour se présenter à cette élection.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/25/l-ecrivain-mario-vargas-llosa-rejoint-l-academie-francaise_6103601_3246.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 17:26:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Roselyne Bachelot étend au spectacle vivant son plan #metoo", + "description": "La ministre de la culture a annoncé qu’à partir de janvier 2022 toutes les subventions versées aux structures relevant de ce secteur seront conditionnées au respect d’un certain nombre de critères de prévention et de traitement des violences sexuelles.", + "content": "La ministre de la culture a annoncé qu’à partir de janvier 2022 toutes les subventions versées aux structures relevant de ce secteur seront conditionnées au respect d’un certain nombre de critères de prévention et de traitement des violences sexuelles.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/25/roselyne-bachelot-etend-au-spectacle-vivant-son-plan-meetoo_6103599_3246.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 17:08:56 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Croatie achète douze Rafale d’occasion à la France", + "description": "Les six premiers Rafale seront livrés entre le troisième trimestre 2023 et début 2024, les six autres avant le printemps 2025.", + "content": "Les six premiers Rafale seront livrés entre le troisième trimestre 2023 et début 2024, les six autres avant le printemps 2025.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/la-croatie-achete-douze-rafale-d-occasion-a-la-france_6103598_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 17:02:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le prix Goncourt des lycéens décerné au roman « S’adapter », de Clara Dupont-Monod", + "description": "Le livre raconte l’accueil d’un enfant handicapé dans une fratrie. Il « laisse une trace lumineuse qui ouvre les portes de la tolérance », a dit la présidente du jury.", + "content": "Le livre raconte l’accueil d’un enfant handicapé dans une fratrie. Il « laisse une trace lumineuse qui ouvre les portes de la tolérance », a dit la présidente du jury.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/25/le-prix-goncourt-des-lyceens-va-au-roman-s-adapter-de-clara-dupont-monod_6103594_3246.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:52:17 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Licences de pêche : une première action nationale des pêcheurs français vendredi", + "description": "Onze mois après le Brexit, environ 150 bateaux français attendent toujours les autorisations pour poser leurs filets dans les eaux britanniques.", + "content": "Onze mois après le Brexit, environ 150 bateaux français attendent toujours les autorisations pour poser leurs filets dans les eaux britanniques.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/25/licences-de-peche-une-premiere-action-nationale-des-pecheurs-francais-vendredi_6103593_823448.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 16:32:00 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« La forêt est notre avenir » : face aux suppressions de postes, les employés de l’ONF réclament « un vrai débat à l’Assemblée »", + "description": "Des centaines d’employés de l’Office national des forêts ont manifesté jeudi pour demander la « renégociation du contrat avec l’Etat », alors que les 500 ouvriers forestiers seront remplacés par des prestataires extérieurs, moins bien formés, selon eux.", + "content": "Des centaines d’employés de l’Office national des forêts ont manifesté jeudi pour demander la « renégociation du contrat avec l’Etat », alors que les 500 ouvriers forestiers seront remplacés par des prestataires extérieurs, moins bien formés, selon eux.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/la-foret-est-notre-avenir-face-aux-suppressions-de-postes-les-employes-de-l-onf-reclament-un-vrai-debat-a-l-assemblee_6103591_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:58:32 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Mairie de Paris dévoile son plan pour limiter la vitesse des trottinettes", + "description": "Les trottinettes en libre-service seront limitées à 10 km/h à Paris « dès la première quinzaine de décembre », excepté sur certains grands axes.", + "content": "Les trottinettes en libre-service seront limitées à 10 km/h à Paris « dès la première quinzaine de décembre », excepté sur certains grands axes.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/25/la-mairie-de-paris-devoile-son-plan-pour-limiter-la-vitesse-des-trottinettes_6103590_3224.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:50:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : pourquoi l’élargissement de la dose de rappel s’est imposé au gouvernement", + "description": "Comme annoncé jeudi, tous les Français de plus de 18 ans vont avoir accès à une dose de rappel, qui sera intégrée dans le passe sanitaire. Une mesure que le gouvernement justifie par l’accélération de l’épidémie, et qui suscite des analyses divergentes parmi les experts.", + "content": "Comme annoncé jeudi, tous les Français de plus de 18 ans vont avoir accès à une dose de rappel, qui sera intégrée dans le passe sanitaire. Une mesure que le gouvernement justifie par l’accélération de l’épidémie, et qui suscite des analyses divergentes parmi les experts.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/covid-19-pourquoi-l-elargissement-de-la-dose-de-rappel-s-est-impose-au-gouvernement_6103589_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:32:36 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Paris veut agir face à l’essor du « chemsex »", + "description": "La consommation de drogues lors de rapports sexuels se diffuse hors du milieu gay. La Mairie de Paris est une des premières à préparer un plan de prévention.", + "content": "La consommation de drogues lors de rapports sexuels se diffuse hors du milieu gay. La Mairie de Paris est une des premières à préparer un plan de prévention.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/25/paris-veut-agir-face-a-l-essor-du-chemsex_6103588_3224.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:27:42 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Musique : le prochain Festival d’Aix-en-Provence fait la part belle aux jeunes artistes et aux femmes", + "description": "Avec pas moins de dix titres, dont le nouvel opéra de Pascal Dusapin, la 74e édition du festival d’art lyrique se tiendra du 4 au 23 juillet.", + "content": "Avec pas moins de dix titres, dont le nouvel opéra de Pascal Dusapin, la 74e édition du festival d’art lyrique se tiendra du 4 au 23 juillet.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/25/musique-le-prochain-festival-d-aix-en-provence-fait-la-part-belle-aux-jeunes-artistes-et-aux-femmes_6103586_3246.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 15:05:28 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Ville de Paris plus que jamais sur la sellette pour l’explosion de la rue de Trévise", + "description": "Les juges sont sur le point de boucler leur instruction. Ils ciblent la Ville de Paris et le syndic, tandis que GRDF est mis hors de cause.", + "content": "Les juges sont sur le point de boucler leur instruction. Ils ciblent la Ville de Paris et le syndic, tandis que GRDF est mis hors de cause.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/25/la-ville-de-paris-plus-que-jamais-sur-la-sellette-pour-l-explosion-de-la-rue-de-trevise_6103585_3224.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 14:56:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : Olivier Véran annonce un rappel vaccinal pour tous les adultes", + "description": "Le ministre de la santé a déclaré que le rappel vaccinal contre le Covid-19 serait « ouvert à tous les adultes dès cinq mois après leur dernière injection » à partir du 27 novembre.", + "content": "Le ministre de la santé a déclaré que le rappel vaccinal contre le Covid-19 serait « ouvert à tous les adultes dès cinq mois après leur dernière injection » à partir du 27 novembre.", + "category": "", + "link": "https://www.lemonde.fr/planete/video/2021/11/25/covid-19-olivier-veran-annonce-un-rappel-vaccinal-pour-tous-les-adultes_6103584_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 14:31:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "VTC : la cour d’appel bannit Uber de Bruxelles", + "description": "A compter du 26 novembre, l’application Uber X sera interdite dans la capitale belge après une procédure engagée par une compagnie de taxis.", + "content": "A compter du 26 novembre, l’application Uber X sera interdite dans la capitale belge après une procédure engagée par une compagnie de taxis.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/vtc-la-cour-d-appel-bannit-uber-de-bruxelles_6103583_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 14:18:18 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vaccination, passe sanitaire, masque dans les lieux fermés… Les annonces d’Olivier Véran pour faire face à la cinquième vague de Covid-19", + "description": "Olivier Véran a annoncé l’ouverture, dès samedi, à une dose de rappel « dès cinq mois après la dernière injection », qui sera nécessaire pour conserver le passe sanitaire. Les tests PCR et antigéniques ne seront valables que vingt-quatre heures pour le passe sanitaire.", + "content": "Olivier Véran a annoncé l’ouverture, dès samedi, à une dose de rappel « dès cinq mois après la dernière injection », qui sera nécessaire pour conserver le passe sanitaire. Les tests PCR et antigéniques ne seront valables que vingt-quatre heures pour le passe sanitaire.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/covid-19-rappel-vaccinal-ouvert-a-tous-les-adultes-port-du-masque-obligatoire-ce-qu-il-faut-retenir-des-mesures-annoncees-par-veran_6103578_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 13:49:48 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : le vaccin de Pfizer approuvé pour les enfants de 5 à 11 ans, annonce le régulateur européen", + "description": "« Cette vaccination, si elle était décidée en France, ne commencerait pas avant le début de l’année 2022 », a de son côté déclaré le ministre de la santé français, Olivier Véran.", + "content": "« Cette vaccination, si elle était décidée en France, ne commencerait pas avant le début de l’année 2022 », a de son côté déclaré le ministre de la santé français, Olivier Véran.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/covid-19-le-vaccin-de-pfizer-approuve-pour-les-enfants-de-5-a-11-ans-annonce-le-regulateur-europeen_6103575_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 13:21:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Violences sexuelles : des chiffres « édifiants » dans une étude de l’université de Lille", + "description": "Plus de 64 % des 1215 étudiants interrogés rapportent avoir été victimes depuis l’âge de 15 ans, près de 78 % des femmes et 27 % des hommes.", + "content": "Plus de 64 % des 1215 étudiants interrogés rapportent avoir été victimes depuis l’âge de 15 ans, près de 78 % des femmes et 27 % des hommes.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/25/violences-sexuelles-des-chiffres-edifiants-dans-une-etude-de-l-universite-de-lille_6103571_3224.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 12:38:28 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Parlement adopte un texte contre les discriminations au travail subies par les malades chroniques", + "description": "Elargie aux autres maladies chroniques, cette proposition de loi concernait au départ les quatre millions de diabétiques, qui ont l’interdiction, pour des raisons de sécurité, de pratiquer certaines professions.", + "content": "Elargie aux autres maladies chroniques, cette proposition de loi concernait au départ les quatre millions de diabétiques, qui ont l’interdiction, pour des raisons de sécurité, de pratiquer certaines professions.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/25/le-parlement-adopte-un-texte-contre-les-discriminations-au-travail-subies-par-les-malades-chroniques_6103570_3224.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 12:27:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mort de Rémi Fraisse : l’Etat condamné par la justice administrative à indemniser la famille", + "description": "Le tribunal administratif de Toulouse a reconnu « une responsabilité sans faute de l’Etat » dans le drame survenu en 2014. La Cour de cassation avait confirmé un non-lieu pour le gendarme qui avait lancé la grenade.", + "content": "Le tribunal administratif de Toulouse a reconnu « une responsabilité sans faute de l’Etat » dans le drame survenu en 2014. La Cour de cassation avait confirmé un non-lieu pour le gendarme qui avait lancé la grenade.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/25/mort-de-remi-fraisse-l-etat-condamne-par-la-justice-administrative-a-indemniser-la-famille_6103569_3224.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 12:21:35 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les agences de presse RIA Novosti et Interfax ont précisé, jeudi soir, qu’il y avait 46 mineurs et six sauveteurs parmi les morts.", + "description": "Les agences de presse RIA Novosti et Interfax ont précisé, jeudi soir, qu’il y avait 46 mineurs et six sauveteurs parmi les morts.", + "content": "Les agences de presse RIA Novosti et Interfax ont précisé, jeudi soir, qu’il y avait 46 mineurs et six sauveteurs parmi les morts.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/russie-au-moins-onze-morts-et-une-cinquantaine-de-disparus-a-la-suite-d-un-accident-dans-une-mine-de-charbon_6103568_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 12:14:00 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amorce de détente entre la Turquie et les Emirats arabes unis", + "description": "L’homme fort d’Abou Dhabi, Mohammed Ben Zayed Al Nahyane, a été reçu mercredi à Ankara par Recep Tayyip Erdogan, et a annoncé la création d’un fonds d’investissement de 10 milliards de dollars pour soutenir l’économie turque.", + "content": "L’homme fort d’Abou Dhabi, Mohammed Ben Zayed Al Nahyane, a été reçu mercredi à Ankara par Recep Tayyip Erdogan, et a annoncé la création d’un fonds d’investissement de 10 milliards de dollars pour soutenir l’économie turque.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/amorce-de-detente-entre-la-turquie-et-les-emirats-arabes-unis_6103561_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 11:33:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après la tribune de 3 000 magistrats dans « Le Monde », Eric Dupond-Moretti va recevoir une partie des signataires", + "description": "Cette tribune, signée par plus du tiers de la profession, dénonçait les conditions de travail et alertait sur le mal-être grandissant des juges, substituts et greffiers.", + "content": "Cette tribune, signée par plus du tiers de la profession, dénonçait les conditions de travail et alertait sur le mal-être grandissant des juges, substituts et greffiers.", + "category": "", + "link": "https://www.lemonde.fr/police-justice/article/2021/11/25/tribune-de-3-000-magistrats-eric-dupond-moretti-va-recevoir-une-partie-des-signataires_6103560_1653578.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 11:31:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : grève générale en Polynésie française contre l’obligation vaccinale", + "description": "", + "content": "", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/covid-19-greve-generale-en-polynesie-francaise-contre-l-obligation-vaccinale_6103556_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 11:27:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mort de migrants dans la Manche : Gérald Darmanin critiqué, l’opposition dénonce une « honte » et un « drame de l’inhumanité »", + "description": "Parlant d’un « problème international », en partie lié à « l’attractivité du marché du travail britannique », le ministre de l’intérieur a demandé aux pays frontaliers de prendre leur part dans la lutte contre les passeurs.", + "content": "Parlant d’un « problème international », en partie lié à « l’attractivité du marché du travail britannique », le ministre de l’intérieur a demandé aux pays frontaliers de prendre leur part dans la lutte contre les passeurs.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/25/mort-de-27-migrants-dans-la-manche-gerald-darmanin-critique-l-opposition-denonce-une-honte-et-un-drame-de-l-inhumanite_6103553_823448.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 11:15:36 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après la mort de 27 migrants, ministres européens et Commission européenne se réuniront dimanche à Calais", + "description": "Peu de temps auparavant, le premier ministre britannique, Boris Johnson, avait mis en cause les efforts de Paris dans la crise migratoire. Emmanuel Macron lui a demandé de ne pas « instrumentaliser une situation dramatique ».", + "content": "Peu de temps auparavant, le premier ministre britannique, Boris Johnson, avait mis en cause les efforts de Paris dans la crise migratoire. Emmanuel Macron lui a demandé de ne pas « instrumentaliser une situation dramatique ».", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/morts-de-migrants-dans-la-manche-macron-demande-a-johnson-de-ne-pas-instrumentaliser-une-situation-dramatique_6103552_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 11:13:43 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Enquête | L’étonnante floraison des librairies en France", + "description": "Depuis le début de la crise sanitaire due au Covid-19, le nombre de candidats prêts à se reconvertir dans la vente de livres a fortement augmenté dans tous les territoires, malgré les multiples écueils du métier.", + "content": "Depuis le début de la crise sanitaire due au Covid-19, le nombre de candidats prêts à se reconvertir dans la vente de livres a fortement augmenté dans tous les territoires, malgré les multiples écueils du métier.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/pour-les-librairies-un-etonnant-miracle-lie-a-la-pandemie_6103549_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:50:36 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Coup de frein sur la reprise économique en Europe", + "description": "Fabio Panetta, membre du directoire de la Banque centrale européenne, estime que l’institution devrait maintenir son soutien à l’économie.", + "content": "Fabio Panetta, membre du directoire de la Banque centrale européenne, estime que l’institution devrait maintenir son soutien à l’économie.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/en-europe-coup-de-frein-sur-la-reprise-economique_6103548_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:46:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les classes de primaire ne fermeront plus après un cas de Covid-19 et « un dépistage systématique de toute la classe » aura lieu, annonce Jean-Michel Blanquer", + "description": "Cette mesure entrera en vigueur « dans le courant de la semaine prochaine », a précisé le ministre de l’éducation nationale. Les tests pourront être effectués « soit par les responsables légaux, soit par une présence des laboratoires dans l’établissement scolaire ». Quelque 8 500 classes étaient fermées mercredi, selon M. Blanquer.", + "content": "Cette mesure entrera en vigueur « dans le courant de la semaine prochaine », a précisé le ministre de l’éducation nationale. Les tests pourront être effectués « soit par les responsables légaux, soit par une présence des laboratoires dans l’établissement scolaire ». Quelque 8 500 classes étaient fermées mercredi, selon M. Blanquer.", + "category": "", + "link": "https://www.lemonde.fr/planete/live/2021/11/25/cinquieme-vague-de-covid-19-olivier-veran-annonce-de-nouvelles-mesures-a-la-mi-journee_6103545_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:33:35 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après la démission de Stéphane Richard, la succession à la tête d’Orange s’organise", + "description": "Le conseil d’administration a validé, d’ici à fin janvier, le départ de son PDG, condamné pour « complicité de détournement de fonds publics » dans l’affaire Tapie.", + "content": "Le conseil d’administration a validé, d’ici à fin janvier, le départ de son PDG, condamné pour « complicité de détournement de fonds publics » dans l’affaire Tapie.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/stephane-richard-demissionne-d-orange_6103544_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:31:18 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le président du gouvernement calédonien se projette dans l’après-référendum", + "description": "Louis Mapou a tenté l’apaisement, jeudi 25 novembre, à quelques semaines du troisième et dernier scrutin d’autodétermination, qui doit se tenir le 12 décembre.", + "content": "Louis Mapou a tenté l’apaisement, jeudi 25 novembre, à quelques semaines du troisième et dernier scrutin d’autodétermination, qui doit se tenir le 12 décembre.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/25/le-president-du-gouvernement-caledonien-se-projette-dans-l-apres-referendum_6103542_823448.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:20:20 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après une année de baisse, un important rebond des ventes de pesticides en 2020", + "description": "Les quantités de substances actives écoulées ont augmenté de 23 % par rapport à 2019. Les tonnages de glyphosate et de prosulfocarbe vendus sont en forte hausse.", + "content": "Les quantités de substances actives écoulées ont augmenté de 23 % par rapport à 2019. Les tonnages de glyphosate et de prosulfocarbe vendus sont en forte hausse.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/apres-une-annee-de-baisse-un-important-rebond-des-ventes-de-pesticides-en-2020_6103541_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:17:17 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : la Haute Autorité de santé recommande une dose de rappel de vaccin pour tous les adultes de plus de 18 ans", + "description": "Dans un avis publié jeudi, la HAS préconise l’extension à tous les adultes de la campagne de rappel vaccinal, à partir de cinq mois après la dernière injection. Le ministre de la santé, Olivier Véran, doit annoncer à la mi-journée un renforcement des mesures de lutte contre l’épidémie, en recrudescence en France.", + "content": "Dans un avis publié jeudi, la HAS préconise l’extension à tous les adultes de la campagne de rappel vaccinal, à partir de cinq mois après la dernière injection. Le ministre de la santé, Olivier Véran, doit annoncer à la mi-journée un renforcement des mesures de lutte contre l’épidémie, en recrudescence en France.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/vaccination-contre-le-covid-19-la-haute-autorite-de-sante-recommande-une-dose-de-rappel-pour-tous-les-plus-de-18-ans_6103539_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:15:59 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les subventions au spectacle vivant seront conditionnées au respect d’engagements contre les violences sexuelles, prévient Roselyne Bachelot", + "description": "Cette mesure, annoncée plus d’un mois après le mouvement #metoothéâtre, concerne « toutes les structures du spectacle vivant subventionnées par le ministère ».", + "content": "Cette mesure, annoncée plus d’un mois après le mouvement #metoothéâtre, concerne « toutes les structures du spectacle vivant subventionnées par le ministère ».", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/25/les-subventions-au-spectacle-vivant-seront-conditionnees-au-respect-d-engagements-contre-les-violences-sexuelles-previent-roselyne-bachelot_6103538_3246.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 10:13:53 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« Des groupes d’individus ont commis des dégradations et installé des barrages », et « des actes de violence ont eu lieu envers des forces de sécurité », a expliqué le préfet, jeudi, ajoutant que « onze personnes » ont été interpellées et « plusieurs armes » saisies.", + "description": "« Des groupes d’individus ont commis des dégradations et installé des barrages », et « des actes de violence ont eu lieu envers des forces de sécurité », a expliqué le préfet, jeudi, ajoutant que « onze personnes » ont été interpellées et « plusieurs armes » saisies.", + "content": "« Des groupes d’individus ont commis des dégradations et installé des barrages », et « des actes de violence ont eu lieu envers des forces de sécurité », a expliqué le préfet, jeudi, ajoutant que « onze personnes » ont été interpellées et « plusieurs armes » saisies.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/25/a-la-martinique-les-barrages-se-multiplient-et-l-intersyndicale-envisage-de-durcir-le-ton_6103534_3224.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 09:31:15 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le général émirati Ahmed Naser Al-Raisi élu président d’Interpol malgré des accusations de torture", + "description": "L’assemblée générale de l’organisation internationale de police criminelle a élu à sa tête, jeudi, cet inspecteur général du ministère de l’intérieur des Emirats arabes unis, qui fait l’objet de plusieurs plaintes en France pour tortures. Il succédera au Coréen Kim Jong-yang.", + "content": "L’assemblée générale de l’organisation internationale de police criminelle a élu à sa tête, jeudi, cet inspecteur général du ministère de l’intérieur des Emirats arabes unis, qui fait l’objet de plusieurs plaintes en France pour tortures. Il succédera au Coréen Kim Jong-yang.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/le-general-emirati-ahmed-naser-al-raisi-elu-president-d-interpol-malgre-des-accusations-de-torture_6103528_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 08:37:46 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manifestations et émeutes aux îles Salomon pour exiger la démission du premier ministre", + "description": "Plusieurs bâtiments ont été incendiés à Honiara, la capitale de cet archipel du Pacifique. Le gouvernement est confronté à des pressions après la décision, prise en 2019, de mettre fin aux liens diplomatiques avec Taïwan et d’établir des liens formels avec la Chine.", + "content": "Plusieurs bâtiments ont été incendiés à Honiara, la capitale de cet archipel du Pacifique. Le gouvernement est confronté à des pressions après la décision, prise en 2019, de mettre fin aux liens diplomatiques avec Taïwan et d’établir des liens formels avec la Chine.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/manifestations-et-emeutes-dans-les-iles-salomon-pour-exiger-la-demission-du-premier-ministre_6103521_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 06:50:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après la mort de 27 migrants, mercredi, dans un naufrage au large de Calais, la colère des associations", + "description": "La plupart des victimes étaient kurdes, originaires d’Irak ou d’Iran. Après ce drame inédit, les autorités appellent à lutter contre les passeurs tandis que les associations réclament des voies légales de migration vers le Royaume-Uni", + "content": "La plupart des victimes étaient kurdes, originaires d’Irak ou d’Iran. Après ce drame inédit, les autorités appellent à lutter contre les passeurs tandis que les associations réclament des voies légales de migration vers le Royaume-Uni", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/25/apres-la-mort-de-27-migrants-dans-un-naufrage-au-large-de-calais-la-colere-des-associations_6103506_3210.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 05:57:44 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ethiopie : le premier ministre, Abiy Ahmed, est sur le front pour combattre les rebelles", + "description": "Le pouvoir s’oppose au Front populaire de libération du Tigré, qui progresse vers Addis-Abeba, suscitant des appels internationaux à un cessez-le-feu dans un conflit qui s’intensifie.", + "content": "Le pouvoir s’oppose au Front populaire de libération du Tigré, qui progresse vers Addis-Abeba, suscitant des appels internationaux à un cessez-le-feu dans un conflit qui s’intensifie.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/25/ethiopie-le-premier-ministre-abiy-ahmed-est-sur-le-front-pour-combattre-les-rebelles_6103497_3212.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 04:14:52 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« L’indemnité inflation » de 100 euros, qui sera reversée à 38 millions de personnes, définitivement approuvée", + "description": "Censée compenser la hausse des prix de l’énergie pour les revenus inférieurs à 2 000 euros mensuels, cette mesure « mesure simple, rapide, efficace », selon la majorité, est qualifiée d’« éphémère et mal ciblée » par l’opposition.", + "content": "Censée compenser la hausse des prix de l’énergie pour les revenus inférieurs à 2 000 euros mensuels, cette mesure « mesure simple, rapide, efficace », selon la majorité, est qualifiée d’« éphémère et mal ciblée » par l’opposition.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/25/hausse-des-prix-de-l-energie-l-indemnite-inflation-de-100-euros-definitivement-approuvee_6103491_823448.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 01:43:06 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Magasins sans caisses : les Français avancent leurs pions", + "description": "Après Amazon aux Etats-Unis et au Royaume-Uni, mais aussi Auchan en France, Carrefour lance sa première supérette sans caisses ouverte au public, dans le 11e arrondissement de Paris.", + "content": "Après Amazon aux Etats-Unis et au Royaume-Uni, mais aussi Auchan en France, Carrefour lance sa première supérette sans caisses ouverte au public, dans le 11e arrondissement de Paris.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/25/magasins-sans-caisses-les-francais-avancent-leurs-pions_6103489_3234.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 00:50:09 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pesticides : une étude suggère de fixer les distances minimales d’épandage à plus de 100 mètres des habitations", + "description": "Une campagne de prélèvements menée par l’association Générations futures remet en cause les distances (de 3 à 20 mètres) fixées par le gouvernement pour protéger les riverains.", + "content": "Une campagne de prélèvements menée par l’association Générations futures remet en cause les distances (de 3 à 20 mètres) fixées par le gouvernement pour protéger les riverains.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/25/pesticides-une-etude-suggere-de-fixer-les-distances-minimales-d-epandage-a-plus-de-100-metres-des-habitations_6103482_3244.html", + "creator": "", + "pubDate": "Thu, 25 Nov 2021 00:00:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Une prime à la conversion pouvant atteindre 6 000 euros parmi les mesures alternatives au contrôle technique des deux-roues", + "description": "« Des radars pour contrôler les émissions sonores, notamment des deux-roues », seront également installés, a annoncé, mercredi, le ministre délégué aux transports.", + "content": "« Des radars pour contrôler les émissions sonores, notamment des deux-roues », seront également installés, a annoncé, mercredi, le ministre délégué aux transports.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/une-prime-a-la-conversion-pouvant-atteindre-6-000-euros-parmi-les-mesures-alternatives-au-controle-technique-des-deux-roues_6103481_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 23:13:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Naufrage de migrants : « La France ne laissera pas la Manche devenir un cimetière », dit Emmanuel Macron", + "description": "Le chef de l’Etat a réclamé mercredi « une réunion d’urgence des ministres européens concernés par le défi migratoire », ainsi que « le renforcement immédiat des moyens de l’agence Frontex aux frontières extérieures » de l’Union européenne.", + "content": "Le chef de l’Etat a réclamé mercredi « une réunion d’urgence des ministres européens concernés par le défi migratoire », ainsi que « le renforcement immédiat des moyens de l’agence Frontex aux frontières extérieures » de l’Union européenne.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/naufrage-de-migrants-la-france-ne-laissera-pas-la-manche-devenir-un-cimetiere-assure-emmanuel-macron_6103479_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 22:01:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au procès du meurtre d’Ahmaud Arbery, un joggeur noir tué aux Etats-Unis, trois hommes blancs reconnus coupables", + "description": "Ils avaient poursuivi puis abattu cet homme en février 2020, dans l’Etat de Géorgie. Le président américain a salué la décision, estimant toutefois que « beaucoup de travail » restait à faire sur le chemin de l’égalité raciale.", + "content": "Ils avaient poursuivi puis abattu cet homme en février 2020, dans l’Etat de Géorgie. Le président américain a salué la décision, estimant toutefois que « beaucoup de travail » restait à faire sur le chemin de l’égalité raciale.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/24/meurtre-d-ahmaud-arbery-aux-etats-unis-trois-hommes-reconnus-coupables_6103478_3224.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 21:30:54 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Libye, la candidature du fils de Kadhafi à l’élection présidentielle rejetée", + "description": "Saïf Al-Islam Kadhafi, qui avait présenté sa candidature le 14 novembre, figure parmi les 25 candidats dont les dossiers ont été rejetés, selon un communiqué de la Haute Commission électorale.", + "content": "Saïf Al-Islam Kadhafi, qui avait présenté sa candidature le 14 novembre, figure parmi les 25 candidats dont les dossiers ont été rejetés, selon un communiqué de la Haute Commission électorale.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/24/en-libye-la-candidature-du-fils-de-kadhafi-a-l-election-presidentielle-rejetee_6103477_3212.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 20:44:56 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le PDG d’Orange, Stéphane Richard, quittera son poste fin janvier au plus tard après sa condamnation dans l’affaire Tapie", + "description": "Orange a annoncé, mercredi, avoir accepté le départ de son président directeur général à l’issue d’une réunion de son conseil d’administration. Stéphane Richard a été condamné le même jour en appel pour complicité de détournement de fonds publics dans l’affaire de l’arbitrage entre Bernard Tapie et le Crédit lyonnais.", + "content": "Orange a annoncé, mercredi, avoir accepté le départ de son président directeur général à l’issue d’une réunion de son conseil d’administration. Stéphane Richard a été condamné le même jour en appel pour complicité de détournement de fonds publics dans l’affaire de l’arbitrage entre Bernard Tapie et le Crédit lyonnais.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/le-pdg-d-orange-stephane-richard-quittera-son-poste-fin-janvier-au-plus-tard-apres-sa-condamnation-dans-l-affaire-tapie_6103475_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 20:42:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La démission de Renaud Muselier ravive les tensions chez Les Républicains", + "description": "Econduit par Xavier Bertrand, à qui il apportait son soutien contre Eric Ciotti, le président de la région Provence-Alpes-Côte d’Azur a quitté le parti Les Républicains, qu’il accuse de « porosité avec l’extrême droite ».", + "content": "Econduit par Xavier Bertrand, à qui il apportait son soutien contre Eric Ciotti, le président de la région Provence-Alpes-Côte d’Azur a quitté le parti Les Républicains, qu’il accuse de « porosité avec l’extrême droite ».", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/24/congres-les-republicains-la-demission-de-renaud-muselier-ravive-les-tensions_6103474_823448.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 20:25:28 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« Le Figaro » aiguise les appétits de Vincent Bolloré et de Bernard Arnault", + "description": "Selon les informations du « Monde », les deux milliardaires ont fait des propositions de rachat concurrentes. Les héritiers de Serge Dassault, qui possèdent le journal, assurent ne pas souhaiter s’en séparer.", + "content": "Selon les informations du « Monde », les deux milliardaires ont fait des propositions de rachat concurrentes. Les héritiers de Serge Dassault, qui possèdent le journal, assurent ne pas souhaiter s’en séparer.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/le-figaro-aiguise-les-appetits-de-vincent-bollore-et-de-bernard-arnault_6103472_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 20:15:37 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Stocamine : les députés valident l’enfouissement définitif des déchets", + "description": "Un amendement intégré au projet de loi de finances pour 2022 autorise le stockage de déchets dangereux dans les anciennes mines de potasse alsacienne « pour une durée illimitée ».", + "content": "Un amendement intégré au projet de loi de finances pour 2022 autorise le stockage de déchets dangereux dans les anciennes mines de potasse alsacienne « pour une durée illimitée ».", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/24/stocamine-les-deputes-valident-l-enfouissement-definitif-des-dechets_6103470_3244.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 19:47:55 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Haute mer : les députés se mobilisent pour un accord « le plus ambitieux possible »", + "description": "A l’Assemblée nationale, les élus voudraient voir le pouvoir politique relancer le futur traité sur la haute mer, dont les discussions préparatoires ont débuté en 2006.", + "content": "A l’Assemblée nationale, les élus voudraient voir le pouvoir politique relancer le futur traité sur la haute mer, dont les discussions préparatoires ont débuté en 2006.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/24/haute-mer-les-deputes-se-mobilisent-pour-un-accord-le-plus-ambitieux-possible_6103469_3244.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 19:46:50 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La justice belge indemnise un couple pour la naissance « non planifiée » d’un enfant", + "description": "En quête d’un « bébé-médicament » pour soigner leur premier enfant, un couple espagnol a poursuivi la clinique belge responsable d’une fécondation in vitro de deux embryons qui se sont révélés donneurs non compatibles.", + "content": "En quête d’un « bébé-médicament » pour soigner leur premier enfant, un couple espagnol a poursuivi la clinique belge responsable d’une fécondation in vitro de deux embryons qui se sont révélés donneurs non compatibles.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/la-justice-belge-indemnise-un-couple-pour-la-naissance-non-planifiee-d-un-enfant_6103468_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 19:36:46 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions : malgré sa défaite contre Manchester City (2-1), le PSG qualifié pour les huitièmes de finale", + "description": "Malmenés par les Mancuniens, les Parisiens laissent filer la première place du groupe A, mais valident leur billet pour la suite de la compétition grâce à la lourde défaite de Bruges contre le RB Leipzig (0-4).", + "content": "Malmenés par les Mancuniens, les Parisiens laissent filer la première place du groupe A, mais valident leur billet pour la suite de la compétition grâce à la lourde défaite de Bruges contre le RB Leipzig (0-4).", + "category": "", + "link": "https://www.lemonde.fr/sport/live/2021/11/24/manchester-city-psg-suivez-en-direct-le-choc-de-la-ligue-des-champions_6103466_3242.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 19:00:19 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 en Europe : la Slovaquie annonce un confinement partiel de deux semaines", + "description": "Après l’Autriche, il s’agit du deuxième pays européen à imposer des restrictions de déplacement face à la nouvelle vague de contaminations par le Covid-19, près de deux ans après le confinement presque généralisé de mars 2020.", + "content": "Après l’Autriche, il s’agit du deuxième pays européen à imposer des restrictions de déplacement face à la nouvelle vague de contaminations par le Covid-19, près de deux ans après le confinement presque généralisé de mars 2020.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/24/covid-19-la-slovaquie-annonce-un-confinement-partiel-de-deux-semaines_6103463_3244.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 18:36:30 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pegasus : Apple révèle l’existence de dizaines de nouvelles victimes dans le monde", + "description": "De la Thaïlande au Salvador, en passant par l’Arménie, des journalistes, artistes, militants politiques ou des droits humains ont été ciblés par le puissant logiciel espion de NSO Group.", + "content": "De la Thaïlande au Salvador, en passant par l’Arménie, des journalistes, artistes, militants politiques ou des droits humains ont été ciblés par le puissant logiciel espion de NSO Group.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/24/pegasus-apple-revele-l-existence-de-dizaines-de-nouvelles-victimes-dans-le-monde_6103461_4408996.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 18:11:31 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les automobilistes peuvent continuer à partager des informations routières, y compris sur les radars", + "description": "L’interdiction de communiquer certaines données en temps réel peut toutefois être appliquée par les préfets dans le cas de contrôles routiers impliquant l’interception des véhicules, ont rappelé mercredi les membres du Conseil constitutionnel.", + "content": "L’interdiction de communiquer certaines données en temps réel peut toutefois être appliquée par les préfets dans le cas de contrôles routiers impliquant l’interception des véhicules, ont rappelé mercredi les membres du Conseil constitutionnel.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/24/les-automobilistes-peuvent-continuer-a-partager-des-informations-routieres_6103460_4408996.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 18:09:20 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pologne : la Convention européenne des droits de l’homme jugée incompatible avec la Constitution", + "description": "La Cour constitutionnelle polonaise a jugé qu’une partie de la Convention européenne des droits de l’homme était incompatible avec la Constitution polonaise. Un nouveau défi adressé à l’Union européenne.", + "content": "La Cour constitutionnelle polonaise a jugé qu’une partie de la Convention européenne des droits de l’homme était incompatible avec la Constitution polonaise. Un nouveau défi adressé à l’Union européenne.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/pologne-la-cour-constitutionnelle-juge-la-convention-europeenne-des-droits-de-l-homme-incompatible-avec-sa-constitution_6103459_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 18:07:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Discriminations à l’embauche : un phénomène qui reste « généralisé et persistant »", + "description": "Une étude publiée mercredi 24 novembre montre qu’à compétences égales, les candidats portant un prénom et un nom à consonance maghrébine ont beaucoup moins de chances d’être contactés par les recruteurs.", + "content": "Une étude publiée mercredi 24 novembre montre qu’à compétences égales, les candidats portant un prénom et un nom à consonance maghrébine ont beaucoup moins de chances d’être contactés par les recruteurs.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/24/discriminations-a-l-embauche-un-phenomene-qui-reste-generalise-et-persistant_6103458_3224.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 18:00:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Plus de vingt migrants meurent dans le naufrage d’une embarcation dans la Manche, une « tragédie », selon Jean Castex", + "description": "Ce drame est le plus meurtrier depuis l’envolée en 2018 du nombre de traversées migratoires de la Manche, face au verrouillage croissant du port de Calais et de l’Eurotunnel emprunté jusque-là par les migrants tentant de rallier l’Angleterre. Le ministre de l’intérieur Gérald Darmanin est attendu dans la soirée à Calais.", + "content": "Ce drame est le plus meurtrier depuis l’envolée en 2018 du nombre de traversées migratoires de la Manche, face au verrouillage croissant du port de Calais et de l’Eurotunnel emprunté jusque-là par les migrants tentant de rallier l’Angleterre. Le ministre de l’intérieur Gérald Darmanin est attendu dans la soirée à Calais.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/calais-au-moins-vingt-migrants-morts-dans-le-naufrage-d-une-embarcation-dans-la-manche_6103452_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 17:52:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Maroc et Israël signent un accord sécuritaire « sans précédent »", + "description": "L’accord intervient un an à peine après la normalisation des relations entre les deux pays, alors que Rabat est en froid avec son voisin algérien.", + "content": "L’accord intervient un an à peine après la normalisation des relations entre les deux pays, alors que Rabat est en froid avec son voisin algérien.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/le-maroc-et-israel-signent-un-accord-securitaire-sans-precedent_6103451_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 17:39:41 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Allemagne, la nouvelle coalition souhaite légaliser le cannabis", + "description": "Cette libéralisation est une des mesures-phares du contrat de coalition, dévoilé mercredi, des trois partis sociaux-démocrates, Verts et libéraux, qui vont succéder à Angela Merkel dans les prochaines semaines.", + "content": "Cette libéralisation est une des mesures-phares du contrat de coalition, dévoilé mercredi, des trois partis sociaux-démocrates, Verts et libéraux, qui vont succéder à Angela Merkel dans les prochaines semaines.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/la-nouvelle-coalition-a-la-tete-de-l-allemagne-souhaite-legaliser-le-cannabis_6103449_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 17:06:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« Congo Hold-up » : ouverture d’une information judiciaire visant le clan de Joseph Kabila", + "description": "Selon une enquête menée par des médias internationaux et des ONG, l’ancien président et sa famille auraient détourné 138 millions de dollars entre 2013 et 2018.", + "content": "Selon une enquête menée par des médias internationaux et des ONG, l’ancien président et sa famille auraient détourné 138 millions de dollars entre 2013 et 2018.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/24/congo-hold-up-ouverture-d-une-information-judiciaire-visant-le-clan-de-joseph-kabila_6103445_3212.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 16:27:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un homme interpellé quatre mois après le braquage de la bijouterie Chaumet à Paris", + "description": "Agé de 49 ans, il conservait chez lui, dans l’Eure, la quasi-totalité d’un butin estimé à deux à trois millions d’euros. La police cherche à établir ses liens avec le gang des Pink Panthers.", + "content": "Agé de 49 ans, il conservait chez lui, dans l’Eure, la quasi-totalité d’un butin estimé à deux à trois millions d’euros. La police cherche à établir ses liens avec le gang des Pink Panthers.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/24/un-homme-interpelle-quatre-mois-apres-le-braquage-de-la-bijouterie-chaumet-a-paris_6103444_3224.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 16:10:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le gouvernement augmente le plafond de défiscalisation des chèques-cadeaux", + "description": "Ce plafond « passera de 171 euros à 250 euros », selon le ministre de l’économie. L’an dernier, il avait déjà été doublé, atteignant 341 euros, une mesure qui avait conduit à la distribution de 150 millions d’euros de chèques-cadeaux supplémentaires, selon Bercy.", + "content": "Ce plafond « passera de 171 euros à 250 euros », selon le ministre de l’économie. L’an dernier, il avait déjà été doublé, atteignant 341 euros, une mesure qui avait conduit à la distribution de 150 millions d’euros de chèques-cadeaux supplémentaires, selon Bercy.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/le-gouvernement-augmente-le-plafond-de-defiscalisation-des-cheques-cadeaux_6103439_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 15:26:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Allemagne : le SPD, les Verts et les libéraux ont conclu un accord de gouvernement", + "description": "Près de deux mois après les élections législatives, les sociaux-démocrates, les écologistes et les libéraux allemands ont acté mercredi un accord gouvernemental. La coalition, qui devrait être menée par Olaf Scholz, 63 ans, va accéder au pouvoir et ouvrir une nouvelle ère après qu’Angela Merkel a occupé la chancellerie pendant seize ans.", + "content": "Près de deux mois après les élections législatives, les sociaux-démocrates, les écologistes et les libéraux allemands ont acté mercredi un accord gouvernemental. La coalition, qui devrait être menée par Olaf Scholz, 63 ans, va accéder au pouvoir et ouvrir une nouvelle ère après qu’Angela Merkel a occupé la chancellerie pendant seize ans.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/en-allemagne-le-spd-les-verts-et-les-liberaux-sont-parvenus-a-un-accord-de-coalition_6103434_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 14:58:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ferroviaire : l’espagnol CAF reprend l’usine Alstom de Reichshoffen", + "description": "Le transfert de l’usine alsacienne, outil industriel réalisant plus de 300 millions d’euros de chiffre d’affaires et employant 740 salariés, sera effectif à compter du second semestre 2022.", + "content": "Le transfert de l’usine alsacienne, outil industriel réalisant plus de 300 millions d’euros de chiffre d’affaires et employant 740 salariés, sera effectif à compter du second semestre 2022.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/ferroviaire-l-espagnol-caf-reprend-l-usine-alstom-de-reichshoffen_6103433_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 14:47:42 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Attentats de Conflans et à « Charlie Hebdo » : des éléments des dossiers d’instruction piratés et mis en vente", + "description": "Une attaque au rançongiciel contre un cabinet d’avocats a permis à un groupe de pirates de dérober des dizaines de gigaoctets de documents confidentiels.", + "content": "Une attaque au rançongiciel contre un cabinet d’avocats a permis à un groupe de pirates de dérober des dizaines de gigaoctets de documents confidentiels.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/24/attentats-de-conflans-et-a-charlie-hebdo-des-elements-des-dossiers-d-instruction-pirates-et-mis-en-vente_6103429_4408996.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 14:15:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Juan Branco mis en examen pour viol", + "description": "Une femme, âgée de 20 ans au moment des faits, avait déposé une main courante au commissariat du 14e arrondissement de Paris, à la fin d’avril, le lendemain de sa rencontre avec M. Branco.", + "content": "Une femme, âgée de 20 ans au moment des faits, avait déposé une main courante au commissariat du 14e arrondissement de Paris, à la fin d’avril, le lendemain de sa rencontre avec M. Branco.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/24/l-avocat-juan-branco-mis-en-examen-pour-viol_6103425_3224.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 13:03:23 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Trois entreprises françaises ont vendu des outils de surveillance numérique massive à l’Egypte", + "description": "S’appuyant sur plusieurs documents internes, le média en ligne « Disclose » et l’hebdomadaire « Télérama » révèlent l’implication de trois entreprises dans diverses prestations de surveillance, avec l’assentiment de l’Etat français.", + "content": "S’appuyant sur plusieurs documents internes, le média en ligne « Disclose » et l’hebdomadaire « Télérama » révèlent l’implication de trois entreprises dans diverses prestations de surveillance, avec l’assentiment de l’Etat français.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/24/trois-entreprises-francaises-ont-vendu-des-outils-de-surveillance-numerique-massive-a-l-egypte_6103421_4408996.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 12:18:02 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Magdalena Andersson, première femme à devenir première ministre de Suède", + "description": "La chef de file des sociaux-démocrates a été nommée au terme de négociations difficiles.", + "content": "La chef de file des sociaux-démocrates a été nommée au terme de négociations difficiles.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/en-suede-magdalena-andersson-est-la-premiere-femme-a-devenir-premiere-ministre_6103419_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:44:46 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Accusé d’agressions sexuelles, Nicolas Hulot annonce qu’il « quitte définitivement la vie publique »", + "description": "Cette décision survient la veille de la diffusion d’une enquête de l’émission « Envoyé spécial » mettant en cause l’ancien ministre de l’écologie. M. Hulot balaie des accusations « mensongères ».", + "content": "Cette décision survient la veille de la diffusion d’une enquête de l’émission « Envoyé spécial » mettant en cause l’ancien ministre de l’écologie. M. Hulot balaie des accusations « mensongères ».", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/24/nicolas-hulot-accuse-d-agressions-sexuelles-annonce-qu-il-quitte-definitivement-la-vie-publique_6103417_823448.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:37:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le porte-parole Gabriel Attal prendra bien la parole à l’issue du conseil des ministres, mercredi, mais les annonces concrètes auront lieu demain lors d’une conférence de presse.", + "description": "Gabriel Attal, porte-parole de gouvernement, a précisé les troix axes de lutte contre la cinquième vague : renforcement des mesures barrières, du passe sanitaire et du rappel vaccinal, afin d’éviter un couvre-feu ou un confinement. Les annonces concrètes sont attendues demain.", + "content": "Gabriel Attal, porte-parole de gouvernement, a précisé les troix axes de lutte contre la cinquième vague : renforcement des mesures barrières, du passe sanitaire et du rappel vaccinal, afin d’éviter un couvre-feu ou un confinement. Les annonces concrètes sont attendues demain.", + "category": "", + "link": "https://www.lemonde.fr/planete/live/2021/11/24/covid-19-suivez-les-mesures-annoncees-par-le-gouvernement-pour-endiguer-la-cinquieme-vague_6103416_3244.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:30:58 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« Le cinéma a besoin d’idées nouvelles » : Claude Lelouch parraine la création d’une cryptomonnaie", + "description": "Une nouvelle devise, le klapcoin, qui équivaudra à 10 centimes d’euro, sera créée en janvier par la fille du réalisateur pour financer l’écriture d’une vingtaine de films et de séries.", + "content": "Une nouvelle devise, le klapcoin, qui équivaudra à 10 centimes d’euro, sera créée en janvier par la fille du réalisateur pour financer l’écriture d’une vingtaine de films et de séries.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/le-cinema-a-besoin-d-idees-nouvelles-claude-lelouch-parraine-la-creation-d-une-cryptomonnaie_6103414_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:11:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’embarrassante petite phrase de Lula sur le président du Nicaragua, Daniel Ortega", + "description": "Le leader de la gauche, favori de la prochaine présidentielle au Brésil, a déclenché une polémique après une interview à « El Pais », dans laquelle il prend la défense du dirigeant autoritaire.", + "content": "Le leader de la gauche, favori de la prochaine présidentielle au Brésil, a déclenché une polémique après une interview à « El Pais », dans laquelle il prend la défense du dirigeant autoritaire.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/au-bresil-l-embarrassante-petite-phrase-de-lula-sur-le-regime-sandiniste_6103409_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 11:02:40 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Boom de l’apprentissage dans la fonction publique", + "description": "Entre 2017 et 2021, le nombre d’apprentis recrutés dans les trois fonctions publiques (Etat, collectivités locales, hôpitaux) est passé de 13 000 à 24 800.", + "content": "Entre 2017 et 2021, le nombre d’apprentis recrutés dans les trois fonctions publiques (Etat, collectivités locales, hôpitaux) est passé de 13 000 à 24 800.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/24/boom-de-l-apprentissage-dans-la-fonction-publique_6103406_823448.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:55:07 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au Burkina Faso, les violences djihadistes ébranlent le pouvoir", + "description": "Les appels à la démission du président Roch Marc Christian Kaboré, incapable d’endiguer les attaques qui ont fait 2 000 morts en six ans, se multiplient.", + "content": "Les appels à la démission du président Roch Marc Christian Kaboré, incapable d’endiguer les attaques qui ont fait 2 000 morts en six ans, se multiplient.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/24/au-burkina-faso-les-violences-djihadistes-ebranlent-le-pouvoir_6103405_3212.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:53:57 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La réforme du régime de garantie des salaires toujours engluée", + "description": "La CFE-CGC, la CFTC, la CGT et FO se sont opposés, mardi 23 novembre, au projet d’évolution du dispositif défendu par le patronat.", + "content": "La CFE-CGC, la CFTC, la CGT et FO se sont opposés, mardi 23 novembre, au projet d’évolution du dispositif défendu par le patronat.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/24/la-reforme-du-regime-de-garantie-des-salaires-toujours-engluee_6103404_823448.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:45:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au procès Theranos, l’ex-PDG Elizabeth Holmes témoigne, souriante et sûre d’elle", + "description": "L’ex-superstar de la Silicon Valley, accusée d’avoir dupé investisseurs et patients en leur faisant croire qu’elle allait révolutionner la technologie des tests sanguins, a tenté de convaincre les jurés de sa bonne foi.", + "content": "L’ex-superstar de la Silicon Valley, accusée d’avoir dupé investisseurs et patients en leur faisant croire qu’elle allait révolutionner la technologie des tests sanguins, a tenté de convaincre les jurés de sa bonne foi.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/proces-theranos-elizabeth-holmes-sur-le-gril_6103403_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:35:59 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Edouard Philippe confirme son soutien à la « maison commune » de la majorité présidentielle", + "description": "S’il se range derrière ce rassemblement de l’ensemble des partis de la majorité – LRM, Agir, le MoDem – l’ex-premier ministre précise que son parti, Horizons, investira ses propres candidats aux législatives.", + "content": "S’il se range derrière ce rassemblement de l’ensemble des partis de la majorité – LRM, Agir, le MoDem – l’ex-premier ministre précise que son parti, Horizons, investira ses propres candidats aux législatives.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/24/edouard-philippe-confirme-son-soutien-a-la-maison-commune-de-la-majorite-et-donne-le-cap_6103402_823448.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:27:00 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Martinique : l’intersyndicale à l’origine de la grève générale appelle à la levée des barrages", + "description": "Les représentants syndicaux disent avoir pris cette décision pour éviter les risques d’embrasement, comme à la Guadeloupe, où les violences ont continué mardi. Des violences ont malgré tout eu lieu dans la nuit de mardi à mercredi.", + "content": "Les représentants syndicaux disent avoir pris cette décision pour éviter les risques d’embrasement, comme à la Guadeloupe, où les violences ont continué mardi. Des violences ont malgré tout eu lieu dans la nuit de mardi à mercredi.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/24/martinique-l-intersyndicale-a-l-origine-de-la-greve-generale-appelle-a-la-levee-des-barrages_6103401_3224.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:15:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le footballeur Karim Benzema condamné à un an de prison avec sursis dans l’affaire de la « sextape »", + "description": "L’international français a été reconnu coupable de complicité de tentative de chantage envers son ancien coéquipier Mathieu Valbuena par le tribunal correctionnel de Versailles, mercredi.", + "content": "L’international français a été reconnu coupable de complicité de tentative de chantage envers son ancien coéquipier Mathieu Valbuena par le tribunal correctionnel de Versailles, mercredi.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/24/affaire-de-la-sextape-karim-benzema-condamne-pour-complicite-de-tentative-de-chantage_6103397_3224.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 10:01:23 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Ethiopie, la guerre se rapproche de la capitale Addis-Abeba", + "description": "Alors que les rebelles tigréens se trouvaient à moins de 200 kilomètres, les forces d’autodéfense loyalistes se massaient. La France a demandé à ses ressortissants de quitter au plus vite le pays.", + "content": "Alors que les rebelles tigréens se trouvaient à moins de 200 kilomètres, les forces d’autodéfense loyalistes se massaient. La France a demandé à ses ressortissants de quitter au plus vite le pays.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/24/en-ethiopie-la-guerre-se-rapproche-d-addis-abeba_6103395_3212.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:51:48 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le conseil d’administration d’Orange « tirera les conséquences » de la condamnation du PDG Stéphane Richard, annonce Bercy", + "description": "Le conseil d’administration de l’entreprise se réunira en fin de journée pour décider si son PDG, condamné à un an de prison avec sursis pour complicité de détournement de fonds publics, reste en poste.", + "content": "Le conseil d’administration de l’entreprise se réunira en fin de journée pour décider si son PDG, condamné à un an de prison avec sursis pour complicité de détournement de fonds publics, reste en poste.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/24/stephane-richard-le-pdg-d-orange-condamne-en-appel-pour-complicite-de-detournement-de-fonds-publics-dans-l-affaire-de-l-arbitrage-tapie_6103393_3224.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:40:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au Mali, les « assises nationales de la refondation » reportées sine die", + "description": "La junte au pouvoir doit fixer une date pour les élections à l’issue de ces assises, initialement prévues fin décembre.", + "content": "La junte au pouvoir doit fixer une date pour les élections à l’issue de ces assises, initialement prévues fin décembre.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/24/au-mali-les-assises-nationales-de-la-refondation-reportees-sine-die_6103392_3212.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:39:31 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’Australie classe l’ensemble du Hezbollah comme « organisation terroriste »", + "description": "L’appartenance à l’organisation ou son financement seront désormais interdits en Australie, qui sanctionne également la branche politique du puissant mouvement libanais.", + "content": "L’appartenance à l’organisation ou son financement seront désormais interdits en Australie, qui sanctionne également la branche politique du puissant mouvement libanais.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/l-australie-classe-l-ensemble-du-hezbollah-comme-organisation-terroriste_6103390_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:21:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Renaud Muselier, président de la région Provence-Alpes-Côte d’Azur, quitte le parti Les Républicains", + "description": "Cette décision, annoncée mercredi matin sur le plateau de LCI, survient alors que Xavier Bertrand, en lice pour être le candidat du parti de droite à la présidentielle, a refusé, mardi, le soutien de M. Muselier.", + "content": "Cette décision, annoncée mercredi matin sur le plateau de LCI, survient alors que Xavier Bertrand, en lice pour être le candidat du parti de droite à la présidentielle, a refusé, mardi, le soutien de M. Muselier.", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/24/renaud-muselier-annonce-quitter-le-parti-les-republicains_6103387_6059010.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 09:00:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La chaîne d’information internationale France 24 suspend sa grève", + "description": "Le mouvement d’une partie des salariés a duré six jours et a permis d’obtenir de « grandes avancées », notamment l’embauche en CDI de 50 pigistes.", + "content": "Le mouvement d’une partie des salariés a duré six jours et a permis d’obtenir de « grandes avancées », notamment l’embauche en CDI de 50 pigistes.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/24/la-chaine-d-information-internationale-france-24-suspend-sa-greve_6103383_3234.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 08:02:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En sept ans, la guerre du Yémen aura causé la mort de 377 000 personnes, d’ici à la fin de 2021", + "description": "Selon l’estimation publiée par les Nations unies, 150 000 morts sont dues aux combats, et environ 227 000 aux conséquences indirectes du conflit, comme la famine ou les maladies.", + "content": "Selon l’estimation publiée par les Nations unies, 150 000 morts sont dues aux combats, et environ 227 000 aux conséquences indirectes du conflit, comme la famine ou les maladies.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/en-sept-ans-la-guerre-du-yemen-aura-cause-la-mort-de-377-000-personnes-d-ici-la-fin-de-l-annee-2021_6103373_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 06:46:28 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Championnat du monde d’échecs : Magnus Carlsen affrontera Ian Nepomniachtchi, à Dubaï", + "description": "Le Norvégien, champion du monde, rencontrera le Russe à partir de mercredi, à Dubaï. Deux grands maîtres qui se connaissent bien et se sont plusieurs fois rencontrés dans les catégories « jeunes ».", + "content": "Le Norvégien, champion du monde, rencontrera le Russe à partir de mercredi, à Dubaï. Deux grands maîtres qui se connaissent bien et se sont plusieurs fois rencontrés dans les catégories « jeunes ».", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/24/championnat-du-monde-d-echecs-magnus-carlsen-affrontera-ian-nepomniachtchi-a-dubai_6103367_3242.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 06:00:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’épidémie de Covid-19 percute à nouveau l’agenda d’Emmanuel Macron", + "description": "La cinquième vague qui frappe actuellement la France contraint l’exécutif à agir, à cinq mois de l’élection présidentielle. Mais aucune mesure telle qu’un confinement ou une fermeture des commerces n’est à l’ordre du jour", + "content": "La cinquième vague qui frappe actuellement la France contraint l’exécutif à agir, à cinq mois de l’élection présidentielle. Mais aucune mesure telle qu’un confinement ou une fermeture des commerces n’est à l’ordre du jour", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/24/le-covid-19-percute-a-nouveau-l-agenda-d-emmanuel-macron_6103362_823448.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 05:34:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Chine s’oppose « fermement » à l’invitation de Taïwan au sommet de la démocratie de Joe Biden", + "description": "Le président des Etats-Unis envoie un message clair en conviant l’île autonome, que Pékin considère comme l’une de ses provinces appelée à revenir dans son giron.", + "content": "Le président des Etats-Unis envoie un message clair en conviant l’île autonome, que Pékin considère comme l’une de ses provinces appelée à revenir dans son giron.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/la-chine-et-la-russie-non-invitees-au-sommet-pour-la-democratie-organise-par-les-etats-unis_6103361_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 05:03:20 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Australie, Corée du Sud, Nouvelle-Zélande... : pourquoi ces pays abandonnent la stratégie « zéro Covid »", + "description": "Cette méthode de contrôle strict de la pandémie est devenue intenable avec l’arrivée du variant Delta, plus contagieux. Seuls Hongkong et la Chine continuent de la mettre en œuvre, au prix de fortes contraintes.", + "content": "Cette méthode de contrôle strict de la pandémie est devenue intenable avec l’arrivée du variant Delta, plus contagieux. Seuls Hongkong et la Chine continuent de la mettre en œuvre, au prix de fortes contraintes.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/24/zero-covid-pourquoi-la-plupart-des-pays-partisans-de-cette-strategie-y-ont-renonce_6103353_3244.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 04:17:41 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après Jean Castex, la ministre Brigitte Klinkert positive au Covid-19", + "description": "La ministre déléguée à l’insertion a annoncé, sur Twitter, être symptomatique, et s’être mise à l’isolement pour poursuivre ses activités. Lundi, c’est le chef du gouvernement qui avait été diagnostiqué positif.", + "content": "La ministre déléguée à l’insertion a annoncé, sur Twitter, être symptomatique, et s’être mise à l’isolement pour poursuivre ses activités. Lundi, c’est le chef du gouvernement qui avait été diagnostiqué positif.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/24/apres-jean-castex-la-ministre-brigitte-klinkert-positive-au-covid-19_6103352_823448.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 03:51:43 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Parade de Noël endeuillée aux Etats-Unis : le bilan passe à six morts après le décès d’un enfant", + "description": "Il a succombé à ses blessures, ont annoncé les autorités, lors de la comparution de l’accusé, qui risque la prison à vie dans le Wisconsin.", + "content": "Il a succombé à ses blessures, ont annoncé les autorités, lors de la comparution de l’accusé, qui risque la prison à vie dans le Wisconsin.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/parade-de-noel-endeuillee-par-une-voiture-folle-aux-etats-unis-le-bilan-passe-a-six-morts-apres-le-deces-d-un-enfant_6103349_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 02:46:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Centre national du livre met en musique la lecture « grande cause nationale »", + "description": "Une trentaine de mesures doivent être mises en œuvre d’ici à juillet 2022, entre résidences d’auteurs, priorité donnée aux bibliothèques en zone rurale et actions auprès des jeunes et des publics défavorisés.", + "content": "Une trentaine de mesures doivent être mises en œuvre d’ici à juillet 2022, entre résidences d’auteurs, priorité donnée aux bibliothèques en zone rurale et actions auprès des jeunes et des publics défavorisés.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/24/le-centre-national-du-livre-met-en-musique-la-lecture-grande-cause-nationale_6103345_3246.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 01:54:45 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions : Lille dompte le Red Bull Salzbourg et entrevoit les huitièmes de finale", + "description": "Les coéquipiers de Jonathan David, une nouvelle fois buteur, ont pris le meilleur sur l’équipe autrichienne mardi (1-0). En tête de leur groupe G, ils peuvent croire à la qualification.", + "content": "Les coéquipiers de Jonathan David, une nouvelle fois buteur, ont pris le meilleur sur l’équipe autrichienne mardi (1-0). En tête de leur groupe G, ils peuvent croire à la qualification.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/24/ligue-des-champions-lille-dompte-le-red-bull-salzbourg-et-entrevoit-les-huitiemes-de-finale_6103343_3242.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 01:39:07 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Wish, le site de vente en ligne, va disparaître des moteurs de recherche en France", + "description": "Les services français de la répression des fraudes ont demandé le déréférencement de la plate-forme, dont l’application ne sera plus disponible, pour vente de produits non conformes et dangereux.", + "content": "Les services français de la répression des fraudes ont demandé le déréférencement de la plate-forme, dont l’application ne sera plus disponible, pour vente de produits non conformes et dangereux.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/24/le-site-de-vente-en-ligne-wish-va-disparaitre-des-grands-moteurs-de-recherche-en-france_6103342_4408996.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 01:18:07 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Afghanistan : nouvelle réunion à venir entre les Etats-Unis et les talibans, à Doha", + "description": "Les discussions, prévues à partir de la semaine prochaine, porteront notamment sur la lutte contre le terrorisme et sur la crise humanitaire qui frappe le pays dirigé dorénavant par les représentants du mouvement islamiste.", + "content": "Les discussions, prévues à partir de la semaine prochaine, porteront notamment sur la lutte contre le terrorisme et sur la crise humanitaire qui frappe le pays dirigé dorénavant par les représentants du mouvement islamiste.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/24/afghanistan-nouvelle-reunion-a-venir-entre-les-etats-unis-et-les-talibans-a-doha_6103340_3210.html", + "creator": "", + "pubDate": "Wed, 24 Nov 2021 00:19:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : à Paris, un seuil d’« alerte maximale » franchi mais pas de saturation des hôpitaux", + "description": "Dans la capitale, le nombre de cas dépasse désormais les 250 pour 100 000 habitants, comme au sommet de la vague précédente.", + "content": "Dans la capitale, le nombre de cas dépasse désormais les 250 pour 100 000 habitants, comme au sommet de la vague précédente.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/covid-19-paris-franchit-le-seuil-d-alerte-maximale_6103336_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 22:12:24 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Treize militants d’ultradroite interpellés sur l’ensemble du territoire", + "description": "Plusieurs armes ont également été saisies, a précisé le parquet de Marseille, mardi, dans un communiqué.", + "content": "Plusieurs armes ont également été saisies, a précisé le parquet de Marseille, mardi, dans un communiqué.", + "category": "", + "link": "https://www.lemonde.fr/police-justice/article/2021/11/23/treize-militants-d-ultradroite-interpelles-sur-l-ensemble-du-territoire_6103331_1653578.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 20:54:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un manuscrit d’Einstein vendu 11,6 millions d’euros aux enchères", + "description": "Le document de travail scientifique, vendu mardi pour la maison Aguttes, était estimé entre deux et trois millions d’euros.", + "content": "Le document de travail scientifique, vendu mardi pour la maison Aguttes, était estimé entre deux et trois millions d’euros.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/23/un-manuscrit-d-einstein-vendu-11-6-millions-d-euros-aux-encheres_6103330_3246.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 20:30:14 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pegasus : Apple porte plainte contre NSO Group, fabricant du logiciel espion", + "description": "L’entreprise israélienne NSO Group parvient à trouver des failles connues d’elle seule dans les logiciels d’Apple, permettant d’infecter ces derniers avec le logiciel espion qu’elle vend à des Etats.", + "content": "L’entreprise israélienne NSO Group parvient à trouver des failles connues d’elle seule dans les logiciels d’Apple, permettant d’infecter ces derniers avec le logiciel espion qu’elle vend à des Etats.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/23/pegasus-apple-porte-plainte-contre-nso-group-fabricant-du-logiciel-espion_6103328_4408996.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 20:20:58 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Louis Schweitzer va piloter le processus de remplacement de Didier Raoult à la tête de l’IHU de Marseille", + "description": "Le conseil d’administration de l’institut hospitalo-universitaire Méditerranée Infection a lancé, mardi, un appel d’offres international pour trouver un successeur au médiatique professeur, mis en cause dans plusieurs dossiers.", + "content": "Le conseil d’administration de l’institut hospitalo-universitaire Méditerranée Infection a lancé, mardi, un appel d’offres international pour trouver un successeur au médiatique professeur, mis en cause dans plusieurs dossiers.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/23/louis-schweitzer-va-piloter-le-processus-de-remplacement-de-didier-raoult-a-la-tete-de-l-ihu-de-marseille_6103327_3244.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 20:14:15 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un rapport sénatorial pointe la dégradation des conditions de travail des enseignants", + "description": "Baisse du pouvoir d’achat, classes surchargées, heures de travail : le Sénat s’est emparé de la question des conditions de travail des enseignants, en préparation de l’examen du projet de loi de finances 2022, qu’il a rejeté le 23 novembre.", + "content": "Baisse du pouvoir d’achat, classes surchargées, heures de travail : le Sénat s’est emparé de la question des conditions de travail des enseignants, en préparation de l’examen du projet de loi de finances 2022, qu’il a rejeté le 23 novembre.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/un-rapport-senatorial-pointe-la-degradation-des-conditions-de-travail-des-enseignants_6103326_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 20:13:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Renault refuse de soutenir la reprise de la fonderie automobile SAM", + "description": "Le groupe automobile a estimé, mardi, que le projet concernant son sous-traitant aveyronnais « ne présente pas les conditions de pérennité et de sécurité nécessaires ».", + "content": "Le groupe automobile a estimé, mardi, que le projet concernant son sous-traitant aveyronnais « ne présente pas les conditions de pérennité et de sécurité nécessaires ».", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/23/renault-refuse-de-soutenir-la-reprise-de-la-fonderie-automobile-sam_6103325_3234.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 20:00:58 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Suicides chez les agriculteurs : le gouvernement lance une « mobilisation collective »", + "description": "Le gouvernement a présenté, mardi, une feuille de route, dans l’espoir d’enrayer les suicides dans cette profession.", + "content": "Le gouvernement a présenté, mardi, une feuille de route, dans l’espoir d’enrayer les suicides dans cette profession.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/suicides-chez-les-agriculteurs-le-gouvernement-lance-une-mobilisation-collective_6103324_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 19:54:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Xavier Bertrand refuse le soutien de Renaud Muselier après ses attaques contre Eric Ciotti et David Lisnard", + "description": "Le président de la région PACA a apporté son soutien à la candidature de Xavier Bertrand pour le congrès du parti Les Républicains (LR), tout en qualifiant Eric Ciotti de « faux-nez » de l’extrême droite.", + "content": "Le président de la région PACA a apporté son soutien à la candidature de Xavier Bertrand pour le congrès du parti Les Républicains (LR), tout en qualifiant Eric Ciotti de « faux-nez » de l’extrême droite.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/xavier-bertrand-refuse-le-soutien-de-renaud-muselier-apres-ses-attaques-contre-eric-ciotti-et-david-lisnard_6103322_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 19:16:51 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comparez les programmes des cinq prétendants à l’investiture des Républicains pour l’élection présidentielle grâce à notre visuel interactif", + "description": "Michel Barnier, Eric Ciotti, Valérie Pécresse, Philippe Juvin et Xavier Bertrand seront départagés par les votes des militants lors du congrès du parti, qui aura lieu du 1er au 4 décembre.", + "content": "Michel Barnier, Eric Ciotti, Valérie Pécresse, Philippe Juvin et Xavier Bertrand seront départagés par les votes des militants lors du congrès du parti, qui aura lieu du 1er au 4 décembre.", + "category": "", + "link": "https://www.lemonde.fr/les-decodeurs/article/2021/11/23/congres-lr-comparez-les-programmes-des-cinq-candidats_6103321_4355770.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 19:07:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Regain de tension entre les maires de banlieue et l’exécutif", + "description": "Pour l’association d’élus Ville et banlieue, le bilan du gouvernement en matière de politique de la ville est insuffisant.", + "content": "Pour l’association d’élus Ville et banlieue, le bilan du gouvernement en matière de politique de la ville est insuffisant.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/regain-de-tension-entre-les-maires-de-banlieue-et-l-executif_6103319_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 19:04:15 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lille-Salzbourg : suivez le match de Ligue des champions en direct", + "description": "Les Lillois ont dominé les Autrichiens 1-0, lors de la 5e journée de Ligue des champions. Cette victoire permet au LOSC de prendre la tête du groupe G et de rêver à la qualification en huitièmes.", + "content": "Les Lillois ont dominé les Autrichiens 1-0, lors de la 5e journée de Ligue des champions. Cette victoire permet au LOSC de prendre la tête du groupe G et de rêver à la qualification en huitièmes.", + "category": "", + "link": "https://www.lemonde.fr/football/live/2021/11/23/lille-salzbourg-suivez-en-direct-le-match-de-ligue-des-champions_6103316_1616938.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 19:00:09 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Sénat rejette le budget 2022, assimilé à un « budget de campagne électorale »", + "description": "La Chambre haute a voté contre le volet « recettes » du projet de budget du gouvernement pour 2022, rejetant, de fait, l’ensemble du texte en première lecture.", + "content": "La Chambre haute a voté contre le volet « recettes » du projet de budget du gouvernement pour 2022, rejetant, de fait, l’ensemble du texte en première lecture.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/le-senat-rejette-le-budget-2022-assimile-a-un-budget-de-campagne-electorale_6103314_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 18:53:51 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : l’OMS redoute 700 000 morts supplémentaires en Europe d’ici au printemps", + "description": "Dans l’Union européenne, 67,7 % de la population a reçu deux doses de vaccin, mais les écarts sont vertigineux entre les pays. Ainsi, seuls 24,2 % des Bulgares sont vaccinés contre 86,7 % des Portugais.", + "content": "Dans l’Union européenne, 67,7 % de la population a reçu deux doses de vaccin, mais les écarts sont vertigineux entre les pays. Ainsi, seuls 24,2 % des Bulgares sont vaccinés contre 86,7 % des Portugais.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/23/covid-19-l-oms-redoute-700-000-morts-supplementaires-en-europe-d-ici-au-printemps_6103311_3244.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 17:47:18 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’appel de 3 000 magistrats et d’une centaine de greffiers : « Nous ne voulons plus d’une justice qui n’écoute pas et qui chronomètre tout »", + "description": "Ce collectif de juges, substituts, greffiers dénonce, dans une tribune au « Monde », l’approche « gestionnaire » de la justice et souligne la « discordance » entre la volonté de rendre une justice de qualité et la réalité du quotidien, source de grandes souffrances.", + "content": "Ce collectif de juges, substituts, greffiers dénonce, dans une tribune au « Monde », l’approche « gestionnaire » de la justice et souligne la « discordance » entre la volonté de rendre une justice de qualité et la réalité du quotidien, source de grandes souffrances.", + "category": "", + "link": "https://www.lemonde.fr/idees/article/2021/11/23/l-appel-de-3-000-magistrats-et-d-une-centaine-de-greffiers-nous-ne-voulons-plus-d-une-justice-qui-n-ecoute-pas-et-qui-chronometre-tout_6103309_3232.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 17:30:14 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Commission européenne va établir une « liste noire » des sociétés complices du trafic de migrants vers la Biélorussie", + "description": "L’UE va également interdire la location d’avions européens à la compagnie Belavia, ont annoncé, mardi, les présidents des institutions européennes.", + "content": "L’UE va également interdire la location d’avions européens à la compagnie Belavia, ont annoncé, mardi, les présidents des institutions européennes.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/la-commission-va-etablir-une-liste-noire-des-societes-complices-du-trafic-de-migrants-vers-la-bielorussie_6103304_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 16:41:37 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Parlement européen adopte une nouvelle Politique agricole commune (PAC), à l’issue de longs débats", + "description": "Après trois ans et demi de négociations, les Vingt-sept et le Parlement européen se sont enfin entendus sur la réforme de la PAC, qui entrera en vigueur en janvier 2023. Mais les Verts et une partie de la gauche jugent qu’elle n’est pas assez ambitieuse pour l’environnement.", + "content": "Après trois ans et demi de négociations, les Vingt-sept et le Parlement européen se sont enfin entendus sur la réforme de la PAC, qui entrera en vigueur en janvier 2023. Mais les Verts et une partie de la gauche jugent qu’elle n’est pas assez ambitieuse pour l’environnement.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/le-parlement-europeen-adopte-une-nouvelle-pac-apres-de-longs-debats_6103302_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 16:34:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19, cas contacts, vaccinés ou pas… Le point sur les règles d’isolement à respecter en France", + "description": "En cas de test positif, et pour les vaccinés aussi bien que les non-vaccinés, il est nécessaire de respecter un isolement de dix jours. En revanche, les recommandations varient pour les cas contacts.", + "content": "En cas de test positif, et pour les vaccinés aussi bien que les non-vaccinés, il est nécessaire de respecter un isolement de dix jours. En revanche, les recommandations varient pour les cas contacts.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/23/covid-19-cas-contacts-vaccines-ou-pas-le-point-sur-les-regles-d-isolement-a-respecter-en-france_6103298_3244.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 15:56:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A la Martinique, des forces de l’ordre et des pompiers cibles de tirs d’armes à feu", + "description": "Les tirs n’ont pas fait de victimes. Des barrages bloquent toujours les principales routes de l’île, après un appel à la grève générale contre l’obligation vaccinale des soignants et pour des hausses de salaires.", + "content": "Les tirs n’ont pas fait de victimes. Des barrages bloquent toujours les principales routes de l’île, après un appel à la grève générale contre l’obligation vaccinale des soignants et pour des hausses de salaires.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/a-la-martinique-des-forces-de-l-ordre-et-des-pompiers-cibles-de-tirs-d-armes-a-feu_6103297_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 15:11:51 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La France appelle ses ressortissants à quitter « sans délai » l’Ethiopie en guerre", + "description": "L’ambassade à Addis-Abeba prévoit de faciliter le départ des Français sur des vols commerciaux en réservant des sièges et, « si nécessaire », d’affréter un vol charter.", + "content": "L’ambassade à Addis-Abeba prévoit de faciliter le départ des Français sur des vols commerciaux en réservant des sièges et, « si nécessaire », d’affréter un vol charter.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/23/la-france-appelle-ses-ressortissants-a-quitter-sans-delai-l-ethiopie-en-guerre_6103296_3212.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 15:10:35 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Turquie condamnée par la CEDH pour la détention provisoire « arbitraire » de 427 magistrats", + "description": "Ces juges et procureurs avaient été arrêtés pour « suspicion d’appartenance au FETO ». Cet acronyme désigne l’« Organisation terroriste des partisans de Fethullah » Gülen, accusé par Ankara d’avoir ourdi la tentative de putsch.", + "content": "Ces juges et procureurs avaient été arrêtés pour « suspicion d’appartenance au FETO ». Cet acronyme désigne l’« Organisation terroriste des partisans de Fethullah » Gülen, accusé par Ankara d’avoir ourdi la tentative de putsch.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/la-cedh-condamne-la-turquie-pour-la-detention-provisoire-arbitraire-de-427-magistrats_6103294_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 14:31:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "JO 2024 : la justice autorise la reprise des travaux de construction d’une piscine d’entraînement à Aubervilliers", + "description": "La cour administrative d’appel de Paris avait suspendu le permis de construire à la fin de septembre, invoquant des « doutes sérieux sur [sa] légalité », après une procédure d’urgence lancée par des opposants au projet.", + "content": "La cour administrative d’appel de Paris avait suspendu le permis de construire à la fin de septembre, invoquant des « doutes sérieux sur [sa] légalité », après une procédure d’urgence lancée par des opposants au projet.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/23/jo-2024-la-justice-autorise-la-reprise-des-travaux-de-construction-d-une-piscine-d-entrainement-a-aubervilliers_6103289_3242.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:54:45 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pétrole : les Etats-Unis puisent dans leurs réserves stratégiques pour tenter de faire baisser les prix", + "description": "Cette opération se fait en concertation avec d’autres Etats gros consommateurs d’or noir, en particulier la Chine, l’Inde, le Japon, la Corée du Sud ou encore le Royaume-Uni.", + "content": "Cette opération se fait en concertation avec d’autres Etats gros consommateurs d’or noir, en particulier la Chine, l’Inde, le Japon, la Corée du Sud ou encore le Royaume-Uni.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/23/petrole-les-etats-unis-puisent-dans-leurs-reserves-strategiques-pour-tenter-de-faire-baisser-les-prix_6103287_3234.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 13:47:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Interruption du match OL-OM : Gérald Darmanin veut travailler sur les interdictions de stade", + "description": "Les instances du football français se sont réunies au ministère de l’intérieur, mardi, pour commencer à tirer les conclusions de l’incident de dimanche, au Parc OL.", + "content": "Les instances du football français se sont réunies au ministère de l’intérieur, mardi, pour commencer à tirer les conclusions de l’incident de dimanche, au Parc OL.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/interruption-du-match-ol-om-gerald-darmanin-veut-travailler-sur-les-interdictions-de-stade_6103285_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:49:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tests PCR et antigéniques : Jean-Luc Mélenchon, Marine Le Pen et Michel Barnier demandent le retour de la gratuité", + "description": "Alors que le nombre de cas de Covid-19 repart à la hausse, une partie de l’opposition réclame que soit rétablie la gratuité, suspendue depuis le 15 octobre.", + "content": "Alors que le nombre de cas de Covid-19 repart à la hausse, une partie de l’opposition réclame que soit rétablie la gratuité, suspendue depuis le 15 octobre.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/covid-19-jean-luc-melenchon-marine-le-pen-et-michel-barnier-demandent-le-retour-de-la-gratuite-des-tests_6103284_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 12:29:00 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Immobilier : les prix des logements anciens augmentent de 7,4 % sur un an", + "description": "La hausse des prix est plus marquée en région, notamment pour les maisons. En Ile-de-France, la hausse est de 4 % sur un an ; à Paris, les prix restent stables.", + "content": "La hausse des prix est plus marquée en région, notamment pour les maisons. En Ile-de-France, la hausse est de 4 % sur un an ; à Paris, les prix restent stables.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/23/immobilier-les-prix-des-logements-anciens-augmentent-de-7-4-sur-un-an_6103278_3234.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:54:19 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les marchés financiers en équilibre précaire face à la hausse des taux d’intérêt", + "description": "Alors que le soutien public a alimenté la croissance des marchés durant la crise sanitaire, ces derniers risquent d’être impactés par le resserrement des politiques monétaires amorcé par les banques centrales à travers le monde.", + "content": "Alors que le soutien public a alimenté la croissance des marchés durant la crise sanitaire, ces derniers risquent d’être impactés par le resserrement des politiques monétaires amorcé par les banques centrales à travers le monde.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/23/les-marches-financiers-en-equilibre-precaire-face-a-la-hausse-des-taux-d-interet_6103275_3234.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:48:43 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’opposition biélorusse toujours en attente de gestes « concrets » de la part de l’Union européenne", + "description": "La conférence internationale sur la Biélorussie organisée à Vienne, lundi, a souligné les hésitations de l’Europe face au régime d’Alexandre Loukachenko.", + "content": "La conférence internationale sur la Biélorussie organisée à Vienne, lundi, a souligné les hésitations de l’Europe face au régime d’Alexandre Loukachenko.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/l-opposition-bielorusse-toujours-en-attente-de-gestes-concrets-de-la-part-de-l-union-europeenne_6103272_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:29:38 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Puy du Fou va lancer des croisières haut de gamme en train dans toute la France", + "description": "Le parc d’attractions vendéen va créer sa propre entreprise ferroviaire afin de proposer des spectacles itinérants à partir de 2023.", + "content": "Le parc d’attractions vendéen va créer sa propre entreprise ferroviaire afin de proposer des spectacles itinérants à partir de 2023.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/23/le-puy-du-fou-va-lancer-des-croisieres-en-train-haut-de-gamme_6103271_3234.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:24:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Roumanie : le général Nicolae Ciuca, un militaire chargé de gouverner un pays ravagé par le Covid-19", + "description": "Après deux mois de manœuvres politiques, la nomination de ce militaire tout juste entré en politique à la tête du gouvernement ne fait pas l’unanimité.", + "content": "Après deux mois de manœuvres politiques, la nomination de ce militaire tout juste entré en politique à la tête du gouvernement ne fait pas l’unanimité.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/en-roumanie-un-militaire-charge-de-sortir-le-pays-de-la-crise_6103268_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:10:42 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Près de 90 % des VTC sous-déclarent leur chiffre d’affaires", + "description": "Le Haut Conseil du financement de la protection sociale a diffusé, mardi, une note qui apporte de nouveaux chiffrages sur la fraude aux cotisations.", + "content": "Le Haut Conseil du financement de la protection sociale a diffusé, mardi, une note qui apporte de nouveaux chiffrages sur la fraude aux cotisations.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/travail-au-noir-pres-de-90-des-vtc-sous-declarent-leur-chiffre-d-affaires_6103265_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 11:02:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Kevin Spacey condamné à payer 31 millions de dollars à la production de « House of Cards »", + "description": "La société MRC demandait réparation pour avoir dû remanier le script de la série à succès afin d’en exclure l’acteur, accusé de harcèlement sexuel.", + "content": "La société MRC demandait réparation pour avoir dû remanier le script de la série à succès afin d’en exclure l’acteur, accusé de harcèlement sexuel.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/23/kevin-spacey-condamne-a-payer-31-millions-de-dollars-a-la-production-de-house-of-cards_6103260_3246.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:28:35 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ethiopie : Abiy Ahmed annonce se « mobiliser sur le front » pour mener la guerre contre les rebelles", + "description": "Les déclarations du premier ministre interviennent alors que le Front de libération du peuple du Tigré affirme progresser vers Addis-Abeba.", + "content": "Les déclarations du premier ministre interviennent alors que le Front de libération du peuple du Tigré affirme progresser vers Addis-Abeba.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/23/ethiopie-abiy-ahmed-annonce-se-mobiliser-sur-le-front-pour-mener-la-guerre-contre-les-rebelles_6103259_3212.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:22:01 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Guadeloupe : « L’obligation vaccinale des soignants et pompiers s’appliquera », prévient Sébastien Lecornu", + "description": "La fin de l’obligation vaccinale pour les soignants et les pompiers est une des revendications principales des manifestants. Le ministre des outre-mer, Sébastien Lecornu, a rappelé que « c’est que la loi de la République s’appliquera. »", + "content": "La fin de l’obligation vaccinale pour les soignants et les pompiers est une des revendications principales des manifestants. Le ministre des outre-mer, Sébastien Lecornu, a rappelé que « c’est que la loi de la République s’appliquera. »", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/conflit-social-en-guadeloupe-l-obligation-vaccinale-des-soignants-et-pompiers-s-appliquera-previent-sebastien-lecornu_6103252_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:08:33 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La situation financière des collectivités locales devrait s’améliorer en 2021", + "description": "Transferts de l’Etat, mesures de soutien, produits fiscaux en hausse… Selon un rapport de la Cour des comptes, les finances locales connaissent une embellie, qui ne chasse cependant pas toutes les interrogations pour le futur.", + "content": "Transferts de l’Etat, mesures de soutien, produits fiscaux en hausse… Selon un rapport de la Cour des comptes, les finances locales connaissent une embellie, qui ne chasse cependant pas toutes les interrogations pour le futur.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/la-situation-financiere-des-collectivites-locales-devrait-s-ameliorer-en-2021_6103251_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 10:00:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le ministre israélien de la défense, Benny Gantz, en visite au Maroc dans un contexte régional tendu", + "description": "Un an après la normalisation des relations entre les deux pays, ce déplacement vise à renforcer leur coopération sécuritaire.", + "content": "Un an après la normalisation des relations entre les deux pays, ce déplacement vise à renforcer leur coopération sécuritaire.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/23/le-ministre-israelien-de-la-defense-benny-gantz-en-visite-au-maroc-dans-un-contexte-regional-tendu_6103250_3212.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:57:45 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’écrivain américain Noah Gordon est mort", + "description": "Le romancier était connu pour ses œuvres sur l’histoire de la médecine et du judaïsme. Il avait 95 ans.", + "content": "Le romancier était connu pour ses œuvres sur l’histoire de la médecine et du judaïsme. Il avait 95 ans.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/23/l-ecrivain-americain-noah-gordon-est-mort_6103246_3246.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:16:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Après les néobanques, les investisseurs s’enthousiasment pour l’« assurtech »", + "description": "La néoassurance française Leocare annonce, mardi 23 novembre, une levée de 110 millions de dollars.", + "content": "La néoassurance française Leocare annonce, mardi 23 novembre, une levée de 110 millions de dollars.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/23/les-investisseurs-s-enthousiasment-pour-les-start-up-de-l-assurance_6103245_3234.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 09:08:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sages-femmes : un accord signé entre syndicats et gouvernement pour de nouvelles hausses de salaires", + "description": "En additionnant ces mesures aux 183 euros mensuels du Ségur de la santé, le gouvernement met en avant une « revalorisation nette de 500 euros par mois ». Mais le protocole ne satisfait pas tous les syndicats.", + "content": "En additionnant ces mesures aux 183 euros mensuels du Ségur de la santé, le gouvernement met en avant une « revalorisation nette de 500 euros par mois ». Mais le protocole ne satisfait pas tous les syndicats.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/sages-femmes-un-accord-signe-entre-les-syndicats-et-le-gouvernement-pour-de-nouvelles-hausses-de-salaires_6103244_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 08:37:40 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La série française « Dix pour cent » primée aux International Emmy Awards 2021", + "description": "La série, lancée en 2015 sur France Télévisions et qui triomphe aujourd’hui sur la plate-forme américaine Netflix, a remporté le prix de la meilleure comédie.", + "content": "La série, lancée en 2015 sur France Télévisions et qui triomphe aujourd’hui sur la plate-forme américaine Netflix, a remporté le prix de la meilleure comédie.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/23/la-serie-francaise-dix-pour-cent-primee-aux-international-emmy-awards-2021_6103242_3246.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:59:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Transat Jacques Vabre : Sébastien Rogues et Mathieu Souben franchissent la ligne les premiers en Martinique", + "description": "Arrivé dans la nuit à Fort-de-France, le duo s’impose en Ocean Fifty à bord de « Primonial » , en un peu plus de 15 jours et 13 heures.", + "content": "Arrivé dans la nuit à Fort-de-France, le duo s’impose en Ocean Fifty à bord de « Primonial » , en un peu plus de 15 jours et 13 heures.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/23/transat-jacques-vabre-sebastien-rogues-et-mathieu-souben-franchissent-la-ligne-les-premiers-en-martinique_6103241_3242.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:20:20 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jean-Louis Missika, l’ancien stratège d’Anne Hidalgo, contraint de renoncer à deux missions", + "description": "Après son départ, l’ancien adjoint à l’urbanisme avait pris des responsabilités dans deux entreprises. Il vient d’en démissionner. Le parquet est saisi de soupçons de conflit d’intérêts.", + "content": "Après son départ, l’ancien adjoint à l’urbanisme avait pris des responsabilités dans deux entreprises. Il vient d’en démissionner. Le parquet est saisi de soupçons de conflit d’intérêts.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/23/a-paris-jean-louis-missika-l-ancien-stratege-d-anne-hidalgo-dans-la-tourmente_6103240_823448.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:04:31 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : qui sont les 17 000 enfants de moins de 12 ans déjà vaccinés en France ?", + "description": "Contrairement aux Etats-Unis ou à Israël, la France n’a pas ouvert la vaccination aux jeunes enfants. Pourtant, les exceptions se multiplient, avec des justifications diverses.", + "content": "Contrairement aux Etats-Unis ou à Israël, la France n’a pas ouvert la vaccination aux jeunes enfants. Pourtant, les exceptions se multiplient, avec des justifications diverses.", + "category": "", + "link": "https://www.lemonde.fr/les-decodeurs/article/2021/11/23/covid-19-qui-sont-les-17-000-enfants-de-moins-de-12-ans-deja-vaccines_6103239_4355770.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 07:00:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Bulgarie, au moins 45 morts dans un accident de car", + "description": "Le drame, dont la cause reste indéterminée, a eu lieu dans la nuit de lundi à mardi, à 40 kilomètres au sud de Sofia. Sept passagers ont pu être sauvés et transférés à l’hôpital. Le véhicule, immatriculé en Macédoine du Nord, venait d’Istanbul.", + "content": "Le drame, dont la cause reste indéterminée, a eu lieu dans la nuit de lundi à mardi, à 40 kilomètres au sud de Sofia. Sept passagers ont pu être sauvés et transférés à l’hôpital. Le véhicule, immatriculé en Macédoine du Nord, venait d’Istanbul.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/au-moins-45-morts-en-bulgarie-dans-un-accident-de-car_6103234_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 06:22:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un projet de mine géante de lithium, « or blanc » indispensable à la fabrication des voitures électriques, menace une région du Nevada", + "description": "Dans une enquête en deux volets, « Le Monde » raconte la ruée mondiale vers ce nouvel « or blanc » indispensable à la fabrication des voitures électriques. Première partie : Thacker Pass, le plus grand gisement d’Amérique du Nord, où toute une zone risque d’être sacrifiée au nom de la transition énergétique.", + "content": "Dans une enquête en deux volets, « Le Monde » raconte la ruée mondiale vers ce nouvel « or blanc » indispensable à la fabrication des voitures électriques. Première partie : Thacker Pass, le plus grand gisement d’Amérique du Nord, où toute une zone risque d’être sacrifiée au nom de la transition énergétique.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/23/dans-le-nevada-un-projet-de-mine-geante-de-lithium-menace-toute-une-region_6103223_3244.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:47:33 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les Restos du cœur lancent leur 37e campagne d’hiver, marquée par « l’aggravation de la précarité »", + "description": "Selon Patrice Douret, le président de l’association d’aide alimentaire, plus que de fabriquer de « nouveaux pauvres », l’épidémie de Covid-19 a surtout enfoncé ceux qui étaient déjà fragilisés.", + "content": "Selon Patrice Douret, le président de l’association d’aide alimentaire, plus que de fabriquer de « nouveaux pauvres », l’épidémie de Covid-19 a surtout enfoncé ceux qui étaient déjà fragilisés.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/les-restos-du-c-ur-lancent-leur-37e-campagne-d-hiver-marquee-par-l-aggravation-de-la-precarite-a-cause-de-la-crise-sanitaire_6103218_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:14:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comment l’Egypte a dévoyé l’aide militaire antiterroriste française pour cibler des réseaux ordinaires de trafiquants ou de migrants", + "description": "Selon le média « Disclose », Le Caire utiliserait des informations fournies par Paris dans le cadre de la lutte contre le terrorisme pour cibler des réseaux ordinaires de trafiquants d’armes, de drogues ou de migrants, et donc causer la mort de civils.", + "content": "Selon le média « Disclose », Le Caire utiliserait des informations fournies par Paris dans le cadre de la lutte contre le terrorisme pour cibler des réseaux ordinaires de trafiquants d’armes, de drogues ou de migrants, et donc causer la mort de civils.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/une-mission-clandestine-du-renseignement-militaire-francais-en-egypte-mise-en-cause_6103217_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 05:08:15 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le trafic en eaux troubles des civelles, en danger d’extinction et objet d’un intense braconnage à destination de l’Asie", + "description": "Alors que son exportation est interdite hors Union européenne, l’alevin d’anguille est l’objet d’un intense braconnage à destination de l’Asie. La campagne de pêche, qui commence en ce mois de novembre, s’annonce sous haute tension.", + "content": "Alors que son exportation est interdite hors Union européenne, l’alevin d’anguille est l’objet d’un intense braconnage à destination de l’Asie. La campagne de pêche, qui commence en ce mois de novembre, s’annonce sous haute tension.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/le-trafic-en-eaux-troubles-des-civelles_6103212_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 04:42:11 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’ancien président de Corée du Sud, Chun Doo-hwan, est mort", + "description": "Ex-chef d’état-major de l’armée sud-coréenne, il accède au pouvoir en 1980 et met en place une dictature militaire marquée par la répression sanglante des émeutes dans la ville de Gwangju. Il sera contraint de démissionner en 1988. Il est mort mardi, à l’âge de 90 ans.", + "content": "Ex-chef d’état-major de l’armée sud-coréenne, il accède au pouvoir en 1980 et met en place une dictature militaire marquée par la répression sanglante des émeutes dans la ville de Gwangju. Il sera contraint de démissionner en 1988. Il est mort mardi, à l’âge de 90 ans.", + "category": "", + "link": "https://www.lemonde.fr/disparitions/article/2021/11/23/l-ancien-president-de-coree-du-sud-chun-doo-hwan-est-mort_6103211_3382.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 04:32:42 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Des syndicats américains s’inquiètent de l’acquisition par Amazon du studio hollywoodien MGM", + "description": "Une organisation syndicale, qui revendique près de quatre millions d’employés, redoute le pouvoir croissant du géant des technologies sur le streaming vidéo, et appelle l’autorité de la concurrence américaine à s’opposer à ce rachat annoncé en mai dernier.", + "content": "Une organisation syndicale, qui revendique près de quatre millions d’employés, redoute le pouvoir croissant du géant des technologies sur le streaming vidéo, et appelle l’autorité de la concurrence américaine à s’opposer à ce rachat annoncé en mai dernier.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/23/des-syndicats-americains-s-inquietent-de-l-acquisition-par-amazon-du-studio-hollywoodien-mgm_6103206_3234.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 03:36:11 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manque de considération, maltraitance et burn-out : la grande fatigue des sages-femmes", + "description": "Epuisés par leurs études et leurs conditions de travail, étudiants et étudiantes sont de plus en plus nombreux à douter, dès leurs premières années d’exercice.", + "content": "Epuisés par leurs études et leurs conditions de travail, étudiants et étudiantes sont de plus en plus nombreux à douter, dès leurs premières années d’exercice.", + "category": "", + "link": "https://www.lemonde.fr/campus/article/2021/11/23/malaise-maltraitances-et-burn-out-chez-les-jeunes-sages-femmes-l-appel-de-la-reconversion_6103205_4401467.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 03:29:02 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La mission spatiale américaine DART a décollé tôt mercredi 24 novembre de la base de Vandenberg, en Californie.", + "description": "La sonde de plus d’une demi-tonne de la NASA a décollé mercredi matin. Son but : tenter de modifier la trajectoire de l’astéroïde Didymos en s’y écrasant à la vitesse de 6,6 kilomètres par seconde.", + "content": "La sonde de plus d’une demi-tonne de la NASA a décollé mercredi matin. Son but : tenter de modifier la trajectoire de l’astéroïde Didymos en s’y écrasant à la vitesse de 6,6 kilomètres par seconde.", + "category": "", + "link": "https://www.lemonde.fr/sciences/article/2021/11/23/dart-une-mission-kamikaze-pour-apprendre-a-se-proteger-des-asteroides_6103204_1650684.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 03:22:27 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les Etats-Unis et le Royaume-Uni veulent devancer la Russie pour récupérer l’épave d’un avion furtif", + "description": "L’Alliance atlantique s’inquiète que Moscou puisse mettre la main sur la technologie d’un F-35B tombé en mer Méditerranée après son décollage d’un porte-avions britannique.", + "content": "L’Alliance atlantique s’inquiète que Moscou puisse mettre la main sur la technologie d’un F-35B tombé en mer Méditerranée après son décollage d’un porte-avions britannique.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/23/les-etats-unis-et-le-royaume-uni-veulent-devancer-la-russie-pour-recuperer-l-epave-d-un-avion-furtif_6103203_3210.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 02:29:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les Milandes, le paradis perdu de Joséphine Baker", + "description": "L’artiste française d’origine américaine, qui entrera au Panthéon le 30 novembre, avait adopté douze enfants du monde entier. Pour eux, elle avait fait d’un hameau périgourdin la « capitale de la fraternité ». Jusqu’à ce que ses créanciers l’obligent à vendre.", + "content": "L’artiste française d’origine américaine, qui entrera au Panthéon le 30 novembre, avait adopté douze enfants du monde entier. Pour eux, elle avait fait d’un hameau périgourdin la « capitale de la fraternité ». Jusqu’à ce que ses créanciers l’obligent à vendre.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/23/les-milandes-le-paradis-perdu-de-josephine-baker_6103199_3224.html", + "creator": "", + "pubDate": "Tue, 23 Nov 2021 01:55:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aux Etats-Unis, le conducteur ayant endeuillé une parade de Noël était en fuite", + "description": "L’homme de 39 ans, au lourd casier judiciaire, fuyait les lieux d’une dispute afin de ne pas se faire interpeller, mais il n’était pas poursuivi au moment où il a percuté la foule, causant cinq morts.", + "content": "L’homme de 39 ans, au lourd casier judiciaire, fuyait les lieux d’une dispute afin de ne pas se faire interpeller, mais il n’était pas poursuivi au moment où il a percuté la foule, causant cinq morts.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/aux-etats-unis-le-conducteur-ayant-endeuille-une-parade-de-noel-etait-en-fuite_6103198_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 23:56:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le premier ministre, Jean Castex, diagnostiqué positif au Covid-19", + "description": "Cas contact après qu’une de ses filles, âgée de 11 ans, a été reconnue atteinte, il s’était astreint à l’isolement lundi en fin de journée et avait conduit la réunion autour des élus de Guadeloupe par visioconférence.", + "content": "Cas contact après qu’une de ses filles, âgée de 11 ans, a été reconnue atteinte, il s’était astreint à l’isolement lundi en fin de journée et avait conduit la réunion autour des élus de Guadeloupe par visioconférence.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/22/le-premier-ministre-jean-castex-diagnostique-positif-au-covid-19_6103195_823448.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 22:09:41 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Violences à la Guadeloupe : l’ARS dénonce des « agressions physiques de professionnels de santé »", + "description": "Le premier ministre, Jean Castex, a annoncé, lundi soir, la création d’une « instance de dialogue », afin « de convaincre et d’accompagner individuellement, humainement » les professionnels concernés par l’obligation vaccinale.", + "content": "Le premier ministre, Jean Castex, a annoncé, lundi soir, la création d’une « instance de dialogue », afin « de convaincre et d’accompagner individuellement, humainement » les professionnels concernés par l’obligation vaccinale.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/violences-a-la-guadeloupe-l-ars-denonce-des-agressions-physiques-de-professionnels-de-sante_6103194_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 22:01:36 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le plan « pollinisateurs » du gouvernement suscite la colère des apiculteurs", + "description": "Pour stopper le déclin des insectes, les horaires d’épandage des produits phytosanitaires sur les cultures seront limités. Une mesure jugée insuffisante par les syndicats apicoles et les associations de défense de l’environnement.", + "content": "Pour stopper le déclin des insectes, les horaires d’épandage des produits phytosanitaires sur les cultures seront limités. Une mesure jugée insuffisante par les syndicats apicoles et les associations de défense de l’environnement.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/22/le-plan-pollinisateurs-du-gouvernement-suscite-la-colere-des-apiculteurs_6103191_3244.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 21:22:59 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Yannick Jadot veut rassembler la gauche à la présidentielle, Anne Hidalgo répond que seule « la social-démocratie » peut y parvenir", + "description": "Persuadés que la gauche peut encore gagner alors que l’élection présidentielle aura lieu dans moins de cinq mois, les candidats écologistes et socialistes appellent au rassemblement… sans tomber d’accord sur qui peut encore l’incarner.", + "content": "Persuadés que la gauche peut encore gagner alors que l’élection présidentielle aura lieu dans moins de cinq mois, les candidats écologistes et socialistes appellent au rassemblement… sans tomber d’accord sur qui peut encore l’incarner.", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/22/yannick-jadot-veut-rassembler-la-gauche-a-la-presidentielle-anne-hidalgo-repond-que-seule-la-social-democratie-peut-y-parvenir_6103189_6059010.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:55:05 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vaccin contre le Covid-19 : la perspective d’une dose de rappel pour tous les adultes se précise", + "description": "Selon le conseil scientifique et le conseil d’orientation de la stratégie vaccinale, l’élargissement du rappel à tous les adultes, six mois après la vaccination, pourrait permettre de « freiner l’épidémie et réduire le nombre de formes graves ».", + "content": "Selon le conseil scientifique et le conseil d’orientation de la stratégie vaccinale, l’élargissement du rappel à tous les adultes, six mois après la vaccination, pourrait permettre de « freiner l’épidémie et réduire le nombre de formes graves ».", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/22/vaccin-covid-19-la-perspective-d-une-troisieme-dose-se-precise_6103186_3244.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:19:26 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : la Slovaquie annonce des restrictions pour les non-vaccinés, l’AEM évalue l’efficacité d’un rappel avec le vaccin de Johnson & Johnson", + "description": "Le nombre de contaminations par le coronavirus augmente à nouveau et une partie de l’Europe rétablit d’importantes restrictions, comme la Slovaquie, qui fait face à l’un des taux d’incidence les plus élevés du monde.", + "content": "Le nombre de contaminations par le coronavirus augmente à nouveau et une partie de l’Europe rétablit d’importantes restrictions, comme la Slovaquie, qui fait face à l’un des taux d’incidence les plus élevés du monde.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/22/covid-19-la-slovaquie-annonce-des-restrictions-pour-les-non-vaccines-l-aem-evalue-l-efficacite-d-un-rappel-avec-le-vaccin-de-johnson-amp-johnson_6103185_3244.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:16:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La délicate question de l’indétermination sexuelle à la naissance : les soins médicaux précoces et le consentement de l’enfant en débat", + "description": "Certains enfants présentent des variations du développement génital brouillant leur assignation à un genre. Faut-il intervenir de façon précoce pour « normaliser le corps » ? Attendre l’âge d’un consentement éclairé ? La question divise... ", + "content": "Certains enfants présentent des variations du développement génital brouillant leur assignation à un genre. Faut-il intervenir de façon précoce pour « normaliser le corps » ? Attendre l’âge d’un consentement éclairé ? La question divise... ", + "category": "", + "link": "https://www.lemonde.fr/sciences/article/2021/11/22/enfants-intersexes-les-pratiques-medicales-en-question_6103183_1650684.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 19:02:53 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aux Canaries, l’éruption du volcan Cumbre Vieja provoque le confinement de 3 000 personnes", + "description": "Ce confinement a été décrété pour faire face « aux possibles émanations de gaz nocifs pour la santé » liées à l’arrivée dans la mer d’une nouvelle coulée de lave.", + "content": "Ce confinement a été décrété pour faire face « aux possibles émanations de gaz nocifs pour la santé » liées à l’arrivée dans la mer d’une nouvelle coulée de lave.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/22/aux-canaries-3-000-personnes-confinees-a-la-suite-de-l-eruption-du-volcan-cumbre-vieja_6103180_3244.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 18:06:13 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Guadeloupe : trois questions sur la mobilisation contre le passe sanitaire et l’obligation vaccinale", + "description": "Depuis une semaine, une grève générale a été décrétée sur l’île et des débordements ont conduit à l’interpellation de soixante-sept personnes à la suite d’affrontements avec les forces de l’ordre, de violences urbaines et de pillages.", + "content": "Depuis une semaine, une grève générale a été décrétée sur l’île et des débordements ont conduit à l’interpellation de soixante-sept personnes à la suite d’affrontements avec les forces de l’ordre, de violences urbaines et de pillages.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/guadeloupe-trois-questions-sur-la-mobilisation-contre-le-passe-sanitaire-et-l-obligation-vaccinale_6103176_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:30:03 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "RDC : « des dizaines de morts » dans des attaques contre des villages et un camp de déplacés en Ituri", + "description": "Selon le Baromètre sécuritaire du Kivu, les assaillants sont des miliciens de la Codeco, un groupe constitué de membres de la communauté lendu.", + "content": "Selon le Baromètre sécuritaire du Kivu, les assaillants sont des miliciens de la Codeco, un groupe constitué de membres de la communauté lendu.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/22/rdc-des-dizaines-de-morts-dans-des-attaques-contre-des-villages-et-un-camp-de-deplaces-en-ituri_6103174_3212.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 17:05:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Electricité : RTE se prépare à un hiver sous « vigilance »", + "description": "Le gestionnaire national du Réseau de transport d’électricité (RTE) prône plus de prudence pour janvier et février, période la plus exposée aux coups de froid.", + "content": "Le gestionnaire national du Réseau de transport d’électricité (RTE) prône plus de prudence pour janvier et février, période la plus exposée aux coups de froid.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/22/le-gestionnaire-du-reseau-electrique-rte-se-prepare-a-un-hiver-sous-vigilance_6103171_3234.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:57:14 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Jerome Powell devrait conserver la présidence de la Réserve fédérale américaine", + "description": "Le prochain mandat, qui commencera en février, s’annonce plein de défis, notamment en matière d’inclusion des minorités. Sa candidature doit être approuvée par le Sénat, contrôlé de justesse par les démocrates.", + "content": "Le prochain mandat, qui commencera en février, s’annonce plein de défis, notamment en matière d’inclusion des minorités. Sa candidature doit être approuvée par le Sénat, contrôlé de justesse par les démocrates.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/22/jerome-powell-va-conserver-la-presidence-de-la-fed_6103170_3234.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:53:29 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Présidentielle 2022 : La République en marche déjà en quête des parrainages pour Emmanuel Macron", + "description": "Lundi, une réunion a eu lieu dans la matinée au siège du parti présidentiel, à Paris, pour organiser la collecte des parrainages d’élus en faveur du locataire de l’Elysée.", + "content": "Lundi, une réunion a eu lieu dans la matinée au siège du parti présidentiel, à Paris, pour organiser la collecte des parrainages d’élus en faveur du locataire de l’Elysée.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/22/presidentielle-2022-la-republique-en-marche-deja-en-quete-des-parrainages-pour-emmanuel-macron_6103169_823448.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:41:01 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Conseil d’Etat ordonne d’améliorer les conditions d’hygiène en garde à vue", + "description": "L’instance évoque des « dysfonctionnements de caractère structurel » sur tout le territoire, qui concernent notamment la propreté des locaux et du matériel de couchage.", + "content": "L’instance évoque des « dysfonctionnements de caractère structurel » sur tout le territoire, qui concernent notamment la propreté des locaux et du matériel de couchage.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/le-conseil-d-etat-ordonne-d-ameliorer-les-conditions-d-hygiene-en-garde-a-vue_6103168_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 16:11:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Soupçonné de radicalisation, un policier porte plainte contre Christophe Castaner pour discrimination", + "description": "Hervé C. avait été suspendu de ses fonctions à la Préfecture de police de Paris quelques jours après que Mickaël Harpon, un informaticien converti à l’islam, avait tué quatre de ses collègues.", + "content": "Hervé C. avait été suspendu de ses fonctions à la Préfecture de police de Paris quelques jours après que Mickaël Harpon, un informaticien converti à l’islam, avait tué quatre de ses collègues.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/soupconne-de-radicalisation-un-policier-porte-plainte-contre-christophe-castaner-pour-discrimination_6103163_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 15:32:14 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nucléaire : lancement d’une concertation publique sur un projet de piscine de stockage de combustibles", + "description": "Chacun peut, jusqu’au 18 février sur le site Internet projet-piscine.edf.fr, s’exprimer sur ce projet de bassin, qui vise à « éviter la saturation » des piscines actuelles de La Hague.", + "content": "Chacun peut, jusqu’au 18 février sur le site Internet projet-piscine.edf.fr, s’exprimer sur ce projet de bassin, qui vise à « éviter la saturation » des piscines actuelles de La Hague.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/22/nucleaire-lancement-d-une-concertation-publique-sur-un-projet-de-piscine-de-stockage-de-combustibles_6103153_3244.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 13:41:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’Egypte détourne des renseignements anti-terroristes fournis par la France pour cibler des civils, selon « Disclose »", + "description": "D’après le média d’investigation, l’Egypte se sert d’une aide militaire française destinée à lutter contre le terrorisme afin de bombarder des civils suspectés d’être des trafiquants. La ministre des armées a demandé l’ouverture d’une enquête.", + "content": "D’après le média d’investigation, l’Egypte se sert d’une aide militaire française destinée à lutter contre le terrorisme afin de bombarder des civils suspectés d’être des trafiquants. La ministre des armées a demandé l’ouverture d’une enquête.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/lutte-contre-le-terrorisme-l-egypte-detourne-des-renseignements-fournis-par-la-france-pour-cibler-des-civils-selon-disclose_6103149_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:31:06 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au Royaume-Uni, les bornes de recharge pour voiture électrique seront obligatoires dans les nouvelles constructions dès 2022", + "description": "Le gouvernement, qui espère 145 000 nouveaux points de recharge chaque année, a fixé à 2030 l’interdiction des ventes de nouveaux véhicules essence et diesel.", + "content": "Le gouvernement, qui espère 145 000 nouveaux points de recharge chaque année, a fixé à 2030 l’interdiction des ventes de nouveaux véhicules essence et diesel.", + "category": "", + "link": "https://www.lemonde.fr/climat/article/2021/11/22/voitures-electriques-le-royaume-uni-rend-obligatoire-l-installation-de-bornes-de-recharge-dans-les-nouvelles-constructions-des-2022_6103148_1652612.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:07:25 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Emmanuel Macron a rencontré des anciens salariés de Whirlpool à Amiens", + "description": "La rencontre de lundi matin, avec neuf anciens de Whirlpool, dont quatre ex-syndicalistes, a été dévoilée sur Twitter par François Ruffin, le député La France insoumise (LFI) de la Somme.", + "content": "La rencontre de lundi matin, avec neuf anciens de Whirlpool, dont quatre ex-syndicalistes, a été dévoilée sur Twitter par François Ruffin, le député La France insoumise (LFI) de la Somme.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/22/emmanuel-macron-a-rencontre-des-anciens-salaries-de-whirlpool-a-amiens_6103147_823448.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 12:00:19 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Grèce, l’aide aux migrants criminalisée", + "description": "Après le report de leur procès à Lesbos, 24 humanitaires accusés d’« espionnage » et d’aide à « l’immigration illégale » restent suspendus à une procédure interminable.", + "content": "Après le report de leur procès à Lesbos, 24 humanitaires accusés d’« espionnage » et d’aide à « l’immigration illégale » restent suspendus à une procédure interminable.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/en-grece-l-aide-aux-migrants-criminalisee_6103140_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:59:41 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les violences conjugales ont augmenté de 10 % en 2020, selon le ministère de l’intérieur", + "description": "Plus de 139 000 femmes ont fait, cette année-là, l’objet de violences de la part de leur conjoint ou ancien conjoint. Les chiffres du ministère ne comptabilisent pas les homicides ni les féminicides.", + "content": "Plus de 139 000 femmes ont fait, cette année-là, l’objet de violences de la part de leur conjoint ou ancien conjoint. Les chiffres du ministère ne comptabilisent pas les homicides ni les féminicides.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/les-violences-conjugales-ont-augmente-de-10-en-2020-selon-le-ministere-de-l-interieur_6103138_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:47:47 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’offre de KKR sur Telecom Italia suscite des réticences", + "description": "Le fonds d’investissement américain a publié une manifestation d’intérêt, non contraignante à ce stade, qui valorise l’opérateur italien à près de 11 milliards d’euros.", + "content": "Le fonds d’investissement américain a publié une manifestation d’intérêt, non contraignante à ce stade, qui valorise l’opérateur italien à près de 11 milliards d’euros.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/22/l-offre-de-kkr-sur-telecom-italia-suscite-des-reticences_6103136_3234.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:40:15 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Poste condamnée pour « faute inexcusable » dans le suicide d’un cadre supérieur", + "description": "Dans un arrêt, la cour d’appel de Paris a jugé que l’établissement public avait manqué à son obligation légale de protéger la santé de son salarié.", + "content": "Dans un arrêt, la cour d’appel de Paris a jugé que l’établissement public avait manqué à son obligation légale de protéger la santé de son salarié.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/22/la-poste-condamnee-pour-faute-inexcusable-dans-le-suicide-d-un-cadre-superieur_6103131_3234.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:28:30 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La traversée dantesque de trois nageurs français met en lumière la pollution du lac Titicaca", + "description": "Le vice-champion du monde handisport français Théo Curin, amputé des quatre membres, et ses deux acolytes ont parcouru, pendant dix jours et en totale autonomie, le plus grand lac d’eau douce d’Amérique du Sud, asphyxié par de multiples rejets et déchets.", + "content": "Le vice-champion du monde handisport français Théo Curin, amputé des quatre membres, et ses deux acolytes ont parcouru, pendant dix jours et en totale autonomie, le plus grand lac d’eau douce d’Amérique du Sud, asphyxié par de multiples rejets et déchets.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/22/la-traversee-dantesque-de-trois-nageurs-francais-met-en-lumiere-la-pollution-du-lac-titicaca_6103129_3244.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:26:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Football : l’Olympique lyonnais sanctionné d’un huis clos total à titre conservatoire après des incidents face à l’OM", + "description": "La commission de discipline de la Ligue de football professionnel (LFP) a pris cette décision lundi au lendemain du match contre l’Olympique de Marseille, arrêté après des incidents. La rencontre opposant l’OL au Stade de Reims le 1er décembre se jouera donc sans spectateurs et des mesures définitives seront prononcées par la LFP à l’issue de l’instruction qui sera rendue le 8 décembre.", + "content": "La commission de discipline de la Ligue de football professionnel (LFP) a pris cette décision lundi au lendemain du match contre l’Olympique de Marseille, arrêté après des incidents. La rencontre opposant l’OL au Stade de Reims le 1er décembre se jouera donc sans spectateurs et des mesures définitives seront prononcées par la LFP à l’issue de l’instruction qui sera rendue le 8 décembre.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/inadmissible-minable-une-honte-vives-reactions-politiques-apres-l-interruption-du-match-lyon-marseille_6103128_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:22:46 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Quand policiers et gendarmes français font le plein d’essence sans autorisation au Luxembourg", + "description": "Des membres des forces de l’ordre du Grand-Duché, appuyés par les témoignages d’habitants, alertent sur des intrusions répétées de leurs collègues lorrains.", + "content": "Des membres des forces de l’ordre du Grand-Duché, appuyés par les témoignages d’habitants, alertent sur des intrusions répétées de leurs collègues lorrains.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/quand-policiers-et-gendarmes-francais-font-le-plein-d-essence-sans-autorisation-au-luxembourg_6103124_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 10:00:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : la Nouvelle-Zélande et l’Australie assouplissent leurs restrictions sanitaires", + "description": "Deux pays océaniens assouplissent leurs mesures de lutte contre l’épidémie, après avoir longtemps appliqué une stratégie « zéro Covid ».", + "content": "Deux pays océaniens assouplissent leurs mesures de lutte contre l’épidémie, après avoir longtemps appliqué une stratégie « zéro Covid ».", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/covid-19-dans-le-monde-la-nouvelle-zelande-abandonne-les-confinements-l-australie-rouvre-ses-frontieres-a-certains-etrangers_6103123_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:55:00 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Lyon, six hommes devant la justice pour un braquage à 40 millions de francs suisses", + "description": "L’attaque au fourgon blindé, perpétrée en 2017 entre Lausanne et Genève, est emblématique de la manière dont le banditisme lyonnais a multiplié, ces dernières années, les incursions au-delà de la frontière helvétique.", + "content": "L’attaque au fourgon blindé, perpétrée en 2017 entre Lausanne et Genève, est emblématique de la manière dont le banditisme lyonnais a multiplié, ces dernières années, les incursions au-delà de la frontière helvétique.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/a-lyon-six-hommes-devant-la-justice-pour-un-braquage-a-40-millions-de-francs-suisses_6103120_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 09:25:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Crise des sous-marins : l’Australie signe son premier accord avec les Etats-Unis et le Royaume-Uni", + "description": "Le ministre de la défense australien a signé avec les diplomates britannique et américain un texte autorisant l’échange d’« informations sur la propulsion nucléaire navale » entre leurs pays. Cette alliance avait provoqué une brouille entre Paris et Canberra.", + "content": "Le ministre de la défense australien a signé avec les diplomates britannique et américain un texte autorisant l’échange d’« informations sur la propulsion nucléaire navale » entre leurs pays. Cette alliance avait provoqué une brouille entre Paris et Canberra.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/crise-des-sous-marins-l-australie-signe-son-premier-accord-avec-les-etats-unis-et-le-royaume-uni_6103115_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 06:59:51 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Haïti : libération annoncée de deux des 17 missionnaires nord-américains enlevés à la mi-octobre", + "description": "L’organisation Christian Aid Ministries, à laquelle appartiennent les otages, a donné l’information sans davantage de détails.", + "content": "L’organisation Christian Aid Ministries, à laquelle appartiennent les otages, a donné l’information sans davantage de détails.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/haiti-liberation-annoncee-de-deux-des-dix-sept-missionnaires-nord-americains-enleves-mi-octobre_6103114_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 06:26:17 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au Venezuela, le pouvoir s’assure une victoire écrasante aux élections régionales", + "description": "Le parti de Nicolas Maduro a remporté 20 des 23 postes de gouverneur ainsi que la mairie de Caracas face à une opposition divisée qui participait pour la première fois à un scrutin depuis 2017.", + "content": "Le parti de Nicolas Maduro a remporté 20 des 23 postes de gouverneur ainsi que la mairie de Caracas face à une opposition divisée qui participait pour la première fois à un scrutin depuis 2017.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/au-venezuela-le-pouvoir-s-assure-une-victoire-ecrasante-aux-elections-regionales_6103111_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 06:03:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les démissions d’enseignants ne cessent d’augmenter. L’éducation nationale tente de freiner les demandes de départ, sans vraiment répondre au malaise", + "description": "Des stagiaires qui renoncent à entrer dans le métier, des professeurs expérimentés qui souhaitent le quitter… Face à cette désaffection grandissante, l’institution tente de retenir ses agents, faut de candidats pour les remplacer", + "content": "Des stagiaires qui renoncent à entrer dans le métier, des professeurs expérimentés qui souhaitent le quitter… Face à cette désaffection grandissante, l’institution tente de retenir ses agents, faut de candidats pour les remplacer", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/les-demissions-d-enseignants-un-phenomene-en-expansion_6103110_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 06:00:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pouvoir d’achat : la tension monte sur les salaires et les grèves se multiplient dans des secteurs jusqu’ici peu habitués aux mobilisations", + "description": "Decathlon, Labeyrie, Leroy-Merlin… Les mouvements de grève se multiplient dans de grandes entreprises habituellement peu touchées par ce type de conflit social. En cause, des rémunérations jugées trop basses alors que l’inflation rogne le pouvoir d’achat.", + "content": "Decathlon, Labeyrie, Leroy-Merlin… Les mouvements de grève se multiplient dans de grandes entreprises habituellement peu touchées par ce type de conflit social. En cause, des rémunérations jugées trop basses alors que l’inflation rogne le pouvoir d’achat.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/22/la-tape-dans-le-dos-ne-paye-pas-le-loyer-dans-les-entreprises-la-tension-monte-sur-les-salaires_6103104_3234.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 05:53:48 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« Est-ce qu’ils nous voient comme des terroristes ? » : après sept jours de grève en Guadeloupe, la colère ne retombe pas", + "description": "Dans le département d’outre-mer, la contestation de l’obligation vaccinale des soignants s’est muée en expression d’un profond malaise social. Soixante-sept personnes ont été interpellées et des barrages bloquent toujours plusieurs routes de l’île.", + "content": "Dans le département d’outre-mer, la contestation de l’obligation vaccinale des soignants s’est muée en expression d’un profond malaise social. Soixante-sept personnes ont été interpellées et des barrages bloquent toujours plusieurs routes de l’île.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/est-ce-qu-ils-nous-voient-comme-des-terroristes-apres-sept-jours-de-greve-en-guadeloupe-la-colere-ne-retombe-pas_6103102_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 05:47:37 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aux Etats-Unis, une voiture fonce dans une parade de Noël, faisant au moins cinq morts et des dizaines de blessés", + "description": "Le drame s’est produit à Waukesha, dans le Wisconsin, et le bilan, provisoire, devrait encore augmenter. Un suspect a été interpellé, mais aucune piste n’était privilégiée à ce stade de l’enquête.", + "content": "Le drame s’est produit à Waukesha, dans le Wisconsin, et le bilan, provisoire, devrait encore augmenter. Un suspect a été interpellé, mais aucune piste n’était privilégiée à ce stade de l’enquête.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/aux-etats-unis-une-voiture-cause-plusieurs-morts-en-foncant-dans-une-parade-de-noel_6103101_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 05:46:25 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lors d’une visite à Amiens, le président de la République a assuré l’île de la « solidarité » de la nation face à une « situation explosive ».", + "description": "Le mouvement né de la contestation de l’obligation vaccinale a dégénéré depuis quelques jours en crise sociale. Le chef de l’Etat a reconnu que la situation était « très explosive ».", + "content": "Le mouvement né de la contestation de l’obligation vaccinale a dégénéré depuis quelques jours en crise sociale. Le chef de l’Etat a reconnu que la situation était « très explosive ».", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/22/guadeloupe-apres-les-violences-urbaines-trente-personnes-jugees-en-comparution-immediate-des-lundi_6103093_3224.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 04:15:30 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Chili : duel entre l’extrême droite et la coalition de gauche pour le second tour de la présidentielle", + "description": "Selon des résultats quasi définitifs, José Antonio Kast, le chef du Parti républicain, devance, avec 28 % des voix, l’ancien leader étudiant de gauche Gabriel Boric, proche des 26 %.", + "content": "Selon des résultats quasi définitifs, José Antonio Kast, le chef du Parti républicain, devance, avec 28 % des voix, l’ancien leader étudiant de gauche Gabriel Boric, proche des 26 %.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/22/chili-le-second-tour-de-la-presidentielle-au-chili-s-oriente-vers-un-duel-entre-la-droite-ultra-conservatrice-et-la-coalition-de-gauche_6103091_3210.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 03:41:24 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Débat Les Républicains : des candidats qui tentent d’élargir l’horizon", + "description": "Pour l’avant-dernier débat avant le congrès qui doit désigner le candidat à l’élection présidentielle, les cinq prétendants sont sortis des thèmes balisés.", + "content": "Pour l’avant-dernier débat avant le congrès qui doit désigner le candidat à l’élection présidentielle, les cinq prétendants sont sortis des thèmes balisés.", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/22/presidentielles-2022-les-republicains-elargissent-l-horizon-pour-leur-troisieme-debat_6103085_6059010.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 01:46:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "WhatsApp met à jour ses conditions d’utilisation en Europe", + "description": "Le changement, essentiellement cosmétique, ne porte pas sur la manière dont les données sont traitées par le service de messagerie.", + "content": "Le changement, essentiellement cosmétique, ne porte pas sur la manière dont les données sont traitées par le service de messagerie.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/22/whatsapp-met-a-jour-ses-conditions-d-utilisation-en-europe_6103082_4408996.html", + "creator": "", + "pubDate": "Mon, 22 Nov 2021 01:00:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La vente aux enchères des vins des Hospices de Beaune bat un record de prix", + "description": "La « pièce de charité », un fût de Corton Renardes Grand Cru, s’est vendue 800 000 euros, alors que le millésime est marqué par des volumes très faibles.", + "content": "La « pièce de charité », un fût de Corton Renardes Grand Cru, s’est vendue 800 000 euros, alors que le millésime est marqué par des volumes très faibles.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/21/la-vente-aux-encheres-des-vins-des-hospices-de-beaune-bat-un-record-de-prix_6103077_3234.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 22:29:43 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Afghanistan, les talibans demandent aux télévisions d’éviter les séries montrant des femmes", + "description": "Des directives ont été publiées à l’encontre des programmes « opposées aux valeurs islamiques et afghanes », et pour obliger les femmes journalistes à porter le voile.", + "content": "Des directives ont été publiées à l’encontre des programmes « opposées aux valeurs islamiques et afghanes », et pour obliger les femmes journalistes à porter le voile.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/21/en-afghanistan-les-talibans-demandent-aux-televisions-d-eviter-les-series-montrant-des-femmes_6103076_3210.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 21:54:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue 1 : le match Lyon-Marseille définitivement arrêté après un jet de projectiles contre le Marseillais Dimitri Payet", + "description": "Le joueur français a été visé par des jets de bouteille d’eau pleine dès la 4e minute de jeu. La reprise de la rencontre a un temps été annoncée, provoquant la colère des Marseillais, avant que l’arbitre, Ruddy Buquet, prenne finalement la décision de ne pas renvoyer les joueurs sur le terrain.", + "content": "Le joueur français a été visé par des jets de bouteille d’eau pleine dès la 4e minute de jeu. La reprise de la rencontre a un temps été annoncée, provoquant la colère des Marseillais, avant que l’arbitre, Ruddy Buquet, prenne finalement la décision de ne pas renvoyer les joueurs sur le terrain.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/21/football-le-match-lyon-marseille-interrompu-par-un-jet-de-bouteille-sur-payet_6103075_3242.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 21:24:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : en Belgique, en Autriche et aux Pays-Bas, nouvelles manifestations contre les restrictions sanitaires", + "description": "Des milliers de personnes ont défilé au cours du week-end dans ces trois pays. Des heurts ont eu lieu aux Pays-Bas après l’annonce de nouvelles restrictions.", + "content": "Des milliers de personnes ont défilé au cours du week-end dans ces trois pays. Des heurts ont eu lieu aux Pays-Bas après l’annonce de nouvelles restrictions.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/21/covid-19-nouvelles-manifestations-en-europe-contre-les-restrictions_6103074_3210.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 20:56:38 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Coupe du monde 2022 : « Il était totalement impossible pour Nicolas Sarkozy d’influencer mon vote » sur le choix du Qatar, dit Michel Platini", + "description": "Un an avant l’organisation de la Coupe du monde 2022 de football au Qatar, l’ex-président de l’UEFA revient, dans un entretien avec « Le Monde », sur son vote controversé en faveur de l’émirat.", + "content": "Un an avant l’organisation de la Coupe du monde 2022 de football au Qatar, l’ex-président de l’UEFA revient, dans un entretien avec « Le Monde », sur son vote controversé en faveur de l’émirat.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/21/mondial-2022-au-qatar-il-etait-totalement-impossible-pour-nicolas-sarkozy-d-influencer-mon-vote-assure-michel-platini_6103071_3242.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 20:09:15 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Bulgarie réélit le président sortant Roumen Radev pour poursuivre la lutte anticorruption", + "description": "Cette victoire sans surprise conforte la position du parti Continuons le changement, arrivé en tête des législatives la semaine dernière.", + "content": "Cette victoire sans surprise conforte la position du parti Continuons le changement, arrivé en tête des législatives la semaine dernière.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/21/la-bulgarie-reelit-le-president-sortant-roumen-radev-pour-poursuivre-la-lutte-anticorruption_6103070_3210.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 19:35:36 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Lyon-Marseille en direct : arrêt définitif de la rencontre", + "description": "La partie entre Lyon et Marseille est définitivement arrêtée, après près de deux heures d’interruption, suite à un jet de bouteille sur le Marseillais Dimitri Payet.", + "content": "La partie entre Lyon et Marseille est définitivement arrêtée, après près de deux heures d’interruption, suite à un jet de bouteille sur le Marseillais Dimitri Payet.", + "category": "", + "link": "https://www.lemonde.fr/football/live/2021/11/21/lyon-marseille-en-direct-suivez-le-choc-des-olympiques_6103069_1616938.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 19:28:43 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Roumanie, un accord entre libéraux et sociaux-démocrates met fin à deux mois de crise", + "description": "Les deux anciens rivaux, Nicolae Ciuca et Marcel Ciolacu ont prévu de se succéder à la tête de l’exécutif, avec un mandat d’un an et demi chacun.", + "content": "Les deux anciens rivaux, Nicolae Ciuca et Marcel Ciolacu ont prévu de se succéder à la tête de l’exécutif, avec un mandat d’un an et demi chacun.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/21/en-roumanie-un-accord-entre-liberaux-et-sociaux-democrates-met-fin-a-deux-mois-de-crise_6103068_3210.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 19:26:43 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Guadeloupe, #noustoutes, Peng Shuai… les cinq infos à retenir du week-end", + "description": "Si vous n’avez pas suivi l’actualité de ce week-end des 20 et 21 novembre, voici ce qu’il faut retenir des dernières quarante-huit heures.", + "content": "Si vous n’avez pas suivi l’actualité de ce week-end des 20 et 21 novembre, voici ce qu’il faut retenir des dernières quarante-huit heures.", + "category": "", + "link": "https://www.lemonde.fr/les-decodeurs/article/2021/11/21/guadeloupe-noustoutes-peng-shuai-les-cinq-infos-a-retenir-du-week-end_6103064_4355770.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 18:00:23 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pêche post-Brexit : la France « continuera le combat » auprès des pêcheurs, assure la ministre de la mer", + "description": "Annick Girardin avait évoqué, jeudi, la possibilité d’indemnisation pour les pêcheurs qui n’obtiendraient pas de licence du Royaume-Uni, ce qui avait été vécu comme un aveu de « défaite » par les professionnels de la filière.", + "content": "Annick Girardin avait évoqué, jeudi, la possibilité d’indemnisation pour les pêcheurs qui n’obtiendraient pas de licence du Royaume-Uni, ce qui avait été vécu comme un aveu de « défaite » par les professionnels de la filière.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/21/peche-post-brexit-la-france-continuera-le-combat-aupres-des-pecheurs-assure-la-ministre-de-la-mer_6103057_3234.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:47:12 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Abeilles : l’épandage de produits phytopharmaceutiques autorisé deux heures avant le coucher du soleil", + "description": "Les agriculteurs ont salué cette décision, mais les apiculteurs ont regretté l’absence de prise en compte de la température et la possibilité de traiter les cultures au moment où les abeilles butinent encore.", + "content": "Les agriculteurs ont salué cette décision, mais les apiculteurs ont regretté l’absence de prise en compte de la température et la possibilité de traiter les cultures au moment où les abeilles butinent encore.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/21/abeilles-l-epandage-de-produits-phytopharmaceutiques-autorise-deux-heures-avant-le-coucher-du-soleil_6103055_3244.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:35:46 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Présidentielle 2022 : Fabien Roussel, candidat du PCF, propose un « impôt Covid » sur les bénéfices et un « triplement de l’ISF »", + "description": "Lors d’un meeting tenu dimanche place Stalingrad à Paris, le candidat communiste à l’élection présidentielle a défendu « le travail et les salaires ».", + "content": "Lors d’un meeting tenu dimanche place Stalingrad à Paris, le candidat communiste à l’élection présidentielle a défendu « le travail et les salaires ».", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/21/presidentielle-2022-fabien-roussel-candidat-du-pcf-propose-un-impot-covid-sur-les-benefices-et-un-triplement-de-l-isf_6103054_6059010.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 16:19:56 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Présidentielle 2022 : plus de 600 élus locaux lancent un appel à soutenir Emmanuel Macron", + "description": "Edouard Philippe (Le Havre), Christian Estrosi (Nice) ou encore Christophe Béchu (Angers) saluent un bilan « favorable aux territoires et aux communes » et soulignent un « besoin de continuité et de stabilité ».", + "content": "Edouard Philippe (Le Havre), Christian Estrosi (Nice) ou encore Christophe Béchu (Angers) saluent un bilan « favorable aux territoires et aux communes » et soulignent un « besoin de continuité et de stabilité ».", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/21/presidentielle-2022-plus-de-600-maires-lancent-un-appel-a-soutenir-emmanuel-macron_6103049_823448.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 15:26:02 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Français Sébastien Ogier remporte son huitième titre de champion du monde des rallyes", + "description": "Le pilote de l’écurie Toyota a été couronné après sa victoire lors de la dernière manche de la saison à Monza, en Italie. Le Britannique Elfyn Evans et l’Espagnol Dani Sordo complètent le podium.", + "content": "Le pilote de l’écurie Toyota a été couronné après sa victoire lors de la dernière manche de la saison à Monza, en Italie. Le Britannique Elfyn Evans et l’Espagnol Dani Sordo complètent le podium.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/21/rallye-sebastien-ogier-remporte-son-huitieme-titre-mondial_6103045_3242.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 13:29:25 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Manchester United renvoie son entraîneur Ole Gunnar Solskjaer", + "description": "Le départ du Norvégien survient après une nouvelle lourde défaite en championnat, la cinquième en seulement 12 matchs. Joueur légendaire du club entre 1996 et 2007, Solskjaer était arrivé à la fin de 2018 pour rebâtir une équipe divisée.", + "content": "Le départ du Norvégien survient après une nouvelle lourde défaite en championnat, la cinquième en seulement 12 matchs. Joueur légendaire du club entre 1996 et 2007, Solskjaer était arrivé à la fin de 2018 pour rebâtir une équipe divisée.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/21/manchester-united-renvoie-son-entraineur-ole-gunnar-solskjaer_6103044_3242.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 12:32:01 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rugby : après la défaite des All Blacks contre la France, la presse néo-zélandaise met en cause le sélectionneur Ian Foster", + "description": "« Il y aura beaucoup de questions à poser », estime la presse néo-zélandaise au lendemain de la victoire éclatante du XV de France sur les All Blacks (40-25). Avec trois défaites, le bilan de la saison est le moins bon depuis 2009.", + "content": "« Il y aura beaucoup de questions à poser », estime la presse néo-zélandaise au lendemain de la victoire éclatante du XV de France sur les All Blacks (40-25). Avec trois défaites, le bilan de la saison est le moins bon depuis 2009.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/21/rugby-la-deroute-des-all-blacks-face-aux-francais-met-la-pression-sur-le-selectionneur-ian-foster_6103043_3242.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 12:20:20 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Invitée de l’émission « Questions politiques », la ministre déléguée chargée de la citoyenneté a notamment rappelé le vote de quatre lois récemment.", + "description": "Invitée de l’émission « Questions politiques », la ministre déléguée chargée de la citoyenneté a notamment rappelé le vote de quatre lois récemment. « Il faut maintenant que cela descende sur le terrain », a-t-elle expliqué.", + "content": "Invitée de l’émission « Questions politiques », la ministre déléguée chargée de la citoyenneté a notamment rappelé le vote de quatre lois récemment. « Il faut maintenant que cela descende sur le terrain », a-t-elle expliqué.", + "category": "", + "link": "https://www.lemonde.fr/politique/video/2021/11/21/en-direct-marlene-schiappa-invitee-de-l-emission-questions-politiques_6103040_823448.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 11:45:13 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le porte-parole du gouvernement a critiqué les actions violentes des contestataires du passe sanitaire et de l’obligation vaccinale des soignants sur l’île.", + "description": "Le porte-parole du gouvernement a critiqué la violence des actions menées par des opposants au passe sanitaire et à l’obligation vaccinale des soignants sur l’île, déplorant que des « soignants [soient] menacés » et que « des pharmacies [soient] empêchées d’ouvrir ».", + "content": "Le porte-parole du gouvernement a critiqué la violence des actions menées par des opposants au passe sanitaire et à l’obligation vaccinale des soignants sur l’île, déplorant que des « soignants [soient] menacés » et que « des pharmacies [soient] empêchées d’ouvrir ».", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/21/guadeloupe-gabriel-attal-juge-intolerable-et-inacceptable-les-violences-sur-l-ile_6103039_3224.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 11:34:49 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Alors que la communauté internationale s’inquiétait de la disparition de la sportive, des vidéos avaient montré une apparition à un tournoi à Pékin, mais des doutes persistent.", + "description": "Alors que la communauté internationale s’inquiétait de la disparition de la sportive, des vidéos avaient montré une apparition à un tournoi à Pékin, mais des doutes persistent.", + "content": "Alors que la communauté internationale s’inquiétait de la disparition de la sportive, des vidéos avaient montré une apparition à un tournoi à Pékin, mais des doutes persistent.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/21/le-pouvoir-chinois-montre-peng-shuai-lors-d-un-tournoi-de-tennis-a-pekin-les-doutes-persistent_6103035_3210.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 10:51:14 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Reportage | « La pauvreté est en train d’engloutir tout l’Afghanistan »", + "description": "Alors que les fonds de la Banque centrale afghane sont gelés depuis la prise de pouvoir des talibans, les hôpitaux sont incapables de fonctionner et la faim touche de plus en plus de familles. Plus de trois millions d’enfants de moins de 5 ans font face à une malnutrition aiguë.", + "content": "Alors que les fonds de la Banque centrale afghane sont gelés depuis la prise de pouvoir des talibans, les hôpitaux sont incapables de fonctionner et la faim touche de plus en plus de familles. Plus de trois millions d’enfants de moins de 5 ans font face à une malnutrition aiguë.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/21/en-afghanistan-la-pire-crise-humanitaire-sur-terre_6103007_3210.html", + "creator": "", + "pubDate": "Sun, 21 Nov 2021 05:35:32 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue 1 : Ben Yedder répond à David et permet à Monaco de prendre un point contre Lille", + "description": "Monaco et Lille n’ont pu se départager (2-2) vendredi soir au stade Louis-II, lors du match d’ouverture de la 14e journée de Ligue 1.", + "content": "Monaco et Lille n’ont pu se départager (2-2) vendredi soir au stade Louis-II, lors du match d’ouverture de la 14e journée de Ligue 1.", + "category": "", + "link": "https://www.lemonde.fr/sport/article/2021/11/19/ligue-1-ben-yedder-repond-a-david-et-permet-a-monaco-de-prendre-un-point-contre-lille_6102898_3242.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 23:43:42 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Militants d’ultradroite arrêtés : un homme mis en examen pour provocation à un acte de terrorisme", + "description": "Les suspects avaient été interpellés, mardi, après des discussions sur une messagerie cryptée pour « des achats d’armes ». Le deuxième homme, qui dit ne pas appartenir à la mouvance d’ultradroite, est poursuivi pour vente illégale d’armes de chasse.", + "content": "Les suspects avaient été interpellés, mardi, après des discussions sur une messagerie cryptée pour « des achats d’armes ». Le deuxième homme, qui dit ne pas appartenir à la mouvance d’ultradroite, est poursuivi pour vente illégale d’armes de chasse.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/militants-d-ultradroite-arretes-un-homme-mis-en-examen-pour-provocation-a-un-acte-de-terrorisme_6102897_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 22:59:25 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": true, + "tags": [] + }, + { + "title": "Kyle Rittenhouse, accusé du meurtre de deux manifestants en marge de manifestations antiracistes aux Etats-Unis, a été acquitté", + "description": "Le jeune homme de 18 ans, qui encourait la réclusion à perpétuité, avait plaidé la légitime défense dans ce dossier révélateur des fractures de l’Amérique sur les armes à feu, l’autodéfense et le mouvement antiraciste Black Lives Matter.", + "content": "Le jeune homme de 18 ans, qui encourait la réclusion à perpétuité, avait plaidé la légitime défense dans ce dossier révélateur des fractures de l’Amérique sur les armes à feu, l’autodéfense et le mouvement antiraciste Black Lives Matter.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/kyle-rittenhouse-accuse-du-meurtre-de-deux-manifestants-aux-etats-unis-a-ete-acquitte_6102892_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 20:22:01 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Anne Hidalgo juge « faisable » sa proposition de doubler le salaire des enseignants sur le quinquennat", + "description": "En déplacement en banlieue parisienne, la candidate du Parti socialiste est revenue sur ses propositions au sujet des deux thèmes centraux de sa campagne, la santé et l’éducation.", + "content": "En déplacement en banlieue parisienne, la candidate du Parti socialiste est revenue sur ses propositions au sujet des deux thèmes centraux de sa campagne, la santé et l’éducation.", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/anne-hidalgo-juge-faisable-sa-proposition-de-doubler-le-salaire-des-enseignants-sur-le-quinquennat_6102889_6059010.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 20:03:20 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Election présidentielle 2022 : Xavier Bertrand et Emmanuel Macron en désaccord sur le cas Ascoval", + "description": "Au cours d’un déplacement du président de la République dans l’Aisne, le candidat à l’investiture à droite a interpellé le chef de l’Etat au sujet de l’avenir de l’aciérie située dans le Nord.", + "content": "Au cours d’un déplacement du président de la République dans l’Aisne, le candidat à l’investiture à droite a interpellé le chef de l’Etat au sujet de l’avenir de l’aciérie située dans le Nord.", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/je-veux-sauver-cette-usine-vous-aussi-echange-tendu-entre-xavier-bertrand-et-emmanuel-macron-sur-l-acierie-ascoval_6102887_6059010.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:48:40 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Photomontage d’un groupuscule d’extrême droite : enquête ouverte pour menaces de mort", + "description": "Les investigations ont été confiées à l’Office central de lutte contre les crimes contre l’humanité, qui compte une division de lutte contre les crimes de haine.", + "content": "Les investigations ont été confiées à l’Office central de lutte contre les crimes contre l’humanité, qui compte une division de lutte contre les crimes de haine.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/photomontage-d-un-groupuscule-d-extreme-droite-enquete-ouverte-pour-menaces-de-mort_6102885_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:45:48 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pologne : comment le piège biélorusse s’est refermé sur des milliers de migrants", + "description": "Des vidéos tournées à la frontière entre la Pologne et la Biélorussie, authentifiées par « Le Monde », permettent de retracer les huit jours qui ont vu des milliers de migrants tomber dans le piège tendu pour faire pression sur l’UE.", + "content": "Des vidéos tournées à la frontière entre la Pologne et la Biélorussie, authentifiées par « Le Monde », permettent de retracer les huit jours qui ont vu des milliers de migrants tomber dans le piège tendu pour faire pression sur l’UE.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/pologne-comment-le-piege-bielorusse-s-est-referme-sur-des-milliers-de-migrants_6102884_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:45:32 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La loi pour demander « pardon » aux harkis indigne les harkis et leurs enfants", + "description": "Les réparations prévues par le texte voté par l’Assemblée nationale vont concerner seulement quelque 50 000 personnes parmi les 90 000 harkis qui ont fui l’Algérie, une « trahison » pour certains.", + "content": "Les réparations prévues par le texte voté par l’Assemblée nationale vont concerner seulement quelque 50 000 personnes parmi les 90 000 harkis qui ont fui l’Algérie, une « trahison » pour certains.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/19/la-loi-pour-demander-pardon-aux-harkis-indigne-les-harkis-et-leurs-enfants_6102883_823448.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 19:40:55 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dans les stations de sports d’hiver, un optimisme prudent après un hiver sans télécabines", + "description": "Les réservations sont en léger repli par rapport à l’année 2019. Le retard se rattrape, mais la cinquième vague de Covid-19 entretient le doute, notamment sur la présence des étrangers.", + "content": "Les réservations sont en léger repli par rapport à l’année 2019. Le retard se rattrape, mais la cinquième vague de Covid-19 entretient le doute, notamment sur la présence des étrangers.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/dans-les-stations-de-sports-d-hiver-un-optimisme-prudent_6102872_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:52:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aussi savoureux qu’écologiques : de la cuisine à la mode, les champignons vont-ils sauver le monde ?", + "description": "Longtemps cantonnés à la moisissure ou aux omelettes, les « fungi » s’associent désormais à la transition écologique. Dans la maroquinerie, le bâtiment, l’industrie ou le tourisme, le roi des sous-bois est promis à un bel avenir.", + "content": "Longtemps cantonnés à la moisissure ou aux omelettes, les « fungi » s’associent désormais à la transition écologique. Dans la maroquinerie, le bâtiment, l’industrie ou le tourisme, le roi des sous-bois est promis à un bel avenir.", + "category": "", + "link": "https://www.lemonde.fr/m-le-mag/article/2021/11/19/les-champignons-vont-ils-sauver-le-monde_6102869_4500055.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 18:00:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vaccin contre le Covid-19 : la Haute autorité de santé recommande une dose de rappel dès 40 ans", + "description": "La HAS a préconisé vendredi une dose de rappel aux personnes âgées de 40 ans et plus, six mois après leur primovaccination. Emmanuel Macron avait estimé dans la journée qu’il ne serait « pas étonné qu’on aille progressivement vers des rappels vaccinaux pour tous les adultes » déjà vaccinés contre le Covid-19.", + "content": "La HAS a préconisé vendredi une dose de rappel aux personnes âgées de 40 ans et plus, six mois après leur primovaccination. Emmanuel Macron avait estimé dans la journée qu’il ne serait « pas étonné qu’on aille progressivement vers des rappels vaccinaux pour tous les adultes » déjà vaccinés contre le Covid-19.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/vaccin-contre-le-covid-19-la-haute-autorite-de-sante-preconise-une-dose-de-rappel-des-40-ans_6102860_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:54:00 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pilules anti-Covid : l’Agence européenne des médicaments approuve l’utilisation en cas d’urgence de celle de Merck, étudie celle de Pfizer", + "description": "Alors que l’Europe est redevenue l’épicentre de la pandémie de Covid-19, les deux traitements des géants pharmaceutiques américains sont très attendus. Les études indiquent qu’ils réduisent le risque d’hospitalisation et de décès chez les patients à risques.", + "content": "Alors que l’Europe est redevenue l’épicentre de la pandémie de Covid-19, les deux traitements des géants pharmaceutiques américains sont très attendus. Les études indiquent qu’ils réduisent le risque d’hospitalisation et de décès chez les patients à risques.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/pilules-anti-covid-l-agence-europeenne-des-medicaments-approuve-l-utilisation-en-cas-d-urgence-de-celle-de-merck-etudie-celle-de-pfizer_6102858_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:51:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’Autriche va autoriser le suicide assisté", + "description": "Le gouvernement écolo-conservateur devait présenter au Parlement un projet de loi sur le « droit de mettre fin à sa vie » sans provoquer de remous, en dépit du poids de l’Eglise catholique dans le pays.", + "content": "Le gouvernement écolo-conservateur devait présenter au Parlement un projet de loi sur le « droit de mettre fin à sa vie » sans provoquer de remous, en dépit du poids de l’Eglise catholique dans le pays.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/l-autriche-va-autoriser-le-suicide-assiste_6102855_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:38:56 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’imam de Saint-Chamond menacé d’expulsion pour des propos « contraires aux valeurs et aux lois de la République » lors d’un prêche", + "description": "Convoqué en juillet par la préfecture de la Loire, l’imam de Saint-Chamond a reçu une obligation de quitter le territoire.", + "content": "Convoqué en juillet par la préfecture de la Loire, l’imam de Saint-Chamond a reçu une obligation de quitter le territoire.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/l-imam-de-saint-chamond-et-sa-femme-menaces-d-expulsion_6102854_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:32:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Joe Biden a transféré ses pouvoirs à Kamala Harris le temps d’une coloscopie", + "description": "L’examen se déroulant sous anesthésie générale, les prérogatives présidentielles ont été confiées à la vice-présidente, comme l’exige la Constitution, pendant une heure et vingt-cinq minutes.", + "content": "L’examen se déroulant sous anesthésie générale, les prérogatives présidentielles ont été confiées à la vice-présidente, comme l’exige la Constitution, pendant une heure et vingt-cinq minutes.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/joe-biden-va-transferer-ses-pouvoirs-a-kamala-harris-le-temps-d-une-coloscopie_6102852_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:22:21 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Election présidentielle 2022 : Les Républicains font le plein, Emmanuel Macron face aux maires… le récap’ politique de la semaine", + "description": "Le parti de droite a bouclé, cette semaine, sa campagne d’adhésions en perspective de la nomination de son candidat à l’Elysée. David Lisnard a été élu président de l’AMF et a reçu le président de la République, jeudi, en clotûre du congrès des maires.", + "content": "Le parti de droite a bouclé, cette semaine, sa campagne d’adhésions en perspective de la nomination de son candidat à l’Elysée. David Lisnard a été élu président de l’AMF et a reçu le président de la République, jeudi, en clotûre du congrès des maires.", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/election-presidentielle-2022-la-droite-fait-le-plein-d-adhesions-les-maires-et-macron-le-recap-politique-de-la-semaine_6102847_6059010.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 17:00:16 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Parlement vote une loi pour mieux piloter les dépenses publiques", + "description": "A partir de 2022, les objectifs de dépenses devront être précisés et un débat sur la dette aura lieu chaque année.", + "content": "A partir de 2022, les objectifs de dépenses devront être précisés et un débat sur la dette aura lieu chaque année.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/19/le-parlement-vote-une-loi-pour-mieux-piloter-les-depenses-publiques_6102846_823448.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:53:28 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La préfecture interdit la circulation entre 18 heures et 5 heures, dès vendredi soir, « compte tenu des mouvements sociaux en cours […] et des actes de vandalisme ».", + "description": "La préfecture interdit la circulation dans le département entre 18 heures et 5 heures, dès vendredi soir, « compte tenu des mouvements sociaux en cours dans le département et des actes de vandalisme ».", + "content": "La préfecture interdit la circulation dans le département entre 18 heures et 5 heures, dès vendredi soir, « compte tenu des mouvements sociaux en cours dans le département et des actes de vandalisme ».", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/violences-urbaines-en-guadeloupe-200-policiers-et-gendarmes-envoyes-en-renfort_6102842_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 16:13:52 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vaccination contre le Covid-19 : aux Etats-Unis, les autorités sanitaires donnent un premier feu vert à une troisième dose pour tous les adultes", + "description": "L’approbation de l’agence américaine des médicaments (FDA) doit être validée par le comité indépendant d’experts en vaccins des Centers for Disease Control and Prevention.", + "content": "L’approbation de l’agence américaine des médicaments (FDA) doit être validée par le comité indépendant d’experts en vaccins des Centers for Disease Control and Prevention.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/covid-19-la-fda-autorise-une-troisieme-dose-de-vaccin-pour-tous-les-adultes-americains_6102825_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:31:27 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Mort de Mick Rock, photographe des stars du rock des années 1970", + "description": "Il a été le photographe de l’ère Ziggy Stardust de David Bowie. Il a aussi créé des illustrations pour des albums-clés de Lou Reed, des Stooges, des Ramones ou de Queen.", + "content": "Il a été le photographe de l’ère Ziggy Stardust de David Bowie. Il a aussi créé des illustrations pour des albums-clés de Lou Reed, des Stooges, des Ramones ou de Queen.", + "category": "", + "link": "https://www.lemonde.fr/musiques/article/2021/11/19/mort-de-mick-rock-photographe-des-stars-du-rock-des-annees-1970_6102822_1654986.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 15:11:09 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Braquage de Kim Kardashian à Paris : douze personnes seront jugées aux assises", + "description": "Cinq ans après le braquage, à Paris, de la star américaine, douze personnes sont renvoyées pour « vol avec arme commis en bande organisée », « enlèvement et séquestration » ou « association de malfaiteurs criminelle », en récidive le plus souvent.", + "content": "Cinq ans après le braquage, à Paris, de la star américaine, douze personnes sont renvoyées pour « vol avec arme commis en bande organisée », « enlèvement et séquestration » ou « association de malfaiteurs criminelle », en récidive le plus souvent.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/braquage-de-kim-kardashian-en-2016-douze-personnes-seront-jugees-aux-assises_6102821_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:53:53 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Aveyron, nouveau sursis pour la fonderie Sam", + "description": "Le tribunal de commerce de Toulouse a décidé, vendredi 19 novembre, de suspendre l’avenir de la fonderie Sam à la décision de son unique client Renault.", + "content": "Le tribunal de commerce de Toulouse a décidé, vendredi 19 novembre, de suspendre l’avenir de la fonderie Sam à la décision de son unique client Renault.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/en-aveyron-nouveau-sursis-pour-la-fonderie-sam_6102818_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 14:50:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : Autriche, Allemagne, Belgique, Pays-Bas… visualisez l’ampleur de la vague dans certains pays d’Europe", + "description": "Dans le centre de l’Europe, le nombre de contaminations augmente à un rythme alarmant, contraignant les autorités à prendre des mesures restrictives.", + "content": "Dans le centre de l’Europe, le nombre de contaminations augmente à un rythme alarmant, contraignant les autorités à prendre des mesures restrictives.", + "category": "", + "link": "https://www.lemonde.fr/les-decodeurs/article/2021/11/19/covid-19-autriche-allemagne-pays-bas-visualisez-l-ampleur-de-la-vague-dans-certains-pays-d-europe_6102803_4355770.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 12:53:07 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : « L’hiver s’annonce comme une période difficile mais nous savons comment freiner le virus »", + "description": "Catherine Smallwood, directrice des situations d’urgence pour l’Europe à l’OMS, rappelle que dans les pays où « vaccination et port du masque [...] continuent d’être appliqués », comme l’Espagne, le Portugal, l’Italie et la France, « l’incidence est plus faible qu’ailleurs ».", + "content": "Catherine Smallwood, directrice des situations d’urgence pour l’Europe à l’OMS, rappelle que dans les pays où « vaccination et port du masque [...] continuent d’être appliqués », comme l’Espagne, le Portugal, l’Italie et la France, « l’incidence est plus faible qu’ailleurs ».", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/l-hiver-s-annonce-comme-une-periode-difficile-mais-nous-savons-comment-freiner-le-virus_6102785_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 12:20:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Arrêté en Turquie, Omar Souleyman, le « roi de l’électro-folk » syrienne, a été relâché", + "description": "Réfugié en Turquie peu après le déclenchement de la guerre en Syrie, le chanteur était accusé de liens avec le Parti des travailleurs du Kurdistan (PKK) et les Unités de protection du peuple (YPG) kurdes, selon les médias turcs.", + "content": "Réfugié en Turquie peu après le déclenchement de la guerre en Syrie, le chanteur était accusé de liens avec le Parti des travailleurs du Kurdistan (PKK) et les Unités de protection du peuple (YPG) kurdes, selon les médias turcs.", + "category": "", + "link": "https://www.lemonde.fr/musiques/article/2021/11/19/arrete-en-turquie-omar-souleyman-le-roi-de-l-electro-folk-syrienne-a-ete-relache_6102773_1654986.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 12:08:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pédocriminalité dans l’Eglise : les congrégations religieuses créent une commission de reconnaissance et de réparation", + "description": "Les responsables de la Conférence des religieux et religieuses de France ont voté « à l’unanimité » la création de cette structure distincte de l’Instance nationale indépendante de reconnaissance et de réparation.", + "content": "Les responsables de la Conférence des religieux et religieuses de France ont voté « à l’unanimité » la création de cette structure distincte de l’Instance nationale indépendante de reconnaissance et de réparation.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/pedocriminalite-dans-l-eglise-creation-d-une-commission-de-reconnaissance-et-de-reparation_6102743_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 11:39:51 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le combat des « enfants de l’ASE » pour faire changer le système", + "description": "Manque de moyens, maintien du lien familial, maltraitances… Des voix s’élèvent pour dénoncer les failles de la protection de l’enfance.", + "content": "Manque de moyens, maintien du lien familial, maltraitances… Des voix s’élèvent pour dénoncer les failles de la protection de l’enfance.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/le-combat-des-enfants-de-l-ase-pour-faire-changer-le-systeme_6102736_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 11:35:47 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La gestion des effectifs de la police critiquée dans une note de la Cour des comptes", + "description": "Dans une note diffusée jeudi, les magistrats financiers constatent une dérive de la masse salariale et un taux d’élucidation médiocre.", + "content": "Dans une note diffusée jeudi, les magistrats financiers constatent une dérive de la masse salariale et un taux d’élucidation médiocre.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/la-gestion-des-effectifs-de-la-police-critiquee-dans-une-note-de-la-cour-des-comptes_6102714_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 11:10:41 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Face aux maires, Emmanuel Macron défend son bilan et loue leur engagement", + "description": "Le président de la République a mis en garde, jeudi, contre le « débat mortifère » opposant les élus et l’Etat, en réponse aux critiques de David Lisnard, le nouveau président de l’Association des maires de France.", + "content": "Le président de la République a mis en garde, jeudi, contre le « débat mortifère » opposant les élus et l’Etat, en réponse aux critiques de David Lisnard, le nouveau président de l’Association des maires de France.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/19/face-aux-maires-emmanuel-macron-defend-son-bilan-et-loue-leur-engagement_6102709_823448.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 11:03:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au Burkina Faso, la colère monte après l’attaque meurtrière du poste d’Inata", + "description": "Le bilan des morts a été revu à la hausse, avec 49 gendarmes et quatre civils tués. Un appel à une grande manifestation a été lancé pour le 27 novembre.", + "content": "Le bilan des morts a été revu à la hausse, avec 49 gendarmes et quatre civils tués. Un appel à une grande manifestation a été lancé pour le 27 novembre.", + "category": "", + "link": "https://www.lemonde.fr/afrique/article/2021/11/19/au-burkina-faso-la-colere-monte-apres-l-attaque-meurtriere-du-poste-d-inata_6102704_3212.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 11:00:09 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : l’Autriche décide de confiner l’ensemble de sa population et instaure une obligation vaccinale à partir de février", + "description": "Ce confinement général, annoncé vendredi par le chancelier, Alexander Schallenberg, constitue une première en Europe depuis le printemps. La décision intervient seulement cinq jours après l’entrée en vigueur du confinement des non-vaccinés, qui avait été très critiqué.", + "content": "Ce confinement général, annoncé vendredi par le chancelier, Alexander Schallenberg, constitue une première en Europe depuis le printemps. La décision intervient seulement cinq jours après l’entrée en vigueur du confinement des non-vaccinés, qui avait été très critiqué.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/covid-19-l-autriche-decide-de-confiner-l-ensemble-de-sa-population-et-instaure-une-obligation-vaccinale-a-partir-de-fevrier_6102691_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 10:39:30 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid-19 : le nombre de classes fermées en France au plus haut depuis la rentrée de septembre", + "description": "Il s’établit à 4 048, soit 0,8 % des classes du pays, a annoncé le ministère de l’éducation nationale. Mais c’est nettement moins qu’en avril, avant la fermeture des écoles pour plusieurs semaines.", + "content": "Il s’établit à 4 048, soit 0,8 % des classes du pays, a annoncé le ministère de l’éducation nationale. Mais c’est nettement moins qu’en avril, avant la fermeture des écoles pour plusieurs semaines.", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/covid-19-le-nombre-de-classes-fermees-au-plus-haut-depuis-la-rentree-de-septembre_6102690_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 10:38:56 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le fiasco du train à grande vitesse britannique", + "description": "Hors de prix, très en retard, l’extension de la branche prévue vers Leeds ne sera pas construite.", + "content": "Hors de prix, très en retard, l’extension de la branche prévue vers Leeds ne sera pas construite.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/le-fiasco-du-train-a-grande-vitesse-britannique_6102688_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 10:28:53 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Licences de pêche post-Brexit : « Nous ne lâcherons pas nos pêcheurs », promet Emmanuel Macron", + "description": "L’annonce, par la ministre de la mer, de possibles indemnisations pour certains pêcheurs ne pouvant plus travailler a été atténuée par le chef de l’Etat, qui a ajouté : « Avant Noël, la France aura pris une position. »", + "content": "L’annonce, par la ministre de la mer, de possibles indemnisations pour certains pêcheurs ne pouvant plus travailler a été atténuée par le chef de l’Etat, qui a ajouté : « Avant Noël, la France aura pris une position. »", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/brexit-le-plan-d-indemnisation-evoque-par-le-gouvernement-pour-les-navires-sans-licence-fait-reagir-les-pecheurs_6102687_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 10:27:30 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "« Civilisation », le grand cru d’Orelsan", + "description": "Construit en deux parties et toujours produit musicalement par son complice Skread, le quatrième album du rappeur égrène, entre musique drill et disco, des solutions pour mieux vivre.", + "content": "Construit en deux parties et toujours produit musicalement par son complice Skread, le quatrième album du rappeur égrène, entre musique drill et disco, des solutions pour mieux vivre.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/19/civilisation-le-grand-cru-d-orelsan_6102682_3246.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 09:25:55 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La politique européenne de la concurrence soumise à des « changements ciblés »", + "description": "La Commission de Bruxelles « pourrait envisager » d’autoriser des aides d’Etat visant à soutenir la production de semi-conducteurs.", + "content": "La Commission de Bruxelles « pourrait envisager » d’autoriser des aides d’Etat visant à soutenir la production de semi-conducteurs.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/la-politique-europeenne-de-la-concurrence-soumise-a-des-changements-cibles_6102681_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 09:25:39 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les sanctions du régulateur chinois font chuter les profits d’Alibaba", + "description": "Un an après le lancement d’une campagne de régulation des mastodontes chinois du numérique, l’e-commerçant a vu ses profits chuter de 81 %.", + "content": "Un an après le lancement d’une campagne de régulation des mastodontes chinois du numérique, l’e-commerçant a vu ses profits chuter de 81 %.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/les-sanctions-du-regulateur-chinois-font-chuter-les-profits-d-alibaba_6102678_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 09:05:44 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Orelsan : « Le monde n’a pas besoin de plus de cynisme »", + "description": "Le rappeur publie son quatrième album, « Civilisation », plus engagé que ses précédents, sans perdre sa qualité d’écriture. Chronique d’un succès annoncé.", + "content": "Le rappeur publie son quatrième album, « Civilisation », plus engagé que ses précédents, sans perdre sa qualité d’écriture. Chronique d’un succès annoncé.", + "category": "", + "link": "https://www.lemonde.fr/culture/article/2021/11/19/orelsan-le-monde-n-a-pas-besoin-de-plus-de-cynisme_6102677_3246.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 09:02:57 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le taux de chômage reste stable en France, à 8,1 % au 3e trimestre, selon l’Insee", + "description": "Sur le trimestre, le taux de chômage augmente pour les 15-24 ans et se stabilise pour les 25-49 ans et les 50 ans et plus, détaille l’Institut national de la statistique.", + "content": "Sur le trimestre, le taux de chômage augmente pour les 15-24 ans et se stabilise pour les 25-49 ans et les 50 ans et plus, détaille l’Institut national de la statistique.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/le-taux-de-chomage-en-france-s-etablit-a-8-1-au-3e-trimestre-selon-l-insee_6102675_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 08:38:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les premières performances en demi-teinte des réseaux 5G en France", + "description": "Le « gendarme » des télécommunications publie, vendredi 19 novembre, une étude sur la qualité des réseaux mobiles en France. A ce stade, la 5G offre encore une plus-value limitée.", + "content": "Le « gendarme » des télécommunications publie, vendredi 19 novembre, une étude sur la qualité des réseaux mobiles en France. A ce stade, la 5G offre encore une plus-value limitée.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/les-premieres-performances-en-demi-teinte-des-reseaux-5g-en-france_6102674_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 08:30:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Face à la colère des paysans, l’Inde décide d’abroger des lois de réforme agricole", + "description": "Nombre de petits exploitants s’estimaient menacés par ces réformes votées en septembre 2020 qui risquaient, selon eux, de les obliger à brader leurs marchandises aux grandes entreprises pour les écouler.", + "content": "Nombre de petits exploitants s’estimaient menacés par ces réformes votées en septembre 2020 qui risquaient, selon eux, de les obliger à brader leurs marchandises aux grandes entreprises pour les écouler.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/face-a-la-colere-des-paysans-l-inde-annonce-l-abrogation-des-lois-de-la-reforme-agricole_6102673_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 08:24:35 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Record aux enchères pour l’un des premiers exemplaires de la Constitution américaine", + "description": "Un collectif d’amateurs de cryptomonnaies, qui rêvait de s’offrir le document historique, n’a pas réussi à s’aligner sur l’offre finale, qui s’élève à plus de 43 millions de dollars.", + "content": "Un collectif d’amateurs de cryptomonnaies, qui rêvait de s’offrir le document historique, n’a pas réussi à s’aligner sur l’offre finale, qui s’élève à plus de 43 millions de dollars.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/une-copie-originale-de-la-constitution-americaine-vendue-aux-encheres-a-un-prix-record_6102669_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 07:01:40 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En un an, la déforestation de l’Amazonie s’est nettement accélérée au Brésil", + "description": "Selon une estimation officielle publiée jeudi 18 novembre, la déforestation s’est étendue sur 13 235 km2 entre août 2020 et juillet 2021, soit près de 22 % d’augmentation – le record des quinze dernières années. Le gouvernement de Jair Bolsonaro, qui fait l’objet de critiques internationales pour avoir affaibli la surveillance des écosystèmes amazoniens, estime que ces données « ne reflètent pas exactement la réalité des derniers mois ».", + "content": "Selon une estimation officielle publiée jeudi 18 novembre, la déforestation s’est étendue sur 13 235 km2 entre août 2020 et juillet 2021, soit près de 22 % d’augmentation – le record des quinze dernières années. Le gouvernement de Jair Bolsonaro, qui fait l’objet de critiques internationales pour avoir affaibli la surveillance des écosystèmes amazoniens, estime que ces données « ne reflètent pas exactement la réalité des derniers mois ».", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/la-deforestation-de-l-amazonie-bresilienne-s-accelere_6102660_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 06:24:48 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Liz Throssell, une porte-parole du Haut-Commissariat aux droits de l’homme, a déclaré vendredi : « Nous demandons instamment qu’une enquête soit menée en toute transparence sur ces allégations d’agression sexuelle. »", + "description": "Le patron de la WTA, qui gère le circuit professionnel de tennis féminin, a menacé de retirer les compétitions ayant lieu en Chine si Pékin ne tire pas l’affaire au clair.", + "content": "Le patron de la WTA, qui gère le circuit professionnel de tennis féminin, a menacé de retirer les compétitions ayant lieu en Chine si Pékin ne tire pas l’affaire au clair.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/disparition-de-la-joueuse-peng-shuai-le-patron-du-tennis-feminin-menace-de-retirer-la-chine-du-circuit_6102659_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 06:16:01 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Entretien | Jean-Yves Le Drian : « Nos concurrents n’ont ni tabous ni limites »", + "description": "Dans un entretien au « Monde », le ministre des affaires étrangères français met en cause le comportement de la Chine et de la Russie, dans un monde où les rapports de force se durcissent.", + "content": "Dans un entretien au « Monde », le ministre des affaires étrangères français met en cause le comportement de la Chine et de la Russie, dans un monde où les rapports de force se durcissent.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/jean-yves-le-drian-nos-concurrents-n-ont-ni-tabous-ni-limites_6102656_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 06:08:27 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Au procès des attentats du 13-Novembre, l’organisation bureaucratique de la barbarie", + "description": "Le procès est entré, jeudi, dans le cœur de l’enquête. Deux témoins ont décortiqué le fonctionnement de la cellule de l’organisation Etat islamique chargée de planifier les attaques et le parcours de certains de ses membres.", + "content": "Le procès est entré, jeudi, dans le cœur de l’enquête. Deux témoins ont décortiqué le fonctionnement de la cellule de l’organisation Etat islamique chargée de planifier les attaques et le parcours de certains de ses membres.", + "category": "", + "link": "https://www.lemonde.fr/societe/article/2021/11/19/au-proces-des-attentats-du-13-novembre-l-organisation-bureaucratique-de-la-barbarie_6102655_3224.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 06:05:09 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Des Français moins mécontents de leur banque", + "description": "Les clients font passer la qualité du service ou l’image de la banque avant les tarifs, alors que l’usage du digital s’accélère.", + "content": "Les clients font passer la qualité du service ou l’image de la banque avant les tarifs, alors que l’usage du digital s’accélère.", + "category": "", + "link": "https://www.lemonde.fr/argent/article/2021/11/19/des-francais-moins-mecontents-de-leur-banque_6102650_1657007.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 06:00:25 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La flambée des prix alimentaires fait craindre une aggravation de la faim dans le monde", + "description": "Selon l’indice de la FAO, les denrées de base ont augmenté de plus 30 % en un an. Combinée aux effets économique de la crise sanitaire, cette inflation menace particulièrement un tiers de la population mondiale, déjà en insécurité alimentaire", + "content": "Selon l’indice de la FAO, les denrées de base ont augmenté de plus 30 % en un an. Combinée aux effets économique de la crise sanitaire, cette inflation menace particulièrement un tiers de la population mondiale, déjà en insécurité alimentaire", + "category": "", + "link": "https://www.lemonde.fr/planete/article/2021/11/19/la-flambee-des-prix-alimentaires-fait-craindre-une-aggravation-de-la-faim-dans-le-monde_6102644_3244.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 05:40:58 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Des joueuses de football afghanes parviennent à se réfugier au Royaume-Uni grâce à l’aide de Kim Kardashian", + "description": "La star américaine de téléréalité a financé le vol de trente-cinq footballeuses et de leurs familles, qui avaient fui au Pakistan après la prise de pouvoir de Kaboul par les talibans.", + "content": "La star américaine de téléréalité a financé le vol de trente-cinq footballeuses et de leurs familles, qui avaient fui au Pakistan après la prise de pouvoir de Kaboul par les talibans.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/des-joueuses-de-football-afghanes-parviennent-a-se-refugier-au-royaume-uni-grace-a-l-aide-de-kim-kardashian_6102641_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 04:55:08 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "En Allemagne, un candidat surprise dans la course à la présidence de la CDU", + "description": "Le parti démocrate-chrétien élira mi-décembre son nouveau chef. En lice, le très conservateur Friedrich Merz, le centriste Norbert Röttgen, et un candidat de dernière minute : Helge Braun, l’un des plus proches collaborateurs d’Angela Merkel.", + "content": "Le parti démocrate-chrétien élira mi-décembre son nouveau chef. En lice, le très conservateur Friedrich Merz, le centriste Norbert Röttgen, et un candidat de dernière minute : Helge Braun, l’un des plus proches collaborateurs d’Angela Merkel.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/19/en-allemagne-un-candidat-surprise-dans-la-course-a-la-presidence-de-la-cdu_6102640_3210.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 04:16:18 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Présidentielle 2022 : après une percée, la précampagne d’Eric Zemmour s’essouffle", + "description": "Le polémiste d’extrême droite a multiplié les outrances au point de crisper dans son propre camp. Son équipe peine à franchir le cap nécessaire à une candidature.", + "content": "Le polémiste d’extrême droite a multiplié les outrances au point de crisper dans son propre camp. Son équipe peine à franchir le cap nécessaire à une candidature.", + "category": "", + "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/presidentielle-2022-apres-une-percee-la-precampagne-d-eric-zemmour-s-essouffle_6102639_6059010.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 03:35:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comment le renseignement français a traqué Pegasus après les révélations du « Monde »", + "description": "D’un côté le silence, de l’autre une discrète mobilisation : depuis fin juillet, les services de renseignement français se sont activés. Des traces du logiciel espion ont notamment été détectées sur les téléphones de deux hauts fonctionnaires travaillant sur des dossiers sensibles du conseil de défense.", + "content": "D’un côté le silence, de l’autre une discrète mobilisation : depuis fin juillet, les services de renseignement français se sont activés. Des traces du logiciel espion ont notamment été détectées sur les téléphones de deux hauts fonctionnaires travaillant sur des dossiers sensibles du conseil de défense.", + "category": "", + "link": "https://www.lemonde.fr/pixels/article/2021/11/19/comment-le-renseignement-francais-a-traque-pegasus-apres-les-revelations-du-monde_6102638_4408996.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 02:59:45 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Enquête | Au Canada, l’horreur des pensionnats autochtones", + "description": "Jusqu’en 1996, le pays a arraché à leurs familles des enfants amérindiens pour les conduire dans des institutions catholiques. Beaucoup y ont subi des violences, y compris sexuelles, 6 000 en sont morts. Un génocide culturel pour lequel le pape pourrait présenter des excuses en décembre.", + "content": "Jusqu’en 1996, le pays a arraché à leurs familles des enfants amérindiens pour les conduire dans des institutions catholiques. Beaucoup y ont subi des violences, y compris sexuelles, 6 000 en sont morts. Un génocide culturel pour lequel le pape pourrait présenter des excuses en décembre.", + "category": "", + "link": "https://www.lemonde.fr/m-le-mag/article/2021/11/19/tuer-l-indien-au-c-ur-de-l-enfant-au-canada-les-pensionnats-de-l-horreur_6102637_4500055.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 02:38:09 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ligue des champions féminine : le PSG s’offre une bouffée d’air en se qualifiant pour les quarts de finale", + "description": "Les Parisiennes se sont imposées, jeudi, sur la pelouse du Real Madrid (2-0), dans un contexte difficile en raison de l’agression de Kheira Hamraoui et de la lourde défaite à Lyon en championnat, dimanche.", + "content": "Les Parisiennes se sont imposées, jeudi, sur la pelouse du Real Madrid (2-0), dans un contexte difficile en raison de l’agression de Kheira Hamraoui et de la lourde défaite à Lyon en championnat, dimanche.", + "category": "", + "link": "https://www.lemonde.fr/football/article/2021/11/19/ligue-des-champions-feminine-le-psg-s-offre-une-bouffee-d-air-en-se-qualifiant-pour-les-quarts-de-finale_6102635_1616938.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 02:03:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A Grigny, l’usine Bergams liquidée sur fond de tensions entre salariés", + "description": "La grève contre un accord collectif appliqué depuis janvier a fortement divisé les 283 employés de l’usine agroalimentaire, diversement touchés par ce dispositif. Le tribunal de commerce d’Evry a décidé la mise en liquidation, mercredi 17 novembre.", + "content": "La grève contre un accord collectif appliqué depuis janvier a fortement divisé les 283 employés de l’usine agroalimentaire, diversement touchés par ce dispositif. Le tribunal de commerce d’Evry a décidé la mise en liquidation, mercredi 17 novembre.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/a-grigny-l-usine-bergams-liquidee-sur-fond-de-tensions-entre-salaries_6102633_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 01:47:22 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L’usine Ascoval ne délocalisera pas une partie de son activité en Allemagne", + "description": "Le groupe allemand Saarstahl envisageait de transférer 40 % de la production de cette aciérie du Nord, ce qui avait suscité la colère de nombreux élus politiques et mobilisé le gouvernement.", + "content": "Le groupe allemand Saarstahl envisageait de transférer 40 % de la production de cette aciérie du Nord, ce qui avait suscité la colère de nombreux élus politiques et mobilisé le gouvernement.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/19/l-usine-ascoval-ne-delocalisera-pas-une-partie-de-son-activite-en-allemagne_6102629_3234.html", + "creator": "", + "pubDate": "Fri, 19 Nov 2021 00:35:59 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le confinement des personnes non vaccinées n’est « pas nécessaire en France », estime Emmanuel Macron", + "description": "Dans un entretien au quotidien régional « La Voix du Nord », le président de la République a également dit attendre l’avis des autorités sanitaires sur une éventuelle dose de rappel du vaccin contre le Covid-19 pour tous.", + "content": "Dans un entretien au quotidien régional « La Voix du Nord », le président de la République a également dit attendre l’avis des autorités sanitaires sur une éventuelle dose de rappel du vaccin contre le Covid-19 pour tous.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/18/le-confinement-des-personnes-non-vaccinees-n-est-pas-necessaire-en-france-estime-emmanuel-macron_6102628_823448.html", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 22:54:25 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Aux Etats-Unis, la peine de mort d’un prisonnier commuée au dernier moment", + "description": "Julius Jones, un Afro-Américain de 41 ans, avait été condamné en 2002 à la peine capitale pour le meurtre d’un homme d’affaires. Sa peine est commuée en prison à vie, sans liberté conditionnelle possible.", + "content": "Julius Jones, un Afro-Américain de 41 ans, avait été condamné en 2002 à la peine capitale pour le meurtre d’un homme d’affaires. Sa peine est commuée en prison à vie, sans liberté conditionnelle possible.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/18/aux-etats-unis-la-peine-de-mort-d-un-prisonnier-commuee-au-dernier-moment_6102624_3210.html", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 21:35:52 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Handicap : la première adjointe à la mairie de Lyon choquée par les mots d’une élue LR", + "description": "Audrey Hénocque, première adjointe du maire écologiste Grégory Doucet et elle-même handicapée, a reproché ses propos à la conseillère de droite Françoise Blanc lors d’un débat au conseil municipal sur le handicap.", + "content": "Audrey Hénocque, première adjointe du maire écologiste Grégory Doucet et elle-même handicapée, a reproché ses propos à la conseillère de droite Françoise Blanc lors d’un débat au conseil municipal sur le handicap.", + "category": "", + "link": "https://www.lemonde.fr/politique/article/2021/11/18/handicap-la-premiere-adjointe-a-la-mairie-de-lyon-choquee-par-les-mots-d-une-elue-lr_6102620_823448.html", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 21:28:10 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Un nouveau vote a décidé « en grande majorité » de la poursuite du mouvement social pour vingt-quatre heures supplémentaires.", + "description": "Les salariés protestent notamment contre l’organisation de la charge de travail, les méthodes de management considérées comme décourageantes, voire « destructrices », ainsi que le manque de moyens.", + "content": "Les salariés protestent notamment contre l’organisation de la charge de travail, les méthodes de management considérées comme décourageantes, voire « destructrices », ainsi que le manque de moyens.", + "category": "", + "link": "https://www.lemonde.fr/economie/article/2021/11/18/france-24-en-greve_6102525_3234.html", + "creator": "", + "pubDate": "Thu, 18 Nov 2021 09:24:04 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Muhammad Aziz, 83 ans, et Khalil Islam, mort en 2009, ont été disculpés juridiquement plus de cinquante ans après leur condamnation.", + "description": "Il s’agit de Muhammad Aziz, âgé de 83 ans et sorti de prison en 1985, et de Khalil Islam, libéré en 1987 et mort en 2009.", + "content": "Il s’agit de Muhammad Aziz, âgé de 83 ans et sorti de prison en 1985, et de Khalil Islam, libéré en 1987 et mort en 2009.", + "category": "", + "link": "https://www.lemonde.fr/international/article/2021/11/17/mort-de-malcolm-x-deux-hommes-condamnes-pour-son-meurtre-vont-etre-innocentes_6102466_3210.html", + "creator": "", + "pubDate": "Wed, 17 Nov 2021 21:14:34 +0100", + "folder": "00.03 News/News - FR", + "feed": "Le Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - FR", + "name": "Le Monde" + }, + { + "title": "Les Echos - Economie France", + "subtitle": "", + "link": "https://www.lesechos.fr/economie-france/", + "image": null, + "description": "Toute l'info économique, financière et boursière sur la France", + "items": [ + { + "title": "Formation : les résultats encore incertains du grand plan compétences d'Emmanuel Macron", + "description": "Véritablement lancé en 2019, le plan, doté de 15 milliards sur la durée du quinquennat, n'a pas amélioré le taux de retour à l'emploi des chômeurs de longue durée. La question de la concurrence du compte personnel de formation, dont l'essor ne se dément pas, se pose.", + "content": "Véritablement lancé en 2019, le plan, doté de 15 milliards sur la durée du quinquennat, n'a pas amélioré le taux de retour à l'emploi des chômeurs de longue durée. La question de la concurrence du compte personnel de formation, dont l'essor ne se dément pas, se pose.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700408627949-formation-les-resultats-encore-incertains-du-grand-plan-competences-demmanuel-macron-2443519.php#xtor=RSS-71", + "creator": "Alain Ruello", + "pubDate": "Thu, 25 Nov 2021 18:31:10 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid : les territoires en France où la natalité a le plus baissé", + "description": "Dans son dernier « portrait social », publié ce jeudi, l'Insee montre que la baisse des naissances liée au Covid a surtout touché les départements où l'épidémie et la crise économique sévissaient en même temps.", + "content": "Dans son dernier « portrait social », publié ce jeudi, l'Insee montre que la baisse des naissances liée au Covid a surtout touché les départements où l'épidémie et la crise économique sévissaient en même temps.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700407000569-covid-les-territoires-en-france-ou-la-natalite-a-le-plus-baisse-2443512.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Thu, 25 Nov 2021 18:00:33 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La Cour des comptes appelle à investir dans la prévention de la dépendance", + "description": "Selon les magistrats financiers, la France est à la traîne dans la prévention de la perte d'autonomie des personnes âgées. Un gain d'un an d'espérance de vie sans incapacité ferait économiser 1,5 milliard en dix ans à l'assurance-maladie, calculent-ils.", + "content": "Selon les magistrats financiers, la France est à la traîne dans la prévention de la perte d'autonomie des personnes âgées. Un gain d'un an d'espérance de vie sans incapacité ferait économiser 1,5 milliard en dix ans à l'assurance-maladie, calculent-ils.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700409033369-la-cour-des-comptes-appelle-a-investir-dans-la-prevention-de-la-dependance-2443509.php#xtor=RSS-71", + "creator": "Solveig Godeluck", + "pubDate": "Thu, 25 Nov 2021 17:32:29 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid : retour des restrictions dans les cantines d'entreprise", + "description": "La ministre du Travail, Elisabeth Borne, a rencontré ce jeudi patronat et syndicats pour faire le point sur les conséquences de la cinquième vague. Elle a lancé un appel à la vigilance sur le port du masque, les gestes barrière et les mesures de distanciation. Dans la restauration collective, le respect de la distance de 2 mètres refait son apparition à partir de lundi.", + "content": "La ministre du Travail, Elisabeth Borne, a rencontré ce jeudi patronat et syndicats pour faire le point sur les conséquences de la cinquième vague. Elle a lancé un appel à la vigilance sur le port du masque, les gestes barrière et les mesures de distanciation. Dans la restauration collective, le respect de la distance de 2 mètres refait son apparition à partir de lundi.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700407819356-covid-le-retour-des-restrictions-dans-les-cantines-dentreprise-2443499.php#xtor=RSS-71", + "creator": "Leïla de Comarmond", + "pubDate": "Thu, 25 Nov 2021 16:44:18 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid : 19 millions d'adultes appelés à se revacciner, la plupart avant le 15 janvier", + "description": "Le ministre de la Santé, Olivier Véran, a écarté, ce jeudi, toute restriction de circulation face à la flambée épidémique en assurant que le pays disposait déjà des moyens de se prémunir. La vaccination, avec un rappel pour tous les adultes et son intégration au passe sanitaire, demeure l'arme numéro un.", + "content": "Le ministre de la Santé, Olivier Véran, a écarté, ce jeudi, toute restriction de circulation face à la flambée épidémique en assurant que le pays disposait déjà des moyens de se prémunir. La vaccination, avec un rappel pour tous les adultes et son intégration au passe sanitaire, demeure l'arme numéro un.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700407336011-covid-19-millions-dadultes-appeles-a-se-re-vacciner-la-plupart-avant-le-15-janvier-2443439.php#xtor=RSS-71", + "creator": "Solveig Godeluck", + "pubDate": "Thu, 25 Nov 2021 14:48:19 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le nombre de chômeurs continue de fortement refluer en France", + "description": "Le nombre de personnes inscrites en catégorie A à Pôle emploi a chuté de 113.500 en octobre pour atteindre 3,38 millions. Il repasse pour la première fois en dessous du niveau de février 2020, avant la crise du Covid.", + "content": "Le nombre de personnes inscrites en catégorie A à Pôle emploi a chuté de 113.500 en octobre pour atteindre 3,38 millions. Il repasse pour la première fois en dessous du niveau de février 2020, avant la crise du Covid.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700406946807-forte-baisse-des-inscrits-a-pole-emploi-sans-activite-2443420.php#xtor=RSS-71", + "creator": "Alain Ruello", + "pubDate": "Thu, 25 Nov 2021 13:21:32 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Vaccin contre le Covid : la HAS recommande un rappel pour tous dès l'âge de 18 ans", + "description": "La Haute Autorité de santé estime que cette « troisième dose » peut être injectée à partir de cinq mois après la dernière injection, contre six mois actuellement. Elle justifie cette nouvelle recommandation par une reprise épidémique « plus forte qu'attendue ».", + "content": "La Haute Autorité de santé estime que cette « troisième dose » peut être injectée à partir de cinq mois après la dernière injection, contre six mois actuellement. Elle justifie cette nouvelle recommandation par une reprise épidémique « plus forte qu'attendue ».", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700406502056-vaccin-contre-le-covid-la-has-recommande-un-rappel-pour-tous-des-lage-de-18-ans-2443395.php#xtor=RSS-71", + "creator": "Les Echos", + "pubDate": "Thu, 25 Nov 2021 11:04:30 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "La discrimination à l'embauche a la vie dure pour les candidats d'origine maghrébine", + "description": "Selon une étude du ministère du Travail, pour recevoir une réponse positive à un poste, un candidat dont le nom ou le prénom a une consonance maghrébine doit envoyer 1,5 fois plus de candidatures qu'un autre. La discrimination faiblit avec le niveau de qualification des postes.", + "content": "Selon une étude du ministère du Travail, pour recevoir une réponse positive à un poste, un candidat dont le nom ou le prénom a une consonance maghrébine doit envoyer 1,5 fois plus de candidatures qu'un autre. La discrimination faiblit avec le niveau de qualification des postes.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700397621708-la-discrimination-a-lembauche-a-la-vie-dure-pour-les-candidats-dorigine-maghrebine-2443237.php#xtor=RSS-71", + "creator": "Claude Fouquet", + "pubDate": "Wed, 24 Nov 2021 18:00:18 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid : la campagne vaccinale reprend de l'allant sur fond de cinquième vague", + "description": "Le nombre de rendez-vous pris sur Doctolib pour une injection d'un rappel vaccinal contre le Covid a connu un nouveau record mardi, dépassant pour la première fois les 200.000. Les demandes de primo-injections connaissent également un léger regain.", + "content": "Le nombre de rendez-vous pris sur Doctolib pour une injection d'un rappel vaccinal contre le Covid a connu un nouveau record mardi, dépassant pour la première fois les 200.000. Les demandes de primo-injections connaissent également un léger regain.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700399026949-covid-la-campagne-vaccinale-reprend-de-lallant-sur-fond-de-cinquieme-vague-2443234.php#xtor=RSS-71", + "creator": "Les Echos", + "pubDate": "Wed, 24 Nov 2021 17:51:45 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le gouvernement lève les freins à l'apprentissage dans la fonction publique", + "description": "Le gouvernement a présenté en Conseil des ministres de nouvelles mesures destinées à faciliter les recrutements d'apprentis dans l'administration. Le nombre de contrats est passé de 13.000 en 2016 à 24.800 cette année.", + "content": "Le gouvernement a présenté en Conseil des ministres de nouvelles mesures destinées à faciliter les recrutements d'apprentis dans l'administration. Le nombre de contrats est passé de 13.000 en 2016 à 24.800 cette année.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700399695121-le-gouvernement-leve-les-freins-a-lapprentissage-dans-la-fonction-publique-2443227.php#xtor=RSS-71", + "creator": "Alain Ruello", + "pubDate": "Wed, 24 Nov 2021 17:32:04 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Assurance-chômage : impasse juridique à l'Unédic", + "description": "Refusant d'émarger en début d'un Conseil d'administration extraordinaire, FO, la CGT, la CFE-CGC et la CFTC ont bloqué un important projet de réorganisation poussé par le Medef et la CFDT. Un échec pour le paritarisme, alors que plane la menace de nationalisation du régime.", + "content": "Refusant d'émarger en début d'un Conseil d'administration extraordinaire, FO, la CGT, la CFE-CGC et la CFTC ont bloqué un important projet de réorganisation poussé par le Medef et la CFDT. Un échec pour le paritarisme, alors que plane la menace de nationalisation du régime.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700398404137-assurance-chomage-impasse-juridique-a-lunedic-2443189.php#xtor=RSS-71", + "creator": "Alain Ruello", + "pubDate": "Wed, 24 Nov 2021 15:10:27 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Artisans et libéraux s'inquiètent de leur représentation à la Sécurité sociale", + "description": "Après la dernière mesure de représentativité syndicale et patronale, la composition des instances paritaires des organismes de Sécurité sociale va être revue. L'U2P dénonce une pesée en sa défaveur, contrairement à ce qui avait été annoncé fin octobre par le ministère de la Santé.", + "content": "Après la dernière mesure de représentativité syndicale et patronale, la composition des instances paritaires des organismes de Sécurité sociale va être revue. L'U2P dénonce une pesée en sa défaveur, contrairement à ce qui avait été annoncé fin octobre par le ministère de la Santé.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700392812952-artisans-et-liberaux-sinquietent-de-leur-representation-a-la-securite-sociale-2443150.php#xtor=RSS-71", + "creator": "Leïla de Comarmond", + "pubDate": "Wed, 24 Nov 2021 12:00:30 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les chefs d'entreprise abordent la cinquième vague de Covid avec un moral d'acier", + "description": "L'indice du climat des affaires a encore gagné 2 points en novembre, a indiqué ce mercredi l'Insee. L'enquête mensuelle a toutefois été réalisée avant la récente dégradation de la situation sanitaire.", + "content": "L'indice du climat des affaires a encore gagné 2 points en novembre, a indiqué ce mercredi l'Insee. L'enquête mensuelle a toutefois été réalisée avant la récente dégradation de la situation sanitaire.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700397197267-les-chefs-dentreprise-abordent-la-cinquieme-vague-avec-un-moral-de-fer-2443151.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Wed, 24 Nov 2021 11:58:34 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apprentissage : pourquoi les entreprises s'y mettent lentement", + "description": "Le boom de l'apprentissage en France est d'abord le fait des organismes de formation continue et des écoles de l'enseignement supérieur. Seule une soixantaine d'entreprises ont créé leur CFA, ainsi que le permet une loi de 2018. Pour celles qui s'y sont mises, c'est une arme dans la bataille du recrutement.", + "content": "Le boom de l'apprentissage en France est d'abord le fait des organismes de formation continue et des écoles de l'enseignement supérieur. Seule une soixantaine d'entreprises ont créé leur CFA, ainsi que le permet une loi de 2018. Pour celles qui s'y sont mises, c'est une arme dans la bataille du recrutement.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700382301667-apprentissage-pourquoi-les-entreprises-sy-mettent-lentement-2443085.php#xtor=RSS-71", + "creator": "Elsa Freyssenet et Marion Kindermans", + "pubDate": "Wed, 24 Nov 2021 06:58:09 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Fraude sociale : des sous-déclarations massives chez les travailleurs des plateformes Internet", + "description": "En 2020, les plateformes Internet ont dû pour la première fois communiquer à l'administration les revenus de leurs collaborateurs. L'écart avec les montants déclarés aux Urssaf par ces micro-entrepreneurs est considérable. On compte jusqu'à 90 % de travail au noir chez les VTC.", + "content": "En 2020, les plateformes Internet ont dû pour la première fois communiquer à l'administration les revenus de leurs collaborateurs. L'écart avec les montants déclarés aux Urssaf par ces micro-entrepreneurs est considérable. On compte jusqu'à 90 % de travail au noir chez les VTC.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700389117534-fraude-sociale-des-sous-declarations-massives-chez-les-travailleurs-des-plateformes-internet-2442854.php#xtor=RSS-71", + "creator": "Solveig Godeluck", + "pubDate": "Tue, 23 Nov 2021 13:09:38 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Covid : le Medef contre une obligation de télétravailler", + "description": "Le président de l'organisation patronale est opposé à ce que le télétravail soit à nouveau rendu obligatoire mais incite les chefs d'entreprise à se « remobiliser » sur le sujet. Il lance aussi un appel à un respect des gestes barrières.", + "content": "Le président de l'organisation patronale est opposé à ce que le télétravail soit à nouveau rendu obligatoire mais incite les chefs d'entreprise à se « remobiliser » sur le sujet. Il lance aussi un appel à un respect des gestes barrières.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700388997837-covid-le-medef-contre-une-obligation-de-teletravailler-2442824.php#xtor=RSS-71", + "creator": "Les Echos", + "pubDate": "Tue, 23 Nov 2021 10:30:50 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "EXCLUSIF - Plus optimistes qu'en 2020, les cadres restent soumis à forte pression", + "description": "Seuls 12 % des cadres se déclarent pessimistes dans le dernier baromètre Viavoice pour l'Union générale des ingénieurs, cadres et techniciens CGT publié ce mardi. C'est le plus bas niveau depuis le lancement de ce sondage en 2014. Les cadres restent encore très nombreux cette année à considérer que leur charge et leur temps de travail ont augmenté.", + "content": "Seuls 12 % des cadres se déclarent pessimistes dans le dernier baromètre Viavoice pour l'Union générale des ingénieurs, cadres et techniciens CGT publié ce mardi. C'est le plus bas niveau depuis le lancement de ce sondage en 2014. Les cadres restent encore très nombreux cette année à considérer que leur charge et leur temps de travail ont augmenté.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/social/0700368569793-exclusif-plus-optimistes-quen-2020-les-cadres-restent-soumis-a-forte-pression-2442782.php#xtor=RSS-71", + "creator": "Leïla de Comarmond", + "pubDate": "Tue, 23 Nov 2021 07:00:33 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Retraites, éducation, emploi : l'OCDE exhorte la France à relancer les réformes", + "description": "Dans un rapport publié ce jeudi, l'organisation internationale appelle l'Hexagone à relancer son programme de réformes engagé en 2017 pour assurer une reprise pérenne. Parmi ses recommandations : la retraite à 64 ans à partir de 2025. Elle a aussi relevé sa prévision de croissance pour la France à 6,8% cette année et à 4,2% l'an prochain.", + "content": "Dans un rapport publié ce jeudi, l'organisation internationale appelle l'Hexagone à relancer son programme de réformes engagé en 2017 pour assurer une reprise pérenne. Parmi ses recommandations : la retraite à 64 ans à partir de 2025. Elle a aussi relevé sa prévision de croissance pour la France à 6,8% cette année et à 4,2% l'an prochain.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700350674254-locde-fixe-sa-feuille-de-route-a-la-france-pour-le-prochain-quinquennat-2442034.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Thu, 18 Nov 2021 11:45:17 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les baisses d'impôts devraient soutenir la croissance française", + "description": "Le PIB par tête devrait augmenter de 1,35 % par an entre 2017 et 2025, contre 1,2 % en moyenne entre 2009 et 2017, selon une étude réalisée par le Cepremap et l'IPP. Cette accélération serait notamment la résultante des allégements fiscaux consentis sur le quinquennat.", + "content": "Le PIB par tête devrait augmenter de 1,35 % par an entre 2017 et 2025, contre 1,2 % en moyenne entre 2009 et 2017, selon une étude réalisée par le Cepremap et l'IPP. Cette accélération serait notamment la résultante des allégements fiscaux consentis sur le quinquennat.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700340019617-les-baisses-dimpots-devraient-soutenir-la-croissance-francaise-2441559.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Tue, 16 Nov 2021 17:16:10 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le Covid, une chance pour le Made in France ?", + "description": "Episode 1 - Pour « La Story », le podcast d'actualité des « Echos », Pierrick Fay et ses invités reviennent sur la façon dont la crise sanitaire a réveillé l'attrait pour les produits fabriqués en France, sur fond de regain de souveraineté européenne. Encore faut-il ne pas rater la marche…", + "content": "Episode 1 - Pour « La Story », le podcast d'actualité des « Echos », Pierrick Fay et ses invités reviennent sur la façon dont la crise sanitaire a réveillé l'attrait pour les produits fabriqués en France, sur fond de regain de souveraineté européenne. Encore faut-il ne pas rater la marche…", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700293848003-le-covid-une-chance-pour-le-made-in-france-2441060.php#xtor=RSS-71", + "creator": "Les Echos", + "pubDate": "Fri, 12 Nov 2021 17:00:50 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Les exportateurs français moins à la peine que leurs voisins allemands", + "description": "Les exportations allemandes ont baissé en septembre, pour le deuxième mois consécutif, alors que celles de la France sont bien orientées depuis le début de l'été. Pour autant, les exportations allemandes sont plus proches de leur niveau d'avant crise que celles de la France.", + "content": "Les exportations allemandes ont baissé en septembre, pour le deuxième mois consécutif, alors que celles de la France sont bien orientées depuis le début de l'été. Pour autant, les exportations allemandes sont plus proches de leur niveau d'avant crise que celles de la France.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700291457874-les-exportateurs-francais-moins-a-la-peine-que-leurs-voisins-allemands-2440450.php#xtor=RSS-71", + "creator": "Claude Fouquet", + "pubDate": "Tue, 09 Nov 2021 12:04:53 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'industrie reprend, à son tour, de la vigueur en France", + "description": "Selon la note de conjoncture publiée lundi par la Banque de France, le PIB « dépasserait d'environ un demi-point » son niveau pré-crise en octobre et « de trois-quarts de point » en novembre. Les perspectives d'activité s'améliorent dans tous les secteurs.", + "content": "Selon la note de conjoncture publiée lundi par la Banque de France, le PIB « dépasserait d'environ un demi-point » son niveau pré-crise en octobre et « de trois-quarts de point » en novembre. Les perspectives d'activité s'améliorent dans tous les secteurs.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700284786318-lindustrie-reprend-a-son-tour-de-la-vigueur-en-france-2440403.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Tue, 09 Nov 2021 06:15:18 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Présidentielle : ce que demande le monde de l'industrie pour améliorer la compétitivité", + "description": "Toujours perturbée par les difficultés d'approvisionnement, la production manufacturière française reste en deçà de son niveau d'avant-crise. A quelques mois des élections présidentielles, la poursuite de la baisse des impôts de production revient dans le débat.", + "content": "Toujours perturbée par les difficultés d'approvisionnement, la production manufacturière française reste en deçà de son niveau d'avant-crise. A quelques mois des élections présidentielles, la poursuite de la baisse des impôts de production revient dans le débat.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700266186636-presidentielle-ce-que-demande-le-monde-de-lindustrie-pour-ameliorer-la-competitivite-2440185.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Mon, 08 Nov 2021 07:00:41 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Portée par le dynamisme de la consommation, la France s'affirme en locomotive de la zone euro", + "description": "Tirée par le fort rebond des dépenses de consommation, notamment dans les restaurants, l'économie française a retrouvé son niveau d'avant-crise au troisième trimestre. L'Hexagone confirme ainsi son statut de meilleur élève parmi les grands pays de la zone euro. La vigueur de la croissance des prochains mois dépendra encore du comportement des ménages.", + "content": "Tirée par le fort rebond des dépenses de consommation, notamment dans les restaurants, l'économie française a retrouvé son niveau d'avant-crise au troisième trimestre. L'Hexagone confirme ainsi son statut de meilleur élève parmi les grands pays de la zone euro. La vigueur de la croissance des prochains mois dépendra encore du comportement des ménages.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700222439969-portee-par-le-dynamisme-de-la-consommation-la-france-saffirme-en-locomotive-de-la-zone-euro-2439167.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Tue, 02 Nov 2021 08:00:46 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Comment le Covid a bouleversé les cycles économiques", + "description": "Selon les experts de l'Association française de science économique, le cycle économique du Covid est le plus court depuis les années 1970 en France, mais aussi le plus ample. La reprise est toutefois très hétérogène en Europe.", + "content": "Selon les experts de l'Association française de science économique, le cycle économique du Covid est le plus court depuis les années 1970 en France, mais aussi le plus ample. La reprise est toutefois très hétérogène en Europe.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700223292111-comment-le-covid-a-bouleverse-les-cycles-economiques-2439163.php#xtor=RSS-71", + "creator": "Guillaume de Calignon", + "pubDate": "Tue, 02 Nov 2021 08:00:38 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'inflation, une menace sur la reprise", + "description": "En octobre, les prix à la consommation ont augmenté de 2,6 % sur un an en France selon l'Insee. Ce regain d'inflation, parti pour durer de longs mois encore, fait planer un risque sur la consommation des ménages mais aussi sur les entreprises.", + "content": "En octobre, les prix à la consommation ont augmenté de 2,6 % sur un an en France selon l'Insee. Ce regain d'inflation, parti pour durer de longs mois encore, fait planer un risque sur la consommation des ménages mais aussi sur les entreprises.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700223745873-linflation-une-menace-sur-la-reprise-2439153.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Tue, 02 Nov 2021 07:00:31 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "L'inflation bondit à 2,6 % en octobre en France", + "description": "La hausse des prix à la consommation a grimpé de 0,4 point ce mois-ci par rapport à septembre, en raison de l'envolée des cours de l'énergie notamment, selon les données publiées par l'Insee ce vendredi.", + "content": "La hausse des prix à la consommation a grimpé de 0,4 point ce mois-ci par rapport à septembre, en raison de l'envolée des cours de l'énergie notamment, selon les données publiées par l'Insee ce vendredi.", + "category": "Économie France", + "link": "https://www.lesechos.fr/economie-france/conjoncture/0700221388233-linflation-bondit-a-26-en-octobre-en-france-2438876.php#xtor=RSS-71", + "creator": "Nathalie Silbert", + "pubDate": "Fri, 29 Oct 2021 09:50:45 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos", + "read": true, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - FR", + "name": "Les Echos" + }, + { + "title": "Les Echos - Politique", + "subtitle": "", + "link": "https://www.lesechos.fr/politique-societe/", + "image": null, + "description": "Toute l'info politique en France et à l'étranger", + "items": [ + { + "title": "Bruxelles limite à neuf mois la validité des vaccins pour voyager", + "description": "La Commission européenne a proposé jeudi de nouvelles règles pour assurer la liberté de circulation dans l'UE. On passe à une approche centrée sur le statut des voyageurs.", + "content": "La Commission européenne a proposé jeudi de nouvelles règles pour assurer la liberté de circulation dans l'UE. On passe à une approche centrée sur le statut des voyageurs.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700407290328-bruxelles-limite-a-neuf-mois-la-validite-des-vaccins-pour-voyager-2443514.php#xtor=RSS-70", + "creator": "Karl de Meyer", + "pubDate": "Thu, 25 Nov 2021 18:12:46 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nicolas Hulot, accusé d'agressions sexuelles et de viol, quitte « définitivement » la vie publique", + "description": "Un épisode du magazine « Envoyé spécial », pas encore diffusé, met au jour de nouvelles accusations d'agressions sexuelles et de viol contre Nicolas Hulot. L'ex-ministre de la Transition écologique dénonce des « accusations purement mensongères ».", + "content": "Un épisode du magazine « Envoyé spécial », pas encore diffusé, met au jour de nouvelles accusations d'agressions sexuelles et de viol contre Nicolas Hulot. L'ex-ministre de la Transition écologique dénonce des « accusations purement mensongères ».", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700398239722-nicolas-hulot-accuse-dagressions-sexuelles-et-de-viol-quitte-definitivement-la-vie-publique-2443160.php#xtor=RSS-70", + "creator": "Les Echos", + "pubDate": "Wed, 24 Nov 2021 12:30:06 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bruno Retailleau : « Il n'est pas question que le Sénat cautionne un budget de campagne électorale »", + "description": "Le Sénat va rejeter le projet de loi de finances pour 2022 avant même la fin de son examen pour protester contre la « folie dépensière » de l'exécutif. « Emmanuel Macron est en train d'acheter son élection », accuse le chef de file des sénateurs LR, qui plaide, dans le prochain quinquennat, pour une baisse de la dépense publique et des impôts de production.", + "content": "Le Sénat va rejeter le projet de loi de finances pour 2022 avant même la fin de son examen pour protester contre la « folie dépensière » de l'exécutif. « Emmanuel Macron est en train d'acheter son élection », accuse le chef de file des sénateurs LR, qui plaide, dans le prochain quinquennat, pour une baisse de la dépense publique et des impôts de production.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700384764675-bruno-retailleau-il-nest-pas-question-que-le-senat-cautionne-un-budget-de-campagne-electorale-2442796.php#xtor=RSS-70", + "creator": "Renaud Honoré et Pierre-Alain Furbury", + "pubDate": "Tue, 23 Nov 2021 08:00:52 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Emplois fictifs : François Fillon reconnaît des « erreurs d'organisation et de communication »", + "description": "Pendant plus de cinq heures ce lundi, l'ex-Premier ministre a été interrogé à la barre de la Cour d'appel de Paris. Il maintient la réalité du travail « sur le terrain » de son épouse. La Cour pointe, elle, le caractère « immatériel » de ces missions.", + "content": "Pendant plus de cinq heures ce lundi, l'ex-Premier ministre a été interrogé à la barre de la Cour d'appel de Paris. Il maintient la réalité du travail « sur le terrain » de son épouse. La Cour pointe, elle, le caractère « immatériel » de ces missions.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700384717402-emplois-fictifs-francois-fillon-reconnait-des-erreurs-dorganisation-et-de-communication-2442651.php#xtor=RSS-70", + "creator": "Valerie de Senneville", + "pubDate": "Mon, 22 Nov 2021 18:19:35 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Procès Fillon : l'ancien Premier ministre attendu à la barre", + "description": "L'ancien Premier ministre François Fillon doit être interrogé lundi après-midi à son procès en appel à Paris pour des soupçons d'emplois fictifs de sa femme Penelope Fillon. Une affaire dans laquelle il tente de rebattre les cartes après une condamnation en première instance à cinq ans d'emprisonnement dont deux ferme.", + "content": "L'ancien Premier ministre François Fillon doit être interrogé lundi après-midi à son procès en appel à Paris pour des soupçons d'emplois fictifs de sa femme Penelope Fillon. Une affaire dans laquelle il tente de rebattre les cartes après une condamnation en première instance à cinq ans d'emprisonnement dont deux ferme.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700381410956-proces-fillon-lancien-premier-ministre-attendu-a-la-barre-2442568.php#xtor=RSS-70", + "creator": "Les Echos", + "pubDate": "Mon, 22 Nov 2021 07:57:39 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "David Lisnard : LR par l'autre porte", + "description": "Avènement d'un ambitieux. Le maire de Cannes avait hésité à se présenter à la primaire LR avant de partir à la conquête de l'Association des maires de France, tribune et réseau de poids pour qui rêve de réconcilier la droite et les idées.", + "content": "Avènement d'un ambitieux. Le maire de Cannes avait hésité à se présenter à la primaire LR avant de partir à la conquête de l'Association des maires de France, tribune et réseau de poids pour qui rêve de réconcilier la droite et les idées.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700350565216-david-lisnard-lr-par-lautre-porte-2442003.php#xtor=RSS-70", + "creator": "Cecile Cornudet", + "pubDate": "Thu, 18 Nov 2021 08:30:17 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Procès des emplois fictifs : François Fillon exprime « des regrets »", + "description": "Au deuxième jour de son procès en appel, l'ancien Premier ministre a tenu ce mardi à faire une déclaration liminaire « pour dire la vérité ».", + "content": "Au deuxième jour de son procès en appel, l'ancien Premier ministre a tenu ce mardi à faire une déclaration liminaire « pour dire la vérité ».", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700343076692-proces-des-emplois-fictifs-francois-fillon-exprime-des-regrets-2441570.php#xtor=RSS-70", + "creator": "Valerie de Senneville", + "pubDate": "Tue, 16 Nov 2021 18:07:34 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Présidentielle 2022 : cinq questions sur le Parti animaliste et sa candidate, Hélène Thouy", + "description": "Un sondage Ifop pour le Parti animaliste donne Hélène Thouy à 2 % des intentions de vote, devant Arnaud Montebourg et de nombreux autres « petits candidats ». Si ce score peut paraître négligeable, il témoigne toutefois d'une inscription du Parti animaliste dans le paysage politique français.", + "content": "Un sondage Ifop pour le Parti animaliste donne Hélène Thouy à 2 % des intentions de vote, devant Arnaud Montebourg et de nombreux autres « petits candidats ». Si ce score peut paraître négligeable, il témoigne toutefois d'une inscription du Parti animaliste dans le paysage politique français.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700340194132-presidentielle-2022-cinq-questions-sur-le-parti-animaliste-et-sa-candidate-helene-thouy-2441539.php#xtor=RSS-70", + "creator": "Les Echos", + "pubDate": "Tue, 16 Nov 2021 15:56:28 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "EXCLUSIF - Secret des avocats : Eric Dupond-Moretti maintient le texte contesté", + "description": "Le garde des Sceaux n'a pas accédé à la demande du Conseil national des barreaux, qui voulait le retrait de l'article sur le secret de l'avocat du projet de loi de confiance dans la justice. Il a choisi d'amender à la marge le texte des parlementaires.", + "content": "Le garde des Sceaux n'a pas accédé à la demande du Conseil national des barreaux, qui voulait le retrait de l'article sur le secret de l'avocat du projet de loi de confiance dans la justice. Il a choisi d'amender à la marge le texte des parlementaires.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700339930711-exclusif-secret-des-avocats-eric-dupond-moretti-maintient-le-texte-conteste-2441517.php#xtor=RSS-70", + "creator": "Laurence Boisseau et Isabelle Couet", + "pubDate": "Tue, 16 Nov 2021 13:06:03 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Qui sont les maires de France ?", + "description": "Les maires français sont appelés à voter pour désigner le successeur de François Baroin à la tête de la puissante Association des maires de France. Mais qui sont les élus à la tête de nos mairies en 2020 ? Le point sur les professions, classes d'âge et prénoms les plus représentés.", + "content": "Les maires français sont appelés à voter pour désigner le successeur de François Baroin à la tête de la puissante Association des maires de France. Mais qui sont les élus à la tête de nos mairies en 2020 ? Le point sur les professions, classes d'âge et prénoms les plus représentés.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700332512926-qui-sont-les-maires-de-france-2441503.php#xtor=RSS-70", + "creator": "Samir Touzani", + "pubDate": "Tue, 16 Nov 2021 12:00:10 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "SONDAGE EXCLUSIF - Climat : une majorité de Français doutent de la portée de la COP26", + "description": "Selon un sondage OpinionWay- Square pour « Les Echos », 76 % des Français font de la question climatique un enjeu politique prioritaire. Une large majorité doute des engagements pris à la COP de Glasgow et considère qu'il faut sanctionner les Etats récalcitrants.  ", + "content": "Selon un sondage OpinionWay- Square pour « Les Echos », 76 % des Français font de la question climatique un enjeu politique prioritaire. Une large majorité doute des engagements pris à la COP de Glasgow et considère qu'il faut sanctionner les Etats récalcitrants.  ", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700332933159-sondage-exclusif-climat-une-majorite-de-francais-sceptiques-sur-la-portee-de-la-cop-26-2441281.php#xtor=RSS-70", + "creator": "Joel Cossardeaux", + "pubDate": "Mon, 15 Nov 2021 13:40:31 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Emplois fictifs : François Fillon à nouveau devant les juges", + "description": "La Cour d'appel de Paris se penche à partir de lundi sur les délits de détournement de fonds publics, complicité et recel d'abus de biens sociaux reprochés à l'ancien Premier ministre et à son épouse, Penelope. Le couple avait été lourdement condamné en première instance.", + "content": "La Cour d'appel de Paris se penche à partir de lundi sur les délits de détournement de fonds publics, complicité et recel d'abus de biens sociaux reprochés à l'ancien Premier ministre et à son épouse, Penelope. Le couple avait été lourdement condamné en première instance.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700309485877-emplois-fictifs-francois-fillon-a-nouveau-devant-les-juges-2441100.php#xtor=RSS-70", + "creator": "Valerie de Senneville", + "pubDate": "Sun, 14 Nov 2021 11:37:19 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nouvelle-Calédonie : le référendum aura bien lieu le 12 décembre", + "description": "La date, qui faisait l'objet de débats, a été confirmée par le Haut-commissaire de la République en Nouvelle-Calédonie, Patrice Faure. Plusieurs demandes de report avaient été faites par les indépendantistes en raison de l'épidémie de Covid. Ces derniers appellent au boycott du scrutin.", + "content": "La date, qui faisait l'objet de débats, a été confirmée par le Haut-commissaire de la République en Nouvelle-Calédonie, Patrice Faure. Plusieurs demandes de report avaient été faites par les indépendantistes en raison de l'épidémie de Covid. Ces derniers appellent au boycott du scrutin.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700315614481-nouvelle-caledonie-le-referendum-aura-bien-lieu-le-12-decembre-2441026.php#xtor=RSS-70", + "creator": "Les Echos", + "pubDate": "Fri, 12 Nov 2021 10:51:33 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Le « ni-ni » de Gérard Larcher : ni Emmanuel Macron ni Eric Zemmour", + "description": "La course à l'investiture entre dans sa dernière ligne droite chez LR. A la veille du premier débat entre les cinq candidats, le président du Sénat Gérard Larcher croit au rassemblement de son parti. Il marque aussi ses différences avec Eric Zemmour et Emmanuel Macron.", + "content": "La course à l'investiture entre dans sa dernière ligne droite chez LR. A la veille du premier débat entre les cinq candidats, le président du Sénat Gérard Larcher croit au rassemblement de son parti. Il marque aussi ses différences avec Eric Zemmour et Emmanuel Macron.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700278565007-le-ni-ni-de-gerard-larcher-ni-emmanuel-macron-ni-eric-zemmour-2440067.php#xtor=RSS-70", + "creator": "Yves Vilaginés", + "pubDate": "Sun, 07 Nov 2021 13:47:43 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Alexandre Benalla condamné à trois ans de prison dont un ferme", + "description": "L'ancien proche collaborateur d'Emmanuel Macron a été condamné à trois ans de prison, dont deux avec sursis, pour les violences dont il était accusé en marge des manifestations du 1 er  mai 2018 à Paris. Au total, l'homme était poursuivi pour 12 infractions.", + "content": "L'ancien proche collaborateur d'Emmanuel Macron a été condamné à trois ans de prison, dont deux avec sursis, pour les violences dont il était accusé en marge des manifestations du 1 er  mai 2018 à Paris. Au total, l'homme était poursuivi pour 12 infractions.", + "category": "Politique - Société", + "link": "https://www.lesechos.fr/politique-societe/politique/0700268140661-alexandre-benalla-condamne-a-trois-ans-de-prison-dont-un-ferme-2439994.php#xtor=RSS-70", + "creator": "Les Echos", + "pubDate": "Fri, 05 Nov 2021 15:46:31 +0200", + "folder": "00.03 News/News - FR", + "feed": "Les Echos - Monde", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/News - FR", + "name": "Les Echos - Monde" + }, + { + "title": "Engadget is a web magazine with obsessive daily coverage of everything new in gadgets and consumer electronics", + "subtitle": "", + "link": "https://www.engadget.com/", + "image": null, + "description": "Engadget is a web magazine with obsessive daily coverage of everything new in gadgets and consumer electronics", + "items": [ + { + "title": "Owlet stops selling infant monitoring sock after FDA order", + "description": "

    Following a warning letter from the Food and Drug Administration (FDA), Owlet has stopped selling its popular Smart Sock family in the US. On October 5th, the agency contacted Owlet to tell the company it was selling the wearables “without marketing approval, clearance or authorization.”

    In a response spotted by Deseret News, Owlet says it’s complying with the FDA’s request. It has stopped selling the socks while it seeks clearance from the FDA. The company says it will offer a “new sleep monitoring solution” in the near future.

    “With over one million babies monitored, we are extremely proud of the innovation and technology Owlet has delivered,” the company said. “We will continue to stay focused on our mission and cooperate with the FDA so we can continue to provide sleep monitoring products and solutions to parents and babies.”

    If you own the Smart Sock 3 or one of its predecessors, Owlet notes the FDA didn’t identify any safety with the wearables. It also hasn’t asked the company to issue a recall. Owlet says it will continue to support those products while it works on a new device.

    ", + "content": "

    Following a warning letter from the Food and Drug Administration (FDA), Owlet has stopped selling its popular Smart Sock family in the US. On October 5th, the agency contacted Owlet to tell the company it was selling the wearables “without marketing approval, clearance or authorization.”

    In a response spotted by Deseret News, Owlet says it’s complying with the FDA’s request. It has stopped selling the socks while it seeks clearance from the FDA. The company says it will offer a “new sleep monitoring solution” in the near future.

    “With over one million babies monitored, we are extremely proud of the innovation and technology Owlet has delivered,” the company said. “We will continue to stay focused on our mission and cooperate with the FDA so we can continue to provide sleep monitoring products and solutions to parents and babies.”

    If you own the Smart Sock 3 or one of its predecessors, Owlet notes the FDA didn’t identify any safety with the wearables. It also hasn’t asked the company to issue a recall. Owlet says it will continue to support those products while it works on a new device.

    ", + "category": "Health Care Industry", + "link": "https://www.engadget.com/owlet-fda-warning-211549000.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Thu, 25 Nov 2021 21:15:49 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The best Black Friday tech deals that are already available", + "description": "

    While we've had weeks of early Black Friday deals already, Thanksgiving has brought additional sales, some of which we expect to continue through Black Friday proper. This has been a trend for the past few years — if you happen to be online and searching for Black Friday deals a few hours before the day arrives, you can expect at least a handful of solid early sales. And that strategy may pay off this year even more than others as supply chain issues continue to push back shipping estimates. The sooner you grab the items on your gift list, the better the chance they'll arrive on time. To make your search a bit easier, we gathered the best early Black Friday tech deals we could find here.

    Sony WH-1000XM4

    \"Sony
    Billy Steele / Engadget

    Our favorite pair of Sony headphones, the WH-1000XM4, are down to $248 right now, which is just about $100 off their regular price. We gave these cans a score of 94 for their powerful ANC, immersive sound quality and multi-device connectivity.

    Buy WH-1000XM4 at Amazon - $248Buy WH-1000XM4 at Best Buy - $248

    AirPods Pro

    \"AirPods
    Billy Steele / Engadget

    The updated AirPods Pro with the MagSafe case are on sale for $159 at Amazon and Walmart right now. If you're a Sam's Club member, you can grab the Pros for $150 with $70 of Scan & Go Savings beginning on Black Friday. These offer the best sound quality and fit of any of Apple's earbuds, and now they have a magnetic wireless charging case that's compatible with MagSafe accessories.

    Buy AirPods Pro at Amazon - $159Buy AirPods Pro at Walmart - $159

    Apple Watch SE

    \"Apple
    Cherlynn Low / Engadget

    The Apple Watch SE has been knocked down to $219, or about $60 off its normal price. This is the best Watch for wearable newbies as well as those with tight budgets. We gave it a score of 88 for its responsive performance, comfortable design and solid feature set for the price.

    Buy Apple Watch SE at Amazon - $219

    One-day SanDisk, Lexar, PNY storage sale

    \"Lexar
    Lexar

    Amazon's latest 24-hour sale knocks up to 25 percent off drives from Western Digital as well as up to 30 percent off microSD cards, thumb drives and more from SanDisk, Lexar, PNY and others. Some of the highlights include the the SanDisk Extreme portable drive in 2TB, which is 60 percent off and down to $185, Lexar's 1TB Play microSD card, which is down to a record low of $128 and a 64GB Lexar Professional 2000x SD card, which is on sale for $60.

    Shop WD drive sale at AmazonShop SanDisk, Lexar storage sale at Amazon

    Bose QuietComfort 45

    \"With
    Billy Steele/Engadget

    Bose's new QuietComfort 45 headphones remain on sale for $279 right now, or $50 off their normal price. We gave them a score of 86 for their clear, balanced audio, improved ANC and long battery life.

    Buy QuietComfort 45 at Amazon - $279Buy QuietComfort 45 at Best Buy - $279

    Sony WF-1000XM4

    \"Sony
    Billy Steele/Engadget

    Sony's excellent WF-1000XM4 earbuds are down to $248. We gave them a score of 86 for their great sound quality, powerful ANC and improved battery life.

    Buy WF-1000XM4 at Amazon - $248Buy WF-1000XM4 at Best Buy - $248

    iRobot Roomba 694

    \"iRobot
    Valentina Palladino / Engadget

    The Roomba 694 is $95 off for Black Friday, bringing it down to $179. This model came out earlier this year and works well on both hard and carpeted floors, supports WiFi connectivity for Alexa and Google Assistant commands and can be controlled via the iRobot mobile app.

    Buy Roomba 694 at Amazon - $179

    Samsung EVO Select microSD

    Samsung’s EVO Select microSDXC card in 128GB is down to $16, or 20 percent off its normal price. This is the latest model and while you can find microSD cards for less, EVO is a reliable brand and you're getting a full-sized adapter with this one.

    Buy EVO Select microSD (128GB) at Amazon - $16

    Elgato Streamdeck

    \"Elgato
    Will Lipman Photography for Engadget

    Elgato's Streamdeck is on sale right now for $100, or $50 off its normal price. If you or someone who know wants to break into the game-streaming world, the Streamdeck is one of those gadgets that can make it much easier to do so. It's a small desktop controller with 15 LCD keys that you can customize to manage programs like OBS, Twitch and others. It makes multitasking while on stream much easier and it'll make your entire setup feel more professional, too.

    Buy Streamdeck at Amazon - $100

    Samsung Galaxy Z Flip 3

    \"The
    David Imel for Engadget

    The Galaxy Z Flip 3 smartphone is on sale for $850 right now, and you can get a free pair of Galaxy Buds 2 when you buy. This was the most impressive Samsung foldable to come out this year and we gave it a score of 82 for its striking, flexible screen, attractive build and water-resistant design.

    Buy Galaxy Z Flip 3 at Amazon - $850

    OnePlus 9 Pro

    \"OnePlus
    Chris Velazco/Engadget

    OnePlus' latest flagship, the 9 Pro, has dropped to $799 for Black Friday, which is a whopping $270 off its normal price. The OnePlus 9 is also on sale for $599, or $130 off its normal price. We gave the Pro a score of 88 for its fantastic display, stellar performance and improved camera setup.

    Buy OnePlus 9 Pro at Amazon - $799Buy OnePlus 9 at Amazon - $599

    Kindle

    \"Amazon
    Engadget

    Amazon's standard Kindle has been discounted to $50, which is its best price yet. We gave this e-reader a score of 91 for its improved contrast display, extra front lights and sleeker design. If you buy two Kindles, you'll get an extra $20 off as well, bringing the price for each down to $40.

    Buy Kindle at Amazon - $50

    Sony WH-CH710N

    \"Sony
    Billy Steele / Engadget

    Sony's affordable WH-CH710N wireless headphones are even cheaper right now at $78. We like these cans for their deep, punchy bass, solid ANC and 35-hour battery life.

    Buy WH-CH710N at Amazon - $78Buy WH-CH710N at Best Buy - $78

    Instant Pot

    \"Instant
    Instant Pot

    The six-quart Instant Pot Duo Plus is down to $60 for Black Friday, which is half off its normal price. This model supports pressure cook, warm, sauté, rice cook, sous vide and more modes, and its mid-size capacity makes it good for preparing food for many people.

    Buy Instant Pot Duo Plus - $60Buy Instant Pot Duo Plus at Best Buy - $60

    Google Nest Audio

    \"Google
    Engadget

    Google's Nest Audio is down to $60, or $40 off its normal price. This is one of the best smart speakers you can get, especially if you already use the Google Assistant. We gave it a score of 87 for its solid audio quality, attractive design and good performance.

    Buy Nest Audio at Best Buy - $60

    Amazon Echo

    \"Amazon
    Nathan Ingraham / Engadget

    Amazon's Echo smart speaker is on sale for $60 right now. We gave it a score of 89 for its solid audio quality, attractive design and inclusion of a 3.5mm audio jack.

    Buy Echo at Amazon - $60

    Samsung Galaxy Tab S7 and S7+

    \"Samsung
    Cherlynn Low / Engadget

    Both the Galaxy S7 and S7+ tablets have been discounted for Black Friday, down to $499 and $699, respectively. Either would be good options for Android lovers looking for a new tablet — we were impressed by their beautiful build, vibrant 120Hz displays, long battery lives and S Pen support.

    Buy Tab S7 at Amazon - $499Buy Tab S7 at Samsung - $499Buy Tab S7+ at Amazon - $699Buy Tab S7+ at Samsung - $699

    Beats Studio Buds

    \"Beats
    Billy Steele/Engadget

    The Beats Studio Buds have been discounted to $100. These are some of the best Beats buds for most people and we gave them a score of 84 for their balanced sound, hands-free Siri controls and quick pairing with both iOS and Android.

    Buy Studio Buds at Amazon - $100

    Jabra Elite 85t

    \"Jabra
    Engadget

    Jabra's Elite 85t earbuds are on sale for $150, which is $80 off its normal price. These earbuds impressed us with their strong ANC, comfortable size and wireless charging case.

    Buy Elite 85t at Amazon - $150

    Fitbit Charge 5

    \"Fitbit
    Valentina Palladino / Engadget

    You can pick up the Fitbit Charge 5 for $130, or $50 less than usual. This is Fitbit's most comprehensive fitness band and it earned a score of 82 from us for its full-color touchscreen, built-in GPS, onboard EDA sensors for stress tracking and multi-day battery life.

    Buy Charge 5 at Amazon - $130

    Chromecast with Google TV

    The Chromecast with Google TV has dropped to $40, which is $10 cheaper than usual. We gave the device a score of 86 for its 4K HDR streaming capabilities, Dolby Vision and Atmos support plus its much needed and very handy new remote.

    Buy Chromecast with Google TV at Best Buy - $40

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    The Roku Streambar is down to $80 right now, or $50 off its normal price. It's a compact soundbar that will upgrade any living room relying on an old TV with weak audio. We gave it a score of 86 for its solid audio quality, Dolby Audio support and built-in 4K streaming technology.

    Buy Roku Streambar at Amazon - $80

    NVIDIA Shield TV

    \"Nvidia
    Engadget

    NVIDIA's Shield TV has dropped to $129, or roughly $20 cheaper than usual. This is one of the more powerful streaming devices available today thanks to its Tegra X1+ processor, support for Dolby Vision HDR, Dolby Atmos, Chromecast 4K and AI-powered 4K upscaling.

    Buy NVIDIA Shield TV at Amazon - $129Buy NVIDIA Shield at Best Buy - $129

    Samsung T7 SSD

    \"Samsung
    Samsung

    The Samsung T7 SSD in 1TB is down to a record low of $110, which is 35 percent off and the best price we've seen. You can also get the 1TB T7 Touch with a built-in fingerprint reader for 21 percent off, or $150. It has reads speeds up to 1,050 MB/s and write speeds up to 1,000 MB/s, plus it has a shock-resistant unibody and support for Dynamic Thermal Guard to control heat levels.

    Buy Samsung T7 (1TB) at Amazon - $110Buy Samsung T7 Touch (1TB) at Amazon - $150

    Crucial MX500 internal SSD

    The compact Crucial MX500 internal drive in 1TB is down to $85, which is just a couple of dollars shy of its all-time-low price. We like its sequential read speeds of up to 560 MB/s and sequential write speeds of up to 510 MB/s, along with its standard 2.5-inch design and integrated power loss immunity feature.

    Buy Crucial MX500 (1TB) at Amazon - $85

    55-inch Sony X950H

    Sony's X950H LED smart TV is on sale for $800, which is 33 percent off. While not an OLED set, this TV has local dimming LED backlighting along with the Android TV operating system, Google Assistant and Alexa support, Game Mode and AirPlay 2 and HomeKit compatibility.

    Buy 55-inch Sony X950H at Amazon - $800

    55-inch Vizio OLED 4K TV

    Vizio's 55-inch H1 OLED TV is $300 off right now, bringing it down to $1,000. This is a solid price for a mid-sized OLED set that supports Dolby Vision HDR, Vizio's IQ Ultra processor, 120Hz gaming with VRR and built-in AirPlay and Chromecast technology.

    Buy 55-inch Vizio OLED at Best Buy - $1,000

    Philips Hue White and Color smart bulbs (3 pack)

    \"Amazon
    Amazon

    A three-pack of Philips Hue White and Color smart lights is on sale for $100, or about $30 off its normal price. While not a record low, it's a good sale price on smart bulbs that rarely see deep discounts. These can be controlled via the Philips Hue app and almost any voice assistant including Alexa, Google Assistant and Siri, and they support thousands of colors as well as 50,000 shares of warm and cool white light.

    Buy Philips Hue smart lights at Amazon - $100Buy Philips Hue smart lights at Best Buy - $100

    Adobe All Apps Plan

    \"Woman
    grinvalds via Getty Images

    First-time subscribers to Adobe CC can get the All Apps plan for 40 percent off right now, bringing the monthly charge down to $30. If you're a student, it's even cheaper — just $16 per month for first-time customers. These programs are considered standard in most creative fields, so it's worth grabbing this deal if you know you'll be using things like Photoshop or Illustrator in the future.

    Subscribe to All Apps plan at Adobe - $30/month

    Headspace

    \"Headspace\"
    Headspace

    The meditation app Headspace is down to $5 per month for new and returning customers for Black Friday. That's 60 percent off the normal price, and those who want to pay for a year upfront will get 50 percent off and pay only $35 for the year. Headspace has a bunch of guided meditation sessions along with sleep stories, calming ambient music, guided yoga sessions for stress management and more.

    Subscribe to Headspace starting at $5/month

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    While we've had weeks of early Black Friday deals already, Thanksgiving has brought additional sales, some of which we expect to continue through Black Friday proper. This has been a trend for the past few years — if you happen to be online and searching for Black Friday deals a few hours before the day arrives, you can expect at least a handful of solid early sales. And that strategy may pay off this year even more than others as supply chain issues continue to push back shipping estimates. The sooner you grab the items on your gift list, the better the chance they'll arrive on time. To make your search a bit easier, we gathered the best early Black Friday tech deals we could find here.

    Sony WH-1000XM4

    \"Sony
    Billy Steele / Engadget

    Our favorite pair of Sony headphones, the WH-1000XM4, are down to $248 right now, which is just about $100 off their regular price. We gave these cans a score of 94 for their powerful ANC, immersive sound quality and multi-device connectivity.

    Buy WH-1000XM4 at Amazon - $248Buy WH-1000XM4 at Best Buy - $248

    AirPods Pro

    \"AirPods
    Billy Steele / Engadget

    The updated AirPods Pro with the MagSafe case are on sale for $159 at Amazon and Walmart right now. If you're a Sam's Club member, you can grab the Pros for $150 with $70 of Scan & Go Savings beginning on Black Friday. These offer the best sound quality and fit of any of Apple's earbuds, and now they have a magnetic wireless charging case that's compatible with MagSafe accessories.

    Buy AirPods Pro at Amazon - $159Buy AirPods Pro at Walmart - $159

    Apple Watch SE

    \"Apple
    Cherlynn Low / Engadget

    The Apple Watch SE has been knocked down to $219, or about $60 off its normal price. This is the best Watch for wearable newbies as well as those with tight budgets. We gave it a score of 88 for its responsive performance, comfortable design and solid feature set for the price.

    Buy Apple Watch SE at Amazon - $219

    One-day SanDisk, Lexar, PNY storage sale

    \"Lexar
    Lexar

    Amazon's latest 24-hour sale knocks up to 25 percent off drives from Western Digital as well as up to 30 percent off microSD cards, thumb drives and more from SanDisk, Lexar, PNY and others. Some of the highlights include the the SanDisk Extreme portable drive in 2TB, which is 60 percent off and down to $185, Lexar's 1TB Play microSD card, which is down to a record low of $128 and a 64GB Lexar Professional 2000x SD card, which is on sale for $60.

    Shop WD drive sale at AmazonShop SanDisk, Lexar storage sale at Amazon

    Bose QuietComfort 45

    \"With
    Billy Steele/Engadget

    Bose's new QuietComfort 45 headphones remain on sale for $279 right now, or $50 off their normal price. We gave them a score of 86 for their clear, balanced audio, improved ANC and long battery life.

    Buy QuietComfort 45 at Amazon - $279Buy QuietComfort 45 at Best Buy - $279

    Sony WF-1000XM4

    \"Sony
    Billy Steele/Engadget

    Sony's excellent WF-1000XM4 earbuds are down to $248. We gave them a score of 86 for their great sound quality, powerful ANC and improved battery life.

    Buy WF-1000XM4 at Amazon - $248Buy WF-1000XM4 at Best Buy - $248

    iRobot Roomba 694

    \"iRobot
    Valentina Palladino / Engadget

    The Roomba 694 is $95 off for Black Friday, bringing it down to $179. This model came out earlier this year and works well on both hard and carpeted floors, supports WiFi connectivity for Alexa and Google Assistant commands and can be controlled via the iRobot mobile app.

    Buy Roomba 694 at Amazon - $179

    Samsung EVO Select microSD

    Samsung’s EVO Select microSDXC card in 128GB is down to $16, or 20 percent off its normal price. This is the latest model and while you can find microSD cards for less, EVO is a reliable brand and you're getting a full-sized adapter with this one.

    Buy EVO Select microSD (128GB) at Amazon - $16

    Elgato Streamdeck

    \"Elgato
    Will Lipman Photography for Engadget

    Elgato's Streamdeck is on sale right now for $100, or $50 off its normal price. If you or someone who know wants to break into the game-streaming world, the Streamdeck is one of those gadgets that can make it much easier to do so. It's a small desktop controller with 15 LCD keys that you can customize to manage programs like OBS, Twitch and others. It makes multitasking while on stream much easier and it'll make your entire setup feel more professional, too.

    Buy Streamdeck at Amazon - $100

    Samsung Galaxy Z Flip 3

    \"The
    David Imel for Engadget

    The Galaxy Z Flip 3 smartphone is on sale for $850 right now, and you can get a free pair of Galaxy Buds 2 when you buy. This was the most impressive Samsung foldable to come out this year and we gave it a score of 82 for its striking, flexible screen, attractive build and water-resistant design.

    Buy Galaxy Z Flip 3 at Amazon - $850

    OnePlus 9 Pro

    \"OnePlus
    Chris Velazco/Engadget

    OnePlus' latest flagship, the 9 Pro, has dropped to $799 for Black Friday, which is a whopping $270 off its normal price. The OnePlus 9 is also on sale for $599, or $130 off its normal price. We gave the Pro a score of 88 for its fantastic display, stellar performance and improved camera setup.

    Buy OnePlus 9 Pro at Amazon - $799Buy OnePlus 9 at Amazon - $599

    Kindle

    \"Amazon
    Engadget

    Amazon's standard Kindle has been discounted to $50, which is its best price yet. We gave this e-reader a score of 91 for its improved contrast display, extra front lights and sleeker design. If you buy two Kindles, you'll get an extra $20 off as well, bringing the price for each down to $40.

    Buy Kindle at Amazon - $50

    Sony WH-CH710N

    \"Sony
    Billy Steele / Engadget

    Sony's affordable WH-CH710N wireless headphones are even cheaper right now at $78. We like these cans for their deep, punchy bass, solid ANC and 35-hour battery life.

    Buy WH-CH710N at Amazon - $78Buy WH-CH710N at Best Buy - $78

    Instant Pot

    \"Instant
    Instant Pot

    The six-quart Instant Pot Duo Plus is down to $60 for Black Friday, which is half off its normal price. This model supports pressure cook, warm, sauté, rice cook, sous vide and more modes, and its mid-size capacity makes it good for preparing food for many people.

    Buy Instant Pot Duo Plus - $60Buy Instant Pot Duo Plus at Best Buy - $60

    Google Nest Audio

    \"Google
    Engadget

    Google's Nest Audio is down to $60, or $40 off its normal price. This is one of the best smart speakers you can get, especially if you already use the Google Assistant. We gave it a score of 87 for its solid audio quality, attractive design and good performance.

    Buy Nest Audio at Best Buy - $60

    Amazon Echo

    \"Amazon
    Nathan Ingraham / Engadget

    Amazon's Echo smart speaker is on sale for $60 right now. We gave it a score of 89 for its solid audio quality, attractive design and inclusion of a 3.5mm audio jack.

    Buy Echo at Amazon - $60

    Samsung Galaxy Tab S7 and S7+

    \"Samsung
    Cherlynn Low / Engadget

    Both the Galaxy S7 and S7+ tablets have been discounted for Black Friday, down to $499 and $699, respectively. Either would be good options for Android lovers looking for a new tablet — we were impressed by their beautiful build, vibrant 120Hz displays, long battery lives and S Pen support.

    Buy Tab S7 at Amazon - $499Buy Tab S7 at Samsung - $499Buy Tab S7+ at Amazon - $699Buy Tab S7+ at Samsung - $699

    Beats Studio Buds

    \"Beats
    Billy Steele/Engadget

    The Beats Studio Buds have been discounted to $100. These are some of the best Beats buds for most people and we gave them a score of 84 for their balanced sound, hands-free Siri controls and quick pairing with both iOS and Android.

    Buy Studio Buds at Amazon - $100

    Jabra Elite 85t

    \"Jabra
    Engadget

    Jabra's Elite 85t earbuds are on sale for $150, which is $80 off its normal price. These earbuds impressed us with their strong ANC, comfortable size and wireless charging case.

    Buy Elite 85t at Amazon - $150

    Fitbit Charge 5

    \"Fitbit
    Valentina Palladino / Engadget

    You can pick up the Fitbit Charge 5 for $130, or $50 less than usual. This is Fitbit's most comprehensive fitness band and it earned a score of 82 from us for its full-color touchscreen, built-in GPS, onboard EDA sensors for stress tracking and multi-day battery life.

    Buy Charge 5 at Amazon - $130

    Chromecast with Google TV

    The Chromecast with Google TV has dropped to $40, which is $10 cheaper than usual. We gave the device a score of 86 for its 4K HDR streaming capabilities, Dolby Vision and Atmos support plus its much needed and very handy new remote.

    Buy Chromecast with Google TV at Best Buy - $40

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    The Roku Streambar is down to $80 right now, or $50 off its normal price. It's a compact soundbar that will upgrade any living room relying on an old TV with weak audio. We gave it a score of 86 for its solid audio quality, Dolby Audio support and built-in 4K streaming technology.

    Buy Roku Streambar at Amazon - $80

    NVIDIA Shield TV

    \"Nvidia
    Engadget

    NVIDIA's Shield TV has dropped to $129, or roughly $20 cheaper than usual. This is one of the more powerful streaming devices available today thanks to its Tegra X1+ processor, support for Dolby Vision HDR, Dolby Atmos, Chromecast 4K and AI-powered 4K upscaling.

    Buy NVIDIA Shield TV at Amazon - $129Buy NVIDIA Shield at Best Buy - $129

    Samsung T7 SSD

    \"Samsung
    Samsung

    The Samsung T7 SSD in 1TB is down to a record low of $110, which is 35 percent off and the best price we've seen. You can also get the 1TB T7 Touch with a built-in fingerprint reader for 21 percent off, or $150. It has reads speeds up to 1,050 MB/s and write speeds up to 1,000 MB/s, plus it has a shock-resistant unibody and support for Dynamic Thermal Guard to control heat levels.

    Buy Samsung T7 (1TB) at Amazon - $110Buy Samsung T7 Touch (1TB) at Amazon - $150

    Crucial MX500 internal SSD

    The compact Crucial MX500 internal drive in 1TB is down to $85, which is just a couple of dollars shy of its all-time-low price. We like its sequential read speeds of up to 560 MB/s and sequential write speeds of up to 510 MB/s, along with its standard 2.5-inch design and integrated power loss immunity feature.

    Buy Crucial MX500 (1TB) at Amazon - $85

    55-inch Sony X950H

    Sony's X950H LED smart TV is on sale for $800, which is 33 percent off. While not an OLED set, this TV has local dimming LED backlighting along with the Android TV operating system, Google Assistant and Alexa support, Game Mode and AirPlay 2 and HomeKit compatibility.

    Buy 55-inch Sony X950H at Amazon - $800

    55-inch Vizio OLED 4K TV

    Vizio's 55-inch H1 OLED TV is $300 off right now, bringing it down to $1,000. This is a solid price for a mid-sized OLED set that supports Dolby Vision HDR, Vizio's IQ Ultra processor, 120Hz gaming with VRR and built-in AirPlay and Chromecast technology.

    Buy 55-inch Vizio OLED at Best Buy - $1,000

    Philips Hue White and Color smart bulbs (3 pack)

    \"Amazon
    Amazon

    A three-pack of Philips Hue White and Color smart lights is on sale for $100, or about $30 off its normal price. While not a record low, it's a good sale price on smart bulbs that rarely see deep discounts. These can be controlled via the Philips Hue app and almost any voice assistant including Alexa, Google Assistant and Siri, and they support thousands of colors as well as 50,000 shares of warm and cool white light.

    Buy Philips Hue smart lights at Amazon - $100Buy Philips Hue smart lights at Best Buy - $100

    Adobe All Apps Plan

    \"Woman
    grinvalds via Getty Images

    First-time subscribers to Adobe CC can get the All Apps plan for 40 percent off right now, bringing the monthly charge down to $30. If you're a student, it's even cheaper — just $16 per month for first-time customers. These programs are considered standard in most creative fields, so it's worth grabbing this deal if you know you'll be using things like Photoshop or Illustrator in the future.

    Subscribe to All Apps plan at Adobe - $30/month

    Headspace

    \"Headspace\"
    Headspace

    The meditation app Headspace is down to $5 per month for new and returning customers for Black Friday. That's 60 percent off the normal price, and those who want to pay for a year upfront will get 50 percent off and pay only $35 for the year. Headspace has a bunch of guided meditation sessions along with sleep stories, calming ambient music, guided yoga sessions for stress management and more.

    Subscribe to Headspace starting at $5/month

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/best-early-black-friday-2021-tech-deals-211526875.html?src=rss", + "creator": "Engadget", + "pubDate": "Thu, 25 Nov 2021 21:15:26 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "New UK law will hit smart home device makers with big fines for using default passwords", + "description": "

    The UK has introduced the Product Security and Telecommunications Infrastructure (PSTI) Bill, a suite of new regulations designed to improve security on smart home devices, the government announced. The rules will ban easy-to-guess default passwords, require disclosure of security update release dates and more — under penalty of hefty fines. 

    The new rules were originally proposed last year, following a long period of consultation, and are largely unchanged. The first one is a ban on easy-to-guess default passwords, including classics like "password" and "admin." All passwords that come with new devices will "need to be unique and not resettable to any universal factory setting," the law states.

    "Most of us assume if a product is for sale, it’s safe and secure. Yet many are not, putting too many of us at risk of fraud and theft," said UK Minister Julia Lopez. "Our Bill will put a firewall around everyday tech from phones and thermostats to dishwashers, baby monitors and doorbells, and see huge fines for those who fall foul of tough new security standards."

    Next, manufacturers must tell customers at the point of sale and keep them updated about the minimum time requirement for security patches and updates. If the product doesn't come with them, that fact must be disclosed. Finally, manufacturers must provide a public point of contact for security researchers to they can easily disclose flaws and bugs.

    The government is hoping to curtail attacks on household devices, citing 1.5 billion attempted compromises of Internet of Things (IoT) devices in the first half of 2020 alone. As examples, it cited a 2017 attack in which hackers stole data from a casino by attacking an internet-connected fish tank. It added that "in extreme cases, hostile groups have taken advantage of poor security features to access people's webcams." 

    The rules will be overseen by a regulator that will be appointed once the bill comes into law. Fines could hit up to £10 million ($13.3 million) or 4 percent of a company's gross revenue — with up to £20,000 a day levied for ongoing infractions. The law applies not only to manufacturers, but also businesses that import tech products into the UK. Products include smartphones, routers, security cameras, games consoles and home speakers, along with internet-enabled appliances and toys. 

    ", + "content": "

    The UK has introduced the Product Security and Telecommunications Infrastructure (PSTI) Bill, a suite of new regulations designed to improve security on smart home devices, the government announced. The rules will ban easy-to-guess default passwords, require disclosure of security update release dates and more — under penalty of hefty fines. 

    The new rules were originally proposed last year, following a long period of consultation, and are largely unchanged. The first one is a ban on easy-to-guess default passwords, including classics like "password" and "admin." All passwords that come with new devices will "need to be unique and not resettable to any universal factory setting," the law states.

    "Most of us assume if a product is for sale, it’s safe and secure. Yet many are not, putting too many of us at risk of fraud and theft," said UK Minister Julia Lopez. "Our Bill will put a firewall around everyday tech from phones and thermostats to dishwashers, baby monitors and doorbells, and see huge fines for those who fall foul of tough new security standards."

    Next, manufacturers must tell customers at the point of sale and keep them updated about the minimum time requirement for security patches and updates. If the product doesn't come with them, that fact must be disclosed. Finally, manufacturers must provide a public point of contact for security researchers to they can easily disclose flaws and bugs.

    The government is hoping to curtail attacks on household devices, citing 1.5 billion attempted compromises of Internet of Things (IoT) devices in the first half of 2020 alone. As examples, it cited a 2017 attack in which hackers stole data from a casino by attacking an internet-connected fish tank. It added that "in extreme cases, hostile groups have taken advantage of poor security features to access people's webcams." 

    The rules will be overseen by a regulator that will be appointed once the bill comes into law. Fines could hit up to £10 million ($13.3 million) or 4 percent of a company's gross revenue — with up to £20,000 a day levied for ongoing infractions. The law applies not only to manufacturers, but also businesses that import tech products into the UK. Products include smartphones, routers, security cameras, games consoles and home speakers, along with internet-enabled appliances and toys. 

    ", + "category": "Politics & Government", + "link": "https://www.engadget.com/uk-law-imposes-stiff-fines-on-insecure-smart-home-devices-200031873.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Thu, 25 Nov 2021 20:00:31 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Razer Black Friday deals include huge discounts for Kishi phone controllers", + "description": "

    A ton of Razer accessories are on sale on Amazon for Black Friday, including mice, headsets, keyboards and a gaming chair. There are all-time lows on a bunch of products too. One of the better deals is for the Viper Ultimate wireless mouse. The price has dropped to $90, which is $60 off the regular price. The Viper Wireless is available in both black and white. It's an ambidextrous mouse that has Razer's optical switches, a 20K DPI optical sensor and low-latency HyperSpeed wireless tech.

    Buy Viper Ultimate (Black) at Amazon - $90Buy Viper Ultimate (White) at Amazon - $90

    Another wireless mouse worth checking out in the sale is the DeathAdder v2 Pro. It too has a 20K DPI Optical Sensor and optical switches. You'll get up to 120 hours of battery life over Bluetooth or 70 hours via HyperSpeed, according to Razer. It's available for $70 at the moment, which is the lowest price we've seen to date. The mouse typically costs $130.

    Buy DeathAdder v2 Pro at Amazon - $70

    Also hitting all-time-low prices are the iOS and Android versions of the Kishi controller. It's a gamepad that you can clip your phone into. Along with playing native mobile games, you can use it with the likes of Xbox Game Pass Ultimate, Google Stadia, Amazon Luna and GeForce Now for cloud gaming, as well as games streamed from your console or PC. The Android version of the controller is $45 ($35 off) and the iPhone model is currently $60 (down $40).

    Buy Razer Kishi (Android) at Amazon - $45Buy Razer Kishi (iPhone) at Amazon - $60

    Elsewhere, the Kraken X Ultralight wired gaming headset is worthy of attention. It has a bendable, noise-canceling mic and is compatible with PC and all consoles. The classic black verison of the headset, which is typically $50, currently costs $30, another all-time low.

    Buy Razer Kraken X Ultralight at Amazon - $30

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    A ton of Razer accessories are on sale on Amazon for Black Friday, including mice, headsets, keyboards and a gaming chair. There are all-time lows on a bunch of products too. One of the better deals is for the Viper Ultimate wireless mouse. The price has dropped to $90, which is $60 off the regular price. The Viper Wireless is available in both black and white. It's an ambidextrous mouse that has Razer's optical switches, a 20K DPI optical sensor and low-latency HyperSpeed wireless tech.

    Buy Viper Ultimate (Black) at Amazon - $90Buy Viper Ultimate (White) at Amazon - $90

    Another wireless mouse worth checking out in the sale is the DeathAdder v2 Pro. It too has a 20K DPI Optical Sensor and optical switches. You'll get up to 120 hours of battery life over Bluetooth or 70 hours via HyperSpeed, according to Razer. It's available for $70 at the moment, which is the lowest price we've seen to date. The mouse typically costs $130.

    Buy DeathAdder v2 Pro at Amazon - $70

    Also hitting all-time-low prices are the iOS and Android versions of the Kishi controller. It's a gamepad that you can clip your phone into. Along with playing native mobile games, you can use it with the likes of Xbox Game Pass Ultimate, Google Stadia, Amazon Luna and GeForce Now for cloud gaming, as well as games streamed from your console or PC. The Android version of the controller is $45 ($35 off) and the iPhone model is currently $60 (down $40).

    Buy Razer Kishi (Android) at Amazon - $45Buy Razer Kishi (iPhone) at Amazon - $60

    Elsewhere, the Kraken X Ultralight wired gaming headset is worthy of attention. It has a bendable, noise-canceling mic and is compatible with PC and all consoles. The classic black verison of the headset, which is typically $50, currently costs $30, another all-time low.

    Buy Razer Kraken X Ultralight at Amazon - $30

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Shopping", + "link": "https://www.engadget.com/razer-black-friday-kishi-viper-ultimate-deathadder-v2-pro-195037617.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Thu, 25 Nov 2021 19:50:37 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Virgin Galactic unveils the first winner of a free trip to space", + "description": "

    Virgin Galactic has announced the winner of its Omaze giveaway. Announced in July, the sweepstakes saw the company give everyday people a chance to earn two tickets to the edge of space. The winner is Keisha S, a health coach from Antigua and Barbuda. She plans to give the second ticket to her daughter, who, it turns out, is an astrophysics student.

    “I’ve always had a lifelong love of flying and a fascination with space, and this is truly a dream come true for me,” said Keisha. “It means the world to me. I hope to share this experience with my daughter, so together we can inspire the next generation to follow their dreams.”

    While the sweepstakes was free to enter, you could also donate to Space for Humanity, a charity devoted to making spaceflight more accessible, to earn more entries. Virgin Galactic estimates it raised about $1.7 million in grants for the organization’s Citizen Astronaut Program in that way.

    As we noted when the company first announced the sweepstakes, it was a way for Virgin Galactic to drum up hype for its space tourism efforts. At the same time, it was something of a moment for private spaceflight. The idea of winning tickets to space wasn’t something a person could dream of when government-funded agencies were the only organizations flying to space.

    ", + "content": "

    Virgin Galactic has announced the winner of its Omaze giveaway. Announced in July, the sweepstakes saw the company give everyday people a chance to earn two tickets to the edge of space. The winner is Keisha S, a health coach from Antigua and Barbuda. She plans to give the second ticket to her daughter, who, it turns out, is an astrophysics student.

    “I’ve always had a lifelong love of flying and a fascination with space, and this is truly a dream come true for me,” said Keisha. “It means the world to me. I hope to share this experience with my daughter, so together we can inspire the next generation to follow their dreams.”

    While the sweepstakes was free to enter, you could also donate to Space for Humanity, a charity devoted to making spaceflight more accessible, to earn more entries. Virgin Galactic estimates it raised about $1.7 million in grants for the organization’s Citizen Astronaut Program in that way.

    As we noted when the company first announced the sweepstakes, it was a way for Virgin Galactic to drum up hype for its space tourism efforts. At the same time, it was something of a moment for private spaceflight. The idea of winning tickets to space wasn’t something a person could dream of when government-funded agencies were the only organizations flying to space.

    ", + "category": "Contests & Giveaways", + "link": "https://www.engadget.com/virgin-galactic-announces-omaze-sweepstakes-winner-190504449.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Thu, 25 Nov 2021 19:05:04 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Roblox' sues long-banned user for allegedly terrorizing the platform", + "description": "

    Roblox is suing a person it banned years ago for allegedly terrorizing the gaming platform and its community of developers. The Roblox Corporation wants Benjamin Robert Simon to stop his alleged harassment of employees and users on Roblox and elsewhere, and to pay $1.65 million in damages.

    In the filing, which was first reported by Polygon, the company claims Simon, an alleged "cybermob" leader, “commits and encourages unlawful acts designed to injure Roblox and its users.” Roblox banned him years ago, allegedly for using homophobic and racist slurs, harassing others and sexual harassment. Simon is said to use accounts created by others and hacks to maintain access to the platform.

    The suit contains several examples of purported misconduct on Simon's part. Among them is an allegation that he posted "false and misleading terrorist threats" last month that led to a temporary shutdown of the Roblox Developers Conference in San Francisco. Roblox claims it cost $50,000 to investigate the threat and secure the venue.

    In addition, Simon is accused of "glamorizing the April 3, 2018 active shooter and murder at YouTube headquarters in San Bruno, California and threatening/taunting a copycat act of terrorism at Roblox headquarters in nearby San Mateo, California." Roblox also claims he tried to upload a mostly nude photo of himself and images of Adolf Hitler, and attempted to upload a sex game to the platform.

    Simon, a popular YouTuber known as Ruben Sim, allegedly profited from videos of stunts that were uploaded to that platform and Patreon. The Roblox Corporation is suing him for, among other things, breach of contract, fraud and allegedly violating both the Computer Fraud and Abuse Act and the California Comprehensive Computer Data Access and Fraud Act.

    Roblox has tens of millions of daily users, many of whom are kids. Keeping trolls as far away as possible from the platform is important to help protect the platform's young audience. The lawsuit follows an outage that knocked Roblox offline for three days.

    ", + "content": "

    Roblox is suing a person it banned years ago for allegedly terrorizing the gaming platform and its community of developers. The Roblox Corporation wants Benjamin Robert Simon to stop his alleged harassment of employees and users on Roblox and elsewhere, and to pay $1.65 million in damages.

    In the filing, which was first reported by Polygon, the company claims Simon, an alleged "cybermob" leader, “commits and encourages unlawful acts designed to injure Roblox and its users.” Roblox banned him years ago, allegedly for using homophobic and racist slurs, harassing others and sexual harassment. Simon is said to use accounts created by others and hacks to maintain access to the platform.

    The suit contains several examples of purported misconduct on Simon's part. Among them is an allegation that he posted "false and misleading terrorist threats" last month that led to a temporary shutdown of the Roblox Developers Conference in San Francisco. Roblox claims it cost $50,000 to investigate the threat and secure the venue.

    In addition, Simon is accused of "glamorizing the April 3, 2018 active shooter and murder at YouTube headquarters in San Bruno, California and threatening/taunting a copycat act of terrorism at Roblox headquarters in nearby San Mateo, California." Roblox also claims he tried to upload a mostly nude photo of himself and images of Adolf Hitler, and attempted to upload a sex game to the platform.

    Simon, a popular YouTuber known as Ruben Sim, allegedly profited from videos of stunts that were uploaded to that platform and Patreon. The Roblox Corporation is suing him for, among other things, breach of contract, fraud and allegedly violating both the Computer Fraud and Abuse Act and the California Comprehensive Computer Data Access and Fraud Act.

    Roblox has tens of millions of daily users, many of whom are kids. Keeping trolls as far away as possible from the platform is important to help protect the platform's young audience. The lawsuit follows an outage that knocked Roblox offline for three days.

    ", + "category": "Company Legal & Law Matters", + "link": "https://www.engadget.com/roblox-lawsuit-youtuber-terrorist-threat-180054528.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Thu, 25 Nov 2021 18:00:54 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pinterest will no longer force former employees to keep quiet about discrimination cases", + "description": "

    Pinterest will no longer enforce former employees' nondisclosure agreements when it comes to cases of racial and gender-based discrimination, according to NBC News. That's part of the terms the company has agreed to in order to settle the lawsuit filed by its shareholder, the Employees' Retirement System of Rhode Island, for allegedly enabling a culture of discrimination. In addition, it has committed $50 million towards increasing diversity and inclusion within the company.

    The shareholder sued Pinterest after allegations made by former employees Ifeoma Ozoma and Aerica Shimizu Banks became public. In a series of tweets, Ozoma detailed how she fought for a year to be paid and treated fairly. She said Pinterest responded inadequately when one of her white male colleagues shared her name and phone number to racist/misogynistic parts of the internet. Her colleague reportedly doxxed her after she suggested adding a warning on content from Ben Shapiro, whom she'd described as a "white supremacist."

    Meanwhile, Banks said her manager made disparaging comments about her ethnicity (she's Black and Japanese) in front of colleagues. Both Ozoma and Banks said they were paid less than their manager, a white man, despite having similar workloads. 

    The Employees’ Retirement System of Rhode Island argued that by allowing those events to take place, executives perpetrated or knowingly ignored "the long-standing and systemic culture of discrimination and retaliation at Pinterest." Thus, they breached their fiduciary duty. Rhode Island General Treasurer Seth Magaziner said:

    "We pushed for these sweeping reforms to support Pinterest's employees with a fair and safe workplace, and to strengthen the company's brand and performance by ensuring that the values of inclusiveness are made central to Pinterest's identity." 

    As NBC News notes, the fact that Pinterest agreed to release employees from their NDAs reflects the work Ozoma has accomplished since she left the company. She co-sponsored the Silenced No More Act that will make it easier for workers to speak out about racism and harassment in the workplace even if they had previously signed NDAs. California Gov. Gavin Newsom signed it into law in October, and it will be enforced starting on January 1st. 

    Ozoma and Banks aren't the only former employees who spoke out against Pinterest. Former COO Françoise Brougher also said that she was fired after she told CEO Ben Silbermann that she was being given gendered feedback and was being paid less than her male counterparts. She sued the company last year and settled for $22.5 million.

    ", + "content": "

    Pinterest will no longer enforce former employees' nondisclosure agreements when it comes to cases of racial and gender-based discrimination, according to NBC News. That's part of the terms the company has agreed to in order to settle the lawsuit filed by its shareholder, the Employees' Retirement System of Rhode Island, for allegedly enabling a culture of discrimination. In addition, it has committed $50 million towards increasing diversity and inclusion within the company.

    The shareholder sued Pinterest after allegations made by former employees Ifeoma Ozoma and Aerica Shimizu Banks became public. In a series of tweets, Ozoma detailed how she fought for a year to be paid and treated fairly. She said Pinterest responded inadequately when one of her white male colleagues shared her name and phone number to racist/misogynistic parts of the internet. Her colleague reportedly doxxed her after she suggested adding a warning on content from Ben Shapiro, whom she'd described as a "white supremacist."

    Meanwhile, Banks said her manager made disparaging comments about her ethnicity (she's Black and Japanese) in front of colleagues. Both Ozoma and Banks said they were paid less than their manager, a white man, despite having similar workloads. 

    The Employees’ Retirement System of Rhode Island argued that by allowing those events to take place, executives perpetrated or knowingly ignored "the long-standing and systemic culture of discrimination and retaliation at Pinterest." Thus, they breached their fiduciary duty. Rhode Island General Treasurer Seth Magaziner said:

    "We pushed for these sweeping reforms to support Pinterest's employees with a fair and safe workplace, and to strengthen the company's brand and performance by ensuring that the values of inclusiveness are made central to Pinterest's identity." 

    As NBC News notes, the fact that Pinterest agreed to release employees from their NDAs reflects the work Ozoma has accomplished since she left the company. She co-sponsored the Silenced No More Act that will make it easier for workers to speak out about racism and harassment in the workplace even if they had previously signed NDAs. California Gov. Gavin Newsom signed it into law in October, and it will be enforced starting on January 1st. 

    Ozoma and Banks aren't the only former employees who spoke out against Pinterest. Former COO Françoise Brougher also said that she was fired after she told CEO Ben Silbermann that she was being given gendered feedback and was being paid less than her male counterparts. She sued the company last year and settled for $22.5 million.

    ", + "category": "Small Businesses", + "link": "https://www.engadget.com/pinterest-discrimination-cases-nda-180009014.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Thu, 25 Nov 2021 18:00:09 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Albeton software and packs are 25 percent off for Black Friday", + "description": "

    If you want to make music on your computer, you’ll need a digital audio workstation or DAW. One of our favorites is Ableton Live and it’s currently on sale for Black Friday. Until Monday, November 29th, you can get 25 percent off all of the company’s music-making software. That includes all three tiers of Ableton Live 11. The “Intro” tier currently costs $74, down from its usual price of $99, while the “Standard” and “Suite” versions are priced at $337 and $562 at the moment. Abelton has also reduced the cost of Standard and Suite upgrades by 25 percent. You can also get that same discount on packs.

    We’ve seen Ableton offer a 30 percent discount on its software a couple of times in the past, but it doesn’t do so frequently. Students and teachers can get Ableton Live 11 for 40 percent off. If you don’t fall in that category, this may be the best deal you can get on the DAW for the foreseeable future.

    When it comes to audio production tools, Ableton Live is one of our favorites, particularly after the recent version 11 update. The interface can be intimidating at first, but once you learn to find your way around, you’ll discover that it will encourage you to experiment. If you want to try the software before you commit any money, Ableton offers a 90-day trial. That’s enough time to get a good sense of what it’s all about.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    ", + "content": "

    If you want to make music on your computer, you’ll need a digital audio workstation or DAW. One of our favorites is Ableton Live and it’s currently on sale for Black Friday. Until Monday, November 29th, you can get 25 percent off all of the company’s music-making software. That includes all three tiers of Ableton Live 11. The “Intro” tier currently costs $74, down from its usual price of $99, while the “Standard” and “Suite” versions are priced at $337 and $562 at the moment. Abelton has also reduced the cost of Standard and Suite upgrades by 25 percent. You can also get that same discount on packs.

    We’ve seen Ableton offer a 30 percent discount on its software a couple of times in the past, but it doesn’t do so frequently. Students and teachers can get Ableton Live 11 for 40 percent off. If you don’t fall in that category, this may be the best deal you can get on the DAW for the foreseeable future.

    When it comes to audio production tools, Ableton Live is one of our favorites, particularly after the recent version 11 update. The interface can be intimidating at first, but once you learn to find your way around, you’ll discover that it will encourage you to experiment. If you want to try the software before you commit any money, Ableton offers a 90-day trial. That’s enough time to get a good sense of what it’s all about.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    ", + "category": "Software", + "link": "https://www.engadget.com/ableton-live-black-friday-promotion-2021-170315936.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Thu, 25 Nov 2021 17:03:15 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Arturia's V Collection instruments now have native M1 Mac support", + "description": "

    It's now that much easier to use Arturia's softsynths on your brand new MacBook. Arturia has released a free V Collection 8.2 update that adds native support to the (currently discounted) suite for Macs with M1 processors. That should improve performance, as you might guess, but it could also help with battery life if you need to play unplugged.

    Other speed updates are in store. The update boosts the performance of 4K interfaces through a new framework, and presets from the V Collection factory libraries now load up to twice as quickly. You'll also find ODDSound MTS-ESP microtuning compatibility for the Clavinet V, DX7 V, Piano V and Stage-73 V.

    This might be an important update if you use softsynths for music-making. Arturia has a reputation for virtual instruments that are both meticulous and relatively accessible. This both makes V Collection more viable on M1 Macs and gives you more incentive to rely on digital synths instead of hunting down their costlier real-world counterparts.

    ", + "content": "

    It's now that much easier to use Arturia's softsynths on your brand new MacBook. Arturia has released a free V Collection 8.2 update that adds native support to the (currently discounted) suite for Macs with M1 processors. That should improve performance, as you might guess, but it could also help with battery life if you need to play unplugged.

    Other speed updates are in store. The update boosts the performance of 4K interfaces through a new framework, and presets from the V Collection factory libraries now load up to twice as quickly. You'll also find ODDSound MTS-ESP microtuning compatibility for the Clavinet V, DX7 V, Piano V and Stage-73 V.

    This might be an important update if you use softsynths for music-making. Arturia has a reputation for virtual instruments that are both meticulous and relatively accessible. This both makes V Collection more viable on M1 Macs and gives you more incentive to rely on digital synths instead of hunting down their costlier real-world counterparts.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/arturia-v-collection-m1-mac-support-150035533.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Thu, 25 Nov 2021 15:00:35 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The 2021 Apple TV 4K is on sale for $160 right now", + "description": "

    Streaming devices are pretty affordable nowadays, but there are some benefits to opting for a more expensive model like the Apple TV 4K. We consider it to be the best high-end streaming box, and right now it's on sale for $160, which is one of the better prices we've seen. Amazon has the device for $169, but an automatically applied coupon will knock the price down to $160 at checkout.

    Buy Apple TV 4K at Amazon - $160

    Apple modestly upgraded its set-top box this year with the biggest improvement being the new Siri remote. The previous remote that came with the Apple TV 4K was clunky to use, but this new model is a huge improvement. It's larger and has a touch-sensitive directional pad that makes it much easier to swipe and scroll between content on your screen. It's reminiscent of the iPod scrollwheel of yesteryear, and that's a good thing.

    If you're familiar with the previous generation Apple TV 4K, you may not notice too much of a difference when it comes to performance. The new model has an A12 Bionic chip that helps the gadget run smoothly, and we appreciate its support for Dolby Vision at 60 fps, Dolby Atmos sound and AirPlay 3. This model even supports HomeKit, so you can ask Siri to show you things like video camera feeds and they'll pop up right on your TV screen. We also found Siri to be quite useful for executing entertainment commands like "show me Christmas movies" or "play the latest episode of Ted Lasso."

    The biggest drawback to the Apple TV 4K is price — it's normally $180, so it's worthwhile to wait for the (rare) sales in which it drops even slightly lower than that. But it's by no means the only streaming box out there — we also like the Roku Ultra and, even though it's not technically a box, the latest Chromecast with Google TV is another solid option that also has an updated, handy remote.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Streaming devices are pretty affordable nowadays, but there are some benefits to opting for a more expensive model like the Apple TV 4K. We consider it to be the best high-end streaming box, and right now it's on sale for $160, which is one of the better prices we've seen. Amazon has the device for $169, but an automatically applied coupon will knock the price down to $160 at checkout.

    Buy Apple TV 4K at Amazon - $160

    Apple modestly upgraded its set-top box this year with the biggest improvement being the new Siri remote. The previous remote that came with the Apple TV 4K was clunky to use, but this new model is a huge improvement. It's larger and has a touch-sensitive directional pad that makes it much easier to swipe and scroll between content on your screen. It's reminiscent of the iPod scrollwheel of yesteryear, and that's a good thing.

    If you're familiar with the previous generation Apple TV 4K, you may not notice too much of a difference when it comes to performance. The new model has an A12 Bionic chip that helps the gadget run smoothly, and we appreciate its support for Dolby Vision at 60 fps, Dolby Atmos sound and AirPlay 3. This model even supports HomeKit, so you can ask Siri to show you things like video camera feeds and they'll pop up right on your TV screen. We also found Siri to be quite useful for executing entertainment commands like "show me Christmas movies" or "play the latest episode of Ted Lasso."

    The biggest drawback to the Apple TV 4K is price — it's normally $180, so it's worthwhile to wait for the (rare) sales in which it drops even slightly lower than that. But it's by no means the only streaming box out there — we also like the Roku Ultra and, even though it's not technically a box, the latest Chromecast with Google TV is another solid option that also has an updated, handy remote.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/the-2021-apple-tv-4k-is-on-sale-for-160-right-now-144515390.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Thu, 25 Nov 2021 14:45:15 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Microsoft's Xbox Elite Series 2 controller is just $135 for today only", + "description": "

    If you're an Xbox or PC gamer, there's a pretty high probability that you've taken a peek at Microsoft's Xbox Elite Series 2 controller. The customizable peripheral comes in its own case, offers interchangeable thumbsticks and paddles, and delivers up to 40 hours of gaming thanks to its integrated battery pack. 

    The only problem is that the controller can often retail for $180 and rarely gets a significant price cut. With Black Friday gaming sales starting to ramp up, Woot is hoping to tempt those looking to upgrade their controller experience by offering the Elite Series 2 for just $135, one of the lowest prices we've seen.

    Buy Xbox Elite Series 2 controller at Woot - $135

    The Elite Series 2 comes complete with a USB-C port, Bluetooth connectivity and can charge inside its carrying case. It also supports programmable profiles, allowing you to select between three stored configurations using the Profiles button on its front. 

    If you're looking for a solid controller upgrade during the holidays, you may have just found it. However, you'll need to move quickly as the Elite Series 2 will only remain at $135 for 24 hours or until it sells out, whichever comes first. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    If you're an Xbox or PC gamer, there's a pretty high probability that you've taken a peek at Microsoft's Xbox Elite Series 2 controller. The customizable peripheral comes in its own case, offers interchangeable thumbsticks and paddles, and delivers up to 40 hours of gaming thanks to its integrated battery pack. 

    The only problem is that the controller can often retail for $180 and rarely gets a significant price cut. With Black Friday gaming sales starting to ramp up, Woot is hoping to tempt those looking to upgrade their controller experience by offering the Elite Series 2 for just $135, one of the lowest prices we've seen.

    Buy Xbox Elite Series 2 controller at Woot - $135

    The Elite Series 2 comes complete with a USB-C port, Bluetooth connectivity and can charge inside its carrying case. It also supports programmable profiles, allowing you to select between three stored configurations using the Profiles button on its front. 

    If you're looking for a solid controller upgrade during the holidays, you may have just found it. However, you'll need to move quickly as the Elite Series 2 will only remain at $135 for 24 hours or until it sells out, whichever comes first. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Professional Services", + "link": "https://www.engadget.com/microsoft-xbox-elite-series-2-controller-black-friday-143019244.html?src=rss", + "creator": "Matt Brian", + "pubDate": "Thu, 25 Nov 2021 14:30:19 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon one-day sale knocks up to 30 percent off storage from SanDisk and Lexar", + "description": "

    Those looking for new portable drives, SD cards and other storage gadgets have a bunch of discounted items to choose from today. Amazon has a one-day sale that knocks up to 25 percent off drives from Western Digital and up to 30 percent off microSD cards, thumb drives and more from SanDisk, Lexar and other brands. While we'll likely see discounts tomorrow during Black Friday proper as well, most of the devices in these sales have lower prices for today only.

    Shop WD drive sale at AmazonShop SanDisk, Lexar storage sale at Amazon

    Some highlights in the drive sale are the SanDisk Extreme portable drive in 2TB, which is 60 percent off and down to $185, plus the Crucial X6 in 2TB and the SanDisk Ultra NAND SSD in 4TB, which are down to $143 and $300 respectively. The SanDisk Extreme portable drive is small enough to fit in the palm of your hand, and it's pretty durable thanks to its IP55-rated design with two-meter drop protection. It also has optional password protection, 256‐bit AES hardware encryption and up to 1,050 MB/s read and up to 1,000 MB/s write speed. Crucial's X6 is also quite compact, with read speeds up to 540 MB/s and a shock and vibration-proof design.

    Buy SanDisk Extreme (2TB) at Amazon - $185Buy Crucial X6 (2TB) at Amazon - $143Buy SanDisk Ultra SSD (4TB) at Amazon - $300

    Either of those would make good portable drives for most people, while the SanDisk Ultra NAND SSD is better for anyone looking to upgrade their computer's internal storage. It supports sequential read speeds of up to 560 MB/s and sequential write speeds of up to 530 MB/s, and when half off like it is today, it's a great choice for PC gamers looking to add a speedy SSD to their setup.

    Highlights in the other memory sale include a number of Nintendo Switch-compatible microSD cards and some Lexar Professional SD cards. You can grab an officially licensed 256GB SanDisk microSD card for the Switch for $37, or 31 percent off, but if you're looking for the most storage possible, we recommend Lexar's 1TB Play microSD card, which is down to a record low of $128. And photographers and videographers may want to pick up one of Lexar's Professional 2000x SD cards to add to their gear while the 64GB model is on sale for $60 and the 128GB card is down to $100.

    Buy SanDisk microSD card (256GB) at Amazon - $37Buy Lexar Play microSD card (1TB) at Amazon - $128Buy Lexar Professional SD card (64GB) at Amazon - $60Buy Lexar Professional SD card (128GB) at Amazon - $100

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Those looking for new portable drives, SD cards and other storage gadgets have a bunch of discounted items to choose from today. Amazon has a one-day sale that knocks up to 25 percent off drives from Western Digital and up to 30 percent off microSD cards, thumb drives and more from SanDisk, Lexar and other brands. While we'll likely see discounts tomorrow during Black Friday proper as well, most of the devices in these sales have lower prices for today only.

    Shop WD drive sale at AmazonShop SanDisk, Lexar storage sale at Amazon

    Some highlights in the drive sale are the SanDisk Extreme portable drive in 2TB, which is 60 percent off and down to $185, plus the Crucial X6 in 2TB and the SanDisk Ultra NAND SSD in 4TB, which are down to $143 and $300 respectively. The SanDisk Extreme portable drive is small enough to fit in the palm of your hand, and it's pretty durable thanks to its IP55-rated design with two-meter drop protection. It also has optional password protection, 256‐bit AES hardware encryption and up to 1,050 MB/s read and up to 1,000 MB/s write speed. Crucial's X6 is also quite compact, with read speeds up to 540 MB/s and a shock and vibration-proof design.

    Buy SanDisk Extreme (2TB) at Amazon - $185Buy Crucial X6 (2TB) at Amazon - $143Buy SanDisk Ultra SSD (4TB) at Amazon - $300

    Either of those would make good portable drives for most people, while the SanDisk Ultra NAND SSD is better for anyone looking to upgrade their computer's internal storage. It supports sequential read speeds of up to 560 MB/s and sequential write speeds of up to 530 MB/s, and when half off like it is today, it's a great choice for PC gamers looking to add a speedy SSD to their setup.

    Highlights in the other memory sale include a number of Nintendo Switch-compatible microSD cards and some Lexar Professional SD cards. You can grab an officially licensed 256GB SanDisk microSD card for the Switch for $37, or 31 percent off, but if you're looking for the most storage possible, we recommend Lexar's 1TB Play microSD card, which is down to a record low of $128. And photographers and videographers may want to pick up one of Lexar's Professional 2000x SD cards to add to their gear while the 64GB model is on sale for $60 and the 128GB card is down to $100.

    Buy SanDisk microSD card (256GB) at Amazon - $37Buy Lexar Play microSD card (1TB) at Amazon - $128Buy Lexar Professional SD card (64GB) at Amazon - $60Buy Lexar Professional SD card (128GB) at Amazon - $100

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/amazon-one-day-sale-knocks-up-to-30-percent-off-storage-from-sandisk-and-lexar-141501174.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Thu, 25 Nov 2021 14:15:01 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "‘Final Fantasy’ meets ‘Fortnite’ is more fun than it should be", + "description": "

    Fortnite and Final Fantasy. A doomed pairing of the most lucrative recent gaming phenomenon with one of the most storied video-game franchises spanning over 30 years? I love Final Fantasy, mostly. I’m lukewarm on Fortnite and the battle royale format in general. With Metroid Dread, Shin Megami Tensei, Alan Wake Remastered and Deathloop on my to-do list, why am I still glued to a free-to-play mobile game?

    Probably because it’s expanding the already very-expanded Final Fantasy VII universe. The game that got the sequel CGI movie, the remake, multiple mobile games and more. And yet, barring a smart intro movie that cribs from the opening scenes of FF7R, you won’t see the protagonists (or antagonists) of the iconic RPG — though you’ll be able to cosplay as them.

    In First Soldier, you play as, well, recruits looking to become the first Soldier — a specific top-class army member. Cloud, from FFVII, is introduced in the original as “Soldier, First Class” and this game takes everything back 30 years to the early formation of Shinra Corp’s military finest.

    The setting, then, is a battle royale to see how augmented soldiers fare against each other (and whatever beasts come their way in the process). The battleground is a surprisingly expansive map on the outskirts of Midgar — while also featuring many of the major landmarks of Midgar’s sectors. Aerith’s church and childhood home is there to be shot at, as is the arena, Sector 7’s markets, the abandoned trainyard and more. The battle theme of FF7 kicks in as helicopters swarm into the area, dropping off recruits. It still gets me excited every time.

    The grounds are littered with guns, from handguns to sniper rifles, as well as materia (magic orbs that offer both offensive and support capabilities) and even pretty rare summoning spells. I've yet to summon anything so far. There are also potions to pick up and help extend your chances of survival.

    These are the baseline weapons and items. Differentiating itself from Fortnite — if not all BR games; we see you Apex and Warzone — you can also choose a job role, a la most RPGs. This mostly affects your special ability, your melee weapon and how you attack with it. Warrior is a straight-shooting class with a sword and a rush special that closes distance so you can wallop your rivals before they can get a shot in. Monks have the ability to heal themselves when they mete out damage, while Ninjas get an extra jump and the ability to hide in stealth mode for a few seconds.

    \"Final

    Sorcerers come with a special ability that supercharges MP recovery for more regular offensive (and healing spells), while the ranger reloads guns faster than the others — and has a very convenient Assess skill that will mark threats around you even when they’re out of sight.

    Each feels slightly different to play with, but there’s a pleasant balance to the different roles, though both soldier and monk suffer from having to rely on their melee attack for their advantages.

    Let me say this outright; you should play First Soldier with a gamepad. Fortunately, I’m testing out Backbone, a third-party connected controller for iPhone that means I was already in a good place to aim my guns and spells. Magic casting controls are a bit messy — you’ll need to hold down an L-trigger while pressing another collar button to unleash one of three spells you may have picked up. Those melee attacks, which all job classes have, are really hard to land on your enemies, regardless of whether you’re using a gamepad or touch controls. Hopefully, the devs are able to finesse melee attacks as the game progresses. 

    This means that, in a rather un-Final Fantasy way, you’ll come to depend on your guns for most of your kills. But hey, getting that sniper headshot kill is a thrill. Killing other players or monsters, opening chests and surviving through the rounds will level up your character through the match itself. This adds to your attack damage and increases your HP, meaning you should also last longer. It also rewards proactive play and exploration, and not just trying to survive to the final area.

    As you might expect from a free-to-play battle royale game, there are season passes available for purchase. These offer up skins, banners, emotes and more cosmetic goodies for wannabe Soldiers. Even without a pass, you can earn a few rewards by fulfilling “rank” criteria during the battles. Gain stars, level up your rank — which is unrelated to leveling up your individual job ranks — and you’ll gain access to a smattering of wardrobe options or chocobo-raising items. I’m currently wearing a moogle hat, please say hi.

    \"Final
    Square Enix

    Yes, there’s also a chocobo rearing mini-game buried inside First Soldier, and you’re able to summon your favorite steed to the battles as a very handy transport option. It isn’t the only way to speed around levels, however. There are also cars and bikes to get you within the battle arena. The shrinking arena damages anyone outside its perimeter, but you’re able to persist with potions and healing spells and hopefully make it to safety.

    The only drawback growing, as I play, is the fact that my leveling up has no tangible effect on my performance in the game — which is true of most battle royale games. The appeal is that each new battle isn’t affected by the round before it, but then chasing these goals (play two rounds as a warrior; make 300 pts of damage with a shotgun; visit Corneo’s mansion) soon tires. What exactly is the point?

    For now, the point is that First Soldier skirmishes are entertaining, and the difficulty curve isn’t too brutal. I’ve won a few rounds, out of 75 players, and come second a handful of times. One colleague told me that early iterations of battle royale games are often filled with bots to juice the numbers (and offer up some encouraging early wins) but I will not let him take this tiny victory away from me.

    Hopefully Square Enix has plans to offer more levels, weapons and events to spice it up. There are some limited-edition bosses throughout the Midgar level. I’ve managed to best two of them, but I’ve also been felled by Tonberry — a notoriously powerful monster from the Final Fantasy series— a few too many times. Maybe I should try fighting him as a ninja...

    Final Fantasy VII: The First Soldier is out now on Apple App Store and Google Play.

    ", + "content": "

    Fortnite and Final Fantasy. A doomed pairing of the most lucrative recent gaming phenomenon with one of the most storied video-game franchises spanning over 30 years? I love Final Fantasy, mostly. I’m lukewarm on Fortnite and the battle royale format in general. With Metroid Dread, Shin Megami Tensei, Alan Wake Remastered and Deathloop on my to-do list, why am I still glued to a free-to-play mobile game?

    Probably because it’s expanding the already very-expanded Final Fantasy VII universe. The game that got the sequel CGI movie, the remake, multiple mobile games and more. And yet, barring a smart intro movie that cribs from the opening scenes of FF7R, you won’t see the protagonists (or antagonists) of the iconic RPG — though you’ll be able to cosplay as them.

    In First Soldier, you play as, well, recruits looking to become the first Soldier — a specific top-class army member. Cloud, from FFVII, is introduced in the original as “Soldier, First Class” and this game takes everything back 30 years to the early formation of Shinra Corp’s military finest.

    The setting, then, is a battle royale to see how augmented soldiers fare against each other (and whatever beasts come their way in the process). The battleground is a surprisingly expansive map on the outskirts of Midgar — while also featuring many of the major landmarks of Midgar’s sectors. Aerith’s church and childhood home is there to be shot at, as is the arena, Sector 7’s markets, the abandoned trainyard and more. The battle theme of FF7 kicks in as helicopters swarm into the area, dropping off recruits. It still gets me excited every time.

    The grounds are littered with guns, from handguns to sniper rifles, as well as materia (magic orbs that offer both offensive and support capabilities) and even pretty rare summoning spells. I've yet to summon anything so far. There are also potions to pick up and help extend your chances of survival.

    These are the baseline weapons and items. Differentiating itself from Fortnite — if not all BR games; we see you Apex and Warzone — you can also choose a job role, a la most RPGs. This mostly affects your special ability, your melee weapon and how you attack with it. Warrior is a straight-shooting class with a sword and a rush special that closes distance so you can wallop your rivals before they can get a shot in. Monks have the ability to heal themselves when they mete out damage, while Ninjas get an extra jump and the ability to hide in stealth mode for a few seconds.

    \"Final

    Sorcerers come with a special ability that supercharges MP recovery for more regular offensive (and healing spells), while the ranger reloads guns faster than the others — and has a very convenient Assess skill that will mark threats around you even when they’re out of sight.

    Each feels slightly different to play with, but there’s a pleasant balance to the different roles, though both soldier and monk suffer from having to rely on their melee attack for their advantages.

    Let me say this outright; you should play First Soldier with a gamepad. Fortunately, I’m testing out Backbone, a third-party connected controller for iPhone that means I was already in a good place to aim my guns and spells. Magic casting controls are a bit messy — you’ll need to hold down an L-trigger while pressing another collar button to unleash one of three spells you may have picked up. Those melee attacks, which all job classes have, are really hard to land on your enemies, regardless of whether you’re using a gamepad or touch controls. Hopefully, the devs are able to finesse melee attacks as the game progresses. 

    This means that, in a rather un-Final Fantasy way, you’ll come to depend on your guns for most of your kills. But hey, getting that sniper headshot kill is a thrill. Killing other players or monsters, opening chests and surviving through the rounds will level up your character through the match itself. This adds to your attack damage and increases your HP, meaning you should also last longer. It also rewards proactive play and exploration, and not just trying to survive to the final area.

    As you might expect from a free-to-play battle royale game, there are season passes available for purchase. These offer up skins, banners, emotes and more cosmetic goodies for wannabe Soldiers. Even without a pass, you can earn a few rewards by fulfilling “rank” criteria during the battles. Gain stars, level up your rank — which is unrelated to leveling up your individual job ranks — and you’ll gain access to a smattering of wardrobe options or chocobo-raising items. I’m currently wearing a moogle hat, please say hi.

    \"Final
    Square Enix

    Yes, there’s also a chocobo rearing mini-game buried inside First Soldier, and you’re able to summon your favorite steed to the battles as a very handy transport option. It isn’t the only way to speed around levels, however. There are also cars and bikes to get you within the battle arena. The shrinking arena damages anyone outside its perimeter, but you’re able to persist with potions and healing spells and hopefully make it to safety.

    The only drawback growing, as I play, is the fact that my leveling up has no tangible effect on my performance in the game — which is true of most battle royale games. The appeal is that each new battle isn’t affected by the round before it, but then chasing these goals (play two rounds as a warrior; make 300 pts of damage with a shotgun; visit Corneo’s mansion) soon tires. What exactly is the point?

    For now, the point is that First Soldier skirmishes are entertaining, and the difficulty curve isn’t too brutal. I’ve won a few rounds, out of 75 players, and come second a handful of times. One colleague told me that early iterations of battle royale games are often filled with bots to juice the numbers (and offer up some encouraging early wins) but I will not let him take this tiny victory away from me.

    Hopefully Square Enix has plans to offer more levels, weapons and events to spice it up. There are some limited-edition bosses throughout the Midgar level. I’ve managed to best two of them, but I’ve also been felled by Tonberry — a notoriously powerful monster from the Final Fantasy series— a few too many times. Maybe I should try fighting him as a ninja...

    Final Fantasy VII: The First Soldier is out now on Apple App Store and Google Play.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/final-fantasy-meets-fortnite-the-first-soldier-review-140024318.html?src=rss", + "creator": "Mat Smith", + "pubDate": "Thu, 25 Nov 2021 14:00:24 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "HTC Vive VR headsets fall to all-time lows for Black Friday", + "description": "

    HTC's Vive Cosmos is one of the best VR headsets out there, but if we're being real, it's always been a bit too expensive. Now, you can buy that model from Amazon during Black Friday sales for $399 instead of $549, the biggest discount we've seen yet. Amazon also has deals on other HTC headsets and bundles, so it's a good time to jump in if you've been waiting for a sale.

    Buy HTC Vive Virtual Reality headsets at Amazon

    The Vive Cosmos must be tethered to a PC, but there's no need to install sensors thanks to the inside-out tracking system that works well, according to our Engadget review. It's strongest feature is the bright and sharp screens with very high 2,880 x 1,700 pixel resolution across both eyes, along with decent 90 Hz refresh rates. The biggest downside is the price, as it's far more expensive than Oculus headsets — but the sale brings it on par with rivals. Note that the controllers aren't included.

    On top of the standalone headset, you can get a good deal on the HTC Cosmos Elite bundle designed for gamers. Rather than using the inside-out-tracking, the Elite's headset comes preinstalled with an External Tracking Faceplate that can be paired with base stations for higher precision. It includes two base stations and a pair of Vive controllers, along with the Vive Cosmos headset — and now costs $649 instead of $899 for a savings of $250 (28 percent). 

    HTC's Vive Pro headset and bundles are also on sale at Amazon at the best prices we've seen. The HTC Vive Pro offers features like 1,440 x 1,600 pixel resolution per eye on the OLED screens, great ergonomics and built-in headphones. They're not for everyone because of the price, as we noted in our review, but you can now pick up the HTC Vive Pro system, including the headset, base stations and controllers 2.0 for $899 instead of $1,199. 

    HTC's Vive Pro Eye improves on that with the addition of eye-tracking that uses Tobii's technology. It can follow users' eyeballs in real time, letting developers gather data on where they're looking and when, allowing for new and more immersive experiences. It also allows for foveated rendering, increasing resolution based on where a user is looking. You can now pick up the HTC Vive Pro Eye headset only for $599 instead of $799, and grab the HTC Vive Pro Eye VR system for $1,099, down from the regular $1,399 price. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    HTC's Vive Cosmos is one of the best VR headsets out there, but if we're being real, it's always been a bit too expensive. Now, you can buy that model from Amazon during Black Friday sales for $399 instead of $549, the biggest discount we've seen yet. Amazon also has deals on other HTC headsets and bundles, so it's a good time to jump in if you've been waiting for a sale.

    Buy HTC Vive Virtual Reality headsets at Amazon

    The Vive Cosmos must be tethered to a PC, but there's no need to install sensors thanks to the inside-out tracking system that works well, according to our Engadget review. It's strongest feature is the bright and sharp screens with very high 2,880 x 1,700 pixel resolution across both eyes, along with decent 90 Hz refresh rates. The biggest downside is the price, as it's far more expensive than Oculus headsets — but the sale brings it on par with rivals. Note that the controllers aren't included.

    On top of the standalone headset, you can get a good deal on the HTC Cosmos Elite bundle designed for gamers. Rather than using the inside-out-tracking, the Elite's headset comes preinstalled with an External Tracking Faceplate that can be paired with base stations for higher precision. It includes two base stations and a pair of Vive controllers, along with the Vive Cosmos headset — and now costs $649 instead of $899 for a savings of $250 (28 percent). 

    HTC's Vive Pro headset and bundles are also on sale at Amazon at the best prices we've seen. The HTC Vive Pro offers features like 1,440 x 1,600 pixel resolution per eye on the OLED screens, great ergonomics and built-in headphones. They're not for everyone because of the price, as we noted in our review, but you can now pick up the HTC Vive Pro system, including the headset, base stations and controllers 2.0 for $899 instead of $1,199. 

    HTC's Vive Pro Eye improves on that with the addition of eye-tracking that uses Tobii's technology. It can follow users' eyeballs in real time, letting developers gather data on where they're looking and when, allowing for new and more immersive experiences. It also allows for foveated rendering, increasing resolution based on where a user is looking. You can now pick up the HTC Vive Pro Eye headset only for $599 instead of $799, and grab the HTC Vive Pro Eye VR system for $1,099, down from the regular $1,399 price. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/htc-vive-vr-headsets-fall-to-all-time-lows-for-black-friday-120559704.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Thu, 25 Nov 2021 12:05:59 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Spotify trials a TikTok-like vertical feed for discovering new music", + "description": "

    Spotify is testing a new feature called Discover that lets users scroll through a feed of vertical videos and skip or like them, much as you do on TikTok, TechCrunch has reported. The feature was spotted in the latest version of Spotify's beta iOS TestFlight build by Chris Messina, who tweeted that it appeared as a fourth icon in Spotify's iOS toolbar. 

    Discover looks to be a way for users to find new music in an intuitive, rapid way, by swiping up and down to move through the feed. You can tap on a heart to like the song, or hit the three-dot menu to bring up Spotify's standard information card about the song. 

    Not only that, @Spotify Discover is basically a pared down version of a TikTok-style feed of vertical music videos (likely using their canvas format) that you can like or skip.#NewSpotifypic.twitter.com/hpOEZ8v9bl

    — Messina.eth (@chrismessina) November 24, 2021

    The format may use Spotify's Canvas format, Messina notes. That allows artists to create videos to go along with songs, rather than just static images, and appears on certain songs instead of the standard album art when you play a video. They can be in the form of standard video and mixed media, along with 2D and 3D graphics. In pitching the feature, Spotify tells artists that Canvas boosts key engagement metrics like sharing, adding to playlists and visiting profile pages. 

    Spotify confirmed to TechCrunch that it's testing the feature, but declined to share further details like how it would curate feeds. "At Spotify, we routinely conduct a number of tests in an effort to improve our user experience," a spokesperson said. "Some of those tests end up paving the way for our broader user experience and others serve only as an important learning. We don’t have any further news to share at this time."

    Spotify is far from the first platform to flatter TikTok through imitation. Instagram's Reels and YouTube Shorts are virtual clones of TikTok, and even Netflix recently introduced a TikTok-like comedy feed called Fast Laughs. It's not clear yet if Spotify's discovery feature will make it out of beta, but it looks like a useful way to find new music.

    ", + "content": "

    Spotify is testing a new feature called Discover that lets users scroll through a feed of vertical videos and skip or like them, much as you do on TikTok, TechCrunch has reported. The feature was spotted in the latest version of Spotify's beta iOS TestFlight build by Chris Messina, who tweeted that it appeared as a fourth icon in Spotify's iOS toolbar. 

    Discover looks to be a way for users to find new music in an intuitive, rapid way, by swiping up and down to move through the feed. You can tap on a heart to like the song, or hit the three-dot menu to bring up Spotify's standard information card about the song. 

    Not only that, @Spotify Discover is basically a pared down version of a TikTok-style feed of vertical music videos (likely using their canvas format) that you can like or skip.#NewSpotifypic.twitter.com/hpOEZ8v9bl

    — Messina.eth (@chrismessina) November 24, 2021

    The format may use Spotify's Canvas format, Messina notes. That allows artists to create videos to go along with songs, rather than just static images, and appears on certain songs instead of the standard album art when you play a video. They can be in the form of standard video and mixed media, along with 2D and 3D graphics. In pitching the feature, Spotify tells artists that Canvas boosts key engagement metrics like sharing, adding to playlists and visiting profile pages. 

    Spotify confirmed to TechCrunch that it's testing the feature, but declined to share further details like how it would curate feeds. "At Spotify, we routinely conduct a number of tests in an effort to improve our user experience," a spokesperson said. "Some of those tests end up paving the way for our broader user experience and others serve only as an important learning. We don’t have any further news to share at this time."

    Spotify is far from the first platform to flatter TikTok through imitation. Instagram's Reels and YouTube Shorts are virtual clones of TikTok, and even Netflix recently introduced a TikTok-like comedy feed called Fast Laughs. It's not clear yet if Spotify's discovery feature will make it out of beta, but it looks like a useful way to find new music.

    ", + "category": "Music", + "link": "https://www.engadget.com/spotify-is-testing-a-tik-tok-style-vertical-feed-called-discover-103009169.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Thu, 25 Nov 2021 10:30:09 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Echo Dot speaker prices drop to an all-time low for Black Friday", + "description": "

    If you're in the market for a budget-friendly smart speaker or two (or three) this Black Friday, it might be worth casting a glance in Amazon's direction. Several Echo devices went on sale last week, and now you can save on more. Among them is the Echo Dot with Clock. It's $35 at the moment, which is $25 lower than the regular price and an all-time low. 

    Buy Echo Dot with Clock at Amazon - $35

    The Echo Dot is a smaller version of the Echo speaker. Amazon changed the design last year from a flat hockey-puck look to a spherical one. The Echo Dot with Clock is pretty much the same device save for the addition of an LED clock display. The standard Echo Dot has dropped to $30 as part of Amazon's Black Friday sales, but falls a dollar short of the lowest price we've seen.

    We gave the Echo Dot a score of 88 in our review, finding that it offered decent sound quality for the price. The 3.5mm audio out jack is a plus, as is the option to tap the speaker to snooze the alarm. There are physical volume controls, a mic mute button and a button that activates Alexa without having to say the wake word. The voice assistant is the main way people will interact with the device, of course.

    Elsewhere, Amazon has discounted a bundle of the Echo Show 8 and a Blink Mini camera. They typically cost $165 when buying them together, but the bundle is available right now for $95.

    Buy Echo Show 8 and Blink Mini bundle at Amazon - $95

    Amazon upgraded the Echo Show 8 over the summer with a faster processor and better camera than the previous model. When you're on a video call, the device can follow you around a room using digital panning and zooming. In our review, we highlighted the quality of the display and audio.

    \"Echo
    Nicole Lee/Engadget

    You can use the smart display to watch a live feed from the Blink Mini. The indoor camera captures video at a resolution of 1080p, and it offers motion detection and two-way audio. Users can control the Blink Mini with another supported Alexa-enabled device or the Blink app too.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    If you're in the market for a budget-friendly smart speaker or two (or three) this Black Friday, it might be worth casting a glance in Amazon's direction. Several Echo devices went on sale last week, and now you can save on more. Among them is the Echo Dot with Clock. It's $35 at the moment, which is $25 lower than the regular price and an all-time low. 

    Buy Echo Dot with Clock at Amazon - $35

    The Echo Dot is a smaller version of the Echo speaker. Amazon changed the design last year from a flat hockey-puck look to a spherical one. The Echo Dot with Clock is pretty much the same device save for the addition of an LED clock display. The standard Echo Dot has dropped to $30 as part of Amazon's Black Friday sales, but falls a dollar short of the lowest price we've seen.

    We gave the Echo Dot a score of 88 in our review, finding that it offered decent sound quality for the price. The 3.5mm audio out jack is a plus, as is the option to tap the speaker to snooze the alarm. There are physical volume controls, a mic mute button and a button that activates Alexa without having to say the wake word. The voice assistant is the main way people will interact with the device, of course.

    Elsewhere, Amazon has discounted a bundle of the Echo Show 8 and a Blink Mini camera. They typically cost $165 when buying them together, but the bundle is available right now for $95.

    Buy Echo Show 8 and Blink Mini bundle at Amazon - $95

    Amazon upgraded the Echo Show 8 over the summer with a faster processor and better camera than the previous model. When you're on a video call, the device can follow you around a room using digital panning and zooming. In our review, we highlighted the quality of the display and audio.

    \"Echo
    Nicole Lee/Engadget

    You can use the smart display to watch a live feed from the Blink Mini. The indoor camera captures video at a resolution of 1080p, and it offers motion detection and two-way audio. Users can control the Blink Mini with another supported Alexa-enabled device or the Blink app too.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/amazon-echo-dot-clock-echo-show-8-blink-mini-black-friday-084004064.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Thu, 25 Nov 2021 08:40:04 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The new Kindle Paperwhite is $35 off for Black Friday", + "description": "

    Amazon isn't quite done with its Black Friday e-reader deals. After it put several other Kindles on sale, the company has dropped the price of the latest Kindle Paperwhite from $140 to $105.

    Buy Kindle Paperwhite at Amazon - $105

    The fifth-gen Paperwhite, the first refresh in three years, was announced in September. It has a larger screen than the previous model at 6.8 inches (the last-gen Paperwhite had a six-inch display). Amazon claims the 300 ppi screen looks like real paper and the glare-free screen enables "easy reading" in any condition, including direct sunlight. Having a screen that's said to be 10 percent brighter than the last model's will certainly help.

    In addition, there's a white-on-black dark mode and revamped interface, while Amazon says page turns are 20 percent faster. The fifth-gen Paperwhite is water resistant and there's support for USB-C fast charging.

    Meanwhile, the Kindle Oasis is on sale too. The 8GB model, which typically costs $250, is currently available for $175. The e-reader was previously on sale for that price during this year's Prime Day.

    Buy Kindle Oasis at Amazon - $175

    The Oasis also has a 300 ppi display, though the screen is slightly larger than the Paperwhite at seven inches. It has physical page turn buttons, an IPX8 waterproof rating and a color-adjustable front light.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Amazon isn't quite done with its Black Friday e-reader deals. After it put several other Kindles on sale, the company has dropped the price of the latest Kindle Paperwhite from $140 to $105.

    Buy Kindle Paperwhite at Amazon - $105

    The fifth-gen Paperwhite, the first refresh in three years, was announced in September. It has a larger screen than the previous model at 6.8 inches (the last-gen Paperwhite had a six-inch display). Amazon claims the 300 ppi screen looks like real paper and the glare-free screen enables "easy reading" in any condition, including direct sunlight. Having a screen that's said to be 10 percent brighter than the last model's will certainly help.

    In addition, there's a white-on-black dark mode and revamped interface, while Amazon says page turns are 20 percent faster. The fifth-gen Paperwhite is water resistant and there's support for USB-C fast charging.

    Meanwhile, the Kindle Oasis is on sale too. The 8GB model, which typically costs $250, is currently available for $175. The e-reader was previously on sale for that price during this year's Prime Day.

    Buy Kindle Oasis at Amazon - $175

    The Oasis also has a 300 ppi display, though the screen is slightly larger than the Paperwhite at seven inches. It has physical page turn buttons, an IPX8 waterproof rating and a color-adjustable front light.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/amazon-kindle-paperwhite-black-friday-deal-kindle-oasis-081547739.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Thu, 25 Nov 2021 08:15:47 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Dune' is heading back to IMAX on December 3rd", + "description": "

    Dune has exited HBO Max a month after it came out on the streaming service, but you may soon have the chance to watch it on a much bigger screen. The Denis Villeneuve adaptation of the Frank Herbert novel is returning to IMAX theaters on December 3rd for a limited time only. As Deadline notes, most IMAX locations will show the film with a 1.90:1 aspect ratio, which adds up to 26 percent more picture. Select locations will show it in 1.43 aspect ratio, though, which adds up to 40 percent more picture for the film. 

    Villeneuve and his crew filmed Dune with IMAX cameras, capturing sceneries and backgrounds with the format's massive screens in mind. Like we said in our review of the movie, this adaptation of Dune demands to be seen on something bigger that a TV if you want to truly be able appreciate Villeneuve's visual world-building. 

    In case you'd really rather not go to theaters, you'll get more chances to stream the movie in the future. Dune hit HBO Max on October 21st, the same day it came out in theaters. It was only available for streaming on the service for a month, as per Warner Bros. current release strategy, but it will be out on other digital platforms on December 3rd and will be back on HBO Max sometime next year.

    ", + "content": "

    Dune has exited HBO Max a month after it came out on the streaming service, but you may soon have the chance to watch it on a much bigger screen. The Denis Villeneuve adaptation of the Frank Herbert novel is returning to IMAX theaters on December 3rd for a limited time only. As Deadline notes, most IMAX locations will show the film with a 1.90:1 aspect ratio, which adds up to 26 percent more picture. Select locations will show it in 1.43 aspect ratio, though, which adds up to 40 percent more picture for the film. 

    Villeneuve and his crew filmed Dune with IMAX cameras, capturing sceneries and backgrounds with the format's massive screens in mind. Like we said in our review of the movie, this adaptation of Dune demands to be seen on something bigger that a TV if you want to truly be able appreciate Villeneuve's visual world-building. 

    In case you'd really rather not go to theaters, you'll get more chances to stream the movie in the future. Dune hit HBO Max on October 21st, the same day it came out in theaters. It was only available for streaming on the service for a month, as per Warner Bros. current release strategy, but it will be out on other digital platforms on December 3rd and will be back on HBO Max sometime next year.

    ", + "category": "Professional Services", + "link": "https://www.engadget.com/dun-imax-return-december-3rd-075328620.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Thu, 25 Nov 2021 07:53:28 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "US regulators aim for greater legal clarity surrounding cryptocurrency", + "description": "

    American regulators might soon offer much more insight into the legality of cryptocurrency deals. Bloombergreports the Federal Reserve, the Federal Deposit Insurance Corporation (FDIC) and Office of the Comptroller of the Currency (OCC) have shared a roadmap of their crypto priorities for 2022, and they're primarily focused on "greater clarity" around the legal status of transactions. This might include everything from stablecoin releases through to loan collateral and the presence of crypto on company balance sheets.

    The three agencies also hope to study how they can apply bank capital and liquidity standards to US bank organizations. The roadmap isn't locked in place — the organizations said they might tackle other issues as the marketplace changes.

    The outline follows a wave of crypto policy "sprints" that helped decide the regulatory priorities for the year ahead. The Reserve, FDIC and OCC aimed for common ground that included pinpointing risks and determining the usefulness of existing rules.

    This roadmap might not lead to a concrete strategy. There's also no guarantee this will work in crypto holders' favor. US regulatory bodies have historically erred on the side of caution, and it won't be shocking if cryptocurrency users have to scale back or even stop certain activities to stay on the right side of the law.

    ", + "content": "

    American regulators might soon offer much more insight into the legality of cryptocurrency deals. Bloombergreports the Federal Reserve, the Federal Deposit Insurance Corporation (FDIC) and Office of the Comptroller of the Currency (OCC) have shared a roadmap of their crypto priorities for 2022, and they're primarily focused on "greater clarity" around the legal status of transactions. This might include everything from stablecoin releases through to loan collateral and the presence of crypto on company balance sheets.

    The three agencies also hope to study how they can apply bank capital and liquidity standards to US bank organizations. The roadmap isn't locked in place — the organizations said they might tackle other issues as the marketplace changes.

    The outline follows a wave of crypto policy "sprints" that helped decide the regulatory priorities for the year ahead. The Reserve, FDIC and OCC aimed for common ground that included pinpointing risks and determining the usefulness of existing rules.

    This roadmap might not lead to a concrete strategy. There's also no guarantee this will work in crypto holders' favor. US regulatory bodies have historically erred on the side of caution, and it won't be shocking if cryptocurrency users have to scale back or even stop certain activities to stay on the right side of the law.

    ", + "category": "Finance", + "link": "https://www.engadget.com/us-cryptocurrency-regulation-roadmap-2022-224814167.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Wed, 24 Nov 2021 22:48:14 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "AT&T, Verizon offer to limit 5G power over aircraft safety concerns", + "description": "

    In a rare move to avoid a potential conflict with the Federal Aviation Administration, AT&T and Verizon say they will limit the power output of their 5G cell towers for a period of six months while the agency investigates the effects of C-band spectrum on aircraft safety systems. According to The Wall Street Journal, the carriers made the offer on Wednesday in a letter they sent to the Federal Communications Commission.

    “While we remain confident that 5G poses no risk to air safety, we are also sensitive to the Federal Aviation Administration’s desire for additional analysis of this issue,” AT&T and Verizon wrote. Should the FAA accept the proposal, the limit will extend to July 6th. AT&T and Verizon told the FCC they don’t expect the limits to impact their services.

    At the start of November, both companies agreed to delay their C-band rollouts by one month to January 2022. Officials with the FAA worry widespread use of C-band spectrum may interfere with the altimeter equipment on some aircraft. Pilots often rely on those tools when they need to land, especially when visibility conditions aren’t favorable.

    Both AT&T and Verizon have a strong financial incentive to avoid any further delays to their C-band rollout. The two carriers spent a combined $68.8 billion to secure the necessary licenses for their mid-band buildouts and an additional $15 billion on the necessary infrastructure to take advantage of that spectrum.

    ", + "content": "

    In a rare move to avoid a potential conflict with the Federal Aviation Administration, AT&T and Verizon say they will limit the power output of their 5G cell towers for a period of six months while the agency investigates the effects of C-band spectrum on aircraft safety systems. According to The Wall Street Journal, the carriers made the offer on Wednesday in a letter they sent to the Federal Communications Commission.

    “While we remain confident that 5G poses no risk to air safety, we are also sensitive to the Federal Aviation Administration’s desire for additional analysis of this issue,” AT&T and Verizon wrote. Should the FAA accept the proposal, the limit will extend to July 6th. AT&T and Verizon told the FCC they don’t expect the limits to impact their services.

    At the start of November, both companies agreed to delay their C-band rollouts by one month to January 2022. Officials with the FAA worry widespread use of C-band spectrum may interfere with the altimeter equipment on some aircraft. Pilots often rely on those tools when they need to land, especially when visibility conditions aren’t favorable.

    Both AT&T and Verizon have a strong financial incentive to avoid any further delays to their C-band rollout. The two carriers spent a combined $68.8 billion to secure the necessary licenses for their mid-band buildouts and an additional $15 billion on the necessary infrastructure to take advantage of that spectrum.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/att-verizon-fcc-letter-aircraft-safety-211130190.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Wed, 24 Nov 2021 21:11:30 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Pentagon forms new task force to investigate UFO sightings", + "description": "

    The Pentagon has established a new group to investigate UFO sightings. The Airborne Object Identification and Management Synchronization Group (AOIMSG) will succeed the US Navy’s Unidentified Aerial Phenomena Task Force. According to the Defense Department, “AOIMSG will synchronize efforts across the Department and the broader US government to detect, identify and attribute objects of interest in Special Use Airspace (SUA), and to assess and mitigate any associated threats to safety of flight and national security.”

    The formation of the task force follows the release of a report in June in which the Office of the Director of National Intelligence (ODNI) examined 144 sightings of “unidentified aerial phenomenon.” Only in one instance were officials able to determine what caused a sighting. For every other incident detailed in that report, ODNI said there was too little data for it to conclude what happened. If the US government were to have any chance at better understanding UFOs, ODNI said it would need to deploy more resources and a standardized approach across various agencies. It would appear the Defense Department has taken that recommendation to heart.

    ", + "content": "

    The Pentagon has established a new group to investigate UFO sightings. The Airborne Object Identification and Management Synchronization Group (AOIMSG) will succeed the US Navy’s Unidentified Aerial Phenomena Task Force. According to the Defense Department, “AOIMSG will synchronize efforts across the Department and the broader US government to detect, identify and attribute objects of interest in Special Use Airspace (SUA), and to assess and mitigate any associated threats to safety of flight and national security.”

    The formation of the task force follows the release of a report in June in which the Office of the Director of National Intelligence (ODNI) examined 144 sightings of “unidentified aerial phenomenon.” Only in one instance were officials able to determine what caused a sighting. For every other incident detailed in that report, ODNI said there was too little data for it to conclude what happened. If the US government were to have any chance at better understanding UFOs, ODNI said it would need to deploy more resources and a standardized approach across various agencies. It would appear the Defense Department has taken that recommendation to heart.

    ", + "category": "Politics & Government", + "link": "https://www.engadget.com/pentago-aoimsg-annoucement-193100761.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Wed, 24 Nov 2021 19:31:00 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Instagram head Adam Mosseri agrees to testify before the Senate", + "description": "

    Adam Mosseri, the head of Instagram, is set to testify before a Senate panel in December. He'll appear at a series of hearings on online protections for kids that a consumer protection subcommittee is holding during the week of December 6th.

    “He’s the top guy at Instagram, and the whole nation is asking about why Instagram and other tech platforms have created so much danger and damage by driving toxic content to children with these immensely powerful algorithms,” Sen. Richard Blumenthal, who is chair of the subcommittee, told The New York Times.

    Mosseri will testify in the wake of revelations by whistleblower Frances Haugen, a former Facebook product manager. Haugen told a panel last month that research conducted by Facebook determined “engagement-based ranking on Instagram can lead children from very innocuous topics like healthy recipes… to anorexia-promoting content over a very short period of time.” The previous month, Antigone Davis, the global head of safety for Instagram parent company Meta, downplayed recent reports based on internal Facebook documents, which indicated that Instagram can negatively affect the mental health of teenagers and young girls.

    After Davis testified, Blumenthal wrote to Meta CEO Mark Zuckerberg, asking either him or Mosseri to testify. Blumenthal suggested in his letter to Zuckerberg that the company “provided false or inaccurate testimony to me regarding attempts to internally conceal its research.”

    This will mark the first time Mosseri has testified before Congress. Blumenthal plans to ask Mosseri to commit to making Instagram's ranking and recommendation algorithms transparent, partly so experts can look into if and how the platform promotes potentially harmful content. The senator noted that Snap, TikTok and YouTube leaders made similar commitments after they testified at a prior hearing. Blumenthal also said he will ask Mosseri about Instagram's recommendation systems and how they may lead children "into dangerous rabbit holes." 

    A group of state attorneys general are also investigating how Instagram impacts teenagers. Meta Global Affairs VP Nick Clegg recently announced that Instagram will encourage teens to "take a break" from the app and try to divert them away from harmful content.

    ", + "content": "

    Adam Mosseri, the head of Instagram, is set to testify before a Senate panel in December. He'll appear at a series of hearings on online protections for kids that a consumer protection subcommittee is holding during the week of December 6th.

    “He’s the top guy at Instagram, and the whole nation is asking about why Instagram and other tech platforms have created so much danger and damage by driving toxic content to children with these immensely powerful algorithms,” Sen. Richard Blumenthal, who is chair of the subcommittee, told The New York Times.

    Mosseri will testify in the wake of revelations by whistleblower Frances Haugen, a former Facebook product manager. Haugen told a panel last month that research conducted by Facebook determined “engagement-based ranking on Instagram can lead children from very innocuous topics like healthy recipes… to anorexia-promoting content over a very short period of time.” The previous month, Antigone Davis, the global head of safety for Instagram parent company Meta, downplayed recent reports based on internal Facebook documents, which indicated that Instagram can negatively affect the mental health of teenagers and young girls.

    After Davis testified, Blumenthal wrote to Meta CEO Mark Zuckerberg, asking either him or Mosseri to testify. Blumenthal suggested in his letter to Zuckerberg that the company “provided false or inaccurate testimony to me regarding attempts to internally conceal its research.”

    This will mark the first time Mosseri has testified before Congress. Blumenthal plans to ask Mosseri to commit to making Instagram's ranking and recommendation algorithms transparent, partly so experts can look into if and how the platform promotes potentially harmful content. The senator noted that Snap, TikTok and YouTube leaders made similar commitments after they testified at a prior hearing. Blumenthal also said he will ask Mosseri about Instagram's recommendation systems and how they may lead children "into dangerous rabbit holes." 

    A group of state attorneys general are also investigating how Instagram impacts teenagers. Meta Global Affairs VP Nick Clegg recently announced that Instagram will encourage teens to "take a break" from the app and try to divert them away from harmful content.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/instagram-adam-mosseri-congress-testify-184609082.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Wed, 24 Nov 2021 18:46:09 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "GOG offers big discounts on 'Horizon Zero Dawn,' 'Cyberpunk 2077' and more", + "description": "

    It may not be Black Friday for another two days, but CD Projekt’s GOG storefront is offering steep discounts on a variety of PC games through the end of the weekend. If there’s a theme to the sale, it’s all about CRPGs. Expect to see titles like Divinity: Original Sin and Divinity 2 as much as 65 percent off.

    One of the highlights of the sale sees Horizon Zero Dawn discounted by 50 percent to $23.74. The Complete Edition includes the excellent Frozen Wilds DLC that expands the story and adds an entirely new open-world area for players to explore. If you’ve been waiting to pick up Horizon on PC, now is a good time to do so since Guerrilla patched many of the performance issues that hampered the game at launch. We’ll note here Horizon is also 50 percent off on Steam if you would rather buy the game through Valve’s storefront.

    You can also get 50 percent off on both Disco Elysium and Cyberpunk 2077. If we had to pick a favorite among that pair, it would be Disco Elysium. It’s one of the best RPGs to come out in recent memory and has a lot to say about a variety of topics. If the fact it involved a lot of reading made you hesitant to try it before, The Final Cut release adds full voice acting to the game. At just under $32, we’d say even Cyberpunk is worth it.

    GOG has also discounted the entire Focus Home Interactive catalog by up to 80 percent. In that way, you can get some less-known gems like A Plague Tale: Innocence and Vampyr for as low as $9.89. They’re not the most polished games, but if you’re looking for something different and with some character, they’re worth checking out.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    ", + "content": "

    It may not be Black Friday for another two days, but CD Projekt’s GOG storefront is offering steep discounts on a variety of PC games through the end of the weekend. If there’s a theme to the sale, it’s all about CRPGs. Expect to see titles like Divinity: Original Sin and Divinity 2 as much as 65 percent off.

    One of the highlights of the sale sees Horizon Zero Dawn discounted by 50 percent to $23.74. The Complete Edition includes the excellent Frozen Wilds DLC that expands the story and adds an entirely new open-world area for players to explore. If you’ve been waiting to pick up Horizon on PC, now is a good time to do so since Guerrilla patched many of the performance issues that hampered the game at launch. We’ll note here Horizon is also 50 percent off on Steam if you would rather buy the game through Valve’s storefront.

    You can also get 50 percent off on both Disco Elysium and Cyberpunk 2077. If we had to pick a favorite among that pair, it would be Disco Elysium. It’s one of the best RPGs to come out in recent memory and has a lot to say about a variety of topics. If the fact it involved a lot of reading made you hesitant to try it before, The Final Cut release adds full voice acting to the game. At just under $32, we’d say even Cyberpunk is worth it.

    GOG has also discounted the entire Focus Home Interactive catalog by up to 80 percent. In that way, you can get some less-known gems like A Plague Tale: Innocence and Vampyr for as low as $9.89. They’re not the most polished games, but if you’re looking for something different and with some character, they’re worth checking out.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/gog-pre-black-friday-sale-183145902.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Wed, 24 Nov 2021 18:31:45 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Star Trek: Discovery' season 4 will stream on Pluto TV in some countries", + "description": "

    Don't panic that Star Trek: Discovery vanished from Netflix in many countries right before season 4 arrived — you might have a stopgap solution, depending on where you live. ViacomCBS has revealed that Discovery's latest season will be available on the company's free Pluto TV service in Austria, France, Germany, Italy, Spain, Switzerland and the UK starting November 26th. New episodes will be available each Friday, Saturday and Sunday at 9PM local time. There will be a simulcast on the Star Trek channel in Austria, Germany and Switzerland.

    If you'd rather have more permanent copies, people in France, Germany, Russia, South Korea and the UK can also buy the fourth season from "participating digital platforms" starting on the 26th. If Paramount+ is already available in a country, such as Australia, many Latin American countries and Scandinavian nations, you'll have to sign up but can get 50 percent off the first three months with the code STARTREK.

    This still leaves former Netflix viewers a step behind their Paramount+ counterparts, but they at least won't have to wait until 2022 to follow Michael Burnham's latest exploits. And ViacomCBS wins regardless — this might spike Pluto TV membership, even if only some users stick around once Paramount+ is available in their regions.

    ", + "content": "

    Don't panic that Star Trek: Discovery vanished from Netflix in many countries right before season 4 arrived — you might have a stopgap solution, depending on where you live. ViacomCBS has revealed that Discovery's latest season will be available on the company's free Pluto TV service in Austria, France, Germany, Italy, Spain, Switzerland and the UK starting November 26th. New episodes will be available each Friday, Saturday and Sunday at 9PM local time. There will be a simulcast on the Star Trek channel in Austria, Germany and Switzerland.

    If you'd rather have more permanent copies, people in France, Germany, Russia, South Korea and the UK can also buy the fourth season from "participating digital platforms" starting on the 26th. If Paramount+ is already available in a country, such as Australia, many Latin American countries and Scandinavian nations, you'll have to sign up but can get 50 percent off the first three months with the code STARTREK.

    This still leaves former Netflix viewers a step behind their Paramount+ counterparts, but they at least won't have to wait until 2022 to follow Michael Burnham's latest exploits. And ViacomCBS wins regardless — this might spike Pluto TV membership, even if only some users stick around once Paramount+ is available in their regions.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/star-trek-discovery-season-4-pluto-tv-streaming-174019555.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Wed, 24 Nov 2021 17:40:19 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "US blocks companies aiding Chinese military's quantum computing efforts", + "description": "

    The US is taking extra steps to prevent China's military from claiming quantum computing dominance. The Commerce Department has added eight technology producers to its Entity List to prevent them from supporting the Chinese military's quantum computing efforts. Officials are concerned the entities could feed "emerging" US tech that could aid with breaking encryption, producing 'unbreakable' encryption and developing anti-stealth or anti-submarine systems.

    The list focuses on a mix of companies and researchers, including QuantumCTek and the Hefei National Laboratory for Physical Sciences at Microscale. The US also added three affiliates of Corad Technology Limited, a Chinese firm on the list since 2019, although it wasn't clear that quantum computing was involved — it was also accused of backing Iran's military and space programs as well as North Korea "front companies."

    The broader Entity List update included 27 organizations and people, including 13 in Pakistan accused of backing the country's "unsafeguarded" nuclear or ballistic missile programs.

    This is unlikely to put a stop to China's military uses of quantum computing when the country may need to research and develop much of the technology in-house. The expanded blocklist might slow things down, however, by limiting China's access to American processors and other equipment that could fast-track development. Consider this a stumbling block that gives the US a better chance of taking or maintaining the lead.

    ", + "content": "

    The US is taking extra steps to prevent China's military from claiming quantum computing dominance. The Commerce Department has added eight technology producers to its Entity List to prevent them from supporting the Chinese military's quantum computing efforts. Officials are concerned the entities could feed "emerging" US tech that could aid with breaking encryption, producing 'unbreakable' encryption and developing anti-stealth or anti-submarine systems.

    The list focuses on a mix of companies and researchers, including QuantumCTek and the Hefei National Laboratory for Physical Sciences at Microscale. The US also added three affiliates of Corad Technology Limited, a Chinese firm on the list since 2019, although it wasn't clear that quantum computing was involved — it was also accused of backing Iran's military and space programs as well as North Korea "front companies."

    The broader Entity List update included 27 organizations and people, including 13 in Pakistan accused of backing the country's "unsafeguarded" nuclear or ballistic missile programs.

    This is unlikely to put a stop to China's military uses of quantum computing when the country may need to research and develop much of the technology in-house. The expanded blocklist might slow things down, however, by limiting China's access to American processors and other equipment that could fast-track development. Consider this a stumbling block that gives the US a better chance of taking or maintaining the lead.

    ", + "category": "Politics & Government", + "link": "https://www.engadget.com/us-blocklist-china-military-quantum-computing-163450173.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Wed, 24 Nov 2021 16:34:50 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Fortnite' Chapter 2 will end with a big in-game event on December 4th", + "description": "

    It seems big changes are coming to Fortnite soon. Chapter 2, which started all the way back in October 2019, will wrap up with a one-time-only in-game event called The End at 4PM ET on December 4th.

    "With The Convergence complete, The Cube Queen prepares her endgame for the Island and nothing will ever be the same," Epic Games wrote in a blog post. "Grab your weapons and fight the ultimate destroyer of all reality."

    The Chapter 1-closing event was also named The End and it blew up the original island in spectacular fashion. Fortnite was offline for a few days before Chapter 2 started with an entirely new map. Among other updates, Epic also brought in a fresh user interface and new mechanics in Chapter 2. Given that the publisher says players will battle The Cube Queen "in one last stand for the fate of the Island" and that nothing will seemingly be the same, it seems likely more major changes are coming to the battle royale in the near future.

    If you have any Bars or Battle Stars, use them before the end of the season, since they won't carry over to Chapter 3. Starting on November 30th, character services and exotic item trades will be discounted in Bargain Bin Week. Fortnite will automatically redeem unused Battle Stars for the earliest available rewards. If you have any remaining quests you want to complete, now might be the time to do that.

    Squads of up to 16 players will be able to experience The End together. The event playlist will open at 3:30PM, so it's probably worth joining early to secure a spot. Meanwhile, since Epic is ending the season a day earlier than planned, everyone who logs into Fortnite before it wraps up will receive a 225,000 XP bonus. Those who take part in the event will unlock a special Loading Screen and Wrap too.

    ", + "content": "

    It seems big changes are coming to Fortnite soon. Chapter 2, which started all the way back in October 2019, will wrap up with a one-time-only in-game event called The End at 4PM ET on December 4th.

    "With The Convergence complete, The Cube Queen prepares her endgame for the Island and nothing will ever be the same," Epic Games wrote in a blog post. "Grab your weapons and fight the ultimate destroyer of all reality."

    The Chapter 1-closing event was also named The End and it blew up the original island in spectacular fashion. Fortnite was offline for a few days before Chapter 2 started with an entirely new map. Among other updates, Epic also brought in a fresh user interface and new mechanics in Chapter 2. Given that the publisher says players will battle The Cube Queen "in one last stand for the fate of the Island" and that nothing will seemingly be the same, it seems likely more major changes are coming to the battle royale in the near future.

    If you have any Bars or Battle Stars, use them before the end of the season, since they won't carry over to Chapter 3. Starting on November 30th, character services and exotic item trades will be discounted in Bargain Bin Week. Fortnite will automatically redeem unused Battle Stars for the earliest available rewards. If you have any remaining quests you want to complete, now might be the time to do that.

    Squads of up to 16 players will be able to experience The End together. The event playlist will open at 3:30PM, so it's probably worth joining early to secure a spot. Meanwhile, since Epic is ending the season a day earlier than planned, everyone who logs into Fortnite before it wraps up will receive a 225,000 XP bonus. Those who take part in the event will unlock a special Loading Screen and Wrap too.

    ", + "category": "Personal Investing Ideas & Strategies", + "link": "https://www.engadget.com/fortnite-chapter-2-end-date-event-161551174.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Wed, 24 Nov 2021 16:15:51 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The best TV deals we could find for Black Friday", + "description": "

    Aside from the weeks leading up to the big game, the Black Friday shopping period is arguably the best time of year to buy a new TV. Whether you're looking for your first OLED set or a budget-friendly smart TV, you'll find many options at cheaper-than-usual prices at Amazon, Best Buy and other retailers. TVs from LG, Sony, Samsung, TCL and others have been discounted this year — and it's worth noting that while we highlight certain sizes here, you'll likely find that if one size is on sale, other sizes in the same lineup will also be discounted. And if you're not looking to upgrade your TV, there's a bunch of other home theater equipment on sale right now too, including streaming devices, soundbars and more. Here are the best TV deals, along with the best home theater sales, we could find for Black Friday.

    55-inch LG C1 OLED

    \"55-inch
    LG

    LG's mid-tier C1 OLED smart TV has been discounted to $1,300. It runs on the company's α9 Gen 4 AI processor 4K and supports Game Optimizer, Dolby Vision IQ, Dolby Atmos and voice commands with Alexa and the Google Assistant.

    Buy 55-inch LG C1 OLED at Amazon - $1,300Buy 55-inch LG C1 OLED at Best Buy - $1,300

    55-inch LG G1 OLED

    \"55-inch
    LG

    The LG G1 OLED smart TV has been discounted to $1,700. Part of the "gallery" series, it uses OLED evo panel technology to get better brightness and clearer whites than standard OLED displays. It also runs on LG's a9 Gen4 AI Processor 4K and supports features like G-SYNC, FreeSync, OLED Motion Pro and voice commands via Alexa and the Google Assistant.

    Buy 55-inch LG G1 OLED at Amazon - $1,700Buy 55-inch LG G1 OLED at Best Buy - $1,700

    55-inch LG A1 OLED

    \"55-inch
    LG

    LG's A1 OLED TV is on sale for $1,100. The A1 series is the most affordable of the company's newest OLED sets, making these sets good options for anyone looking to upgrade to OLED while on a tight budget.

    Buy 55-inch LG A1 OLED at Amazon - $1,100Buy 55-inch LG A1 OLED at Best Buy - $1,100

    55-inch Sony Bravia XR A80J OLED

    \"55-inch
    Sony

    Sony's premium Bravia XR A80J OLED set is on sale for $1,400. It includes most of the company's best TV technology, including the Cognitive Processor XR, HDMI 2.1 support, 4K upscaling, XR Motion Clarity and improved sound with Acoustic Surface Audio+ and built-in subwoofers.

    Buy 55-inch Sony Bravia XR A80J OLED at Amazon - $1,400Buy 55-inch Sony Bravia XR A80J OLED at Best Buy - $1,400

    48-inch Sony Bravia A9S OLED

    \"48-inch
    Sony

    Sony's Bravia A9S OLED smart TV is down to $1,200, or $300 off its normal price. It runs on the company's Processor X1 Ultimate and supports HDR and Dolby Vision, Acoustic Surface Audio, X-Motion Clarity technology, AirPlay 2 and more.

    Buy 48-inch Sony Bravia A9S OLED at Amazon - $1,200Buy 48-inch Sony Bravia A9S OLED at Best Buy - $1,200

    55-inch Sony X950H

    \"55-inch
    Sony

    Sony's X950H LED smart TV is on sale for $1,020, which is 15 percent off. While not an OLED set, this TV has local dimming LED backlighting along with the Android TV operating system, Google Assistant and Alexa support, Game Mode and AirPlay 2 and HomeKit compatibility.

    Buy 55-inch Sony X950H at Amazon - $1,020

    55-inch Samsung The Frame

    \"65-inch
    Samsung

    Samsung's The Frame is on sale for $1,000. This is the TV to get if you'd prefer to look at something more interesting than a black box when not actually watching a TV show or movie. Its art mode lets you select images to display on the screen whenever you want, and it also supports 4K AI upscaling and truer colors using Quantum Dot technology.

    Buy 55-inch The Frame at Amazon - $1,000Buy 55-inch The Frame at Samsung - $1,000

    85-inch Samsung QN90A Neo QLED

    \"85-inch
    Samsung

    Samsung's massive 85-inch QN90A Neo QLED smart TV is $700 off right now, bringing it down to $3,300. It has Quantum HDR 32X for vibrant, vivid colors, mini LEDs for improved contrast and Object Tracking Sound+ for more immersive audio.

    Buy 85-inch Samsung QN90A at Best Buy - $3,300

    55-inch Vizio OLED 4K TV

    \"Vizio
    Vizio

    Vizio's 55-inch H1 OLED TV is $300 off right now, bringing it down to $1,000. This is a solid price for a mid-sized OLED set that supports Dolby Vision HDR, Vizio's IQ Ultra processor, 120Hz gaming with VRR and built-in AirPlay and Chromecast technology.

    Buy 55-inch Vizio OLED at Best Buy - $1,000

    75-inch Vizio P-Series 4K TV

    \"VIZIO
    Vizio

    Vizio's 75-inch P-Series 4K TV is $400 off, bringing it down to $1,600. This set supports full array local dimming, a peak brightness of 1,200 nits, Dolby Vision HDR, Quantum Color, AirPlay 2 and more.

    Buy 75-inch Vizio P-Series at Amazon - $1,600

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    The Roku Streambar is down to $80 right now, or $50 off its normal price. It's a compact soundbar that will upgrade any living room relying on an old TV with weak audio. We gave it a score of 86 for its solid audio quality, Dolby Audio support and built-in 4K streaming technology.

    Buy Roku Streambar at Amazon - $80

    Vizio Elevate soundbar

    \"Vizio
    Vizio

    Vizio's Elevate soundbar is on sale for $800, or $300 off its normal price. While not an all-time low, it's the best price we've seen on the device in months. It has multiple speakers inside the main portion that rotate upward whenever you're playing Dolby Atmos or DTS:X content. Plus, the whole system has 18 speakers, including a wireless subwoofer and two satellite surround speakers that you can position anywhere in the room.

    Buy Vizio Elevate soundbar at Amazon - $800

    Chromecast with Google TV

    \"Google
    Google

    The Chromecast with Google TV has dropped to $40, which is $10 cheaper than usual. We gave the device a score of 86 for its 4K HDR streaming capabilities, Dolby Vision and Atmos support plus its much needed and very handy new remote.

    Buy Chromecast with Google TV at Best Buy - $40

    Fire TV Stick 4K Max

    \"Amazon
    Amazon

    The new Fire TV Stick 4K Max has dropped to $35. This has all of the features of the standard Fire TV Stick 4K plus support for WiFi 6 and picture-in-picture live view.

    Buy Fire TV Stick 4K Max at Amazon - $35

    Fire TV Stick 4K

    \"Amazon
    Amazon

    Amazon's Fire TV Stick 4K is on sale for $25 right now. It's one of the easiest ways to get 4K streaming TV into your TV, plus it supports Dolby Audio and Alexa voice commands.

    Buy Fire TV Stick 4K at Amazon - $25

    Fire TV Stick Lite

    \"Amazon
    Amazon

    The Fire TV Stick Lite has dropped to $18. It provides 1080p streaming, access to services like Netflix and Prime Video and can stream music from services like Spotify and Pandora.

    Buy Fire TV Stick Lite at Amazon - $18

    Roku Streaming Stick 4K

    \"Roku
    Roku

    The new Roku Streaming Stick 4K is on sale for $30, or $20 off its normal price. It builds upon the technology in the Streaming Stick+, supporting 4K HDR10+ content, Dolby Vision, long-range WiFi, voice search and TV controls with the included remote.

    Buy Roku Streaming Stick 4K at Amazon - $30

    NVIDIA Shield TV

    \"Nvidia
    Engadget

    NVIDIA's Shield TV has dropped to $129, or roughly $20 cheaper than usual. This is one of the more powerful streaming devices available today thanks to its Tegra X1+ processor, support for Dolby Vision HDR, Dolby Atmos, Chromecast 4K and AI-powered 4K upscaling.

    Buy NVIDIA Shield TV at Amazon - $129Buy NVIDIA Shield at Best Buy - $129

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Aside from the weeks leading up to the big game, the Black Friday shopping period is arguably the best time of year to buy a new TV. Whether you're looking for your first OLED set or a budget-friendly smart TV, you'll find many options at cheaper-than-usual prices at Amazon, Best Buy and other retailers. TVs from LG, Sony, Samsung, TCL and others have been discounted this year — and it's worth noting that while we highlight certain sizes here, you'll likely find that if one size is on sale, other sizes in the same lineup will also be discounted. And if you're not looking to upgrade your TV, there's a bunch of other home theater equipment on sale right now too, including streaming devices, soundbars and more. Here are the best TV deals, along with the best home theater sales, we could find for Black Friday.

    55-inch LG C1 OLED

    \"55-inch
    LG

    LG's mid-tier C1 OLED smart TV has been discounted to $1,300. It runs on the company's α9 Gen 4 AI processor 4K and supports Game Optimizer, Dolby Vision IQ, Dolby Atmos and voice commands with Alexa and the Google Assistant.

    Buy 55-inch LG C1 OLED at Amazon - $1,300Buy 55-inch LG C1 OLED at Best Buy - $1,300

    55-inch LG G1 OLED

    \"55-inch
    LG

    The LG G1 OLED smart TV has been discounted to $1,700. Part of the "gallery" series, it uses OLED evo panel technology to get better brightness and clearer whites than standard OLED displays. It also runs on LG's a9 Gen4 AI Processor 4K and supports features like G-SYNC, FreeSync, OLED Motion Pro and voice commands via Alexa and the Google Assistant.

    Buy 55-inch LG G1 OLED at Amazon - $1,700Buy 55-inch LG G1 OLED at Best Buy - $1,700

    55-inch LG A1 OLED

    \"55-inch
    LG

    LG's A1 OLED TV is on sale for $1,100. The A1 series is the most affordable of the company's newest OLED sets, making these sets good options for anyone looking to upgrade to OLED while on a tight budget.

    Buy 55-inch LG A1 OLED at Amazon - $1,100Buy 55-inch LG A1 OLED at Best Buy - $1,100

    55-inch Sony Bravia XR A80J OLED

    \"55-inch
    Sony

    Sony's premium Bravia XR A80J OLED set is on sale for $1,400. It includes most of the company's best TV technology, including the Cognitive Processor XR, HDMI 2.1 support, 4K upscaling, XR Motion Clarity and improved sound with Acoustic Surface Audio+ and built-in subwoofers.

    Buy 55-inch Sony Bravia XR A80J OLED at Amazon - $1,400Buy 55-inch Sony Bravia XR A80J OLED at Best Buy - $1,400

    48-inch Sony Bravia A9S OLED

    \"48-inch
    Sony

    Sony's Bravia A9S OLED smart TV is down to $1,200, or $300 off its normal price. It runs on the company's Processor X1 Ultimate and supports HDR and Dolby Vision, Acoustic Surface Audio, X-Motion Clarity technology, AirPlay 2 and more.

    Buy 48-inch Sony Bravia A9S OLED at Amazon - $1,200Buy 48-inch Sony Bravia A9S OLED at Best Buy - $1,200

    55-inch Sony X950H

    \"55-inch
    Sony

    Sony's X950H LED smart TV is on sale for $1,020, which is 15 percent off. While not an OLED set, this TV has local dimming LED backlighting along with the Android TV operating system, Google Assistant and Alexa support, Game Mode and AirPlay 2 and HomeKit compatibility.

    Buy 55-inch Sony X950H at Amazon - $1,020

    55-inch Samsung The Frame

    \"65-inch
    Samsung

    Samsung's The Frame is on sale for $1,000. This is the TV to get if you'd prefer to look at something more interesting than a black box when not actually watching a TV show or movie. Its art mode lets you select images to display on the screen whenever you want, and it also supports 4K AI upscaling and truer colors using Quantum Dot technology.

    Buy 55-inch The Frame at Amazon - $1,000Buy 55-inch The Frame at Samsung - $1,000

    85-inch Samsung QN90A Neo QLED

    \"85-inch
    Samsung

    Samsung's massive 85-inch QN90A Neo QLED smart TV is $700 off right now, bringing it down to $3,300. It has Quantum HDR 32X for vibrant, vivid colors, mini LEDs for improved contrast and Object Tracking Sound+ for more immersive audio.

    Buy 85-inch Samsung QN90A at Best Buy - $3,300

    55-inch Vizio OLED 4K TV

    \"Vizio
    Vizio

    Vizio's 55-inch H1 OLED TV is $300 off right now, bringing it down to $1,000. This is a solid price for a mid-sized OLED set that supports Dolby Vision HDR, Vizio's IQ Ultra processor, 120Hz gaming with VRR and built-in AirPlay and Chromecast technology.

    Buy 55-inch Vizio OLED at Best Buy - $1,000

    75-inch Vizio P-Series 4K TV

    \"VIZIO
    Vizio

    Vizio's 75-inch P-Series 4K TV is $400 off, bringing it down to $1,600. This set supports full array local dimming, a peak brightness of 1,200 nits, Dolby Vision HDR, Quantum Color, AirPlay 2 and more.

    Buy 75-inch Vizio P-Series at Amazon - $1,600

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    The Roku Streambar is down to $80 right now, or $50 off its normal price. It's a compact soundbar that will upgrade any living room relying on an old TV with weak audio. We gave it a score of 86 for its solid audio quality, Dolby Audio support and built-in 4K streaming technology.

    Buy Roku Streambar at Amazon - $80

    Vizio Elevate soundbar

    \"Vizio
    Vizio

    Vizio's Elevate soundbar is on sale for $800, or $300 off its normal price. While not an all-time low, it's the best price we've seen on the device in months. It has multiple speakers inside the main portion that rotate upward whenever you're playing Dolby Atmos or DTS:X content. Plus, the whole system has 18 speakers, including a wireless subwoofer and two satellite surround speakers that you can position anywhere in the room.

    Buy Vizio Elevate soundbar at Amazon - $800

    Chromecast with Google TV

    \"Google
    Google

    The Chromecast with Google TV has dropped to $40, which is $10 cheaper than usual. We gave the device a score of 86 for its 4K HDR streaming capabilities, Dolby Vision and Atmos support plus its much needed and very handy new remote.

    Buy Chromecast with Google TV at Best Buy - $40

    Fire TV Stick 4K Max

    \"Amazon
    Amazon

    The new Fire TV Stick 4K Max has dropped to $35. This has all of the features of the standard Fire TV Stick 4K plus support for WiFi 6 and picture-in-picture live view.

    Buy Fire TV Stick 4K Max at Amazon - $35

    Fire TV Stick 4K

    \"Amazon
    Amazon

    Amazon's Fire TV Stick 4K is on sale for $25 right now. It's one of the easiest ways to get 4K streaming TV into your TV, plus it supports Dolby Audio and Alexa voice commands.

    Buy Fire TV Stick 4K at Amazon - $25

    Fire TV Stick Lite

    \"Amazon
    Amazon

    The Fire TV Stick Lite has dropped to $18. It provides 1080p streaming, access to services like Netflix and Prime Video and can stream music from services like Spotify and Pandora.

    Buy Fire TV Stick Lite at Amazon - $18

    Roku Streaming Stick 4K

    \"Roku
    Roku

    The new Roku Streaming Stick 4K is on sale for $30, or $20 off its normal price. It builds upon the technology in the Streaming Stick+, supporting 4K HDR10+ content, Dolby Vision, long-range WiFi, voice search and TV controls with the included remote.

    Buy Roku Streaming Stick 4K at Amazon - $30

    NVIDIA Shield TV

    \"Nvidia
    Engadget

    NVIDIA's Shield TV has dropped to $129, or roughly $20 cheaper than usual. This is one of the more powerful streaming devices available today thanks to its Tegra X1+ processor, support for Dolby Vision HDR, Dolby Atmos, Chromecast 4K and AI-powered 4K upscaling.

    Buy NVIDIA Shield TV at Amazon - $129Buy NVIDIA Shield at Best Buy - $129

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Shopping", + "link": "https://www.engadget.com/best-tv-deals-black-friday-2021-home-entertainment-deals-160021710.html?src=rss", + "creator": "Engadget", + "pubDate": "Wed, 24 Nov 2021 16:00:21 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple explains how it alerts targets of state-sponsored spyware attacks", + "description": "

    Apple said it would keep notifying victims in its fight against state-sponsored spyware, and now it's clear just what happens if you're one of those targets. MacRumorsnotes that Apple has detailed how it alerts users when it believes they've been targeted by state-sponsored attackers. You'll get both email and iMessage notifications to the addresses and phone numbers associated with your Apple ID. If you visit appleid.apple.com, you'll also see a prominent "threat notification" message indicating what happened and when.

    The company stressed these notifications will never ask you to click links, download content or share login details like passwords and verification codes. It instead asked users to visit the Apple ID website to verify warnings. Apple also pointed users to a Consumer Reports list of emergency resources if you don't get the notification but are still reasonably confident you're under attack, whether from state actors or harassers.

    These kinds of notifications aren't new. Google, for instance, has been notifying potential victims for years. Apple's explanation is relevant in light of worries about spyware from NSO Group and others, however, and may be crucial if you're an activist, journalist or other critic who could easily face attacks from oppressive governments.

    ", + "content": "

    Apple said it would keep notifying victims in its fight against state-sponsored spyware, and now it's clear just what happens if you're one of those targets. MacRumorsnotes that Apple has detailed how it alerts users when it believes they've been targeted by state-sponsored attackers. You'll get both email and iMessage notifications to the addresses and phone numbers associated with your Apple ID. If you visit appleid.apple.com, you'll also see a prominent "threat notification" message indicating what happened and when.

    The company stressed these notifications will never ask you to click links, download content or share login details like passwords and verification codes. It instead asked users to visit the Apple ID website to verify warnings. Apple also pointed users to a Consumer Reports list of emergency resources if you don't get the notification but are still reasonably confident you're under attack, whether from state actors or harassers.

    These kinds of notifications aren't new. Google, for instance, has been notifying potential victims for years. Apple's explanation is relevant in light of worries about spyware from NSO Group and others, however, and may be crucial if you're an activist, journalist or other critic who could easily face attacks from oppressive governments.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/apple-details-notifications-state-sponsored-spyware-151229317.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Wed, 24 Nov 2021 15:12:29 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Splice's music creation plans are going on sale for Black Friday", + "description": "

    Music creation and collaboration platform Splice is offering new users a discount for Black Friday. If you sign up for a year-long Sounds+, Creator or Creator+ plan between November 24th and 30th, you'll save $20. During that time, a year of Sounds+ access will cost $80, the annual Creator plan will drop to $180 and a 12-month Creator+ subscription will be $280.

    We recommended the Creator plan in our holiday gift guide. The entry-level Sounds+ plan might offer enough for hobbyists, with 100 credits for royalty-free samples each month. Creator subscribers get twice as many credits, along with access to Splice's Astra soft synth, the Beatmaker drum machine and music production lessons and tutorials. The Creator+ plan is almost the same as Creator, but with 500 sample credits instead of 200.

    Those aren't enormous discounts, admittedly, and you do have to commit to a year-long subscription. Still, if you've been on the fence about leaping into Splice, this might be a good time.

    ", + "content": "

    Music creation and collaboration platform Splice is offering new users a discount for Black Friday. If you sign up for a year-long Sounds+, Creator or Creator+ plan between November 24th and 30th, you'll save $20. During that time, a year of Sounds+ access will cost $80, the annual Creator plan will drop to $180 and a 12-month Creator+ subscription will be $280.

    We recommended the Creator plan in our holiday gift guide. The entry-level Sounds+ plan might offer enough for hobbyists, with 100 credits for royalty-free samples each month. Creator subscribers get twice as many credits, along with access to Splice's Astra soft synth, the Beatmaker drum machine and music production lessons and tutorials. The Creator+ plan is almost the same as Creator, but with 500 sample credits instead of 200.

    Those aren't enormous discounts, admittedly, and you do have to commit to a year-long subscription. Still, if you've been on the fence about leaping into Splice, this might be a good time.

    ", + "category": "Hobbies & Personal Activities", + "link": "https://www.engadget.com/splice-music-creation-plans-sale-black-friday-150034345.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Wed, 24 Nov 2021 15:00:34 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "WhatsApp on the web lets you create your own stickers", + "description": "

    You don't have to settle for pre-made WhatsApp stickers (or use a third-party tool) if you're sitting at your computer. The Vergereports WhatsApp has introduced a custom sticker creator for its web client and, within a week, desktop apps. Choose to attach a sticker and you can upload a custom image for editing. You can add emoji or text, crop pictures, cut out backgrounds and even slap existing WhatsApp stickers on top.

    This tool won't help much if you mostly chat on mobile, where apps already exist to produce WhatsApp stickers. It might help if you frequently message people from your desk, though, and it could be particularly useful if you're either a digital artist (and likely have creative tools on your computer) or prefer to edit images with a mouse instead of your fingers.

    ", + "content": "

    You don't have to settle for pre-made WhatsApp stickers (or use a third-party tool) if you're sitting at your computer. The Vergereports WhatsApp has introduced a custom sticker creator for its web client and, within a week, desktop apps. Choose to attach a sticker and you can upload a custom image for editing. You can add emoji or text, crop pictures, cut out backgrounds and even slap existing WhatsApp stickers on top.

    This tool won't help much if you mostly chat on mobile, where apps already exist to produce WhatsApp stickers. It might help if you frequently message people from your desk, though, and it could be particularly useful if you're either a digital artist (and likely have creative tools on your computer) or prefer to edit images with a mouse instead of your fingers.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/whatsapp-web-sticker-creator-140824237.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Wed, 24 Nov 2021 14:08:24 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samsung's Galaxy Chromebook 2 drops to $399 ahead of Black Friday", + "description": "

    As the Chromebook market has matured, a bunch of higher-end models have come out. Samsung's original Galaxy Chromebook was one of them, but the company realized that paying $1,000 for a Chrome OS machine was a hard sell for most. Enter the Galaxy Chromebook 2, Samsung's correction and a much better laptop with an easier-to-stomach starting price of $449. But now you can get the Galaxy Chromebook 2 for $50 less, or $399, which is a record low. That's for the base model with a Celeron processor, 4GB of RAM and 64GB of storage, but the Core i3 model is also on sale for $549 — $50 more than it's lowest price, but still a decent deal.

    Buy Galaxy Chromebook 2 at Amazon - $399Buy Galaxy Chromebook 2 at Samsung - $399

    Samsung prioritized the right things when developing the Galaxy Chromebook 2. The design is much the same as the original, with a relatively light 2.2-pound frame, a premium build and a fiery red color. The company ditched the lovely yet taxing 4K display from the previous version and opted for a 1080p QLED touchscreen which remains nicer than panels on most other Chromebooks. While the 4K display did a number on the original laptop's battery life, this QLED display isn't as bad. We managed to get about 12 hours of use on a single charge, and while we wish the battery life was a tad longer, it should get you through a work day.

    The Galaxy Chromebook 2 has a convertible design, too, so you can use it in tablet mode or prop it up so it acts as a small TV for video streaming. It doesn't come with a stylus like some of Samsung's other laptops, but any Universal Stylus Initiative pen will work with it. If you're eyeing the Galaxy Chromebook 2 as a secondary or travel device, the base model with a Celeron processor may provide all the power you need. But hardcore Chrome OS fans who want to use this machine as their daily driver won't regret shelling out a bit more money for the Core i3 version.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    As the Chromebook market has matured, a bunch of higher-end models have come out. Samsung's original Galaxy Chromebook was one of them, but the company realized that paying $1,000 for a Chrome OS machine was a hard sell for most. Enter the Galaxy Chromebook 2, Samsung's correction and a much better laptop with an easier-to-stomach starting price of $449. But now you can get the Galaxy Chromebook 2 for $50 less, or $399, which is a record low. That's for the base model with a Celeron processor, 4GB of RAM and 64GB of storage, but the Core i3 model is also on sale for $549 — $50 more than it's lowest price, but still a decent deal.

    Buy Galaxy Chromebook 2 at Amazon - $399Buy Galaxy Chromebook 2 at Samsung - $399

    Samsung prioritized the right things when developing the Galaxy Chromebook 2. The design is much the same as the original, with a relatively light 2.2-pound frame, a premium build and a fiery red color. The company ditched the lovely yet taxing 4K display from the previous version and opted for a 1080p QLED touchscreen which remains nicer than panels on most other Chromebooks. While the 4K display did a number on the original laptop's battery life, this QLED display isn't as bad. We managed to get about 12 hours of use on a single charge, and while we wish the battery life was a tad longer, it should get you through a work day.

    The Galaxy Chromebook 2 has a convertible design, too, so you can use it in tablet mode or prop it up so it acts as a small TV for video streaming. It doesn't come with a stylus like some of Samsung's other laptops, but any Universal Stylus Initiative pen will work with it. If you're eyeing the Galaxy Chromebook 2 as a secondary or travel device, the base model with a Celeron processor may provide all the power you need. But hardcore Chrome OS fans who want to use this machine as their daily driver won't regret shelling out a bit more money for the Core i3 version.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/samsungs-galaxy-chromebook-2-drops-to-399-ahead-of-black-friday-135045680.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Wed, 24 Nov 2021 13:50:45 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Elecjet’s graphene power bank is as exciting as a power bank can be", + "description": "

    Update 11/24: This article was originally published on November 12th, 2021. Due to a technical issue with the campaign, the Elecjet Apollo Ultra was pulled from Indiegogo, but has returned today. The article text remains as originally published, but links to the campaign have changed.

    In the space of a few years, we’ve gone from 5W USB adapters being the norm, to iPads and Nintendo Switches being able to charge at 18W, all the way up to modern laptops drawing up to 140W. This explosion in charging rates over a (somewhat) standardized USB-C connector has been great for consumers who can now mostly charge their stuff with one or two well-positioned adapters. But, it’s made choosing the right power bank to keep all of your devices topped up on the go way more difficult.

    Enter Elecjet, a small company which has been carving out a niche for itself by using graphene in adapters and power banks. It launched its first “graphene-enhanced battery power bank,” on Indiegogo back in 2019, and is now back with the Elecjet Apollo Ultra. It’s a 37Wh (10,000mAh) power bank with a couple of notable specs: It can be charged at 100W, and can output at up to 87W across its two ports.

    These numbers are very high. On the output side, most 10,000mAh battery packs top out at around 18W; it’s only chunkier chargers that reach figures like 65W. On the input side of things, you’re looking at around 30W as the peak for a high-end portable charger. (There is a market for “laptop power stations,” which can meet and in some cases best Elecjet’s input and output numbers, but those are typically bulky units.)

    My personal power bank at the moment is a 20,000mAh Anker PowerCore, which maxes out at around 25W output and 30W input. Although it’s double the capacity of the graphene model, after about a month of using a pre-production unit Elecjet sent me, I don’t want to go back.

    Before I get into that, what does a “graphene-enhanced battery” even mean? Elecjet takes the lithium cells that are inside every device nowadays, and plays with the chemistry. Its “composite graphene cells,” mix a graphene solution in with the lithium in the cathode, and then add some layers of graphene coating the anode.

    What you get from this sprinkling of graphene is much improved performance at the expense of size. Thanks to offering lower resistance and higher thermal conductivity, Elecjet’s graphene-lithium composite cells can theoretically be charged five times faster, and run through five times more charge cycles, but are about 25 percent less energy dense than regular lithium. So, composite graphene batteries are faster and run cooler, but will either have a lower capacity or a larger size when compared to the batteries we’re used to.

    I’m not really close to pushing the Apollo Ultra to its stated 87W limit. The devices I need to charge on the regular are an iPhone 12, a Nintendo Switch and an M1 MacBook Air. It happily charges my Nintendo Switch at 18W, my iPhone at 20W, and my MacBook Air at around 45W.

    That last figure is actually higher than the charger that came with the MacBook Air, but on plugging in a 65W Apple charger from a MacBook Pro, I saw essentially the same figure, so it appears that’s a safe rate for the battery. I did run some tests on a friend’s 13-inch MacBook Pro, though, and found it was able to charge it at a similar speed to the 65W charger that device came with, so I have no reason to doubt the output claims.

    Speaking of claims, this is nitpicking to the extreme, but the Apollo Ultra’s USB-C port outputs at up to 65W, and its USB-A port can handle 18W. With the PPS power spec it can output at 68.25W, but none of these combinations add up to the claimed 87W output figure.

    Output aside, the main benefit for me is how fast you can charge the battery itself. I’m quite forgetful, and will often be getting ready to leave the house with my phone on low battery, and then go to pick up my power bank only to find out it’s empty. I’m sure that’ll still happen, because if I haven’t learned in 36 years to prepare for life adequately I’m not about to change now. 

    But being able to charge the Apollo Ultra so quickly has meant it’s really not an issue. Plugging it in for about six to seven minutes gives me enough juice to charge my iPhone from the red up to 100 percent, and honestly even a couple of minutes before I run out of the door has got me home without my phone dying on me. Although the pre-production units are limited to 87W input (and so took about 35 minutes to charge), the final, 100W edition will charge from 0 to full in under half an hour. It’s like a safety net for my own stupidity.

    Its small size, at least in comparison to my regular power bank, is also a plus. At 130 x 68mm, Elecjet’s bank has roughly the same footprint as an iPhone 13 mini, and it’s about 17mm thick. It’s totally pocketable for most folks, or at the least jacket-pocketable, which is not something I can say about my Anker. It’s also, in my opinion, pretty attractive for a power bank, with nice quality white and black plastics, and a proper display that shows the battery percentage. After years of divining how much power is left with four little LEDs, having so many degrees of precision is very nice.

    For everything I love about its size and build quality, there’s no getting around the fact that the Apollo Ultra’s overall capacity is quite low. It can handle about two thirds of a MacBook Air’s charge, two and a bit Switch charges, or three-ish charges of a modern smartphone. That’s… absolutely fine. But the benefits of being able to charge something at 65W are somewhat limited when the battery drains in 35 minutes at that rate.

    What I really want is impossible with today’s tech: Something this size, just as performant, but double the capacity. In the future, Elecjet says it will be able to make the power module smaller to mitigate the density issue, and it also claims it has “ a new battery under the wraps” that can get far closer to the density of regular cells.

    In the meantime, it would be great to see Elecjet expand its current Apollo Ultra range to include larger capacity batteries. Some options would be good, so buyers can pick the compromise that suits them. A 55Wh battery pack would only be 50 percent larger, but handle a wider variety of devices. Even a 75Wh battery would only be double the volume.

    \"Elecjet

    Judging the pricing Elecjet has opted for is difficult. The Apollo Ultra is on Indiegogo at $65, which is honestly the most expensive I’ve seen a battery pack of this capacity in recent memory. But it behaves more like the ultra-high end battery packs that go for $100+, and unlike those it fits in my jeans pocket. But it doesn’t last as long as those— you see my problem. I think $65 is a reasonable price for what you get here. It’s a sleek, cool-looking thing, and the fast-charging makes it more useful to me than a “regular” larger-capacity battery pack.

    As with all Indiegogo products, there’s a big caveat in that you are not buying a product that currently exists. Production will begin shortly, and users backing today should expect their devices in early 2022. I have a working unit on my desk, so I’m confident that Elecjet can deliver a power bank as advertised. But the company’s past Indiegogo campaigns do lead to even more caveats.

    Both the Elecjet Apollo and Apollo Max campaigns had issues. A few users reported exploding power banks, others never received their units and, perhaps worst of all, users who complained through the Indiegogo campaigns were left without answers for months or in a couple of cases years. All of the complaints have now been addressed, but only in the past few days leading up to the launch of the new product.

    Elecjet merged with another company named Real Graphene earlier this year. Both companies were founded by the same person, Samuel Gong, a UC Berkeley engineering graduate, but Gong says he was not involved in the day-to-day operations of Elecjet until the two merged. 

    When I asked about the complaints surrounding prior campaigns, Gong acknowledged that “there were some issues with the previous products’ quality,” and said most people who didn’t receive their product failed to provide a shipping address through Indiegogo. He said the company “was being managed by another team, and previous campaigns and products were done by [that] team.” He added that the new Apollo Ultra was extensively prototyped and has been evaluated by UL (a well-regarded certification company) for safety. The press pack Elecjet provided touts “8 safety features” and notes the device never exceeded 42C in testing. This matches my personal experience, in which the device was cooler to the touch than my regular power bank, which was charging at a lower rate.

    As for not responding to customer support requests, he acknowledged that, after the merger, the company “couldn’t dedicate enough time to previous campaigns.” The reason he gave for the sudden responses to old complaints was that a new team has been hired to manage the Indiegogo campaign, and that team is also aiding backers of old projects from before the new leadership team was around.

    I’m extremely into the Elecjet Apollo Ultra. It’s rare that I’m interested, let alone excited, about a product as dull as a power bank, but it’s always good to see something totally new enter any tech space. Those caveats are certainly worrying, though. If you’re not willing to take the risk but are still interested, Elecjet does have its own retail site, and a sizable Amazon presence, for its other products. You could always wait for the product to launch and hit more traditional retail channels (at a slightly inflated price) further down the line.

    ", + "content": "

    Update 11/24: This article was originally published on November 12th, 2021. Due to a technical issue with the campaign, the Elecjet Apollo Ultra was pulled from Indiegogo, but has returned today. The article text remains as originally published, but links to the campaign have changed.

    In the space of a few years, we’ve gone from 5W USB adapters being the norm, to iPads and Nintendo Switches being able to charge at 18W, all the way up to modern laptops drawing up to 140W. This explosion in charging rates over a (somewhat) standardized USB-C connector has been great for consumers who can now mostly charge their stuff with one or two well-positioned adapters. But, it’s made choosing the right power bank to keep all of your devices topped up on the go way more difficult.

    Enter Elecjet, a small company which has been carving out a niche for itself by using graphene in adapters and power banks. It launched its first “graphene-enhanced battery power bank,” on Indiegogo back in 2019, and is now back with the Elecjet Apollo Ultra. It’s a 37Wh (10,000mAh) power bank with a couple of notable specs: It can be charged at 100W, and can output at up to 87W across its two ports.

    These numbers are very high. On the output side, most 10,000mAh battery packs top out at around 18W; it’s only chunkier chargers that reach figures like 65W. On the input side of things, you’re looking at around 30W as the peak for a high-end portable charger. (There is a market for “laptop power stations,” which can meet and in some cases best Elecjet’s input and output numbers, but those are typically bulky units.)

    My personal power bank at the moment is a 20,000mAh Anker PowerCore, which maxes out at around 25W output and 30W input. Although it’s double the capacity of the graphene model, after about a month of using a pre-production unit Elecjet sent me, I don’t want to go back.

    Before I get into that, what does a “graphene-enhanced battery” even mean? Elecjet takes the lithium cells that are inside every device nowadays, and plays with the chemistry. Its “composite graphene cells,” mix a graphene solution in with the lithium in the cathode, and then add some layers of graphene coating the anode.

    What you get from this sprinkling of graphene is much improved performance at the expense of size. Thanks to offering lower resistance and higher thermal conductivity, Elecjet’s graphene-lithium composite cells can theoretically be charged five times faster, and run through five times more charge cycles, but are about 25 percent less energy dense than regular lithium. So, composite graphene batteries are faster and run cooler, but will either have a lower capacity or a larger size when compared to the batteries we’re used to.

    I’m not really close to pushing the Apollo Ultra to its stated 87W limit. The devices I need to charge on the regular are an iPhone 12, a Nintendo Switch and an M1 MacBook Air. It happily charges my Nintendo Switch at 18W, my iPhone at 20W, and my MacBook Air at around 45W.

    That last figure is actually higher than the charger that came with the MacBook Air, but on plugging in a 65W Apple charger from a MacBook Pro, I saw essentially the same figure, so it appears that’s a safe rate for the battery. I did run some tests on a friend’s 13-inch MacBook Pro, though, and found it was able to charge it at a similar speed to the 65W charger that device came with, so I have no reason to doubt the output claims.

    Speaking of claims, this is nitpicking to the extreme, but the Apollo Ultra’s USB-C port outputs at up to 65W, and its USB-A port can handle 18W. With the PPS power spec it can output at 68.25W, but none of these combinations add up to the claimed 87W output figure.

    Output aside, the main benefit for me is how fast you can charge the battery itself. I’m quite forgetful, and will often be getting ready to leave the house with my phone on low battery, and then go to pick up my power bank only to find out it’s empty. I’m sure that’ll still happen, because if I haven’t learned in 36 years to prepare for life adequately I’m not about to change now. 

    But being able to charge the Apollo Ultra so quickly has meant it’s really not an issue. Plugging it in for about six to seven minutes gives me enough juice to charge my iPhone from the red up to 100 percent, and honestly even a couple of minutes before I run out of the door has got me home without my phone dying on me. Although the pre-production units are limited to 87W input (and so took about 35 minutes to charge), the final, 100W edition will charge from 0 to full in under half an hour. It’s like a safety net for my own stupidity.

    Its small size, at least in comparison to my regular power bank, is also a plus. At 130 x 68mm, Elecjet’s bank has roughly the same footprint as an iPhone 13 mini, and it’s about 17mm thick. It’s totally pocketable for most folks, or at the least jacket-pocketable, which is not something I can say about my Anker. It’s also, in my opinion, pretty attractive for a power bank, with nice quality white and black plastics, and a proper display that shows the battery percentage. After years of divining how much power is left with four little LEDs, having so many degrees of precision is very nice.

    For everything I love about its size and build quality, there’s no getting around the fact that the Apollo Ultra’s overall capacity is quite low. It can handle about two thirds of a MacBook Air’s charge, two and a bit Switch charges, or three-ish charges of a modern smartphone. That’s… absolutely fine. But the benefits of being able to charge something at 65W are somewhat limited when the battery drains in 35 minutes at that rate.

    What I really want is impossible with today’s tech: Something this size, just as performant, but double the capacity. In the future, Elecjet says it will be able to make the power module smaller to mitigate the density issue, and it also claims it has “ a new battery under the wraps” that can get far closer to the density of regular cells.

    In the meantime, it would be great to see Elecjet expand its current Apollo Ultra range to include larger capacity batteries. Some options would be good, so buyers can pick the compromise that suits them. A 55Wh battery pack would only be 50 percent larger, but handle a wider variety of devices. Even a 75Wh battery would only be double the volume.

    \"Elecjet

    Judging the pricing Elecjet has opted for is difficult. The Apollo Ultra is on Indiegogo at $65, which is honestly the most expensive I’ve seen a battery pack of this capacity in recent memory. But it behaves more like the ultra-high end battery packs that go for $100+, and unlike those it fits in my jeans pocket. But it doesn’t last as long as those— you see my problem. I think $65 is a reasonable price for what you get here. It’s a sleek, cool-looking thing, and the fast-charging makes it more useful to me than a “regular” larger-capacity battery pack.

    As with all Indiegogo products, there’s a big caveat in that you are not buying a product that currently exists. Production will begin shortly, and users backing today should expect their devices in early 2022. I have a working unit on my desk, so I’m confident that Elecjet can deliver a power bank as advertised. But the company’s past Indiegogo campaigns do lead to even more caveats.

    Both the Elecjet Apollo and Apollo Max campaigns had issues. A few users reported exploding power banks, others never received their units and, perhaps worst of all, users who complained through the Indiegogo campaigns were left without answers for months or in a couple of cases years. All of the complaints have now been addressed, but only in the past few days leading up to the launch of the new product.

    Elecjet merged with another company named Real Graphene earlier this year. Both companies were founded by the same person, Samuel Gong, a UC Berkeley engineering graduate, but Gong says he was not involved in the day-to-day operations of Elecjet until the two merged. 

    When I asked about the complaints surrounding prior campaigns, Gong acknowledged that “there were some issues with the previous products’ quality,” and said most people who didn’t receive their product failed to provide a shipping address through Indiegogo. He said the company “was being managed by another team, and previous campaigns and products were done by [that] team.” He added that the new Apollo Ultra was extensively prototyped and has been evaluated by UL (a well-regarded certification company) for safety. The press pack Elecjet provided touts “8 safety features” and notes the device never exceeded 42C in testing. This matches my personal experience, in which the device was cooler to the touch than my regular power bank, which was charging at a lower rate.

    As for not responding to customer support requests, he acknowledged that, after the merger, the company “couldn’t dedicate enough time to previous campaigns.” The reason he gave for the sudden responses to old complaints was that a new team has been hired to manage the Indiegogo campaign, and that team is also aiding backers of old projects from before the new leadership team was around.

    I’m extremely into the Elecjet Apollo Ultra. It’s rare that I’m interested, let alone excited, about a product as dull as a power bank, but it’s always good to see something totally new enter any tech space. Those caveats are certainly worrying, though. If you’re not willing to take the risk but are still interested, Elecjet does have its own retail site, and a sizable Amazon presence, for its other products. You could always wait for the product to launch and hit more traditional retail channels (at a slightly inflated price) further down the line.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/elecjet-apollo-ultra-power-bank-indiegogo-preview-120021315.html?src=rss", + "creator": "Aaron Souppouris", + "pubDate": "Wed, 24 Nov 2021 13:45:23 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Beats Studio Buds fall to a new low of $100 at Amazon", + "description": "

    If you're looking for budget wireless noise-cancelling earbuds in the Apple family, don't forget about the Beats Studio Buds. They're already a good deal at $150, but now you can pick them up during Black Friday at Amazon for just $100, the lowest price we've seen yet. 

    Buy Beats Studio Buds at Amazon - $100

    The Studio Buds scored a solid 84 score in our Engadget review and also made our list of best wireless earbuds for 2021. The small, comfortable design and IPX4 water resistance makes them great for workouts and, more importantly, they deliver good sound quality with Beats' famous punchy base. Active noise cancellation is solid as well, and they can adjust the volume based on your environment via the active gain feature. 

    Since the Studio Buds are Apple products, they use the company's H1 chip. That means they support Apple's Spatial Audio feature and let you easily switch between Apple devices — just as you can with a pair of AirPods. However, they're also device agnostic, so you can use the Fast Pair option to quickly set them up with your Android device. They also work with Find My Device on Android, so you can see their last known location. 

    The main drawbacks are a lack of wireless charging and onboard controls, but most budget wireless buds lack those features. With the deal right now, you won't find many rivals that can match its features at that $100 price point. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    If you're looking for budget wireless noise-cancelling earbuds in the Apple family, don't forget about the Beats Studio Buds. They're already a good deal at $150, but now you can pick them up during Black Friday at Amazon for just $100, the lowest price we've seen yet. 

    Buy Beats Studio Buds at Amazon - $100

    The Studio Buds scored a solid 84 score in our Engadget review and also made our list of best wireless earbuds for 2021. The small, comfortable design and IPX4 water resistance makes them great for workouts and, more importantly, they deliver good sound quality with Beats' famous punchy base. Active noise cancellation is solid as well, and they can adjust the volume based on your environment via the active gain feature. 

    Since the Studio Buds are Apple products, they use the company's H1 chip. That means they support Apple's Spatial Audio feature and let you easily switch between Apple devices — just as you can with a pair of AirPods. However, they're also device agnostic, so you can use the Fast Pair option to quickly set them up with your Android device. They also work with Find My Device on Android, so you can see their last known location. 

    The main drawbacks are a lack of wireless charging and onboard controls, but most budget wireless buds lack those features. With the deal right now, you won't find many rivals that can match its features at that $100 price point. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/beats-studio-buds-fall-by-33-percent-to-new-amazon-low-131154349.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Wed, 24 Nov 2021 13:11:54 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Morning After: Russia wants local offices from big tech companies like Google and Apple", + "description": "

    We'll get into Russia's demands for big tech below, but first — ahead of a four-day weekend for some — let's talk about streaming shows. 

    You’ve probably noticed by now that we’ve got a reboot problem. Nothing epitomizes that better than the live-action series remake for beloved anime Cowboy Bebop. Senior Editor Devindra Hardawar puts it into words well: “Netflix's remix is mainly in love with Cowboy Bebop. It wants to remind us of the anime.” But in the effort to show its affection, it all rings a little hollow by comparison.

    \"The
    GEOFFREY SHORT/NETFLIX

    Devindra even gets a little brutal, criticizing the times when the show “looks worse than a cheap Doctor Who episode.” I know exactly what he means.

    Cowboy Bebop is now available to stream on Netflix.

    — Mat Smith

    Android 12 review

    Living in a Material (You) world

    \"The
    Engadget

    Reviews Editor Cherlynn Low untangles the myriad versions of Android to offer some insight into what you might be getting with Google’s latest mobile OS, Android 12. The standout change is definitely a new design that can tease color palettes from your favorite images, but like its rival, iOS, there are bigger shifts in privacy and how your data is being used.

    Continue reading.

    Spotify made a hub for Netflix soundtracks, playlists and podcasts

    Listen to the 'Squid Game' theme, along with podcasts like 'Netflix is a Daily Joke.'

    \"The
    Spotify

    After doing the same for Disney, Spotify has launched a Netflix hub, bringing all of the streaming service's soundtracks, playlists and podcasts into one place. While many of Netflix's soundtracks were already on Spotify, the new feature puts all content related to the service in one place.

    That includes playlists and soundtracks from series and films like La Casa de Papel, Narcos: Mexico, Outer Banks, Squid Game and, ahem, Cowboy Bebop.

    Continue reading.

    Epic Games buys the studio behind ‘Guitar Hero’ to create 'musical journeys' in 'Fortnite'

    It's another metaverse play.

    Epic Games has acquired Harmonix, the studio behind titles like Guitar Hero, Rock Band, Dance Central and, more recently, Fuser. Epic’s vision for Harmonix involves the metaverse. In the immediate future, the two plan to create “musical journeys and gameplay for Fortnite.”

    No word yet on how many millions of dollars the acquisition cost.

    Continue reading.

    Apple delays its digital ID cards until 2022

    The feature was previously scheduled to arrive before the end of 2021.

    In an update to the official iOS 15 website that was spotted by MacRumors, Apple says that functionality will now arrive sometime in early 2022. Apple first announced the feature at WWDC 2021, pitching it as a tool to allow you to add your driver’s license or state ID card to Apple Wallet, just like you would a credit or debit card. Among the first locations to support the feature will be select Transportation Security Administration (TSA) checkpoints at some US airports.

    Continue reading.

    Russia demands large tech companies set up local offices by 2022

    The government wants more control over Apple, Meta, TikTok and others.

    Russia’s telecom regulator Roskomnadzor has called on 13 foreign and mostly American companies to launch official Russian presences by 2022 so they can comply with a law that took effect July 1st. The list includes familiar tech names, like Apple, Google, Meta (Facebook), Telegram, TikTok and Twitter.

    The law demands local offices for "internet companies" with over 500,000 daily users. Some of the companies already have offices, though, and it's unclear just what constitutes an official presence. Those deemed violating the law could face complete bans or limits on their ads, data gathering and money transfers.

    Continue reading.

     

     

    The biggest news stories you might have missed

    Activision Blizzard's latest anti-harassment effort is a 'responsibility committee'

    The Polestar 5 is a production version of the Precept concept EV

    Black Friday 2021: The best deals on subscription services we could find

    Black Friday 2021: The Apple Watch Series 7 hits new low of $380 ahead of Black Friday

    The Smithsonian Air and Space Museum will close for at least six months in 2022

    T-Mobile will pay $19.5 million settlement for 12-hour 911 outage

    ", + "content": "

    We'll get into Russia's demands for big tech below, but first — ahead of a four-day weekend for some — let's talk about streaming shows. 

    You’ve probably noticed by now that we’ve got a reboot problem. Nothing epitomizes that better than the live-action series remake for beloved anime Cowboy Bebop. Senior Editor Devindra Hardawar puts it into words well: “Netflix's remix is mainly in love with Cowboy Bebop. It wants to remind us of the anime.” But in the effort to show its affection, it all rings a little hollow by comparison.

    \"The
    GEOFFREY SHORT/NETFLIX

    Devindra even gets a little brutal, criticizing the times when the show “looks worse than a cheap Doctor Who episode.” I know exactly what he means.

    Cowboy Bebop is now available to stream on Netflix.

    — Mat Smith

    Android 12 review

    Living in a Material (You) world

    \"The
    Engadget

    Reviews Editor Cherlynn Low untangles the myriad versions of Android to offer some insight into what you might be getting with Google’s latest mobile OS, Android 12. The standout change is definitely a new design that can tease color palettes from your favorite images, but like its rival, iOS, there are bigger shifts in privacy and how your data is being used.

    Continue reading.

    Spotify made a hub for Netflix soundtracks, playlists and podcasts

    Listen to the 'Squid Game' theme, along with podcasts like 'Netflix is a Daily Joke.'

    \"The
    Spotify

    After doing the same for Disney, Spotify has launched a Netflix hub, bringing all of the streaming service's soundtracks, playlists and podcasts into one place. While many of Netflix's soundtracks were already on Spotify, the new feature puts all content related to the service in one place.

    That includes playlists and soundtracks from series and films like La Casa de Papel, Narcos: Mexico, Outer Banks, Squid Game and, ahem, Cowboy Bebop.

    Continue reading.

    Epic Games buys the studio behind ‘Guitar Hero’ to create 'musical journeys' in 'Fortnite'

    It's another metaverse play.

    Epic Games has acquired Harmonix, the studio behind titles like Guitar Hero, Rock Band, Dance Central and, more recently, Fuser. Epic’s vision for Harmonix involves the metaverse. In the immediate future, the two plan to create “musical journeys and gameplay for Fortnite.”

    No word yet on how many millions of dollars the acquisition cost.

    Continue reading.

    Apple delays its digital ID cards until 2022

    The feature was previously scheduled to arrive before the end of 2021.

    In an update to the official iOS 15 website that was spotted by MacRumors, Apple says that functionality will now arrive sometime in early 2022. Apple first announced the feature at WWDC 2021, pitching it as a tool to allow you to add your driver’s license or state ID card to Apple Wallet, just like you would a credit or debit card. Among the first locations to support the feature will be select Transportation Security Administration (TSA) checkpoints at some US airports.

    Continue reading.

    Russia demands large tech companies set up local offices by 2022

    The government wants more control over Apple, Meta, TikTok and others.

    Russia’s telecom regulator Roskomnadzor has called on 13 foreign and mostly American companies to launch official Russian presences by 2022 so they can comply with a law that took effect July 1st. The list includes familiar tech names, like Apple, Google, Meta (Facebook), Telegram, TikTok and Twitter.

    The law demands local offices for "internet companies" with over 500,000 daily users. Some of the companies already have offices, though, and it's unclear just what constitutes an official presence. Those deemed violating the law could face complete bans or limits on their ads, data gathering and money transfers.

    Continue reading.

     

     

    The biggest news stories you might have missed

    Activision Blizzard's latest anti-harassment effort is a 'responsibility committee'

    The Polestar 5 is a production version of the Precept concept EV

    Black Friday 2021: The best deals on subscription services we could find

    Black Friday 2021: The Apple Watch Series 7 hits new low of $380 ahead of Black Friday

    The Smithsonian Air and Space Museum will close for at least six months in 2022

    T-Mobile will pay $19.5 million settlement for 12-hour 911 outage

    ", + "category": "Media", + "link": "https://www.engadget.com/the-morning-after-russia-wants-local-offices-from-big-tech-companies-like-google-and-apple-121512039.html?src=rss", + "creator": "Mat Smith", + "pubDate": "Wed, 24 Nov 2021 12:15:12 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samsung's Galaxy Watch 4 hits an all-time low of $180", + "description": "

    Samsung's Galaxy Watch 4 went on sale for $200 earlier this month, but it has become even more affordable ahead of Black Friday. The smartwatch is now listed for $180 on both Amazon and Walmart, which is the lowest price we've seen for the device on those websites. That's $70 less than its original $250 retail price. While only the black 40mm Bluetooth-capable variant is being sold for $180, the other colors, 44mm versions and LTE-capable watches are also on sale for $50 less.

    Buy Samsung Galaxy Watch 4 at Amazon - $180Buy Samsung Galaxy Watch 4 at Walmart - $180

    We gave the Samsung Galaxy Watch 4 a score of 85 in our review. It's the first generation of Galaxy Watch to run Wear OS, giving it the capability to download apps straight from the Play Store. There's now even a section on the store showing all your current apps with smartwatch counterparts that makes the installation process even more painless. The device has gesture controls, as well, so you can simply flick your wrist or lift your arm to answer or decline calls. 

    We also praised the watch for having comprehensive health tracking capabilities. Samsung gave it a new 3-in-1 biometric sensor to enable body mass scans using bioelectrical impedance analysis. In addition, it has new sleep tracking features (like snore detection), faster heart rate monitoring and updated calorie count algorithms. Another upgraded element that deserves a mention is its sharper screen.

    The only big difference between the Watch 4 and the Watch 4 Classic is the latter's spinning bezel and stainless steel case. If you like the latter's looks better, however, you can also get the Samsung Galaxy Watch 4 Classic for $300 on Amazon. That's an all-time low for the device and is $50 less than its original price.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Samsung's Galaxy Watch 4 went on sale for $200 earlier this month, but it has become even more affordable ahead of Black Friday. The smartwatch is now listed for $180 on both Amazon and Walmart, which is the lowest price we've seen for the device on those websites. That's $70 less than its original $250 retail price. While only the black 40mm Bluetooth-capable variant is being sold for $180, the other colors, 44mm versions and LTE-capable watches are also on sale for $50 less.

    Buy Samsung Galaxy Watch 4 at Amazon - $180Buy Samsung Galaxy Watch 4 at Walmart - $180

    We gave the Samsung Galaxy Watch 4 a score of 85 in our review. It's the first generation of Galaxy Watch to run Wear OS, giving it the capability to download apps straight from the Play Store. There's now even a section on the store showing all your current apps with smartwatch counterparts that makes the installation process even more painless. The device has gesture controls, as well, so you can simply flick your wrist or lift your arm to answer or decline calls. 

    We also praised the watch for having comprehensive health tracking capabilities. Samsung gave it a new 3-in-1 biometric sensor to enable body mass scans using bioelectrical impedance analysis. In addition, it has new sleep tracking features (like snore detection), faster heart rate monitoring and updated calorie count algorithms. Another upgraded element that deserves a mention is its sharper screen.

    The only big difference between the Watch 4 and the Watch 4 Classic is the latter's spinning bezel and stainless steel case. If you like the latter's looks better, however, you can also get the Samsung Galaxy Watch 4 Classic for $300 on Amazon. That's an all-time low for the device and is $50 less than its original price.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/samsung-galaxy-watch-4-180-amazon-best-buy-sale-114018679.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Wed, 24 Nov 2021 11:40:18 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon is reportedly interested in developing a Mass Effect TV series", + "description": "

    Amazon Studios is "nearing a deal" to develop a series based on Electronic Arts and BioWare's Mass Effect franchise, according to Deadline. No particulars have been released, but Amazon Studios head Jennifer Salke told Deadline that it's "continuing to invest in fantasy genre of all kinds, we have a genre-focused team on the ground in Studios who work tirelessly with our creative partners on those slates, and you can look forward to more."

    The success of the fantasy series Wheel of Time shows why Amazon is going in that direction. Salke revealed that it was "one of the Top 5 series launches of all time for Prime Video," adding that it saw "tens of millions of streams" and high completion rates, to boot. 

    Mass Effect rumors have cropped up of late, with EA recently stating that it's "not a matter of if, but when" a TV series based on the game will be made. Witcher star Henry Cavill also hinted at a Mass Effect series in a cryptic Instagram post with (easily deblurred) text, as The Verge noted. 

    Mass Effect Legendary Edition arrived earlier this year with updated gameplay and graphics, to generally good reviews. The series first arrived in 2007 with the original Mass Effect, a third-party shooter and role playing game that pits Commander Shepherd and the Systems Alliance against the Reapers, an ancient machine race invading the Milky Way. That was followed by two sequels (2010 and 2012), along with a fourth game, Mass Effect: Andromeda (2017). BioWare and EA are currently developing a fifth, all-new installment.  

    ", + "content": "

    Amazon Studios is "nearing a deal" to develop a series based on Electronic Arts and BioWare's Mass Effect franchise, according to Deadline. No particulars have been released, but Amazon Studios head Jennifer Salke told Deadline that it's "continuing to invest in fantasy genre of all kinds, we have a genre-focused team on the ground in Studios who work tirelessly with our creative partners on those slates, and you can look forward to more."

    The success of the fantasy series Wheel of Time shows why Amazon is going in that direction. Salke revealed that it was "one of the Top 5 series launches of all time for Prime Video," adding that it saw "tens of millions of streams" and high completion rates, to boot. 

    Mass Effect rumors have cropped up of late, with EA recently stating that it's "not a matter of if, but when" a TV series based on the game will be made. Witcher star Henry Cavill also hinted at a Mass Effect series in a cryptic Instagram post with (easily deblurred) text, as The Verge noted. 

    Mass Effect Legendary Edition arrived earlier this year with updated gameplay and graphics, to generally good reviews. The series first arrived in 2007 with the original Mass Effect, a third-party shooter and role playing game that pits Commander Shepherd and the Systems Alliance against the Reapers, an ancient machine race invading the Milky Way. That was followed by two sequels (2010 and 2012), along with a fourth game, Mass Effect: Andromeda (2017). BioWare and EA are currently developing a fifth, all-new installment.  

    ", + "category": "Celebrities", + "link": "https://www.engadget.com/amazon-studios-is-close-to-a-deal-to-develop-a-mass-effect-series-110558040.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Wed, 24 Nov 2021 11:05:58 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "GMC will begin Hummer EV deliveries in December", + "description": "

    The first electric Hummers will be making their way to their new owners this holiday season. According to Autoblog, GMC boss Duncan Aldred has announced that deliveries of the Hummer Edition 1 — the all-electric truck variant that'll set buyers back over $112,000 — begin in December. The conference has also revealed that Edition 1 has an EPA range of 329 miles, a bit lower than the 350-mile range the automaker was originally expecting.

    GMC's four-ton electric truck has 1,000 horsepower and 11,500 ft/lb of torque generated by its three motors, giving it the capability to get from zero to 60 miles-per-hour within 3 seconds. The truck can also tow up 7,500 pounds and can carry up to 1,300 pounds. It was built on the Ultium battery pack, the platform GM developed to electrify dozens of models across its brands in the coming years. 

    When it starts shipping out next month, the Edition 1 Hummer EV will become of the first electric trucks in the market along with Rivian's R1T. Tesla is also working on the electric Cybertruck, but the company delayed its release to 2022 in August. Autoblog says more than 80 percent of the reservations for the Hummer EV is for the Edition 1, but other versions of the electrified vehicle are still arriving in 2023. Some of those EVs will cost less and have longer ranges. GMC will also start deliveries for the SUV version of the Hummer EV in 2023.

    ", + "content": "

    The first electric Hummers will be making their way to their new owners this holiday season. According to Autoblog, GMC boss Duncan Aldred has announced that deliveries of the Hummer Edition 1 — the all-electric truck variant that'll set buyers back over $112,000 — begin in December. The conference has also revealed that Edition 1 has an EPA range of 329 miles, a bit lower than the 350-mile range the automaker was originally expecting.

    GMC's four-ton electric truck has 1,000 horsepower and 11,500 ft/lb of torque generated by its three motors, giving it the capability to get from zero to 60 miles-per-hour within 3 seconds. The truck can also tow up 7,500 pounds and can carry up to 1,300 pounds. It was built on the Ultium battery pack, the platform GM developed to electrify dozens of models across its brands in the coming years. 

    When it starts shipping out next month, the Edition 1 Hummer EV will become of the first electric trucks in the market along with Rivian's R1T. Tesla is also working on the electric Cybertruck, but the company delayed its release to 2022 in August. Autoblog says more than 80 percent of the reservations for the Hummer EV is for the Edition 1, but other versions of the electrified vehicle are still arriving in 2023. Some of those EVs will cost less and have longer ranges. GMC will also start deliveries for the SUV version of the Hummer EV in 2023.

    ", + "category": "Autos", + "link": "https://www.engadget.com/gmc-hummer-ev-deliveries-december-101042969.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Wed, 24 Nov 2021 10:10:42 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tesla requires Full Self Driving testers to allow video collection in case of a crash", + "description": "

    With Tesla's latest FSD ("Full Self-Driving") release, it's asking drivers to consent to allowing it to collect video taken by a car's exterior and interior cameras in case of an accident or "serious safety risk." That will mark the first time Tesla will attach footage to a specific vehicle and driver, according to an Electrek report. 

    Tesla has gathered video footage as part of FSD before, but it was only used to train and improve its AI self-driving systems. According to the new agreement, however, Tesla will now be able to associate video to specific vehicles. "By enabling FSD Beta, I consent to Tesla’s collection of VIN-associated image data from the vehicle’s external cameras and Cabin Camera in the occurrence of a serious safety risk or a safety event like a collision," the agreement reads. 

    By enabling FSD Beta, I consent to Tesla’s collection of VIN-associated image data from the vehicle’s external cameras and Cabin Camera in the occurrence of a serious safety risk or a safety event like a collision.

    As Electrek notes, the language could indicate that Tesla wants to ensure it has evidence in case its FSD system is blamed for an accident. It could possibly also be used to detect and fix serious issues more quickly.

    FSD 10.3 was released more widely than previous betas, but it was quickly pulled back due to issues like unwarranted Forward Collision Warnings, unexpected autobraking and more. At the time, CEO Elon Musk tweeted that such issues are "to be expected with beta software," adding that "it is impossible to test all hardware configs in all conditions with internal QA, hence public tests."

    However, other drivers on public roads are unwitting beta testers, too. The National Highway Traffic Safety Administration is currently investigating a driver's complaint that FSD led to a November 3rd collision in Brea, California. The owner alleged that it caused his Model Y to enter the wrong lane and hit another car, causing considerable damage to both. 

    Tesla is releasing the new beta to even more users with Driver Safety Scores of 98 and up — previously, beta releases were limited to drivers with perfect 100 scores. Tesla charges drivers $199 per month for the feature or $10,000 in one shot, but has failed meet promised deadlines for autonomous driving. Currently, the FSD system is considered to be a Level 2 system — far from the Level 4 required to really be "full self-driving." 

    ", + "content": "

    With Tesla's latest FSD ("Full Self-Driving") release, it's asking drivers to consent to allowing it to collect video taken by a car's exterior and interior cameras in case of an accident or "serious safety risk." That will mark the first time Tesla will attach footage to a specific vehicle and driver, according to an Electrek report. 

    Tesla has gathered video footage as part of FSD before, but it was only used to train and improve its AI self-driving systems. According to the new agreement, however, Tesla will now be able to associate video to specific vehicles. "By enabling FSD Beta, I consent to Tesla’s collection of VIN-associated image data from the vehicle’s external cameras and Cabin Camera in the occurrence of a serious safety risk or a safety event like a collision," the agreement reads. 

    By enabling FSD Beta, I consent to Tesla’s collection of VIN-associated image data from the vehicle’s external cameras and Cabin Camera in the occurrence of a serious safety risk or a safety event like a collision.

    As Electrek notes, the language could indicate that Tesla wants to ensure it has evidence in case its FSD system is blamed for an accident. It could possibly also be used to detect and fix serious issues more quickly.

    FSD 10.3 was released more widely than previous betas, but it was quickly pulled back due to issues like unwarranted Forward Collision Warnings, unexpected autobraking and more. At the time, CEO Elon Musk tweeted that such issues are "to be expected with beta software," adding that "it is impossible to test all hardware configs in all conditions with internal QA, hence public tests."

    However, other drivers on public roads are unwitting beta testers, too. The National Highway Traffic Safety Administration is currently investigating a driver's complaint that FSD led to a November 3rd collision in Brea, California. The owner alleged that it caused his Model Y to enter the wrong lane and hit another car, causing considerable damage to both. 

    Tesla is releasing the new beta to even more users with Driver Safety Scores of 98 and up — previously, beta releases were limited to drivers with perfect 100 scores. Tesla charges drivers $199 per month for the feature or $10,000 in one shot, but has failed meet promised deadlines for autonomous driving. Currently, the FSD system is considered to be a Level 2 system — far from the Level 4 required to really be "full self-driving." 

    ", + "category": "Automotive Industry", + "link": "https://www.engadget.com/tesla-fsd-testers-must-consent-to-video-collection-in-case-of-a-crash-or-safety-issue-092112078.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Wed, 24 Nov 2021 09:21:12 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samsung will build a $17 billion semiconductor factory in Texas", + "description": "

    Samsung has committed to build a chip-making factory in Texas, just as the US starts to push for the expansion in semiconductor production within the country. The Korean tech giant will be investing $17 billion into the new facility, which will manufacture high-end and advanced chips for smartphones, 5G and artificial intelligence, among other applications. According to The Wall Street Journal, construction for the factory is scheduled to begin next year, while production within the facility is expected to start in the second half of 2024. 

    The US government has been taking steps towards boosting semiconductor production in the US, following the global chip shortage caused by shuttered plants and the high demand for PCs and other devices during the pandemic. This issue continues to have a huge impact across industries — just this year, automakers like GM and Ford had to suspend or cut production in their US plants due to supply constraints. 

    Samsung scouted locations in Arizona, New York and Florida for the new project and also considered Austin, where it has an existing factory. It ultimately chose Taylor, Texas for this new facility due to the generous tax breaks and incentives it offered, as well as the city's capability to do rolling blackouts and providing electricity to certain facilities in the case of power outage. 

    Kim Ki-nam, chief executive of the Samsung Electronics Device Solutions Division, said in a statement:

    "As we add a new facility in Taylor, Samsung is laying the groundwork for another important chapter in our future. With greater manufacturing capacity, we will able to better serve the needs of our customers and contribute to the stability of the global semiconductor supply chain. We are also proud to be bringing more jobs and supporting the training and talent development for local communities, as Samsung celebrates 25 years of semiconductor manufacturing in the US."

    ", + "content": "

    Samsung has committed to build a chip-making factory in Texas, just as the US starts to push for the expansion in semiconductor production within the country. The Korean tech giant will be investing $17 billion into the new facility, which will manufacture high-end and advanced chips for smartphones, 5G and artificial intelligence, among other applications. According to The Wall Street Journal, construction for the factory is scheduled to begin next year, while production within the facility is expected to start in the second half of 2024. 

    The US government has been taking steps towards boosting semiconductor production in the US, following the global chip shortage caused by shuttered plants and the high demand for PCs and other devices during the pandemic. This issue continues to have a huge impact across industries — just this year, automakers like GM and Ford had to suspend or cut production in their US plants due to supply constraints. 

    Samsung scouted locations in Arizona, New York and Florida for the new project and also considered Austin, where it has an existing factory. It ultimately chose Taylor, Texas for this new facility due to the generous tax breaks and incentives it offered, as well as the city's capability to do rolling blackouts and providing electricity to certain facilities in the case of power outage. 

    Kim Ki-nam, chief executive of the Samsung Electronics Device Solutions Division, said in a statement:

    "As we add a new facility in Taylor, Samsung is laying the groundwork for another important chapter in our future. With greater manufacturing capacity, we will able to better serve the needs of our customers and contribute to the stability of the global semiconductor supply chain. We are also proud to be bringing more jobs and supporting the training and talent development for local communities, as Samsung celebrates 25 years of semiconductor manufacturing in the US."

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/samsung-17-billion-chip-factory-texas-054150875.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Wed, 24 Nov 2021 05:41:50 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon delays Comixology integration to early 2022", + "description": "

    Amazon has delayed its plan to integrate Comixology purchases and the platform itself into its broader ecosystem. In a FAQ the company posted this week, it said the updated Comixology app, which is slated to bring a host of changes to how the service works, will arrive in early 2022, instead of 2021 as previously announced.

    “We wanted to take just a little extra time to incorporate feedback we received from our community,” the company says in the document. “ With this goal in mind, we decided to hold launch until early next year.”

    According to Amazon, the new Comixology app includes improvements to filtering and sorting. It also promises faster and more reliable downloads. The catch is that you’ll need an Amazon account to use the app at all. What’s more, once the company rolls out the updated software, the current Comixology app won’t work following a grace period.

    However, the biggest change the app was set to introduce is already live as of this week. You no longer need the Comixology app to read purchases you make through the platform. Instead, they're also available through the Kindle app. All that points to a future where Comixology may not exist sometime in the next few years.

    ", + "content": "

    Amazon has delayed its plan to integrate Comixology purchases and the platform itself into its broader ecosystem. In a FAQ the company posted this week, it said the updated Comixology app, which is slated to bring a host of changes to how the service works, will arrive in early 2022, instead of 2021 as previously announced.

    “We wanted to take just a little extra time to incorporate feedback we received from our community,” the company says in the document. “ With this goal in mind, we decided to hold launch until early next year.”

    According to Amazon, the new Comixology app includes improvements to filtering and sorting. It also promises faster and more reliable downloads. The catch is that you’ll need an Amazon account to use the app at all. What’s more, once the company rolls out the updated software, the current Comixology app won’t work following a grace period.

    However, the biggest change the app was set to introduce is already live as of this week. You no longer need the Comixology app to read purchases you make through the platform. Instead, they're also available through the Kindle app. All that points to a future where Comixology may not exist sometime in the next few years.

    ", + "category": "Software", + "link": "https://www.engadget.com/comixology-amazon-integration-2022-000312522.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Wed, 24 Nov 2021 00:03:12 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "T-Mobile will pay $19.5 million settlement for 12-hour 911 outage", + "description": "

    T-Mobile is once again on the hook for a 911 outage. The carrier has agreed to pay $19.5 million to settle an FCC investigation of a 12-hour service outage in June 2020 that led to 911 call failures. While the FCC didn't know exactly how many emergency calls were affected due to some overlapping issues, it recorded tens of thousands of issues.

    Over 23,000 calls suffered a "complete" failure, the FCC said, while a similar amount didn't include location data. Roughly another 20,000 didn't include callback info. The outage began when a leased fiber link in the T-Mobile network went awry, and a single-location routing flaw magnified the crisis. T-Mobile also had problems remotely accessing the fiber link.

    This isn't the first time T-Mobile has dealt with a 911 outage. It settled to the tune of $17.5 million over failures in 2014.

    We've asked T-Mobile for comment. The FCC said the carrier responded to outage-related questions in a "timely" fashion, however, so this wasn't a hotly disputed issue. Not that the company was likely to fight a settlement that won't significantly impact its finances. And like it or not, this won't do much to help people who couldn't get full help in a moment of crisis.

    ", + "content": "

    T-Mobile is once again on the hook for a 911 outage. The carrier has agreed to pay $19.5 million to settle an FCC investigation of a 12-hour service outage in June 2020 that led to 911 call failures. While the FCC didn't know exactly how many emergency calls were affected due to some overlapping issues, it recorded tens of thousands of issues.

    Over 23,000 calls suffered a "complete" failure, the FCC said, while a similar amount didn't include location data. Roughly another 20,000 didn't include callback info. The outage began when a leased fiber link in the T-Mobile network went awry, and a single-location routing flaw magnified the crisis. T-Mobile also had problems remotely accessing the fiber link.

    This isn't the first time T-Mobile has dealt with a 911 outage. It settled to the tune of $17.5 million over failures in 2014.

    We've asked T-Mobile for comment. The FCC said the carrier responded to outage-related questions in a "timely" fashion, however, so this wasn't a hotly disputed issue. Not that the company was likely to fight a settlement that won't significantly impact its finances. And like it or not, this won't do much to help people who couldn't get full help in a moment of crisis.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/t-mobile-911-outage-fcc-settlement-230802122.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Tue, 23 Nov 2021 23:08:02 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Watch NASA’s asteroid-bound DART launch at 1:20AM Wednesday", + "description": "

    In mere hours, NASA will attempt to launch one of its most interesting missions in recent memory. At approximately 1:21AM ET, a Falcon 9 rocket from SpaceX is scheduled to lift off from Vandenberg Space Force Base in California carrying the Double Asteroid Redirection Test (DART) craft. In about a year, NASA will attempt to intentionally crash DART into an incoming asteroid to see if it can alter its course.

    The test will mark the first time humans have attempted to change the path of an asteroid. The binary system NASA will target as part of the test doesn't pose a threat to Earth, but what the agency learns from the mission could be vital in the future. NASA has identified at least 23 objects that could potentially collide with Earth over the next 100 years. And developing a feasible defense strategy is key to protecting humanity from that threat.

    You can watch the entire launch unfold on NASA’s Live YouTube channel. Live coverage will start at 12:30AM ET on November 24th.

    ", + "content": "

    In mere hours, NASA will attempt to launch one of its most interesting missions in recent memory. At approximately 1:21AM ET, a Falcon 9 rocket from SpaceX is scheduled to lift off from Vandenberg Space Force Base in California carrying the Double Asteroid Redirection Test (DART) craft. In about a year, NASA will attempt to intentionally crash DART into an incoming asteroid to see if it can alter its course.

    The test will mark the first time humans have attempted to change the path of an asteroid. The binary system NASA will target as part of the test doesn't pose a threat to Earth, but what the agency learns from the mission could be vital in the future. NASA has identified at least 23 objects that could potentially collide with Earth over the next 100 years. And developing a feasible defense strategy is key to protecting humanity from that threat.

    You can watch the entire launch unfold on NASA’s Live YouTube channel. Live coverage will start at 12:30AM ET on November 24th.

    ", + "category": "Science", + "link": "https://www.engadget.com/how-to-watch-nasa-dart-launch-221513621.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Tue, 23 Nov 2021 22:15:13 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Russia demands large tech companies set up local offices by 2022", + "description": "

    Russia is getting serious with demands that foreign tech companies set up shop within its borders. Reuterssays the country's telecom regulator Roskomnadzor has called on 13 foreign and mostly American companies to launch official Russian presences by 2022 so they can comply with a law that took effect July 1st. The list includes familiar tech names like Apple, Google, Meta (Facebook), Telegram, TikTok and Twitter.

    The law demands local offices for "internet companies" with over 500,000 daily users. Some of the companies already have offices, though, and it's unclear just what constitutes an official presence. Those deemed violating the law could be subject to either complete bans or limits on their ads, data gathering and money transfers.

    As you might have guessed, the concern is that Russia might use the law to wield more control over those companies and their content. Russia has clashed with Apple multiple times, for instance, including a fine for allegedly abusing App Store dominance — this law might give officials more leverage. The move might also help Russia pressure companies into censoring content the government deems objectionable, such as social media posts backing the political opposition to Putin's regime.

    The announcement makes a tricky situation that much more difficult. Russia is a significant market some companies can't always afford to lose but honoring the request could also mean enabling censorship and other rights abuses. Companies may soon have to make decisions that are painful regardless of the outcome.

    ", + "content": "

    Russia is getting serious with demands that foreign tech companies set up shop within its borders. Reuterssays the country's telecom regulator Roskomnadzor has called on 13 foreign and mostly American companies to launch official Russian presences by 2022 so they can comply with a law that took effect July 1st. The list includes familiar tech names like Apple, Google, Meta (Facebook), Telegram, TikTok and Twitter.

    The law demands local offices for "internet companies" with over 500,000 daily users. Some of the companies already have offices, though, and it's unclear just what constitutes an official presence. Those deemed violating the law could be subject to either complete bans or limits on their ads, data gathering and money transfers.

    As you might have guessed, the concern is that Russia might use the law to wield more control over those companies and their content. Russia has clashed with Apple multiple times, for instance, including a fine for allegedly abusing App Store dominance — this law might give officials more leverage. The move might also help Russia pressure companies into censoring content the government deems objectionable, such as social media posts backing the political opposition to Putin's regime.

    The announcement makes a tricky situation that much more difficult. Russia is a significant market some companies can't always afford to lose but honoring the request could also mean enabling censorship and other rights abuses. Companies may soon have to make decisions that are painful regardless of the outcome.

    ", + "category": "Politics & Government", + "link": "https://www.engadget.com/russia-tells-tech-companies-to-set-up-in-country-211922268.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Tue, 23 Nov 2021 21:19:22 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Reddit will shut down Dubsmash on February 22nd", + "description": "

    Reddit will shut down Dubsmash on February 22nd, 2022. The announcement comes less than a year after Reddit acquired the TikTok-like video platform for an undisclosed sum in December 2020. Following the 22nd, Dubsmash won’t be available to download through the App Store or Google Play, nor will the app work after that date.

    When Reddit first announced the acquisition, it said Dubsmash would retain its own platform and brand. “Combining forces has been a perfect match. Reddit is where passionate communities come together for timely, interactive and authentic exchanges about topics that matter to them, and video is increasingly core to how people want to connect,” the company said in a blog post.

    As part of today’s announcement, Reddit is also rolling out new video features that come courtesy of the Dubsmash team. The built-in camera now includes options to change recording speeds and set a timer. Additionally, it’s now possible to upload clips in landscape, portrait mode and fill, as well as adjust and trim multiple clips at once. A new editing screen allows users to add stickers, doodles, voice-overs and filters to their clips.

    The impending shutdown of Dubsmash is likely to affect creators of color most acutely. Where TikTok’s best-known stars are white, Dubsmash was particularly popular among Black and Latinx users. At the end of 2020, Reddit noted 25 percent of all Black teens in the US were on the platform. Those users now face a tough decision: they either support a platform that has been seen as a safe harbor for hate speech and misinformation or look elsewhere to find a supportive community.

    ", + "content": "

    Reddit will shut down Dubsmash on February 22nd, 2022. The announcement comes less than a year after Reddit acquired the TikTok-like video platform for an undisclosed sum in December 2020. Following the 22nd, Dubsmash won’t be available to download through the App Store or Google Play, nor will the app work after that date.

    When Reddit first announced the acquisition, it said Dubsmash would retain its own platform and brand. “Combining forces has been a perfect match. Reddit is where passionate communities come together for timely, interactive and authentic exchanges about topics that matter to them, and video is increasingly core to how people want to connect,” the company said in a blog post.

    As part of today’s announcement, Reddit is also rolling out new video features that come courtesy of the Dubsmash team. The built-in camera now includes options to change recording speeds and set a timer. Additionally, it’s now possible to upload clips in landscape, portrait mode and fill, as well as adjust and trim multiple clips at once. A new editing screen allows users to add stickers, doodles, voice-overs and filters to their clips.

    The impending shutdown of Dubsmash is likely to affect creators of color most acutely. Where TikTok’s best-known stars are white, Dubsmash was particularly popular among Black and Latinx users. At the end of 2020, Reddit noted 25 percent of all Black teens in the US were on the platform. Those users now face a tough decision: they either support a platform that has been seen as a safe harbor for hate speech and misinformation or look elsewhere to find a supportive community.

    ", + "category": "Software", + "link": "https://www.engadget.com/dubsmash-shutdown-february-22nd-202813243.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Tue, 23 Nov 2021 20:28:13 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple delays release of digital ID cards to 2022", + "description": "

    Apple has delayed the release of a feature that will eventually allow you to store your ID in the company’s Wallet app. In an update to the official iOS 15 website that was spotted by MacRumors, Apple says that functionality will now arrive sometime in early 2022. The company previously planned to launch in late 2021.

    Apple first announced the feature at WWDC 2021. At the time, the company said the tool would allow you to add your driver’s license or state ID card to Apple Wallet just like you would a credit or debit card. Among the first locations that will support the feature will be select Transportation Security Administration (TSA) checkpoints at some US airports.

    At those locations, you’ll have the option to use your iPhone or Apple Watch to present your ID to the TSA. You’ll do so by tapping your device on an identity reader, and you won’t need to hand over your iPhone or Apple Watch to a TSA employee.

    In September, Apple announced eight states would support the feature at launch, starting with Arizona and Georgia, and Connecticut, Iowa, Kentucky, Maryland, Oklahoma and Utah to follow. Beyond TSA checkpoints, Apple said retailers and venues would add support later.

    Outside of early 2022, Apple has not shared a specific release date for the feature. What’s clear is that it won’t arrive with iOS 15.2. That update is currently in beta testing and does not include support for storing digital IDs.

    ", + "content": "

    Apple has delayed the release of a feature that will eventually allow you to store your ID in the company’s Wallet app. In an update to the official iOS 15 website that was spotted by MacRumors, Apple says that functionality will now arrive sometime in early 2022. The company previously planned to launch in late 2021.

    Apple first announced the feature at WWDC 2021. At the time, the company said the tool would allow you to add your driver’s license or state ID card to Apple Wallet just like you would a credit or debit card. Among the first locations that will support the feature will be select Transportation Security Administration (TSA) checkpoints at some US airports.

    At those locations, you’ll have the option to use your iPhone or Apple Watch to present your ID to the TSA. You’ll do so by tapping your device on an identity reader, and you won’t need to hand over your iPhone or Apple Watch to a TSA employee.

    In September, Apple announced eight states would support the feature at launch, starting with Arizona and Georgia, and Connecticut, Iowa, Kentucky, Maryland, Oklahoma and Utah to follow. Beyond TSA checkpoints, Apple said retailers and venues would add support later.

    Outside of early 2022, Apple has not shared a specific release date for the feature. What’s clear is that it won’t arrive with iOS 15.2. That update is currently in beta testing and does not include support for storing digital IDs.

    ", + "category": "Information Technology", + "link": "https://www.engadget.com/apple-wallet-digital-id-delay-195046762.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Tue, 23 Nov 2021 19:50:46 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Fall Guys' season six features a party theme and a 'Ghost of Tsushima' crossover", + "description": "

    The next season of Fall Guys starts on November 30th and the beans are getting into the party spirit. Developer Mediatonic took inspiration from festivals, carnivals and the circus for season six. New obstacles include a water balloon cannon, vacuum tubes, a circular version of the infamous seesaw and a platform that flips vertically after a certain length of time. What's more, there are trapezes that players can swing from.

    There are more crossover costumes on the way in season six. Between December 1st and 5th, you can complete challenges to earn a Sackboy skin — the adorable PlayStation mascot is a perfect fit for Fall Guys. In addition, the Fame Pass, which players level up during the season, includes two rad costumes depicting Jin Sakai from Ghost of Tsushima.

    here comes the sackboy ~ hello sackboy ~ welcome...

    There he is, he is here ✨

    Earn exclusive threads and complete new challenges in Sackboy’s Challenge from 1-5 December! 🧵 pic.twitter.com/04QAIdSomt

    — Santa from Fall Guys 👑 (@FallGuysGame) November 23, 2021

    Meanwhile, cross-progression is coming to the battle royale platformer in season six, building on the cross-play feature that arrived in May. So you'll be able to access all of your costumes and other cosmetics across PlayStation and Steam. In addition, PC players will be able to select custom usernames again instead of whatever moniker Fall Guys generated for them.

    As such, you'll soon need an Epic Games account to play Fall Guys. Epic bought Mediatonic earlier this year, and Rocket League and Fortnite use the Epic account system for cross-progression too.

    You'll need to select a primary Fall Guys account, which is the first one that you link to an Epic account. Although you won't lose costumes, nameplates and so on from either platform, you'll only retain your season progress, crowns, shards and kudos from your primary account. So, it's probably best to spend your crowns and kudos on your secondary account before the new season starts.

    Mediatonic also notes that if players have different costumes and DLC content across both platforms, they should contact the support team after linking to their Epic Games account. The team will transfer over those items, so you won't lose them. In addition, all players will receive a bonus of 10 crowns.

    During the season six showcase, Mediatonic didn't mention when the Nintendo Switch and Xbox versions of Fall Guys will be released, even though they're still supposed to arrive by the end of the year. However, the developer did provide a peek at an upcoming round that features invisible beans.

    ", + "content": "

    The next season of Fall Guys starts on November 30th and the beans are getting into the party spirit. Developer Mediatonic took inspiration from festivals, carnivals and the circus for season six. New obstacles include a water balloon cannon, vacuum tubes, a circular version of the infamous seesaw and a platform that flips vertically after a certain length of time. What's more, there are trapezes that players can swing from.

    There are more crossover costumes on the way in season six. Between December 1st and 5th, you can complete challenges to earn a Sackboy skin — the adorable PlayStation mascot is a perfect fit for Fall Guys. In addition, the Fame Pass, which players level up during the season, includes two rad costumes depicting Jin Sakai from Ghost of Tsushima.

    here comes the sackboy ~ hello sackboy ~ welcome...

    There he is, he is here ✨

    Earn exclusive threads and complete new challenges in Sackboy’s Challenge from 1-5 December! 🧵 pic.twitter.com/04QAIdSomt

    — Santa from Fall Guys 👑 (@FallGuysGame) November 23, 2021

    Meanwhile, cross-progression is coming to the battle royale platformer in season six, building on the cross-play feature that arrived in May. So you'll be able to access all of your costumes and other cosmetics across PlayStation and Steam. In addition, PC players will be able to select custom usernames again instead of whatever moniker Fall Guys generated for them.

    As such, you'll soon need an Epic Games account to play Fall Guys. Epic bought Mediatonic earlier this year, and Rocket League and Fortnite use the Epic account system for cross-progression too.

    You'll need to select a primary Fall Guys account, which is the first one that you link to an Epic account. Although you won't lose costumes, nameplates and so on from either platform, you'll only retain your season progress, crowns, shards and kudos from your primary account. So, it's probably best to spend your crowns and kudos on your secondary account before the new season starts.

    Mediatonic also notes that if players have different costumes and DLC content across both platforms, they should contact the support team after linking to their Epic Games account. The team will transfer over those items, so you won't lose them. In addition, all players will receive a bonus of 10 crowns.

    During the season six showcase, Mediatonic didn't mention when the Nintendo Switch and Xbox versions of Fall Guys will be released, even though they're still supposed to arrive by the end of the year. However, the developer did provide a peek at an upcoming round that features invisible beans.

    ", + "category": "Sports & Recreation", + "link": "https://www.engadget.com/fall-guys-season-six-ghost-of-tsushima-sackboy-cross-progression-193002718.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Tue, 23 Nov 2021 19:30:02 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Netflix's 'Cowboy Bebop' is everything wrong with nostalgia reboots", + "description": "

    Cowboy Bebop was like nothing else when it premiered twenty years ago. It was a neo-Western set in space; a noir thriller alongside the spectacle of martial arts action and John Woo-esque shootouts; an existential vision of a broken future where characters were forced to live with their shattered pasts. And on top of all of that, it was propelled by an iconic soundtrack that easily danced between genres. We didn't have much time in the Bebop-verse — just 26 episodes and a movie — so every second felt like a miracle. How could a live-action Netflix adaptation live up to that?

    Simply put, it doesn't. While the original show was a love letter to cinema and pop culture, crafted by a creative dream team (director Shinichiro Watanabe, writer Keiko Nobumoto and composer Yoko Kanno), Netflix's remix is mainly in love with Cowboy Bebop. It wants to remind us of the anime, so much so that it replicates many iconic sequences shot-for-shot, but it doesn't latch onto what made it so special. It hums the melody, but has no soul. It's a hollow tune that's common to nostalgia-focused reboots, like Star Wars: The Force Awakens and Ghostbusters: Afterlife, and it almost always holds them back.

    By almost every measure, I should hate Netflix's Cowboy Bebop with a passion. But, it's a testament to the talented actors involved that I don't. John Cho wouldn't be my first choice to play the impossibly cool Spike Spiegel (that would be Sung Kang, Fast and Furious's swagger king Han), but he makes a serious effort to replicate his charm. Mustafa Shakir easily carries Jet Black's irascible yet lovable nature. And Daniella Pineda's Faye Valentine is an absolute scene stealer.

    But this talented group is failed by a confounding production, which often looks worse than a cheap Doctor Who episode. Some sets appear to be made out of cardboard and spray paint, nothing conveys the lived-in aesthetic the anime captured so well. There are flashes of visual brilliance, to be clear, but that mainly comes from digital effects that often replicate shots from the original series. At times, Bebop wants to replicate the live-action cartoon aesthetic from the Wachowski's under-rated Speed Racer. Then, at other times, it will just have a bright neon "PORN" sign in the background, as if that's enough to convey the seediness of a neighborhood.

    \"Cowboy
    Geoffrey Short/Netflix

    So where did everything start going wrong? As with most nostalgia reboots, it usually comes down to the writing. Netflix's Cowboy Bebop was developed by Christopher Yost (Thor: Ragnarok, Star Wars Rebels) and includes genre talents like Javier Grillo-Marxuach (Lost, Charmed). Their combined credits gave me hope that the show would be something more than a copycat of the anime, but instead it's a confusing mishmash of nostalgia worship and superfluous story additions.

    Instead of being a mysterious cutthroat assassin, the villain Vicious comes across as a dull Eurotrash gangster. Instead of a haunting past based on the consequences of being overbearingly protective, Jet gets an estranged daughter and a ticked-off ex-wife. And perhaps most damningly, Spike's love interest Julia loses her mystique, and instead becomes another pretty damsel in distress. We've seen all of these storylines before, so instead of feeling like "a new genre unto itself," the bold proclamation the anime made in the middle of every episode, it all just feels like "been there, done that."

    \"Cowboy

    That's the same vibe I got while watching Ghostbusters: Afterlife. It starts out as an intriguing portrait of a struggling family, but eventually becomes bogged down by replicating almost every plot beat from the first Ghostbusters. It's still a fun and enjoyable film, but it's reverence for the past clearly prevented it from doing anything truly new. Watching that movie and Cowboy Bebop over the weekend made me genuinely worried about the future of pop culture. Are we just doomed to repeat the past, over and over again, to appease the fans?

    Now, here's the thing: Despite all of the ways Cowboy Bebop fundamentally misunderstands its source material, it still ends up being a decently enjoyable sci-fi romp. And if you don't know what you're missing, it's easy to overlook the flaws as you soak in the talent of the cast, the strange yet familiar future filled with terraformed moons and planets, and the catchy Yoko Kanno tunes.

    My one faint hope is that viewers who enjoy the live-action series will also check out the anime, which is also available on Netflix. I'm all for new viewers finding ways into existing properties. I just wish that didn't involve watering down classics to make them more palatable.

    ", + "content": "

    Cowboy Bebop was like nothing else when it premiered twenty years ago. It was a neo-Western set in space; a noir thriller alongside the spectacle of martial arts action and John Woo-esque shootouts; an existential vision of a broken future where characters were forced to live with their shattered pasts. And on top of all of that, it was propelled by an iconic soundtrack that easily danced between genres. We didn't have much time in the Bebop-verse — just 26 episodes and a movie — so every second felt like a miracle. How could a live-action Netflix adaptation live up to that?

    Simply put, it doesn't. While the original show was a love letter to cinema and pop culture, crafted by a creative dream team (director Shinichiro Watanabe, writer Keiko Nobumoto and composer Yoko Kanno), Netflix's remix is mainly in love with Cowboy Bebop. It wants to remind us of the anime, so much so that it replicates many iconic sequences shot-for-shot, but it doesn't latch onto what made it so special. It hums the melody, but has no soul. It's a hollow tune that's common to nostalgia-focused reboots, like Star Wars: The Force Awakens and Ghostbusters: Afterlife, and it almost always holds them back.

    By almost every measure, I should hate Netflix's Cowboy Bebop with a passion. But, it's a testament to the talented actors involved that I don't. John Cho wouldn't be my first choice to play the impossibly cool Spike Spiegel (that would be Sung Kang, Fast and Furious's swagger king Han), but he makes a serious effort to replicate his charm. Mustafa Shakir easily carries Jet Black's irascible yet lovable nature. And Daniella Pineda's Faye Valentine is an absolute scene stealer.

    But this talented group is failed by a confounding production, which often looks worse than a cheap Doctor Who episode. Some sets appear to be made out of cardboard and spray paint, nothing conveys the lived-in aesthetic the anime captured so well. There are flashes of visual brilliance, to be clear, but that mainly comes from digital effects that often replicate shots from the original series. At times, Bebop wants to replicate the live-action cartoon aesthetic from the Wachowski's under-rated Speed Racer. Then, at other times, it will just have a bright neon "PORN" sign in the background, as if that's enough to convey the seediness of a neighborhood.

    \"Cowboy
    Geoffrey Short/Netflix

    So where did everything start going wrong? As with most nostalgia reboots, it usually comes down to the writing. Netflix's Cowboy Bebop was developed by Christopher Yost (Thor: Ragnarok, Star Wars Rebels) and includes genre talents like Javier Grillo-Marxuach (Lost, Charmed). Their combined credits gave me hope that the show would be something more than a copycat of the anime, but instead it's a confusing mishmash of nostalgia worship and superfluous story additions.

    Instead of being a mysterious cutthroat assassin, the villain Vicious comes across as a dull Eurotrash gangster. Instead of a haunting past based on the consequences of being overbearingly protective, Jet gets an estranged daughter and a ticked-off ex-wife. And perhaps most damningly, Spike's love interest Julia loses her mystique, and instead becomes another pretty damsel in distress. We've seen all of these storylines before, so instead of feeling like "a new genre unto itself," the bold proclamation the anime made in the middle of every episode, it all just feels like "been there, done that."

    \"Cowboy

    That's the same vibe I got while watching Ghostbusters: Afterlife. It starts out as an intriguing portrait of a struggling family, but eventually becomes bogged down by replicating almost every plot beat from the first Ghostbusters. It's still a fun and enjoyable film, but it's reverence for the past clearly prevented it from doing anything truly new. Watching that movie and Cowboy Bebop over the weekend made me genuinely worried about the future of pop culture. Are we just doomed to repeat the past, over and over again, to appease the fans?

    Now, here's the thing: Despite all of the ways Cowboy Bebop fundamentally misunderstands its source material, it still ends up being a decently enjoyable sci-fi romp. And if you don't know what you're missing, it's easy to overlook the flaws as you soak in the talent of the cast, the strange yet familiar future filled with terraformed moons and planets, and the catchy Yoko Kanno tunes.

    My one faint hope is that viewers who enjoy the live-action series will also check out the anime, which is also available on Netflix. I'm all for new viewers finding ways into existing properties. I just wish that didn't involve watering down classics to make them more palatable.

    ", + "category": "Professional Services", + "link": "https://www.engadget.com/cowboy-bebop-review-netflix-191548307.html?src=rss", + "creator": "Devindra Hardawar", + "pubDate": "Tue, 23 Nov 2021 19:15:48 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Epic Games buys Harmonix to create 'musical journeys' in 'Fortnite'", + "description": "

    Epic Games has acquired Harmonix, the studio behind titles like Guitar Hero, Rock Band, Dance Central and more recently Fuser. Financial terms have not been disclosed. Epic’s vision for Harmonix involves the metaverse. In the immediate future, the two plan to create “musical journeys and gameplay for Fortnite.”

    Turn your speakers UP! @Harmonix, the makers of interactive music experiences including @RockBand, are joining the Epic Games family! Together we will explore new ways for people to enjoy music across the digital world. 🎸🥁🔊 https://t.co/YLFBtYFKKn

    — Epic Games Newsroom (@EpicNewsroom) November 23, 2021

    Viewed through that lens, Epic’s interest in the studio makes a lot of sense. Outside of frequent brand collaborations, Fortnite is at this point best known for its virtual concerts. In the last two years, a handful of major artists like Ariana Grande and Travis Scott have drawn a lot of interest to the game. In the latter case, for example, more than 12.3 people watched Scott’s performance concurrently.

    In the meantime, Harmonix says it will continue to support its existing slate of games. That means Rock Band players can continue to look forward to new DLC and Fuser players can expect the studio to continue hosting events. Additionally, any game that's currently available through Steam will continue to be sold through Valve's storefront.

    ", + "content": "

    Epic Games has acquired Harmonix, the studio behind titles like Guitar Hero, Rock Band, Dance Central and more recently Fuser. Financial terms have not been disclosed. Epic’s vision for Harmonix involves the metaverse. In the immediate future, the two plan to create “musical journeys and gameplay for Fortnite.”

    Turn your speakers UP! @Harmonix, the makers of interactive music experiences including @RockBand, are joining the Epic Games family! Together we will explore new ways for people to enjoy music across the digital world. 🎸🥁🔊 https://t.co/YLFBtYFKKn

    — Epic Games Newsroom (@EpicNewsroom) November 23, 2021

    Viewed through that lens, Epic’s interest in the studio makes a lot of sense. Outside of frequent brand collaborations, Fortnite is at this point best known for its virtual concerts. In the last two years, a handful of major artists like Ariana Grande and Travis Scott have drawn a lot of interest to the game. In the latter case, for example, more than 12.3 people watched Scott’s performance concurrently.

    In the meantime, Harmonix says it will continue to support its existing slate of games. That means Rock Band players can continue to look forward to new DLC and Fuser players can expect the studio to continue hosting events. Additionally, any game that's currently available through Steam will continue to be sold through Valve's storefront.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/epic-games-buys-harmonix-184001622.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Tue, 23 Nov 2021 18:40:01 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Smithsonian Air and Space Museum will close for at least six months in 2022", + "description": "

    The Smithsonian Air and Space Museum hasn't been open much since the pandemic started, but it's already poised to shut its doors again — if for more positive reasons. The Washington Postreports the Smithsonian is closing its flagship National Mall building for at least six months of renovations starting March 28th, 2022. The move will maintain the "continued safety" of visitors while the museum finishes work on its first new west wing galleries.

    The closure is part of the first phase of a seven-year renovation poised to cost over $1 billion. The Smithsonian is staggering closures to keep at least some physical museum spaces open during that period, including the Steven F. Udvar-Hazy Center in Virginia (which will remain open). Some parts of the collection have relocated to other relevant museums in the meantime, such as the Museum of African American History and Culture, the Museum of Natural History and the Museum of the American Indian.

    The wait could be worthwhile. Eight west wing exhibits should launch when the main museum reopens, including "One World Connected" (shown above) and spaces touching on the Wright brothers, planetary exploration and the Moon.

    Some parts of the renovation are still far from completion. The museum will start "deinstallation" of the east wing in March and won't complete its upgrade until sometime in 2025. If you can live with those limitations, though, the Air and Space Museum may soon be more relevant and engaging than in the past — even if you've visited relatively recently.

    ", + "content": "

    The Smithsonian Air and Space Museum hasn't been open much since the pandemic started, but it's already poised to shut its doors again — if for more positive reasons. The Washington Postreports the Smithsonian is closing its flagship National Mall building for at least six months of renovations starting March 28th, 2022. The move will maintain the "continued safety" of visitors while the museum finishes work on its first new west wing galleries.

    The closure is part of the first phase of a seven-year renovation poised to cost over $1 billion. The Smithsonian is staggering closures to keep at least some physical museum spaces open during that period, including the Steven F. Udvar-Hazy Center in Virginia (which will remain open). Some parts of the collection have relocated to other relevant museums in the meantime, such as the Museum of African American History and Culture, the Museum of Natural History and the Museum of the American Indian.

    The wait could be worthwhile. Eight west wing exhibits should launch when the main museum reopens, including "One World Connected" (shown above) and spaces touching on the Wright brothers, planetary exploration and the Moon.

    Some parts of the renovation are still far from completion. The museum will start "deinstallation" of the east wing in March and won't complete its upgrade until sometime in 2025. If you can live with those limitations, though, the Air and Space Museum may soon be more relevant and engaging than in the past — even if you've visited relatively recently.

    ", + "category": "Society & Culture Organizations", + "link": "https://www.engadget.com/smithsonian-air-and-space-museum-closed-renovations-182003676.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Tue, 23 Nov 2021 18:20:03 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple sues NSO Group over state-backed spyware", + "description": "

    Apple is more than a little angry at NSO Group for developing spyware tools. The iPhone maker has filed a lawsuit against NSO to "hold it accountable" for governments spying on and targeting Apple device users. In addition to punishing NSO, Apple also seeks to ban the surveillance software developer from using Apple products for future research.

    Senior VP Craig Federighi acknowledged that NSO Group's Pegasus spyware is only aimed at surveilling a small number of people on multiple platforms, including Android. However, Apple stressed that targets are frequently activists, journalists and other critics of regimes that routinely suppress political dissent. The company further accused NSO of "flagrant violations" of federal- and state-level laws in the US.

    The lawsuit also sheds more light on NSO's reported "FORCEDENTRY" exploit. According to Apple, intruders pushed FORCEDENTRY by creating bogus Apple IDs to send malicious code without alerting targets. Apple said its servers weren't compromised in the process, but it clearly wasn't happy that its account system was used for this surveillance.

    Alongside the lawsuit, Apple is promising to donate $10 million (plus any lawsuit damages) toward groups advocating against or researching this kind of digital surveillance. It's further promising free engineering, intelligence and technical help for FORCEDENTRY discoverer Citizen Lab and other organizations with similar goals.

    We've asked NSO Group for comment. In the past, it has repeatedly maintained that it shuts off access to known abusers. It also denied that Pegasus was used to target murdered Saudi journalist Jamal Khashoggi. The Israeli firm has even gone on the offensive, hiring a libel attorney that accused investigators of 'misinterpreting' data and otherwise smearing NSO's reputation.

    NSO might not have many allies. WhatsApp, for instance, accused NSO of enabling attacks on government officials and rejected the Pegasus creator's denials. The tech industry sees NSO as a threat to the privacy of its users (and thus its reputation), and it won't be surprising if other companies support Apple's case.

    ", + "content": "

    Apple is more than a little angry at NSO Group for developing spyware tools. The iPhone maker has filed a lawsuit against NSO to "hold it accountable" for governments spying on and targeting Apple device users. In addition to punishing NSO, Apple also seeks to ban the surveillance software developer from using Apple products for future research.

    Senior VP Craig Federighi acknowledged that NSO Group's Pegasus spyware is only aimed at surveilling a small number of people on multiple platforms, including Android. However, Apple stressed that targets are frequently activists, journalists and other critics of regimes that routinely suppress political dissent. The company further accused NSO of "flagrant violations" of federal- and state-level laws in the US.

    The lawsuit also sheds more light on NSO's reported "FORCEDENTRY" exploit. According to Apple, intruders pushed FORCEDENTRY by creating bogus Apple IDs to send malicious code without alerting targets. Apple said its servers weren't compromised in the process, but it clearly wasn't happy that its account system was used for this surveillance.

    Alongside the lawsuit, Apple is promising to donate $10 million (plus any lawsuit damages) toward groups advocating against or researching this kind of digital surveillance. It's further promising free engineering, intelligence and technical help for FORCEDENTRY discoverer Citizen Lab and other organizations with similar goals.

    We've asked NSO Group for comment. In the past, it has repeatedly maintained that it shuts off access to known abusers. It also denied that Pegasus was used to target murdered Saudi journalist Jamal Khashoggi. The Israeli firm has even gone on the offensive, hiring a libel attorney that accused investigators of 'misinterpreting' data and otherwise smearing NSO's reputation.

    NSO might not have many allies. WhatsApp, for instance, accused NSO of enabling attacks on government officials and rejected the Pegasus creator's denials. The tech industry sees NSO as a threat to the privacy of its users (and thus its reputation), and it won't be surprising if other companies support Apple's case.

    ", + "category": "Company Legal & Law Matters", + "link": "https://www.engadget.com/apple-nso-group-spyware-lawsuit-181306004.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Tue, 23 Nov 2021 18:13:06 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Android 12 review: Living in a Material (You) world", + "description": "

    Android is forked. There are so many versions of it around: From stock Android to Google’s own Pixel-first edition to Samsung’s One UI 4 overlay, there are enough variants to overrun the Time Variance Authority (Loki, anyone?). That means that writing a review of Android 12 is a complicated task. With so many branded and device specific tweaks, it can be hard at times to differentiate core Android features from the window dressing.

    The land of Android is messy, but we’re going to keep this review of Android 12 simple. If you want an idea of the Pixel-only features, head over to our Pixel 6 Pro review where I covered things like Live Translate and Magic Eraser. Features like HDR Net videos and white balance controls are also exclusive to Pixels, though that doesn’t mean they won’t one day roll out more widely.

    Material You everywhere

    Functionally, that means there isn’t much obviously different for those on other devices upgrading to Android 12. The biggest change will be the new Material You design, and how much of that makes its way to your particular handset will depend on your phone’s maker.

    On One UI 4, for example, you’ll get something similar to Material You by way of Samsung’s “whole host of new Color Palettes,” which like Google’s version will apply to menus, buttons and icons. But these aren’t automatically generated by the phone based on your wallpaper, and have a distinct Samsung-y cartoonish style that Galaxy users will find familiar. One UI 4 and Android 12 both also offer new widgets that look much better and offer more customization options than before.

    \"Two
    Cherlynn Low / Engadget

    So Android 12 is a nice visual change, but it does go beyond aesthetics and affects how you interact with the system. Sliders and buttons are larger than before, which some might find ugly compared to the cleaner, thinner options of Androids past.

    After living with this new style for a few months, I’ve gotten used to the extra chonky navigational elements. In fact, in some apps, like Clock, the bigger targets are easier to see, and I can hit the Snooze slider more easily from bed. They even look pretty thanks to Material You, which beautifully infuses everything from the Settings shade to keyboards and numpads. I also like that the new lock screen clock takes over the whole display when you don’t have any notifications.

    There’s plenty of little things that Google added throughout Android 12, like new animations across the interface and updated limits to toast dialogs. Those are the little boxes that pop up at the bottom of the screen when you copy text to your clipboard, for example. I’ll focus on just a few of the more obvious changes, starting with the quick settings panel and notification shade.

    \"Two
    Cherlynn Low / Engadget

    In general, Google’s been busy decluttering. It removed the redundant “Conversations” and “Notifications” headers from the notifications list that took up extra lines, while using a background color in this area that’s close to the cards, making everything blend more smoothly. The Quick Settings area up top has a black background and just four buttons compared to the six from before, which means you’ll now need an extra swipe to access things like Battery Saver or Auto Rotate toggles. Of course, you can rearrange these to put your favorites first, but you’ll only be able to pick four.

    This is a bummer, but at least when you make that extra swipe in Android 12, you’ll see eight settings shortcuts as opposed to just six. The net convenience lost or gained here is… kinda zero.

    I also don’t love that Android 12 will default to summoning the Google Assistant when you long press the power button, but at least you can revert it to show the restart, shut down, lock and emergency buttons.

    One of the most common ways I interact with my phone is by tapping the search bar at the bottom and typing either the name of an app I want or the show I’m about to watch. Nothing’s changed here since Android 11, you’ll still see your recent entries and suggested apps when you hit the text field. But if you use the search bar in the All Apps drawer, which requires a swipe up, you’ll get Android 12’s universal search. This will let you find things on your phone, including not just apps and contacts, but conversations within supported apps as well.

    \"A
    Cherlynn Low / Engadget

    I randomly hit “D,” and was shown a row of suggested apps, like Discord and Discovery+. Below that was a list of people from various apps, like my colleague Devindra on Gmail, as well as conversations with some guys named Dan and Dylan from Hinge. It also showed actions from specific apps, like “Submit a Front Desk instruction” in my building’s portal and “Connect with Mat Smith” on Duo. When I typed “the,” I got suggestions to order from “The Old Spot” on Uber Eats and quickly hail a ride to “The Westin Grand, Berlin” on Uber. Both are places I’d saved as favorites.

    Finally, at the bottom, you’ll find an option to submit your query to Google’s search engine. Chances that I’ll scroll so far down the list are slim, but at least it gets shorter the more letters entered.

    More privacy and battery information

    Most of the changes in Android 12 I’ve described so far are in your face, and you’ll see them as you interact with the system. Others, like the new Privacy Dashboard, are things you’ll have to look for in Settings.

    \"Two
    Cherlynn Low / Engadget

    That means they’ll be less impactful on your daily use, but they are, for the most part, informative. The Privacy Dashboard helped me realize that my camera and mic are activated a ton and showed the apps I most often use that require them. And speaking of, Android 12 also provides new indicators for when your mic and camera are being used (a green dot appears in the top right corner of the screen). This is basically the same as on iOS, except Google requires one more tap on the dot to see which app is accessing the sensor.

    While the Battery Usage page isn’t new, it’s now more prominently featured as the first option in the Battery settings panel — you won’t have to tap a separate three-dot button to find it. Google did appear to update the graph showing your power levels for the last 24 hours, with the horizontal axis now poorly labeled with just the numbers 1, 7, 1, 7 and 1 (or 13, 19, 01, 07, 13 on the phone I set to military time) instead of “xx hr ago” and “xx min left”. I found myself ignoring this chart most of the time, since it isn’t all that helpful.

    In the months I’ve been using Android 12, I’ve seen more apps ask for permission to access my specific or approximate location. I almost never selected the latter, but it’s nice to have the option for things like the weather app. In general, though, I relied on the “Allow this time” or “Allow while using” choices as a way to grant limited permissions to apps. Google will also tell you, after some time, which apps you haven’t used in awhile. It’ll automatically revoke permissions for those, which is nice. None of these apps were things I used often enough for this to be a problem.

    \"Three
    Cherlynn Low / Engadget

    That’s… pretty much it for the major new Android 12 features. I’m still waiting to see an app that uses the new audio-coupled haptic feedback, since I enjoy the sensation it adds to games I’ve played on the iPhone 13 Pro. But there don’t appear to be any at the moment. Google is also constantly pushing out security and stability updates for Android 12, so maybe there are still more features to come.

    Wrap-up

    Ultimately, the biggest things Android 12 brings are Material You design and more privacy tools. That might seem minor on paper, but the visual refresh and faster animations throughout the system make it feel drastically different. Plus, Google continues to drop feature sets every quarter or so, meaning each version of Android doesn’t have to be as major of an upgrade. But if you’ve been looking for a fresh face for your phone, Android 12 is a fun, satisfying update.

    ", + "content": "

    Android is forked. There are so many versions of it around: From stock Android to Google’s own Pixel-first edition to Samsung’s One UI 4 overlay, there are enough variants to overrun the Time Variance Authority (Loki, anyone?). That means that writing a review of Android 12 is a complicated task. With so many branded and device specific tweaks, it can be hard at times to differentiate core Android features from the window dressing.

    The land of Android is messy, but we’re going to keep this review of Android 12 simple. If you want an idea of the Pixel-only features, head over to our Pixel 6 Pro review where I covered things like Live Translate and Magic Eraser. Features like HDR Net videos and white balance controls are also exclusive to Pixels, though that doesn’t mean they won’t one day roll out more widely.

    Material You everywhere

    Functionally, that means there isn’t much obviously different for those on other devices upgrading to Android 12. The biggest change will be the new Material You design, and how much of that makes its way to your particular handset will depend on your phone’s maker.

    On One UI 4, for example, you’ll get something similar to Material You by way of Samsung’s “whole host of new Color Palettes,” which like Google’s version will apply to menus, buttons and icons. But these aren’t automatically generated by the phone based on your wallpaper, and have a distinct Samsung-y cartoonish style that Galaxy users will find familiar. One UI 4 and Android 12 both also offer new widgets that look much better and offer more customization options than before.

    \"Two
    Cherlynn Low / Engadget

    So Android 12 is a nice visual change, but it does go beyond aesthetics and affects how you interact with the system. Sliders and buttons are larger than before, which some might find ugly compared to the cleaner, thinner options of Androids past.

    After living with this new style for a few months, I’ve gotten used to the extra chonky navigational elements. In fact, in some apps, like Clock, the bigger targets are easier to see, and I can hit the Snooze slider more easily from bed. They even look pretty thanks to Material You, which beautifully infuses everything from the Settings shade to keyboards and numpads. I also like that the new lock screen clock takes over the whole display when you don’t have any notifications.

    There’s plenty of little things that Google added throughout Android 12, like new animations across the interface and updated limits to toast dialogs. Those are the little boxes that pop up at the bottom of the screen when you copy text to your clipboard, for example. I’ll focus on just a few of the more obvious changes, starting with the quick settings panel and notification shade.

    \"Two
    Cherlynn Low / Engadget

    In general, Google’s been busy decluttering. It removed the redundant “Conversations” and “Notifications” headers from the notifications list that took up extra lines, while using a background color in this area that’s close to the cards, making everything blend more smoothly. The Quick Settings area up top has a black background and just four buttons compared to the six from before, which means you’ll now need an extra swipe to access things like Battery Saver or Auto Rotate toggles. Of course, you can rearrange these to put your favorites first, but you’ll only be able to pick four.

    This is a bummer, but at least when you make that extra swipe in Android 12, you’ll see eight settings shortcuts as opposed to just six. The net convenience lost or gained here is… kinda zero.

    I also don’t love that Android 12 will default to summoning the Google Assistant when you long press the power button, but at least you can revert it to show the restart, shut down, lock and emergency buttons.

    One of the most common ways I interact with my phone is by tapping the search bar at the bottom and typing either the name of an app I want or the show I’m about to watch. Nothing’s changed here since Android 11, you’ll still see your recent entries and suggested apps when you hit the text field. But if you use the search bar in the All Apps drawer, which requires a swipe up, you’ll get Android 12’s universal search. This will let you find things on your phone, including not just apps and contacts, but conversations within supported apps as well.

    \"A
    Cherlynn Low / Engadget

    I randomly hit “D,” and was shown a row of suggested apps, like Discord and Discovery+. Below that was a list of people from various apps, like my colleague Devindra on Gmail, as well as conversations with some guys named Dan and Dylan from Hinge. It also showed actions from specific apps, like “Submit a Front Desk instruction” in my building’s portal and “Connect with Mat Smith” on Duo. When I typed “the,” I got suggestions to order from “The Old Spot” on Uber Eats and quickly hail a ride to “The Westin Grand, Berlin” on Uber. Both are places I’d saved as favorites.

    Finally, at the bottom, you’ll find an option to submit your query to Google’s search engine. Chances that I’ll scroll so far down the list are slim, but at least it gets shorter the more letters entered.

    More privacy and battery information

    Most of the changes in Android 12 I’ve described so far are in your face, and you’ll see them as you interact with the system. Others, like the new Privacy Dashboard, are things you’ll have to look for in Settings.

    \"Two
    Cherlynn Low / Engadget

    That means they’ll be less impactful on your daily use, but they are, for the most part, informative. The Privacy Dashboard helped me realize that my camera and mic are activated a ton and showed the apps I most often use that require them. And speaking of, Android 12 also provides new indicators for when your mic and camera are being used (a green dot appears in the top right corner of the screen). This is basically the same as on iOS, except Google requires one more tap on the dot to see which app is accessing the sensor.

    While the Battery Usage page isn’t new, it’s now more prominently featured as the first option in the Battery settings panel — you won’t have to tap a separate three-dot button to find it. Google did appear to update the graph showing your power levels for the last 24 hours, with the horizontal axis now poorly labeled with just the numbers 1, 7, 1, 7 and 1 (or 13, 19, 01, 07, 13 on the phone I set to military time) instead of “xx hr ago” and “xx min left”. I found myself ignoring this chart most of the time, since it isn’t all that helpful.

    In the months I’ve been using Android 12, I’ve seen more apps ask for permission to access my specific or approximate location. I almost never selected the latter, but it’s nice to have the option for things like the weather app. In general, though, I relied on the “Allow this time” or “Allow while using” choices as a way to grant limited permissions to apps. Google will also tell you, after some time, which apps you haven’t used in awhile. It’ll automatically revoke permissions for those, which is nice. None of these apps were things I used often enough for this to be a problem.

    \"Three
    Cherlynn Low / Engadget

    That’s… pretty much it for the major new Android 12 features. I’m still waiting to see an app that uses the new audio-coupled haptic feedback, since I enjoy the sensation it adds to games I’ve played on the iPhone 13 Pro. But there don’t appear to be any at the moment. Google is also constantly pushing out security and stability updates for Android 12, so maybe there are still more features to come.

    Wrap-up

    Ultimately, the biggest things Android 12 brings are Material You design and more privacy tools. That might seem minor on paper, but the visual refresh and faster animations throughout the system make it feel drastically different. Plus, Google continues to drop feature sets every quarter or so, meaning each version of Android doesn’t have to be as major of an upgrade. But if you’ve been looking for a fresh face for your phone, Android 12 is a fun, satisfying update.

    ", + "category": "Software", + "link": "https://www.engadget.com/android-12-review-material-you-privacy-controls-180010087.html?src=rss", + "creator": "Cherlynn Low", + "pubDate": "Tue, 23 Nov 2021 18:00:10 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nintendo of America head responds to 'distressing' situation at Activision Blizzard", + "description": "

    Add Nintendo to the list of major gaming companies that say they're disappointed with Activision Blizzard following last week's bombshell Wall Street Journal report on the publisher and CEO Bobby Kotick. In an internal company email obtained by Fanbyte, Nintendo of America President Doug Bowser says he was distressed by the allegations detailed in The Journal's investigation.

    "Along with all of you, I've been following the latest developments with Activision Blizzard and the ongoing reports of sexual harassment and toxicity at the company," Bowser says in the message. "I find these accounts distressing and disturbing. They run counter to my values as well as Nintendo's beliefs, values and policies."

    According to Fanbyte, Bowser notes in the letter he's been in contact with Activision and is in the process of accessing potential "actions." What those actions may entail, Bowser doesn't say. However, there's no mention of reassessing the relationship with Activision like Xbox chief Phil Spencer said was on the table in his message to Microsoft employees. What he does mention is that Nintendo is working with the Entertainment Software Association, a lobbying group that represents both Nintendo and Activision, to strengthen its stance on harassment and workplace abuse.  

    “Every company in the industry must create an environment where everyone is respected and treated as equals, and where all understand the consequences of not doing so,” he said in the email.

    Bowser reportedly sent the letter on Friday, November 19th, to all levels of the company, including internal development teams like Retro Studios. Nintendo of America later confirmed the authenticity of the email. "We can confirm the content of Doug Bowser's internal email to Nintendo of America staff is accurate," a spokesperson for the company told Fanbyte. "We have nothing further to share on this topic."

    According to The Journal, Kotick knew about many of the incidents of sexual harassment at Activision Blizzard and, at times, acted to protect abusers at the company. He also allegedly acted as one himself at times. In a statement to Engadget, a spokesperson for the company said the article presented a "misleading view of Activision Blizzard and our CEO." The report drew an outcry from Activision Blizzard employees who staged a walkout on the day it was published. Some of those same employees have also called on Kotick to resign from his position, an action the executive reportedly said he would consider if he can't fix the company's culture "with speed."

    "We respect all feedback from our valued partners and are engaging with them further," an Activision Blizzard spokesperson told Engadget after the Microsoft letter surfaced online. "We have detailed important changes we have implemented in recent weeks, and we will continue to do so. We are committed to the work of ensuring our culture and workplace are safe, diverse, and inclusive. We know it will take time, but we will not stop until we have the best workplace for our team."

    ", + "content": "

    Add Nintendo to the list of major gaming companies that say they're disappointed with Activision Blizzard following last week's bombshell Wall Street Journal report on the publisher and CEO Bobby Kotick. In an internal company email obtained by Fanbyte, Nintendo of America President Doug Bowser says he was distressed by the allegations detailed in The Journal's investigation.

    "Along with all of you, I've been following the latest developments with Activision Blizzard and the ongoing reports of sexual harassment and toxicity at the company," Bowser says in the message. "I find these accounts distressing and disturbing. They run counter to my values as well as Nintendo's beliefs, values and policies."

    According to Fanbyte, Bowser notes in the letter he's been in contact with Activision and is in the process of accessing potential "actions." What those actions may entail, Bowser doesn't say. However, there's no mention of reassessing the relationship with Activision like Xbox chief Phil Spencer said was on the table in his message to Microsoft employees. What he does mention is that Nintendo is working with the Entertainment Software Association, a lobbying group that represents both Nintendo and Activision, to strengthen its stance on harassment and workplace abuse.  

    “Every company in the industry must create an environment where everyone is respected and treated as equals, and where all understand the consequences of not doing so,” he said in the email.

    Bowser reportedly sent the letter on Friday, November 19th, to all levels of the company, including internal development teams like Retro Studios. Nintendo of America later confirmed the authenticity of the email. "We can confirm the content of Doug Bowser's internal email to Nintendo of America staff is accurate," a spokesperson for the company told Fanbyte. "We have nothing further to share on this topic."

    According to The Journal, Kotick knew about many of the incidents of sexual harassment at Activision Blizzard and, at times, acted to protect abusers at the company. He also allegedly acted as one himself at times. In a statement to Engadget, a spokesperson for the company said the article presented a "misleading view of Activision Blizzard and our CEO." The report drew an outcry from Activision Blizzard employees who staged a walkout on the day it was published. Some of those same employees have also called on Kotick to resign from his position, an action the executive reportedly said he would consider if he can't fix the company's culture "with speed."

    "We respect all feedback from our valued partners and are engaging with them further," an Activision Blizzard spokesperson told Engadget after the Microsoft letter surfaced online. "We have detailed important changes we have implemented in recent weeks, and we will continue to do so. We are committed to the work of ensuring our culture and workplace are safe, diverse, and inclusive. We know it will take time, but we will not stop until we have the best workplace for our team."

    ", + "category": "Business", + "link": "https://www.engadget.com/nintendo-of-america-172930485.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Tue, 23 Nov 2021 17:29:30 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Animoog Z ushers the landmark iOS synth into the modern age", + "description": "

    Ten years ago Moog released Animoog — a strange departure for a company best known for its old-school analog synths. The company had dabbled in the app world before with the Filtatron, which was an emulation of the classic Moog ladder filter. But Animoog was a different beast entirely. It was a full-fledged software instrument that used wavetable synthesis, often associated with cold and complex digital sounds that are in many ways the antithesis of what Moog stood for. But, the app turned out to be a huge success. And for its tenth anniversary it’s finally getting a proper sequel in Animoog Z.

    The core, which Moog calls Anisotropic Synth Engine, is largely the same. Of the dozens of waveforms you choose up to eight at a time from. They range from samples of analog saw waves to decidedly more digital sounds. What makes it relatively unique is the ‘orbit’ and ‘path’ modules which shape the timbre. The way they work is hard to describe, but basically notes you play travel along a path drawn in space, and orbit around that path. You control the speed and intensity of distance of the orbit, as well as the speed at which it travels along the path and that determines how the sound of each note evolves, in a relatively opaque way.

    \"Animoog
    Moog

    The big change here from the original app is that Animoog Z adds a third dimension to the path. So instead of just traveling along an X and Y axis, the notes also can move along this Z axis. This gives the new app just a touch more depth and notes a bit more room to evolve. The difference can be subtle at times, but certain presets in Animoog Z take advantage of additional modulation path to create truly wild and complex sounds. (Just check out Downward Spiral and Ball Lightning.)

    There’s also a new effects section with a looper, delay, filter, an arpeggiator and a “thick” section. Thick was also in the original app and it just offers a variety of ways to beef up your sound, from adding detune, drive and bit crushing effects. While a few of these are holdovers from the original, the way they’re grouped together here makes sound design a little more fluid and linear.

    The whole app has received a massive face lift that not only makes it feel more modern, but also makes it easier to navigate. While the UI can feel a bit cramped on an iPhone, it’s still light years beyond the original. Unfortunately I wasn’t able to test it on an iPad or a Mac, so I can’t speak to how well the interface scales up when it has space to breathe. But, the general layout is clean, logical and consistent.

    \"Animoog
    Moog

    The LFO, mod and envelope sections are more accessible and more powerful than their counterparts in the original app. In Animoog Z there is an entire tab dedicated to envelopes, with a clearly labeled amp envelope, and you’ll find it in the same place you’ll find the FX, orbit, filter, path and LFO tabs. There’s no need to go searching. In the original some of these features were scattered amongst dropdown menus. There are also just a lot more options for routing modulation in the new app.

    Lastly, Moog added MPE support to the app, and even offers a limited version of it through the touchscreen interface. If you expand the keyboard, you can slide your fingers up and down individual notes to add unique modulation to each. You can also bend each note individually by moving your fingers. One of the great ways to add a little character to your playing is to turn down the keyboard correction and turn up the glide which will just by dint of your imperfect and imprecise human fingers add subtle detuning and bends as you play. With the right settings this can simulate everything from subtle analog drift to the tape warbles of a dying Walkman.

    \"Animoog
    Moog

    Animoog Z is available as a free download, but only in an extremely limited version. You can play the built-in presets and manipulate some basic parameters, but if you want full access to all its features you’ll need to pay $10. One nice change here is the flat price no matter the platform. Currently the iPhone version Animoog is $10, but it’s $20 on the iPad. Animoog Z is $10 no matter where you’re using it.

    Animoog is definitely starting to look and feel its age. So this sequel couldn’t have come at a better time. And Animoog Z is definitely a worthy successor to this groundbreaking app.

    ", + "content": "

    Ten years ago Moog released Animoog — a strange departure for a company best known for its old-school analog synths. The company had dabbled in the app world before with the Filtatron, which was an emulation of the classic Moog ladder filter. But Animoog was a different beast entirely. It was a full-fledged software instrument that used wavetable synthesis, often associated with cold and complex digital sounds that are in many ways the antithesis of what Moog stood for. But, the app turned out to be a huge success. And for its tenth anniversary it’s finally getting a proper sequel in Animoog Z.

    The core, which Moog calls Anisotropic Synth Engine, is largely the same. Of the dozens of waveforms you choose up to eight at a time from. They range from samples of analog saw waves to decidedly more digital sounds. What makes it relatively unique is the ‘orbit’ and ‘path’ modules which shape the timbre. The way they work is hard to describe, but basically notes you play travel along a path drawn in space, and orbit around that path. You control the speed and intensity of distance of the orbit, as well as the speed at which it travels along the path and that determines how the sound of each note evolves, in a relatively opaque way.

    \"Animoog
    Moog

    The big change here from the original app is that Animoog Z adds a third dimension to the path. So instead of just traveling along an X and Y axis, the notes also can move along this Z axis. This gives the new app just a touch more depth and notes a bit more room to evolve. The difference can be subtle at times, but certain presets in Animoog Z take advantage of additional modulation path to create truly wild and complex sounds. (Just check out Downward Spiral and Ball Lightning.)

    There’s also a new effects section with a looper, delay, filter, an arpeggiator and a “thick” section. Thick was also in the original app and it just offers a variety of ways to beef up your sound, from adding detune, drive and bit crushing effects. While a few of these are holdovers from the original, the way they’re grouped together here makes sound design a little more fluid and linear.

    The whole app has received a massive face lift that not only makes it feel more modern, but also makes it easier to navigate. While the UI can feel a bit cramped on an iPhone, it’s still light years beyond the original. Unfortunately I wasn’t able to test it on an iPad or a Mac, so I can’t speak to how well the interface scales up when it has space to breathe. But, the general layout is clean, logical and consistent.

    \"Animoog
    Moog

    The LFO, mod and envelope sections are more accessible and more powerful than their counterparts in the original app. In Animoog Z there is an entire tab dedicated to envelopes, with a clearly labeled amp envelope, and you’ll find it in the same place you’ll find the FX, orbit, filter, path and LFO tabs. There’s no need to go searching. In the original some of these features were scattered amongst dropdown menus. There are also just a lot more options for routing modulation in the new app.

    Lastly, Moog added MPE support to the app, and even offers a limited version of it through the touchscreen interface. If you expand the keyboard, you can slide your fingers up and down individual notes to add unique modulation to each. You can also bend each note individually by moving your fingers. One of the great ways to add a little character to your playing is to turn down the keyboard correction and turn up the glide which will just by dint of your imperfect and imprecise human fingers add subtle detuning and bends as you play. With the right settings this can simulate everything from subtle analog drift to the tape warbles of a dying Walkman.

    \"Animoog
    Moog

    Animoog Z is available as a free download, but only in an extremely limited version. You can play the built-in presets and manipulate some basic parameters, but if you want full access to all its features you’ll need to pay $10. One nice change here is the flat price no matter the platform. Currently the iPhone version Animoog is $10, but it’s $20 on the iPad. Animoog Z is $10 no matter where you’re using it.

    Animoog is definitely starting to look and feel its age. So this sequel couldn’t have come at a better time. And Animoog Z is definitely a worthy successor to this groundbreaking app.

    ", + "category": "Software", + "link": "https://www.engadget.com/moog-animoog-z-i-os-softsynth-music-app-170019893.html?src=rss", + "creator": "Terrence O'Brien", + "pubDate": "Tue, 23 Nov 2021 17:00:19 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Game Boy Advance 'hacked' to run PlayStation games using a Raspberry Pi", + "description": "

    The Game Boy Advance is useful in the modern era for more than watching Christopher Nolan blockbusters. Gizmodonotes that tinkerer Rodrigo Alfonso has Nintendo's 20-year-old handheld running PlayStation (and Genesis, and SNES) games without special modifications. The trick, as you might imagine revolves around a custom cartridge — you're technically running the game on a separate system.

    The cartridge houses a Raspberry Pi 3 mini-computer running the RetroPie emulator and streaming both video and input through the GBA's multiplayer-oriented Link Port. Yes, that's constraining as you think it is — you can't transfer more than 1.6Mbps bi-directionally, and the Pi has to routinely give the "poor" GBA's processor a break for a few microseconds. Alfonso suggests lowering the stream resolution from the console's native 240 x 160 if a high frame rate is important.

    Still, the results are mostly impressive. The special cart can handle classics like the Crash Bandicoot series and Spyro the Dragon at smooth frame rates, albeit with some video artifacts that reflect the limited bandwidth. You can overclock the GBA's processor to improve the frame rate and quality.

    You'll have to build the cartridge and load code yourself, although Alfonso has helpfully provided both on GitHub. This probably won't replace a PSP if you want the most authentic PlayStation handheld experience you can get. It might, however, give you a reason to dig your GBA out of the closet.

    ", + "content": "

    The Game Boy Advance is useful in the modern era for more than watching Christopher Nolan blockbusters. Gizmodonotes that tinkerer Rodrigo Alfonso has Nintendo's 20-year-old handheld running PlayStation (and Genesis, and SNES) games without special modifications. The trick, as you might imagine revolves around a custom cartridge — you're technically running the game on a separate system.

    The cartridge houses a Raspberry Pi 3 mini-computer running the RetroPie emulator and streaming both video and input through the GBA's multiplayer-oriented Link Port. Yes, that's constraining as you think it is — you can't transfer more than 1.6Mbps bi-directionally, and the Pi has to routinely give the "poor" GBA's processor a break for a few microseconds. Alfonso suggests lowering the stream resolution from the console's native 240 x 160 if a high frame rate is important.

    Still, the results are mostly impressive. The special cart can handle classics like the Crash Bandicoot series and Spyro the Dragon at smooth frame rates, albeit with some video artifacts that reflect the limited bandwidth. You can overclock the GBA's processor to improve the frame rate and quality.

    You'll have to build the cartridge and load code yourself, although Alfonso has helpfully provided both on GitHub. This probably won't replace a PSP if you want the most authentic PlayStation handheld experience you can get. It might, however, give you a reason to dig your GBA out of the closet.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/game-boy-advance-runs-playstation-games-164220518.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Tue, 23 Nov 2021 16:42:20 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The best deals on subscription services we found for Black Friday", + "description": "

    If you're anything like us, you probably pay for quite a few subscription services each month. Everything from music and TV streaming to guided meditations to password management has a service that you can pay for to make your life more convenient. These are also things we don't think about buying very often — typically, you sign up once and only revisit the service when you're thinking of changing things up or cancelling. But Black Friday is a good opportunity to check out new subscription services you may have considered in the past because many of them have sales for new (and sometimes returning) customers. Here are the best deals on subscription services you can get this Black Friday.

    Adobe CC All Apps plan

    \"Woman
    grinvalds via Getty Images

    First-time subscribers to Adobe CC can get the All Apps plan for 40 percent off right now, bringing the monthly charge down to $30. If you're a student, it's even cheaper — just $16 per month for first-time customers. These programs are considered standard in most creative fields, so it's worth grabbing this deal if you know you'll be using things like Photoshop or Illustrator in the future.

    Subscribe to All Apps plan at Adobe - $30/month

    Headspace

    \"Headspace\"
    Headspace

    The meditation app Headspace is down to $5 per month for new and returning customers for Black Friday. That's 60 percent off the normal price, and those who want to pay for a year upfront will get 50 percent off and pay only $35 for the year. Headspace has a bunch of guided meditation sessions along with sleep stories, calming ambient music, guided yoga sessions for stress management and more.

    Subscribe to Headspace starting at $5/month

    Hulu (ad-supported)

    \"Hulu\"
    Hulu

    Hulu's Black Friday deal knocks the price of its ad-supported plan down to only $1 per month. That's $6 off its normal price, and those who sign up will get that discount for a full year. While the offer is available to both new and returning subscribers, you cannot claim the deal if you've been a Hulu subscriber within the past month.

    Subscribe to Hulu (ad-supported) - $1/month

    Audible

    \"Audible\"
    Audible

    New subscribers can join Audible right now for 60 percent off, or $6 per month, for the first three months and you'll get a $20 Audible credit along with it. After three months, the subscription price will go back up to the standard $15-per-month rate. Audible Premium Plus gives you access to hundreds of audiobooks, plus one credit per month to use on any title of your choosing. It also gives you access to members-only sales, which often knock titles down to as low as $5 each.

    Subscribe to Audible - $6/month

    Libro.fm

    \"Libro.fm\"
    Libro.fm

    Libro.fm is an audiobook platform that helps you support local bookstores with your purchases and you can get an extra free book credit when you sign up with the code CHOOSEINDIE. That's on top of the standard one credit you get with your first month of membership, so you're getting a total of two credits to use immediately. Libro.fm's prices are in line with Audible's as well — $15 per month for a standard subscription.

    Subscribe to Libro.fm - $15/month

    Affinity creative programs

    \"Serif
    Serif

    Serif's Adobe CC competitors, the Affinity suite of creative apps, are 30 percent off for Black Friday. That includes Affinity Photo, Designer and Publisher programs for all platforms as well as the rest of the company's workbooks and other content. These apps are great options if you're looking for alternatives to things like Photoshop that don't require recurring subscription fees.

    Shop Affinity programs

    Tidal HiFi

    \"TIDAL
    PRNewsFoto/TIDAL

    For those curious about Tidal's HiFi service, you can take advantage of the company's Black Friday sale and get three months of the music service for just $1. Three months of the HiFi Plus Plan is also on sale for $2, and it gets you everything in the standard HiFi plan along with Master Quality audio with Dolby Atmos and Sony 360 Reality Audio support and other extra perks.

    Shop Tidal's Black Friday sale

    Rosetta Stone

    \"Rosetta
    Rosetta Stone

    Rosetta Stone's Black Friday sale discounts the prices of its three-, six- and 12-month programs to $30, $50 and $90, respectively. Your recipient can learn a new language from their smartphone with things like a phrasebook, stories, offline learning and TruAccent, a feature that helps them refine their pronunciation.

    Shop Rosetta Stone's Black Friday sale

    LastPass

    \"LastPass
    LastPass

    If you're still not using a password manager yet, you can subscribe to the premium version of LastPass Families for 25 percent less than usual. With the family plan, you and up to five other users can keep and share passwords and gain access to features like multi-device password sharing, security dashboard, dark web monitoring and and more.

    Shop LastPass' Black Friday sale

    Parallels

    \"Parallels\"
    Parallels

    Parallels is a program that makes it easy to use Windows alongside macOS and now you can grab Parallels Desktop for Mac for 20 percent off through December 1. A piece of software like this bridges the gab between a bunch of different operating systems, so you don’t have to be confined to one or another.

    Shop Parallels Black Friday sale

    Masterclass

    \"MasterClass\"
    MasterClass

    Masterclass' Black Friday sale gives new annual subscribers a second yearly membership to gift, so you're getting two subscriptions for $180. Your recipient has up to one year to redeem the offer and then you both can learn from world-class experts at your own pace.

    Shop Masterclass Black Friday sale

    NordVPN

    \"NordVPN\"
    NordVPN

    One of our preferred VPNs, NordVPN, is having a Black Friday sale that knocks 68 percent off the normal price, bringing a 2-year subscription down to $89. We like this service for its speed, its no-logs policy, the thousands of servers it has to choose from and that one account supports up to six connected devices.

    Subscribe to NordVPN (2 years) - $89

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    If you're anything like us, you probably pay for quite a few subscription services each month. Everything from music and TV streaming to guided meditations to password management has a service that you can pay for to make your life more convenient. These are also things we don't think about buying very often — typically, you sign up once and only revisit the service when you're thinking of changing things up or cancelling. But Black Friday is a good opportunity to check out new subscription services you may have considered in the past because many of them have sales for new (and sometimes returning) customers. Here are the best deals on subscription services you can get this Black Friday.

    Adobe CC All Apps plan

    \"Woman
    grinvalds via Getty Images

    First-time subscribers to Adobe CC can get the All Apps plan for 40 percent off right now, bringing the monthly charge down to $30. If you're a student, it's even cheaper — just $16 per month for first-time customers. These programs are considered standard in most creative fields, so it's worth grabbing this deal if you know you'll be using things like Photoshop or Illustrator in the future.

    Subscribe to All Apps plan at Adobe - $30/month

    Headspace

    \"Headspace\"
    Headspace

    The meditation app Headspace is down to $5 per month for new and returning customers for Black Friday. That's 60 percent off the normal price, and those who want to pay for a year upfront will get 50 percent off and pay only $35 for the year. Headspace has a bunch of guided meditation sessions along with sleep stories, calming ambient music, guided yoga sessions for stress management and more.

    Subscribe to Headspace starting at $5/month

    Hulu (ad-supported)

    \"Hulu\"
    Hulu

    Hulu's Black Friday deal knocks the price of its ad-supported plan down to only $1 per month. That's $6 off its normal price, and those who sign up will get that discount for a full year. While the offer is available to both new and returning subscribers, you cannot claim the deal if you've been a Hulu subscriber within the past month.

    Subscribe to Hulu (ad-supported) - $1/month

    Audible

    \"Audible\"
    Audible

    New subscribers can join Audible right now for 60 percent off, or $6 per month, for the first three months and you'll get a $20 Audible credit along with it. After three months, the subscription price will go back up to the standard $15-per-month rate. Audible Premium Plus gives you access to hundreds of audiobooks, plus one credit per month to use on any title of your choosing. It also gives you access to members-only sales, which often knock titles down to as low as $5 each.

    Subscribe to Audible - $6/month

    Libro.fm

    \"Libro.fm\"
    Libro.fm

    Libro.fm is an audiobook platform that helps you support local bookstores with your purchases and you can get an extra free book credit when you sign up with the code CHOOSEINDIE. That's on top of the standard one credit you get with your first month of membership, so you're getting a total of two credits to use immediately. Libro.fm's prices are in line with Audible's as well — $15 per month for a standard subscription.

    Subscribe to Libro.fm - $15/month

    Affinity creative programs

    \"Serif
    Serif

    Serif's Adobe CC competitors, the Affinity suite of creative apps, are 30 percent off for Black Friday. That includes Affinity Photo, Designer and Publisher programs for all platforms as well as the rest of the company's workbooks and other content. These apps are great options if you're looking for alternatives to things like Photoshop that don't require recurring subscription fees.

    Shop Affinity programs

    Tidal HiFi

    \"TIDAL
    PRNewsFoto/TIDAL

    For those curious about Tidal's HiFi service, you can take advantage of the company's Black Friday sale and get three months of the music service for just $1. Three months of the HiFi Plus Plan is also on sale for $2, and it gets you everything in the standard HiFi plan along with Master Quality audio with Dolby Atmos and Sony 360 Reality Audio support and other extra perks.

    Shop Tidal's Black Friday sale

    Rosetta Stone

    \"Rosetta
    Rosetta Stone

    Rosetta Stone's Black Friday sale discounts the prices of its three-, six- and 12-month programs to $30, $50 and $90, respectively. Your recipient can learn a new language from their smartphone with things like a phrasebook, stories, offline learning and TruAccent, a feature that helps them refine their pronunciation.

    Shop Rosetta Stone's Black Friday sale

    LastPass

    \"LastPass
    LastPass

    If you're still not using a password manager yet, you can subscribe to the premium version of LastPass Families for 25 percent less than usual. With the family plan, you and up to five other users can keep and share passwords and gain access to features like multi-device password sharing, security dashboard, dark web monitoring and and more.

    Shop LastPass' Black Friday sale

    Parallels

    \"Parallels\"
    Parallels

    Parallels is a program that makes it easy to use Windows alongside macOS and now you can grab Parallels Desktop for Mac for 20 percent off through December 1. A piece of software like this bridges the gab between a bunch of different operating systems, so you don’t have to be confined to one or another.

    Shop Parallels Black Friday sale

    Masterclass

    \"MasterClass\"
    MasterClass

    Masterclass' Black Friday sale gives new annual subscribers a second yearly membership to gift, so you're getting two subscriptions for $180. Your recipient has up to one year to redeem the offer and then you both can learn from world-class experts at your own pace.

    Shop Masterclass Black Friday sale

    NordVPN

    \"NordVPN\"
    NordVPN

    One of our preferred VPNs, NordVPN, is having a Black Friday sale that knocks 68 percent off the normal price, bringing a 2-year subscription down to $89. We like this service for its speed, its no-logs policy, the thousands of servers it has to choose from and that one account supports up to six connected devices.

    Subscribe to NordVPN (2 years) - $89

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/best-subscription-services-deals-black-friday-2021-160027589.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Tue, 23 Nov 2021 16:00:27 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Activision Blizzard’s latest anti-harassment effort is a ‘responsibility committee’", + "description": "

    Activision Blizzard is facing increasing scrutiny from the government and the games industry over its handling of the ongoing sexual harassment scandal, and its latest effort might not help. As Kotakureports, the developer has formed a "Workplace Responsibility Committee" to help it implement new anti-harassment and anti-discrimination efforts. While that sounds useful at first, there's a concern the initial committee is more symbolic than functional.

    The committee will launch with just two members, both of whom (chair Dawn Ostroff and Reveta Bowers) are existing independent board members. They, in turn, will report to the board and key Activision Blizzard executives — including CEO Bobby Kotick, who some argue is partly to blame for the scandal. The duo will work with an outside coordinator and a consultant following the company's settlement with the EEOC, but there's no mention of involving regular company staff or outsiders who weren't part of that court agreement.

    As such, it won't be surprising if the committee does little to satisfy critics. Employees and others have called on Kotick to resign, among other more substantial changes. There's also low confidence in leadership's ability to police itself — Jennifer Oneal, Blizzard's first female leader, allegedly left her position feeling she was the target of discrimination by a seemingly irredeemable company culture. Bloombergnoted that some board members (including Ostroff) are Kotick's longtime friends and connections, for that matter. The committee might need to take aggressive steps if it wants to prove it's more than a superficial gesture.

    ", + "content": "

    Activision Blizzard is facing increasing scrutiny from the government and the games industry over its handling of the ongoing sexual harassment scandal, and its latest effort might not help. As Kotakureports, the developer has formed a "Workplace Responsibility Committee" to help it implement new anti-harassment and anti-discrimination efforts. While that sounds useful at first, there's a concern the initial committee is more symbolic than functional.

    The committee will launch with just two members, both of whom (chair Dawn Ostroff and Reveta Bowers) are existing independent board members. They, in turn, will report to the board and key Activision Blizzard executives — including CEO Bobby Kotick, who some argue is partly to blame for the scandal. The duo will work with an outside coordinator and a consultant following the company's settlement with the EEOC, but there's no mention of involving regular company staff or outsiders who weren't part of that court agreement.

    As such, it won't be surprising if the committee does little to satisfy critics. Employees and others have called on Kotick to resign, among other more substantial changes. There's also low confidence in leadership's ability to police itself — Jennifer Oneal, Blizzard's first female leader, allegedly left her position feeling she was the target of discrimination by a seemingly irredeemable company culture. Bloombergnoted that some board members (including Ostroff) are Kotick's longtime friends and connections, for that matter. The committee might need to take aggressive steps if it wants to prove it's more than a superficial gesture.

    ", + "category": "Society & Culture", + "link": "https://www.engadget.com/activision-blizzard-harassment-committee-151913561.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Tue, 23 Nov 2021 15:19:13 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samsung's T7 Touch SSD is on sale for as low as $90 right now", + "description": "

    A portable drive could make a good gift for any tech-obsessed person in your life. Sure, they're not the flashiest gadgets but they're some of the most useful, providing extra space for photos, documents, games and more in a travel-friendly package. One of our favorites, the Samsung T7 Touch, is already on sale for Black Friday — the 500GB model is down to $90, or 18 percent off its normal price and only a few dollars more than its all-time low. You can pick up the 1TB version for 21 percent off now that it's down to $150, or a 2TB model for $300.

    Buy T7 Touch at Amazon starting at $90

    The "Touch" portion of the drive's name comes from its built-in fingerprint reader that provides an additional defense against prying eyes. The T7 supports optional password protection, but on the Touch, you can choose to use your fingerprint to unlock the device and access saved files. The T7 is physically protected as well with its shock- and drop-resistant body, which is also small enough to fit into nearly any pocket of any bag or backpack.

    We also appreciate the use of ePCM technology and Dynamic Thermal Guard to control heat levels, which means that the drive won't overheat even when you're pushing it to its limits. And you may do that a lot depending on how you use the drive. It comes with both a USB-C to C cable and a USB-C to A cable, so it can work with most gadgets — including some game consoles. Overall, the T7 Touch is a versatile SSD that's made better by its extra layer of security.

    If you can forgo the fingerprint reader, the standard T7 drives have also been discounted to new record-low prices. At the time of writing this, the 2TB model is sold out and the best remaining deal of the bunch is on the 1TB version, which is $60 off and down to $110.

    Buy Samsung T7 (1TB) at Amazon - $110

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    A portable drive could make a good gift for any tech-obsessed person in your life. Sure, they're not the flashiest gadgets but they're some of the most useful, providing extra space for photos, documents, games and more in a travel-friendly package. One of our favorites, the Samsung T7 Touch, is already on sale for Black Friday — the 500GB model is down to $90, or 18 percent off its normal price and only a few dollars more than its all-time low. You can pick up the 1TB version for 21 percent off now that it's down to $150, or a 2TB model for $300.

    Buy T7 Touch at Amazon starting at $90

    The "Touch" portion of the drive's name comes from its built-in fingerprint reader that provides an additional defense against prying eyes. The T7 supports optional password protection, but on the Touch, you can choose to use your fingerprint to unlock the device and access saved files. The T7 is physically protected as well with its shock- and drop-resistant body, which is also small enough to fit into nearly any pocket of any bag or backpack.

    We also appreciate the use of ePCM technology and Dynamic Thermal Guard to control heat levels, which means that the drive won't overheat even when you're pushing it to its limits. And you may do that a lot depending on how you use the drive. It comes with both a USB-C to C cable and a USB-C to A cable, so it can work with most gadgets — including some game consoles. Overall, the T7 Touch is a versatile SSD that's made better by its extra layer of security.

    If you can forgo the fingerprint reader, the standard T7 drives have also been discounted to new record-low prices. At the time of writing this, the 2TB model is sold out and the best remaining deal of the bunch is on the 1TB version, which is $60 off and down to $110.

    Buy Samsung T7 (1TB) at Amazon - $110

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/samsungs-t7-touch-ssd-is-on-sale-for-as-low-as-90-right-now-142432872.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Tue, 23 Nov 2021 14:24:32 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Headspace offers up to 60 percent off subscriptions for Black Friday", + "description": "

    If you've heard good things about Headspace and have been waiting to give it a try, now is a good time to do so. The company has discounted its monthly subscription by 60 percent to $4.99, down from $12.99 per month. And it’s not a one-time discount, you can get up to 12 months at that price during the sale. Headspace has also reduced the price of its annual subscription. It currently costs $34.99 instead of $69.99. The promo is available from today until December 6th.

    One thing to note about Headspace is that it’s more than a meditation app. It has an entire section dedicated to music from artists like Arcade Fire and Hans Zimmer. You’ll also find workout videos and tools you can use to fall asleep. If you want to get a feel for what it’s all about, Headspace recently released an interactive mindfulness experience within Netflix.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    ", + "content": "

    If you've heard good things about Headspace and have been waiting to give it a try, now is a good time to do so. The company has discounted its monthly subscription by 60 percent to $4.99, down from $12.99 per month. And it’s not a one-time discount, you can get up to 12 months at that price during the sale. Headspace has also reduced the price of its annual subscription. It currently costs $34.99 instead of $69.99. The promo is available from today until December 6th.

    One thing to note about Headspace is that it’s more than a meditation app. It has an entire section dedicated to music from artists like Arcade Fire and Hans Zimmer. You’ll also find workout videos and tools you can use to fall asleep. If you want to get a feel for what it’s all about, Headspace recently released an interactive mindfulness experience within Netflix.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/headspace-black-friday-2021-promotion-140046465.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Tue, 23 Nov 2021 14:00:46 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Blue Origin's next flight will carry Alan Shepard's daughter to space", + "description": "

    Blue Origin is still eager to grab headlines with spaceflight passengers even as it pushes some boundaries. Jeff Bezos' outfit has revealed that its New Shepard mission on December 9th will be the first to carry a full six passengers into space, including Laura Shepard Churchley — that is, Alan Shepard's daughter. You can also expect a swell of TV coverage with Good Morning America co-anchor Michael Strahan also coming along for the ride.

    Other passengers include Voyager Space chief Dylan Taylor, engineer and investor Evan Dick, venture capitalist Lane Bess and his child Cameron Bess (who will also be the first Twitch streamer to go to space). The launch is currently slated for 10AM Eastern on the 9th, with Blue Origin's livestream starting 90 minutes earlier.

    This 19th New Shepard flight could be considered a consolation prize following Blue Origin's failed lawsuit disputing NASA's SpaceX lunar lander contract. It should show that New Shepard can handle its full complement without a hitch, though, and takes the company one step closer to fulfilling ambitions that include New Glenn and a planned space station.

    ", + "content": "

    Blue Origin is still eager to grab headlines with spaceflight passengers even as it pushes some boundaries. Jeff Bezos' outfit has revealed that its New Shepard mission on December 9th will be the first to carry a full six passengers into space, including Laura Shepard Churchley — that is, Alan Shepard's daughter. You can also expect a swell of TV coverage with Good Morning America co-anchor Michael Strahan also coming along for the ride.

    Other passengers include Voyager Space chief Dylan Taylor, engineer and investor Evan Dick, venture capitalist Lane Bess and his child Cameron Bess (who will also be the first Twitch streamer to go to space). The launch is currently slated for 10AM Eastern on the 9th, with Blue Origin's livestream starting 90 minutes earlier.

    This 19th New Shepard flight could be considered a consolation prize following Blue Origin's failed lawsuit disputing NASA's SpaceX lunar lander contract. It should show that New Shepard can handle its full complement without a hitch, though, and takes the company one step closer to fulfilling ambitions that include New Glenn and a planned space station.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/blue-origin-laura-shepard-gma-anchor-135418042.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Tue, 23 Nov 2021 13:54:18 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Polestar 5 is a production version of the Precept concept EV", + "description": "

    Last year, Polestar announced that it's stunning Precept concept EV sedan would become a real production car. Now, the company has shown the first official images of the production version and confirmed that it will arrive in 2024 as the Polestar 5, Roadshow has reported.

    Unlike many auto show concepts, the new vehicle strongly resembles the Precept that it's based on. That includes the long wheelbase, "shark" nose, fastback design and geometric creasing. "It makes me very proud to see how much of the concept car's design is making it into the Polestar 5," said Polestar CEO Thomas Ingenlath in a statement. It's likely to use a version of parent Geely's upcoming SPA2 EV platform also earmarked for the Polestar 3 SUV and next-generation Volvo XC90. 

    With the Polestar 5, the company has nearly fleshed out its EV lineup that includes the current Polestar 2, upcoming Polestar 3 SUV and the original Polestar 1, a PHEV that will no longer be produced after 2021. A Polestar 4 is also in the offing as a smaller crossover-style SUV that could be the analog of Volvo's C40 Recharge, according to an Autocar report. 

    That will give it a product lineup roughly equivalent to Tesla, with a sedan, hatchback, crossover and SUV. Given Polestar's design chops, and the excellent Polestar EV driving characteristics we've seen so far, it should be a formidable rival. 

    ", + "content": "

    Last year, Polestar announced that it's stunning Precept concept EV sedan would become a real production car. Now, the company has shown the first official images of the production version and confirmed that it will arrive in 2024 as the Polestar 5, Roadshow has reported.

    Unlike many auto show concepts, the new vehicle strongly resembles the Precept that it's based on. That includes the long wheelbase, "shark" nose, fastback design and geometric creasing. "It makes me very proud to see how much of the concept car's design is making it into the Polestar 5," said Polestar CEO Thomas Ingenlath in a statement. It's likely to use a version of parent Geely's upcoming SPA2 EV platform also earmarked for the Polestar 3 SUV and next-generation Volvo XC90. 

    With the Polestar 5, the company has nearly fleshed out its EV lineup that includes the current Polestar 2, upcoming Polestar 3 SUV and the original Polestar 1, a PHEV that will no longer be produced after 2021. A Polestar 4 is also in the offing as a smaller crossover-style SUV that could be the analog of Volvo's C40 Recharge, according to an Autocar report. 

    That will give it a product lineup roughly equivalent to Tesla, with a sedan, hatchback, crossover and SUV. Given Polestar's design chops, and the excellent Polestar EV driving characteristics we've seen so far, it should be a formidable rival. 

    ", + "category": "Automotive Industry", + "link": "https://www.engadget.com/polestars-precept-concept-makes-its-first-appearance-in-production-form-134823408.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Tue, 23 Nov 2021 13:48:23 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Apple Watch Series 7 hits new low of $380 ahead of Black Friday", + "description": "

    Apple's latest smartwatch came out last month and, while not incredibly different than than Series 6, it impressed us with its larger display and faster charging. Being the newest Apple Watch, we don't expect to see major discounts on the Series 7 this holiday season — but you can get the wearable for $20 less right now on Amazon. The online retailer has a few colors of the Series 7 for $380, which is a record low. Some GPS + Cellular models are also $20 off, if you wanted to spring for the most independent version of the Watch.

    Buy Series 7 (GPS) at Amazon - $380Buy Series 7 (GPS + Cellular) at Amazon - $480

    The Series 7 retains the same footprint of the Series 6, but Apple enlarged the screen by slimming down the bezels to just 1.7mm. What that means in practice is that you have more screen real estate on your wrist, which makes a noticeably difference in usability. Everything is a bit clearer and less cramped, and more things can fit on the screen — like the on-display QWERTY keyboard that the Series 7 has access to in watchOS 8. That lets you type out iMessages whenever you want, although some may still prefer dictation or quick replies to that method.

    This Apple Watch also charges a bit faster than previous versions. In our testing, we got 10 percent juice in just 10 minutes of charging, and the Watch was fully powered in under an hour. This will undoubtably come in handy if you forget to place your Watch in its charger overnight, or if you make use of Apple's sleep tracking feature and want to power up before heading out for the day.

    Otherwise, the Series 7 is the most comprehensive Apple Watch to date. You're getting all of the sensors and features possible here including a blood oxygen sensor, an ECG measurement tool, GPS, heart rate monitor, altimeter and more. Also, you're getting an always-on display, which makes it easier to check notifications without raising your wrist. If you've had your eye on the Series 7 since it was announced, this is the best deal we've seen on it since then. However, those who can give up things like an always-on display and bloody oxygen and ECG tracking, the Apple Watch SE may be the better option since it's also on sale for an all-time low of $219.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Apple's latest smartwatch came out last month and, while not incredibly different than than Series 6, it impressed us with its larger display and faster charging. Being the newest Apple Watch, we don't expect to see major discounts on the Series 7 this holiday season — but you can get the wearable for $20 less right now on Amazon. The online retailer has a few colors of the Series 7 for $380, which is a record low. Some GPS + Cellular models are also $20 off, if you wanted to spring for the most independent version of the Watch.

    Buy Series 7 (GPS) at Amazon - $380Buy Series 7 (GPS + Cellular) at Amazon - $480

    The Series 7 retains the same footprint of the Series 6, but Apple enlarged the screen by slimming down the bezels to just 1.7mm. What that means in practice is that you have more screen real estate on your wrist, which makes a noticeably difference in usability. Everything is a bit clearer and less cramped, and more things can fit on the screen — like the on-display QWERTY keyboard that the Series 7 has access to in watchOS 8. That lets you type out iMessages whenever you want, although some may still prefer dictation or quick replies to that method.

    This Apple Watch also charges a bit faster than previous versions. In our testing, we got 10 percent juice in just 10 minutes of charging, and the Watch was fully powered in under an hour. This will undoubtably come in handy if you forget to place your Watch in its charger overnight, or if you make use of Apple's sleep tracking feature and want to power up before heading out for the day.

    Otherwise, the Series 7 is the most comprehensive Apple Watch to date. You're getting all of the sensors and features possible here including a blood oxygen sensor, an ECG measurement tool, GPS, heart rate monitor, altimeter and more. Also, you're getting an always-on display, which makes it easier to check notifications without raising your wrist. If you've had your eye on the Series 7 since it was announced, this is the best deal we've seen on it since then. However, those who can give up things like an always-on display and bloody oxygen and ECG tracking, the Apple Watch SE may be the better option since it's also on sale for an all-time low of $219.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Information Technology", + "link": "https://www.engadget.com/apple-watch-series-7-hits-new-low-of-380-ahead-of-black-friday-133854389.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Tue, 23 Nov 2021 13:38:54 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Spotify unveils a new hub for Netflix soundtracks, playlists and podcasts", + "description": "

    After doing the same for Disney, Spotify has launched a Netflix hub bringing all of the streaming service's soundtracks, playlists and podcasts into one place. While many of Netflix's soundtracks were already on Spotify, the new feature puts all content related to the service in one place. 

    That includes playlists and soundtracks from series and films like La Casa De Papel, Narcos: Mexico, Outer Banks, Squid Game, tick, tick... Boom! and Cowboy Bebop. It also features podcasts around Netflix content like Okay, Now Listen, Netflix Is A Daily Joke, 10/10 Would Recommend and The Crown: The Official Podcast

    Spotify launched some special material for the hub as well, including an enhanced album for the western movie The Harder They Fall and a refreshed content destination for La Casa De Papel. The latter also features a mobile-only character matching experience putting together La Banda characters and soundtracks. 

    Feature-wise, the Netflix hub goes beyond what Spotify offered for Disney, though the latter's content is more iconic thanks to soundtracks from properties like Star Wars and Toy Story 4. In a case of reverse synergy, Netflix will soon release a Spotify drama focusing on co-founders Daniel Ek and Martin Lorentzon, based on the non-fiction book Spotify Untold

    ", + "content": "

    After doing the same for Disney, Spotify has launched a Netflix hub bringing all of the streaming service's soundtracks, playlists and podcasts into one place. While many of Netflix's soundtracks were already on Spotify, the new feature puts all content related to the service in one place. 

    That includes playlists and soundtracks from series and films like La Casa De Papel, Narcos: Mexico, Outer Banks, Squid Game, tick, tick... Boom! and Cowboy Bebop. It also features podcasts around Netflix content like Okay, Now Listen, Netflix Is A Daily Joke, 10/10 Would Recommend and The Crown: The Official Podcast

    Spotify launched some special material for the hub as well, including an enhanced album for the western movie The Harder They Fall and a refreshed content destination for La Casa De Papel. The latter also features a mobile-only character matching experience putting together La Banda characters and soundtracks. 

    Feature-wise, the Netflix hub goes beyond what Spotify offered for Disney, though the latter's content is more iconic thanks to soundtracks from properties like Star Wars and Toy Story 4. In a case of reverse synergy, Netflix will soon release a Spotify drama focusing on co-founders Daniel Ek and Martin Lorentzon, based on the non-fiction book Spotify Untold

    ", + "category": "Movies", + "link": "https://www.engadget.com/spotify-unveils-a-central-netflix-hub-for-soundtracks-playlists-and-podcasts-130054304.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Tue, 23 Nov 2021 13:00:54 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "T-Mobile made a magenta Lite-Brite with help from Hasbro", + "description": "

    T-Mobile and Hasbro have released a limited edition Lite-Brite that comes with 200 magenta pegs and custom templates related to the carrier, including its 5G logo. You may never have read the words T-Mobile and Lite Brite in the same sentence before this, and even T-Mobile knows the partnership is a bit odd. In its announcement, the carrier said "You may be thinking... 5G... toy from 1967... what the eff? And you wouldn't be wrong." 

    As for why you'd want a T-Mobile Lite-Brite, well, some of the kits come with prize packs, and you're not exactly stuck with just magenta pegs and the carrier's templates. The kit has 412 pegs in all — 212 are multicolored — and you can download and upload templates at the product's official website. 

    Four of the kits hide a Magenta Ticket, which gives winners two new 5G smartphones with a free year of T-Mobile Magenta Plus service. The prize pack includes an HD flatscreen TV with a free year of the carrier's Home Internet service, as well. In addition, the winners get an all-expense paid trip for two to an event of their choice to any of the three of the company's venues: T-Mobile Arena in Las Vegas, T-Mobile Center in Kansas City and T-Mobile Park in Seattle.

    If you want to get the Lite-Brite T-Mobile edition for the magenta pegs or for the chance to win those prizes, you can get one from the carrier's website for $20. It'll ship for free until Cyber Monday and will only be available for a limited time.

    ", + "content": "

    T-Mobile and Hasbro have released a limited edition Lite-Brite that comes with 200 magenta pegs and custom templates related to the carrier, including its 5G logo. You may never have read the words T-Mobile and Lite Brite in the same sentence before this, and even T-Mobile knows the partnership is a bit odd. In its announcement, the carrier said "You may be thinking... 5G... toy from 1967... what the eff? And you wouldn't be wrong." 

    As for why you'd want a T-Mobile Lite-Brite, well, some of the kits come with prize packs, and you're not exactly stuck with just magenta pegs and the carrier's templates. The kit has 412 pegs in all — 212 are multicolored — and you can download and upload templates at the product's official website. 

    Four of the kits hide a Magenta Ticket, which gives winners two new 5G smartphones with a free year of T-Mobile Magenta Plus service. The prize pack includes an HD flatscreen TV with a free year of the carrier's Home Internet service, as well. In addition, the winners get an all-expense paid trip for two to an event of their choice to any of the three of the company's venues: T-Mobile Arena in Las Vegas, T-Mobile Center in Kansas City and T-Mobile Park in Seattle.

    If you want to get the Lite-Brite T-Mobile edition for the magenta pegs or for the chance to win those prizes, you can get one from the carrier's website for $20. It'll ship for free until Cyber Monday and will only be available for a limited time.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/t-mobile-hasbro-lite-brite-130010229.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Tue, 23 Nov 2021 13:00:10 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon and Apple fined $228 million in Italy for unfairly restricting Beats sales", + "description": "

    The Italian Competition Authority (AGCM) has fined Apple and Amazon a combined total of €203.2 million (US$228 million) after an antitrust investigation involving the reselling of Beats products. According to the watchdog, the two companies signed an agreement in 2018 that would prohibit both official and unofficial resellers of Apple and Apple-owned Beats products on Amazon's Italian website. That agreement allegedly contained contractual clauses that only allowed Amazon itself and select sellers "chosen individually and in a discriminatory way" to sell those items.

    AGCM said in its announcement that those clauses violate article 101 of the Treaty on the Functioning of the European Union. In addition, the watchdog said the agreement restricted cross-border sales, ultimately limiting buyers' options and depriving them of the discounts typically offered by third-party sellers. The Italian authority opened the antitrust case against both companies in 2020 and even searched their offices in the country. 

    A total of 70 percent of consumer electronics purchases in the country are from Amazon, AGCM explained, and 40 percent were purchases from sellers that use the website as their main platform. That's why it's essential for Amazon to implement Italy's competition rules and ensure a level playing field for all sellers, as well as to ensure that buyers have access to more options.

    AGCM imposed a fine of €68.7 million (US$77 million) on Amazon and a fine of €134.5 million (US$151.2 million) on Apple. It also ordered the companies to end the restrictions and allow the sale of Apple and Beats products on Amazon Italy in "non-discriminatory manner." In a statement sent to Reuters, Amazon called the imposed penalty "disproportionate and unjustified." A spokesperson said in a statement:

    "We reject the suggestion that Amazon benefits by excluding sellers from our store, since our business model relies on their success. As a result of the agreement, Italian customers can find the latest Apple and Beats products on our store, benefiting from a catalogue that more than doubled, with better deals and faster shipping."

    Meanwhile, Apple denied any wrongdoing:

    "To ensure our customers purchase genuine products, we work closely with our reseller partners and have dedicated teams of experts around the world who work with law enforcement, customs and merchants to ensure only genuine Apple products are being sold."

    According to Reuters, both companies are planning to appeal the watchdog's penalty.

    ", + "content": "

    The Italian Competition Authority (AGCM) has fined Apple and Amazon a combined total of €203.2 million (US$228 million) after an antitrust investigation involving the reselling of Beats products. According to the watchdog, the two companies signed an agreement in 2018 that would prohibit both official and unofficial resellers of Apple and Apple-owned Beats products on Amazon's Italian website. That agreement allegedly contained contractual clauses that only allowed Amazon itself and select sellers "chosen individually and in a discriminatory way" to sell those items.

    AGCM said in its announcement that those clauses violate article 101 of the Treaty on the Functioning of the European Union. In addition, the watchdog said the agreement restricted cross-border sales, ultimately limiting buyers' options and depriving them of the discounts typically offered by third-party sellers. The Italian authority opened the antitrust case against both companies in 2020 and even searched their offices in the country. 

    A total of 70 percent of consumer electronics purchases in the country are from Amazon, AGCM explained, and 40 percent were purchases from sellers that use the website as their main platform. That's why it's essential for Amazon to implement Italy's competition rules and ensure a level playing field for all sellers, as well as to ensure that buyers have access to more options.

    AGCM imposed a fine of €68.7 million (US$77 million) on Amazon and a fine of €134.5 million (US$151.2 million) on Apple. It also ordered the companies to end the restrictions and allow the sale of Apple and Beats products on Amazon Italy in "non-discriminatory manner." In a statement sent to Reuters, Amazon called the imposed penalty "disproportionate and unjustified." A spokesperson said in a statement:

    "We reject the suggestion that Amazon benefits by excluding sellers from our store, since our business model relies on their success. As a result of the agreement, Italian customers can find the latest Apple and Beats products on our store, benefiting from a catalogue that more than doubled, with better deals and faster shipping."

    Meanwhile, Apple denied any wrongdoing:

    "To ensure our customers purchase genuine products, we work closely with our reseller partners and have dedicated teams of experts around the world who work with law enforcement, customs and merchants to ensure only genuine Apple products are being sold."

    According to Reuters, both companies are planning to appeal the watchdog's penalty.

    ", + "category": "Business", + "link": "https://www.engadget.com/amazon-apple-fined-228-million-italy-restricting-beats-sales-123325114.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Tue, 23 Nov 2021 12:33:25 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Morning After: Fitness smartwear that almost looks like normal gym gear", + "description": "

    The ups and downs of smartwear have continued for at least a decade — longer than I’ve written for Engadget. For all the progress, innovation and big-player involvement (Levi’s, Adidas, Ralph Lauren, Google and the rest), you rarely see a professional athlete — let alone a normal runner or gym-goer — in connected clothing. 

    Instead, we’ve all adopted smartwatches and fitness trackers, from cheap-and-cheerful step counters through to performance-level running watches and the Apple Watch Series. Is that ever going to change?

    \"The
    Engadget

    I’ve been testing out a new generation of smart clothing from Prevayl, a UK-based company looking to strike the middle ground between luxe gymwear brands, like Jacques, Lululemon, Castore and the rest, and tech companies that have tried to insert their sensors and technology into less...style-conscious garments. Prevayl's tiny sensor, which slides into an almost invisible pouch in the tee, tank and crop-tops, has a “clinical-grade” ECG, monitors breathing frequency, motion, body temperature. There’s even a bioimpedance sensor. 

    You can check out my early impressions here. I’m still intrigued in the future of smartwear, but the pricing (and need for multiple items) remains the big challenge. I don’t need to wash my fitness tracker band after every workout session. That can’t be said for smartwear.

    — Mat Smith 

     

    Nintendo's Zelda-themed Game & Watch is a love letter to Link's 8-bit origins

    If you loved the oldest Zelda games, this tiny console is worth $50.

    \"The
    Engadget

    For the 35th anniversary of Super Mario Bros. last year, Nintendo released a special edition Game & Watch. Nintendo’s pulling the same trick this year with a 35th-anniversary Legend of Zelda-themed Game & Watch that just went on sale. And like last year’s model, it includes a color screen and full games, but the selection is more generous. It includes the original The Legend of Zelda and Zelda II: The Adventure of Link, both originally released on the NES. It also includes The Legend of Zelda: Link’s Awakening, which came out on the Game Boy in 1993. It’s for die-hard Zelda fans, yes. 

    Continue reading.

    Rolls-Royce's all-electric airplane smashes record with 387.4MPH top speed

    It also hit altitude and average speed records, the company claims.

    \"The
    John M Dibbs/Rolls Royce

    Just two months after its maiden flight, Rolls-Royce's Spirit of Innovation has hit a top speed of 387.4MPH, tentatively smashing the speed record for electric airplanes, Gizmodo has reported. It also claimed the top speed of 345.4MPH over a three-kilometer course and lowest time to a 3,000-meter altitude, doing so in just 202 seconds. The records have yet to be certified, but if the 345.5MPH speed stands, it would beat the current record of 213MPH.

    Continue reading.

    Ridley Scott says a Blade Runner TV series is in development

    A script has been written for the pilot.

    Blade Runner director Ridley Scott has confirmed a TV show based on the sci-fi classic is in the works. The filmmaker also mentioned in an interview on BBC Radio 4's Today that work is progressing on the Alien series. Scott didn't provide any insight about who's involved with the Blade Runner series — or how it ties into his movie or the sequel.

    Continue reading.

    Uber Eats users in Ontario can now buy cannabis through the app

    But orders are for pickup only.

    Uber Eats is moving into the cannabis market. Starting today, users in Ontario can place an order at retailer Tokyo Smoke through the app. Don't expect an Uber driver to drop off joints, though — it's pickup-only for the time being.

    Users will need to confirm they're of legal age before they can make their purchase, and orders will be ready for pickup within an hour. At the store, buyers will need to present their ID to Tokyo Smoke staff to prove they're aged 19 or older.

    Continue reading. 

     

     

    The biggest news stories and deals you might have missed

    Personalized warnings could reduce hate speech on Twitter, researchers say

    Analogue's Pocket handheld starts shipping on December 13th

    Black Friday 2021: The best deals on Apple AirPods you can get

    Black Friday 2021: Epson's excellent Home Cinema 4100 4K Pro projector is $500 off right now

    Black Friday 2021: GameStop's Black deals include all-time low prices on some Switch games

    ", + "content": "

    The ups and downs of smartwear have continued for at least a decade — longer than I’ve written for Engadget. For all the progress, innovation and big-player involvement (Levi’s, Adidas, Ralph Lauren, Google and the rest), you rarely see a professional athlete — let alone a normal runner or gym-goer — in connected clothing. 

    Instead, we’ve all adopted smartwatches and fitness trackers, from cheap-and-cheerful step counters through to performance-level running watches and the Apple Watch Series. Is that ever going to change?

    \"The
    Engadget

    I’ve been testing out a new generation of smart clothing from Prevayl, a UK-based company looking to strike the middle ground between luxe gymwear brands, like Jacques, Lululemon, Castore and the rest, and tech companies that have tried to insert their sensors and technology into less...style-conscious garments. Prevayl's tiny sensor, which slides into an almost invisible pouch in the tee, tank and crop-tops, has a “clinical-grade” ECG, monitors breathing frequency, motion, body temperature. There’s even a bioimpedance sensor. 

    You can check out my early impressions here. I’m still intrigued in the future of smartwear, but the pricing (and need for multiple items) remains the big challenge. I don’t need to wash my fitness tracker band after every workout session. That can’t be said for smartwear.

    — Mat Smith 

     

    Nintendo's Zelda-themed Game & Watch is a love letter to Link's 8-bit origins

    If you loved the oldest Zelda games, this tiny console is worth $50.

    \"The
    Engadget

    For the 35th anniversary of Super Mario Bros. last year, Nintendo released a special edition Game & Watch. Nintendo’s pulling the same trick this year with a 35th-anniversary Legend of Zelda-themed Game & Watch that just went on sale. And like last year’s model, it includes a color screen and full games, but the selection is more generous. It includes the original The Legend of Zelda and Zelda II: The Adventure of Link, both originally released on the NES. It also includes The Legend of Zelda: Link’s Awakening, which came out on the Game Boy in 1993. It’s for die-hard Zelda fans, yes. 

    Continue reading.

    Rolls-Royce's all-electric airplane smashes record with 387.4MPH top speed

    It also hit altitude and average speed records, the company claims.

    \"The
    John M Dibbs/Rolls Royce

    Just two months after its maiden flight, Rolls-Royce's Spirit of Innovation has hit a top speed of 387.4MPH, tentatively smashing the speed record for electric airplanes, Gizmodo has reported. It also claimed the top speed of 345.4MPH over a three-kilometer course and lowest time to a 3,000-meter altitude, doing so in just 202 seconds. The records have yet to be certified, but if the 345.5MPH speed stands, it would beat the current record of 213MPH.

    Continue reading.

    Ridley Scott says a Blade Runner TV series is in development

    A script has been written for the pilot.

    Blade Runner director Ridley Scott has confirmed a TV show based on the sci-fi classic is in the works. The filmmaker also mentioned in an interview on BBC Radio 4's Today that work is progressing on the Alien series. Scott didn't provide any insight about who's involved with the Blade Runner series — or how it ties into his movie or the sequel.

    Continue reading.

    Uber Eats users in Ontario can now buy cannabis through the app

    But orders are for pickup only.

    Uber Eats is moving into the cannabis market. Starting today, users in Ontario can place an order at retailer Tokyo Smoke through the app. Don't expect an Uber driver to drop off joints, though — it's pickup-only for the time being.

    Users will need to confirm they're of legal age before they can make their purchase, and orders will be ready for pickup within an hour. At the store, buyers will need to present their ID to Tokyo Smoke staff to prove they're aged 19 or older.

    Continue reading. 

     

     

    The biggest news stories and deals you might have missed

    Personalized warnings could reduce hate speech on Twitter, researchers say

    Analogue's Pocket handheld starts shipping on December 13th

    Black Friday 2021: The best deals on Apple AirPods you can get

    Black Friday 2021: Epson's excellent Home Cinema 4100 4K Pro projector is $500 off right now

    Black Friday 2021: GameStop's Black deals include all-time low prices on some Switch games

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/the-morning-after-fitness-smartwear-that-looks-like-normal-gym-gear-121510160.html?src=rss", + "creator": "Mat Smith", + "pubDate": "Tue, 23 Nov 2021 12:15:10 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tile to be acquired by family location sharing service Life360", + "description": "

    Tile first arrived by a crowdfunding campaign and popularized the idea of using tags to locate lost items — but recently, it has faced formidable competition from the likes of Apple's AirTags. Now, Tile has been acquired family tracking company Life360 for $205 million in a move that could give it the resources to better contend with rivals. It will continue to operate with the same branding under current Tile CEO CJ Prober, Life360 announced.

    Life360 said the acquisition will help it expand beyond family tracking to letting people "locate the people, pets, and things they love." It noted that the addition of Life360's 33 million smartphone users will increase the reach of Tile's Finding Network by around 10x. 

    At the same time, Life360 will gain access to consumers in 27,000 retail stores where Tile trackers are sold. Tile's technology is also used in over a million third-party devices, ranging from wireless earphones to dog collars. The company will also acquire Tile's subscribers, boosting its total paid subscriber base by 45 percent to 1.6 million users.

    The company emphasized that both Life360 and Tile are "platform agnostic," working on both iOS and Android. The subtext is that Apple's AirTags only work on iOS, though Apple does have plans to introduce Android compatibility by year's end. Last year, Tile filed an EU complaint against Apple for alleged anticompetitive behavior, claiming the iOS 13.5 update made its app harder to use. 

    There's certainly synergy between the companies, as Life360 has operated as a multi-platform 'Find My Friends'-style service for years. Parents in the US, especially, have used the devices to keep track of their kids — so adding the ability to track objects and gadgets makes a lot of sense. 

    ", + "content": "

    Tile first arrived by a crowdfunding campaign and popularized the idea of using tags to locate lost items — but recently, it has faced formidable competition from the likes of Apple's AirTags. Now, Tile has been acquired family tracking company Life360 for $205 million in a move that could give it the resources to better contend with rivals. It will continue to operate with the same branding under current Tile CEO CJ Prober, Life360 announced.

    Life360 said the acquisition will help it expand beyond family tracking to letting people "locate the people, pets, and things they love." It noted that the addition of Life360's 33 million smartphone users will increase the reach of Tile's Finding Network by around 10x. 

    At the same time, Life360 will gain access to consumers in 27,000 retail stores where Tile trackers are sold. Tile's technology is also used in over a million third-party devices, ranging from wireless earphones to dog collars. The company will also acquire Tile's subscribers, boosting its total paid subscriber base by 45 percent to 1.6 million users.

    The company emphasized that both Life360 and Tile are "platform agnostic," working on both iOS and Android. The subtext is that Apple's AirTags only work on iOS, though Apple does have plans to introduce Android compatibility by year's end. Last year, Tile filed an EU complaint against Apple for alleged anticompetitive behavior, claiming the iOS 13.5 update made its app harder to use. 

    There's certainly synergy between the companies, as Life360 has operated as a multi-platform 'Find My Friends'-style service for years. Parents in the US, especially, have used the devices to keep track of their kids — so adding the ability to track objects and gadgets makes a lot of sense. 

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/tile-to-be-acquired-by-family-location-sharing-service-life-360-103400952.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Tue, 23 Nov 2021 10:34:00 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Dodge to phase out its Challenger and Charger muscle cars in shift towards EVs", + "description": "

    Dodge is phasing out its gas-powered Charger and Challenger muscle cars by 2024 in favor of electric muscle cars, Motor Trend has reported. The company plans to introduce its first concept EV by 2022, followed by a plug-in hybrid and a third type of unknown vehicle. That follows Dodge's announcement in July that it would introduce its first "eMuscle" car by 2024, promising it will "tear up the streets, not the planet." 

    At the time, the company and its parent Stellantis didn't say what would happen to its internal combustion engine (ICE) vehicles, but it has now clarified that. "These cars that you know today will go out of production by the time we get to 2024," Dodge Brand CEO Tim Kuniskis told Motor Trend in an interview.

    I'm juggling knives because I've gotta keep two different huge factions happy because at some point those two factions will converge.

    The new electric vehicles may use the '60s triangular Fratzog name and logo to differentiate them. The first concept arriving in 2022 will be an electric muscle car, revealed in the next four or five months as a high-performance, drivable vehicle. The next model, a plug-in hybrid, will be a new car but not a Durango as some expected, according to Kuniskis. The third vehicle is unknown, but will be a "very, very, very, significant car at the end of the year," he added. 

    Diehard muscle car fans might not take the news well, though they can't deny the superior performance of EVs. Dodge previously advertised the Challenger in "Demon" trim as the quickest 0-100MPH production car in the world, with the rather large caveat that it "excludes non-mass production vehicles [supercars] and hybrids/electric."

    Kuniskis acknowledged that the announcement could create friction. "I'm juggling knives because I've gotta keep two different huge factions happy because at some point those two factions will converge," he said. "The problem is no one knows when they will converge. My job is to provide confidence, over the next 24 months, that we're gonna do this."

    ", + "content": "

    Dodge is phasing out its gas-powered Charger and Challenger muscle cars by 2024 in favor of electric muscle cars, Motor Trend has reported. The company plans to introduce its first concept EV by 2022, followed by a plug-in hybrid and a third type of unknown vehicle. That follows Dodge's announcement in July that it would introduce its first "eMuscle" car by 2024, promising it will "tear up the streets, not the planet." 

    At the time, the company and its parent Stellantis didn't say what would happen to its internal combustion engine (ICE) vehicles, but it has now clarified that. "These cars that you know today will go out of production by the time we get to 2024," Dodge Brand CEO Tim Kuniskis told Motor Trend in an interview.

    I'm juggling knives because I've gotta keep two different huge factions happy because at some point those two factions will converge.

    The new electric vehicles may use the '60s triangular Fratzog name and logo to differentiate them. The first concept arriving in 2022 will be an electric muscle car, revealed in the next four or five months as a high-performance, drivable vehicle. The next model, a plug-in hybrid, will be a new car but not a Durango as some expected, according to Kuniskis. The third vehicle is unknown, but will be a "very, very, very, significant car at the end of the year," he added. 

    Diehard muscle car fans might not take the news well, though they can't deny the superior performance of EVs. Dodge previously advertised the Challenger in "Demon" trim as the quickest 0-100MPH production car in the world, with the rather large caveat that it "excludes non-mass production vehicles [supercars] and hybrids/electric."

    Kuniskis acknowledged that the announcement could create friction. "I'm juggling knives because I've gotta keep two different huge factions happy because at some point those two factions will converge," he said. "The problem is no one knows when they will converge. My job is to provide confidence, over the next 24 months, that we're gonna do this."

    ", + "category": "Personal Finance - Lifestyle", + "link": "https://www.engadget.com/dodge-is-killing-its-challenger-and-charger-muscle-cars-in-favor-of-e-vs-085839976.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Tue, 23 Nov 2021 08:58:39 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "TikTok's TV app is now out for more TV devices in the US and Canada", + "description": "

    TikTok used Amazon's Fire TV to test its app for big screens last year, so it came as no surprise that it officially launched its application on the platform earlier this month in the US and Canada. Now, the video-focused social network has expanded the app's availability and rolled it out to Google TV, other Android TV devices, LG smart TVs and Samsung smart TVs. 

    While the app will still play the bite-size videos in their original vertical form — a given, because TikTok clips are shot with mobile users in mind — the service designed it to provide a big-screen viewing experience for the whole family. The elements you see superimposed on the video itself when you visit TikTok on mobile have been rearranged to take advantage of a TV's bigger display and horizontal orientation. Like its mobile counterpart, the TV app will give you access to the For You and Following feeds if you sign in to your account. You'll also find a Discover page to find more videos and creators you don't already follow. 

    \"TikTok\"
    TikTok

    When TikTok announced that it's testing a TV app on the Fire TV last year, Head of Global Marketing Nick Tran said in a statement:

    "People are looking for community right now and TikTok is connecting users to content and people that resonate and are meaningful to them. We've been thinking through what the adoption of streaming devices like Fire TV means for connecting with our users and how we can offer them more dynamic experiences, and we feel bringing our content to the TV to some extent is a natural next step."

    ", + "content": "

    TikTok used Amazon's Fire TV to test its app for big screens last year, so it came as no surprise that it officially launched its application on the platform earlier this month in the US and Canada. Now, the video-focused social network has expanded the app's availability and rolled it out to Google TV, other Android TV devices, LG smart TVs and Samsung smart TVs. 

    While the app will still play the bite-size videos in their original vertical form — a given, because TikTok clips are shot with mobile users in mind — the service designed it to provide a big-screen viewing experience for the whole family. The elements you see superimposed on the video itself when you visit TikTok on mobile have been rearranged to take advantage of a TV's bigger display and horizontal orientation. Like its mobile counterpart, the TV app will give you access to the For You and Following feeds if you sign in to your account. You'll also find a Discover page to find more videos and creators you don't already follow. 

    \"TikTok\"
    TikTok

    When TikTok announced that it's testing a TV app on the Fire TV last year, Head of Global Marketing Nick Tran said in a statement:

    "People are looking for community right now and TikTok is connecting users to content and people that resonate and are meaningful to them. We've been thinking through what the adoption of streaming devices like Fire TV means for connecting with our users and how we can offer them more dynamic experiences, and we feel bringing our content to the TV to some extent is a natural next step."

    ", + "category": "Software", + "link": "https://www.engadget.com/tiktok-tv-app-google-tv-samsung-lg-smart-tv-065700895.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Tue, 23 Nov 2021 06:57:00 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Roku’s latest update is causing issues with the YouTube TV app", + "description": "

    If the YouTube TV app on your Roku device isn’t working properly, you’re not the only one. Over on the company’s community forums, there are multiple reports of the latest Roku OS update causing the YouTube TV app to freeze after several minutes of use. In a tweet spotted by Gizmodo, an official YouTube support account said Google was aware of the issue and working on a potential solution.

    “Sorry to hear about this — just to clarify, are you having this issue on Roku? If yes, we’re already aware of this issue, and our team is currently working on a fix,” the account said. “We’ll let you know as soon as we receive an update. Let us know if it’s something different.”

    Sorry to hear about this – just to clarify, are you having this issue on Roku? If yes, we're already aware of this issue, and our team is currently working on a fix. We'll let you know as soon as we receive an update. Let us know if it's something different.

    — TeamYouTube (@TeamYouTube) November 20, 2021

    At the moment, it’s unclear if the bug is the latest development in the ongoing feud between Google and Roku. Back in April, the two started publicly accusing one another of attempting to renegotiate their distribution deal in bad faith. When we reached out to Google, the company pointed us to the above tweet without offering any additional context. We've also reached out to Roku for comment.

    As 9to5Google points out, what makes the situation worse is that one potential workaround to the problem doesn’t exist. Normally, in situations like this one you might uninstall the affected app and reinstall it to see if that fixes that problem. That hasn’t been possible since Roku pulled the YouTube TV app from its store back in April.

    ", + "content": "

    If the YouTube TV app on your Roku device isn’t working properly, you’re not the only one. Over on the company’s community forums, there are multiple reports of the latest Roku OS update causing the YouTube TV app to freeze after several minutes of use. In a tweet spotted by Gizmodo, an official YouTube support account said Google was aware of the issue and working on a potential solution.

    “Sorry to hear about this — just to clarify, are you having this issue on Roku? If yes, we’re already aware of this issue, and our team is currently working on a fix,” the account said. “We’ll let you know as soon as we receive an update. Let us know if it’s something different.”

    Sorry to hear about this – just to clarify, are you having this issue on Roku? If yes, we're already aware of this issue, and our team is currently working on a fix. We'll let you know as soon as we receive an update. Let us know if it's something different.

    — TeamYouTube (@TeamYouTube) November 20, 2021

    At the moment, it’s unclear if the bug is the latest development in the ongoing feud between Google and Roku. Back in April, the two started publicly accusing one another of attempting to renegotiate their distribution deal in bad faith. When we reached out to Google, the company pointed us to the above tweet without offering any additional context. We've also reached out to Roku for comment.

    As 9to5Google points out, what makes the situation worse is that one potential workaround to the problem doesn’t exist. Normally, in situations like this one you might uninstall the affected app and reinstall it to see if that fixes that problem. That hasn’t been possible since Roku pulled the YouTube TV app from its store back in April.

    ", + "category": "Software", + "link": "https://www.engadget.com/roku-os-youtube-tv-bug-230128464.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Mon, 22 Nov 2021 23:01:28 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "NASA delays James Webb Space Telescope launch to December 22nd", + "description": "

    NASA’s oft-delayed James Webb Space Telescope has suffered yet another setback. While it was most recently scheduled to lift off on December 18th, it now won’t launch until December 22nd at the earliest. The delay is due to an incident that occurred while technicians were preparing to attach the telescope to the Ariane 5 rocket that will ferry it into space.

    “A sudden, unplanned release of a clamp band — which secures Webb to the launch vehicle adapter — caused a vibration throughout the observatory,” according to NASA. It’s now conducting additional testing to ensure the telescope wasn’t damaged during the incident. NASA says it will provide an update on the situation by the end of the week.

    The successor to the Hubble Space Telescope has been plagued by delays. When development started in 1996, NASA expected to deploy the JWST in 2007. However, by 2005, it went back to the drawing board. The telescope was then deemed complete in 2016 but then delayed again due to its complex construction. It was only fully assembled in 2019 and then the pandemic caused yet another round of setbacks. Given the history of the JWST, you can understand why NASA wants to play it safe.

    ", + "content": "

    NASA’s oft-delayed James Webb Space Telescope has suffered yet another setback. While it was most recently scheduled to lift off on December 18th, it now won’t launch until December 22nd at the earliest. The delay is due to an incident that occurred while technicians were preparing to attach the telescope to the Ariane 5 rocket that will ferry it into space.

    “A sudden, unplanned release of a clamp band — which secures Webb to the launch vehicle adapter — caused a vibration throughout the observatory,” according to NASA. It’s now conducting additional testing to ensure the telescope wasn’t damaged during the incident. NASA says it will provide an update on the situation by the end of the week.

    The successor to the Hubble Space Telescope has been plagued by delays. When development started in 1996, NASA expected to deploy the JWST in 2007. However, by 2005, it went back to the drawing board. The telescope was then deemed complete in 2016 but then delayed again due to its complex construction. It was only fully assembled in 2019 and then the pandemic caused yet another round of setbacks. Given the history of the JWST, you can understand why NASA wants to play it safe.

    ", + "category": "Science", + "link": "https://www.engadget.com/james-webb-space-telescope-launch-delay-215323872.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Mon, 22 Nov 2021 21:53:23 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Twitter adds aliases to protect contributors to its Birdwatch fact check program", + "description": "

    Since the start of the year, Twitter has operated a pilot program called Birdwatch that has seen it crowdsource fact checks directly from other Twitter users. It’s now introducing a way for program participants to conceal their identity when they append a note to someone’s tweet. Starting today, the company says it will automatically generate aliases for new Birdwatch users that aren’t publicly associated with their Twitter accounts.

    🐦Introducing Birdwatch aliases!🔍 We want everyone to feel comfortable contributing to Birdwatch, and aliases let you write and rate notes without sharing your Twitter username. pic.twitter.com/ROlbpYvT7u

    — Birdwatch (@birdwatch) November 22, 2021

    “We want everyone to feel comfortable contributing to Birdwatch, and aliases let you write and rate notes without sharing your Twitter username,” the company said in a blog post. Its hope is that the feature will reduce bias by putting an emphasis on what people write in notes they leave instead of their identity. Citing recent research, it says aliases may also make people feel comfortable with “crossing partisan lines, or criticizing their own side without the prospect of peer pressure or retribution.”

    Alongside aliases, Twitter is also rolling out profile pages that will make it easy to see someone’s past Birdwatch contributions. The company says it’s doing this to ensure aliases don’t come “at the expense of accountability.” To that end, each note on someone’s public profile will include the current rating that contribution has earned, letting you know what the community thinks of it. Hopefully, that’s something that helps with the reliability problem that has dogged the program.

    For those who joined Birdwatch before today’s announcement, all their previous contributions will now fall under their new alias. Since some people may be able to infer a connection between someone’s Birdwatch profile and Twitter username based on fact checks they saw before today’s feature rollout, the company says program participants can DM the Birdwatch account about deleting their past contributions.

    ", + "content": "

    Since the start of the year, Twitter has operated a pilot program called Birdwatch that has seen it crowdsource fact checks directly from other Twitter users. It’s now introducing a way for program participants to conceal their identity when they append a note to someone’s tweet. Starting today, the company says it will automatically generate aliases for new Birdwatch users that aren’t publicly associated with their Twitter accounts.

    🐦Introducing Birdwatch aliases!🔍 We want everyone to feel comfortable contributing to Birdwatch, and aliases let you write and rate notes without sharing your Twitter username. pic.twitter.com/ROlbpYvT7u

    — Birdwatch (@birdwatch) November 22, 2021

    “We want everyone to feel comfortable contributing to Birdwatch, and aliases let you write and rate notes without sharing your Twitter username,” the company said in a blog post. Its hope is that the feature will reduce bias by putting an emphasis on what people write in notes they leave instead of their identity. Citing recent research, it says aliases may also make people feel comfortable with “crossing partisan lines, or criticizing their own side without the prospect of peer pressure or retribution.”

    Alongside aliases, Twitter is also rolling out profile pages that will make it easy to see someone’s past Birdwatch contributions. The company says it’s doing this to ensure aliases don’t come “at the expense of accountability.” To that end, each note on someone’s public profile will include the current rating that contribution has earned, letting you know what the community thinks of it. Hopefully, that’s something that helps with the reliability problem that has dogged the program.

    For those who joined Birdwatch before today’s announcement, all their previous contributions will now fall under their new alias. Since some people may be able to infer a connection between someone’s Birdwatch profile and Twitter username based on fact checks they saw before today’s feature rollout, the company says program participants can DM the Birdwatch account about deleting their past contributions.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/twitter-birdwatch-aliases-205849466.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Mon, 22 Nov 2021 20:58:49 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Activision Blizzard CEO will consider leaving if problems aren't solved quickly", + "description": "

    Bobby Kotick has reportedly said he may consider resigning as CEO of Activision Blizzard if he can’t fix the company’s cultural problems fast enough. According to The Wall Street Journal, Kotick held a meeting last week involving senior leadership at Blizzard Entertainment in which he said he was “ashamed” of some of the incidents that had occured at the studio under his tenure as CEO. He reportedly went to apologize for his handling of the current situation after he was told some employees would not be satisfied unless he were to resign. According to The Journal, Kotick left open the possibility of a resignation if he couldn’t fix the company’s problems “with speed.”

    We’ve reached out to Activision Blizzard for comment.

    Calls for Kotick to resign have steadily increased in frequency since The Wall Street Journalpublished a report last week which alleged he knew about many of the sexual misconduct incidents that had occured at the company over the years. According to the outlet, Kotick has also been accused of mistreating women himself, including one episode involving a voicemail in which he allegedly threatened to have his assistant killed.

    After the report came out on November 16th, Activision Blizzard employees staged a walkout and later started a petition calling for Kotick to be removed as CEO of the company. Since then, a group of activist shareholders has also called on Kotick to step down. In leaked emails, the heads of Sony Interactive Entertainment and Microsoft’s Xbox division both said they were troubled by the allegations that had come out of the publisher. In the latter case, Phil Spencer reportedly told employees he was “evaluating all aspects of our relationship with Activision Blizzard and making ongoing proactive adjustments.”

    One group Kotick has seemingly not lost support among is Activision Blizzard’s board of directors. On the same day The Journal published its report, the company’s board said it “remains confident that Bobby Kotick appropriately addressed workplace issues brought to his attention.” 

    ", + "content": "

    Bobby Kotick has reportedly said he may consider resigning as CEO of Activision Blizzard if he can’t fix the company’s cultural problems fast enough. According to The Wall Street Journal, Kotick held a meeting last week involving senior leadership at Blizzard Entertainment in which he said he was “ashamed” of some of the incidents that had occured at the studio under his tenure as CEO. He reportedly went to apologize for his handling of the current situation after he was told some employees would not be satisfied unless he were to resign. According to The Journal, Kotick left open the possibility of a resignation if he couldn’t fix the company’s problems “with speed.”

    We’ve reached out to Activision Blizzard for comment.

    Calls for Kotick to resign have steadily increased in frequency since The Wall Street Journalpublished a report last week which alleged he knew about many of the sexual misconduct incidents that had occured at the company over the years. According to the outlet, Kotick has also been accused of mistreating women himself, including one episode involving a voicemail in which he allegedly threatened to have his assistant killed.

    After the report came out on November 16th, Activision Blizzard employees staged a walkout and later started a petition calling for Kotick to be removed as CEO of the company. Since then, a group of activist shareholders has also called on Kotick to step down. In leaked emails, the heads of Sony Interactive Entertainment and Microsoft’s Xbox division both said they were troubled by the allegations that had come out of the publisher. In the latter case, Phil Spencer reportedly told employees he was “evaluating all aspects of our relationship with Activision Blizzard and making ongoing proactive adjustments.”

    One group Kotick has seemingly not lost support among is Activision Blizzard’s board of directors. On the same day The Journal published its report, the company’s board said it “remains confident that Bobby Kotick appropriately addressed workplace issues brought to his attention.” 

    ", + "category": "Finance Trading", + "link": "https://www.engadget.com/bobby-kotick-may-reportedly-consider-resigning-from-activision-blizzard-200100900.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Mon, 22 Nov 2021 20:01:00 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Hideo Kojima's studio has opened a film, TV and music division", + "description": "

    "Why doesn't Kojima just make movies?" It's a rhetorical question fans of Hideo Kojima have asked after every game since Metal Gear Solid. For better or worse, no other creator in the gaming industry has pushed the medium closer to film than Kojima. And after hinting his studio could venture into filmmaking, it's doing precisely that. 

    Per GamesIndustry.Biz, Kojima Productions has established a division dedicated to music, TV and film that will operate out of Los Angeles. Riley Russell, a former Sony Interactive executive, will lead the unit as it attempts to expand the cultural footprint of Kojima Productions.

    "The new division will be tasked with working with creative and talented professionals in television, music and film, as well as the more familiar games industry," Russell told the outlet. "The team has as its charter, the goal of expanding the reach and awareness of the properties now under development at Kojima Productions, and to make them even more a part of our popular culture."

    It's not surprising to see Kojima Productions expand beyond games. Kojima is known for his film-like approach to making games, and if you follow him on Twitter, you'll know he frequently tweets about his favorite albums and movies. The question now becomes how the studio plans to handle the expansion. Since reforming in 2015, Kojima Productions has released one game. You can push that number to two if you count the recent Director's Cut release of Death Stranding as a separate title. What would a film adaptation of Death Stranding look like? For that matter, what would an adaptation of any Kojima game look like? We may just find out soon enough.  

    ", + "content": "

    "Why doesn't Kojima just make movies?" It's a rhetorical question fans of Hideo Kojima have asked after every game since Metal Gear Solid. For better or worse, no other creator in the gaming industry has pushed the medium closer to film than Kojima. And after hinting his studio could venture into filmmaking, it's doing precisely that. 

    Per GamesIndustry.Biz, Kojima Productions has established a division dedicated to music, TV and film that will operate out of Los Angeles. Riley Russell, a former Sony Interactive executive, will lead the unit as it attempts to expand the cultural footprint of Kojima Productions.

    "The new division will be tasked with working with creative and talented professionals in television, music and film, as well as the more familiar games industry," Russell told the outlet. "The team has as its charter, the goal of expanding the reach and awareness of the properties now under development at Kojima Productions, and to make them even more a part of our popular culture."

    It's not surprising to see Kojima Productions expand beyond games. Kojima is known for his film-like approach to making games, and if you follow him on Twitter, you'll know he frequently tweets about his favorite albums and movies. The question now becomes how the studio plans to handle the expansion. Since reforming in 2015, Kojima Productions has released one game. You can push that number to two if you count the recent Director's Cut release of Death Stranding as a separate title. What would a film adaptation of Death Stranding look like? For that matter, what would an adaptation of any Kojima game look like? We may just find out soon enough.  

    ", + "category": "Movies", + "link": "https://www.engadget.com/kojima-productions-film-music-tv-division-183631759.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Mon, 22 Nov 2021 18:36:31 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "GameStop's Black Friday deals include all-time low prices on some Switch games", + "description": "

    GameStop's Black Friday sale is underway, and it includes some killer deals on Nintendo Switch games. Several have dropped from $60 to $27, which is the lowest price we've seen for them to date. The most notable title here is probably The Legend of Zelda: Breath of the Wild, which is widely considered one of the best games ever. If you haven't yet checked out the open-world adventure, now's a great time to do so ahead of the sequel's arrival in 2022.

    Several other Switch games have dropped to an all-time low of $27 at GameStop: Astral Chain, Xenoblade Chronicles, Paper Mario and Kirby Star Allies. As spotted by Nintendo Life, Fire Emblem: Three Houses, New Super Mario Bros U Deluxe and Splatoon 2 are also available at that price, which matches their respective previous lows.

    The physical and digital editions of each game are on sale. If you're buying one as a gift, a physical copy might be the nicer option, but it's worth noting that GameStop's free shipping doesn't kick in until you spend at least $35. So, you might want to treat yourself too.

    You can also find deals on PlayStation and Xbox games and services. Among them are a third off a year of PlayStation Plus and savings on games including Deathloop, Marvel's Guardians of the Galaxy, Far Cry 6 and FIFA 22.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    GameStop's Black Friday sale is underway, and it includes some killer deals on Nintendo Switch games. Several have dropped from $60 to $27, which is the lowest price we've seen for them to date. The most notable title here is probably The Legend of Zelda: Breath of the Wild, which is widely considered one of the best games ever. If you haven't yet checked out the open-world adventure, now's a great time to do so ahead of the sequel's arrival in 2022.

    Several other Switch games have dropped to an all-time low of $27 at GameStop: Astral Chain, Xenoblade Chronicles, Paper Mario and Kirby Star Allies. As spotted by Nintendo Life, Fire Emblem: Three Houses, New Super Mario Bros U Deluxe and Splatoon 2 are also available at that price, which matches their respective previous lows.

    The physical and digital editions of each game are on sale. If you're buying one as a gift, a physical copy might be the nicer option, but it's worth noting that GameStop's free shipping doesn't kick in until you spend at least $35. So, you might want to treat yourself too.

    You can also find deals on PlayStation and Xbox games and services. Among them are a third off a year of PlayStation Plus and savings on games including Deathloop, Marvel's Guardians of the Galaxy, Far Cry 6 and FIFA 22.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/gamestop-black-friday-sale-nintendo-switch-breath-of-the-wild-182127125.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Mon, 22 Nov 2021 18:21:27 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ridley Scott says a Blade Runner TV series is in development", + "description": "

    Blade Runner director Ridley Scott has confirmed that a TV show based on the sci-fi classic is in the works. The filmmaker also mentioned in an interview on BBC Radio 4's Today that work is progressing on the Alien series.

    "We've already written the pilot for Blade Runner.. and Alien has now been written for pilot"

    Director Ridley Scott, says the Blade Runner and Alien TV shows are in development and they are putting together the 'bible' of both projectshttps://t.co/niPYpaHxfG#R4Todaypic.twitter.com/4vTPGyZXtz

    — BBC Radio 4 Today (@BBCr4today) November 22, 2021

    "We're already into having written the pilot for Blade Runner, and the bible," Scott said. "So already presenting Blade Runner as a TV show, which should probably be the first 10 hours, and then Alien is a similar thing. Alien is now being written for pilot." A bible is a plan that screenwriters or producers put together to detail the world of a TV show beyond what's in the scripts, including information about the characters and plot.

    Scott didn't provide any insight about who's involved with the Blade Runner series or how it ties into his movie or the sequel, Blade Runner 2049, which was released in 2017. An anime spinoff, Blade Runner: Black Lotus, debuted on Adult Swim and Crunchyroll this month. In addition, Westwood’s classic 1997 adventure game Blade Runner is being remastered. So, Blade Runner fans have plenty to look forward to.

    Meanwhile, the Alien series was announced last December. Noah Hawley — who adapted another popular movie, Fargo, for TV — is the showrunner of the upcoming FX show. The series won't premiere until at least 2023, unfortunately.

    ", + "content": "

    Blade Runner director Ridley Scott has confirmed that a TV show based on the sci-fi classic is in the works. The filmmaker also mentioned in an interview on BBC Radio 4's Today that work is progressing on the Alien series.

    "We've already written the pilot for Blade Runner.. and Alien has now been written for pilot"

    Director Ridley Scott, says the Blade Runner and Alien TV shows are in development and they are putting together the 'bible' of both projectshttps://t.co/niPYpaHxfG#R4Todaypic.twitter.com/4vTPGyZXtz

    — BBC Radio 4 Today (@BBCr4today) November 22, 2021

    "We're already into having written the pilot for Blade Runner, and the bible," Scott said. "So already presenting Blade Runner as a TV show, which should probably be the first 10 hours, and then Alien is a similar thing. Alien is now being written for pilot." A bible is a plan that screenwriters or producers put together to detail the world of a TV show beyond what's in the scripts, including information about the characters and plot.

    Scott didn't provide any insight about who's involved with the Blade Runner series or how it ties into his movie or the sequel, Blade Runner 2049, which was released in 2017. An anime spinoff, Blade Runner: Black Lotus, debuted on Adult Swim and Crunchyroll this month. In addition, Westwood’s classic 1997 adventure game Blade Runner is being remastered. So, Blade Runner fans have plenty to look forward to.

    Meanwhile, the Alien series was announced last December. Noah Hawley — who adapted another popular movie, Fargo, for TV — is the showrunner of the upcoming FX show. The series won't premiere until at least 2023, unfortunately.

    ", + "category": "Media", + "link": "https://www.engadget.com/ridley-scott-blade-runner-tv-series-pilot-174023946.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Mon, 22 Nov 2021 17:40:23 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Twitter starts experimenting with shopping features in livestreams", + "description": "

    After its first serious foray into e-commerce this past summer, Twitter has started testing a new live shopping experience. The feature essentially allows users to both watch a broadcast and shop at the same time. The first live shopping stream will debut on November 28th at 7PM ET when Walmart hosts a Cyber Week-themed livestream with Jason Derulo. The songwriter will spend about 30 minutes talking about a variety of products, including electronics and home decor.

    “Livestreaming on Twitter gives businesses the power to engage with their most influential fans, and adding the ability to shop into this experience is a natural extension to attracting and engaging with receptive audiences,” Twitter said of the feature.

    Twitter has also started testing a “Shopping Manager” it says will help with the merchant onboarding experience. Additionally, the company is expanding the availability of the “Shop Module.” First announced in July, the tool allows brands and businesses to add a carousel to their profile that can highlight a selection of products. Over the coming weeks, the company says it will roll out the feature to more merchants in the US.

    Compared to other social media platforms, Twitter has been slow to embrace and add e-commerce features. The fact the company is now adding a host of shopping features suggests it sees e-eommerce as a big part of its future.

    ", + "content": "

    After its first serious foray into e-commerce this past summer, Twitter has started testing a new live shopping experience. The feature essentially allows users to both watch a broadcast and shop at the same time. The first live shopping stream will debut on November 28th at 7PM ET when Walmart hosts a Cyber Week-themed livestream with Jason Derulo. The songwriter will spend about 30 minutes talking about a variety of products, including electronics and home decor.

    “Livestreaming on Twitter gives businesses the power to engage with their most influential fans, and adding the ability to shop into this experience is a natural extension to attracting and engaging with receptive audiences,” Twitter said of the feature.

    Twitter has also started testing a “Shopping Manager” it says will help with the merchant onboarding experience. Additionally, the company is expanding the availability of the “Shop Module.” First announced in July, the tool allows brands and businesses to add a carousel to their profile that can highlight a selection of products. Over the coming weeks, the company says it will roll out the feature to more merchants in the US.

    Compared to other social media platforms, Twitter has been slow to embrace and add e-commerce features. The fact the company is now adding a host of shopping features suggests it sees e-eommerce as a big part of its future.

    ", + "category": "Media", + "link": "https://www.engadget.com/twitter-tests-live-shopping-broadcasts-173047423.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Mon, 22 Nov 2021 17:30:47 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Nintendo's Zelda-themed Game & Watch is a love letter to Link's 8-bit origins", + "description": "

    For the 35th anniversary of Super Mario Bros. last year, Nintendo released a special edition Game & Watch. (If you don’t know, Game & Watch were a line of handheld LCD devices from the ‘80s that could each play one very simple game.) Rather than featuring a single title, the Super Mario anniversary device had a full version of the original adventure as well as its Japan-only sequel, known in the West as Super Mario Bros.: The Lost Levels.

    Nintendo’s pulling the same trick this year with a 35th-anniversary Legend of Zelda-themed Game & Watch that just went on sale. And like last year’s model, it includes a color screen and full games, but the selection is more generous. It includes the original The Legend of Zelda and Zelda II: The Adventure of Link, both originally released on the NES. It also includes The Legend of Zelda: Link’s Awakening, which came out on the Game Boy in 1993, making this essentially a collection of Zelda’s early 8-bit adventures.

    I actually have never really played the first two Zelda games, though I do love Link’s Awakening. I played the Switch remaster a few years ago, but I haven’t touched the original game since my childhood — so when we got a chance to check this tiny device out, I was pretty thrilled to give that game a go.

    The Game & Watch itself is elegantly designed, but also feels rather cheap. It’s a tiny, palm-sized device with an eye-catching gold front, while the rest of the device is clad in green plastic. The front has a 2.36-inch color LCD screen that is very small but also looks great — and when playing Link’s Awakening, the upgrade from the Game Boy’s screen, which had no backlight, is dramatic. The D-Pad and buttons are nothing to write home about, but they’re good enough.

    On the right side of the device is an exceedingly modern USB-C port for charging its battery (which is pretty meager, so you’re going to need to do that a lot) and a power button; the speaker is on the left side. Finally, there’s a great Easter egg on the back: When the screen is on, the Triforce glows subtly through the green plastic. It’s a great little detail.

    \"The
    Nathan Ingraham / Engadget

    The Game & Watch has a few different modes: clock, timer and game. Pressing the “game” button lets you switch between the three Zelda titles, a Link-themed version of Vermin (from a 1980 Game & Watch), and the timer. The clock and timer are fairly self-explanatory, but their use of Zelda action as backgrounds is expertly done.

    On the clock, you’ll see the original Legend of Zelda, and the CPU-controlled Link essentially battles his way through the game over the course of the next 12 hours, defeating Ganon and rescuing Zelda at 11:59. If you’re so inclined, you can pick up the console and control the action from the clock screen at any time. Likewise, the timer features a handful of different scenes from Zelda II: The Adventure of Link that you can either watch or play yourself. The device’s packaging even converts into a little stand so you can use the Game & Watch as a desk clock.

    If you’re interested in this Game & Watch, though, you’re not in it for playing the clock: you want to relive Link’s earliest adventures on the smallest portable device you can find. Sure, you can play the NES Zelda collection on the Switch (or many other old Nintendo devices), but the Game & Watch’s miniature screen and old-school controls feel just right for these adventures. That’s doubly true with Link’s Awakening, since it was originally designed for portable systems.

    The games themselves are exactly as you remember them, with no quality of life enhancements or graphics updates; Link’s Awakening is in black and white, rather than the later “DX” version released for the Game Boy color. I’m not complaining, though, as these original versions seem right for the Game & Watch as a celebration of the series’ 8-bit origins.

    \"The
    Nathan Ingraham / Engadget

    How you feel about these games will depend on your history with the series. Like I said, I’ve never played the original NES Zelda adventures; I got on board with A Link to the Past in 1992. As such, I don’t have a lot of nostalgic love for the original pair, and playing the first game was an exercise in frustration. There’s barely a map, Link is slow while enemies are fast, and aiming is imprecise at best. I definitely died more than my fair share of times, which was rather humbling for this self-described Zelda expert. But hey, I shouldn’t have expected anything different from a 1986 game, and I started to get the hang of it soon enough.

    Link’s Awakening, on the other hand, was like visiting an old friend. Muscle and brain memory combined to have me slashing my way through it in no time at all, and it controlled just like I remembered. The A and B buttons may have felt rather squishy, but the D-pad was close enough to the one on my old Game Boy that I felt right at home. I don’t know if I’ll finish the NES Zelda games, but I’ll definitely play through Link’s Awakening.

    So who exactly is this $50 device for? The Super Mario Bros. Game & Watch was really only meant for people who loved that first Mario game, not necessarily people who love the Mario franchise in general. Likewise, The Legend of Zelda Game & Watch is best for someone who loved these original games growing up. It doesn’t even have to be all three, though — if one of them was a formative gaming experience, you’ll delight in getting a chance to play it on a cute little handheld. But someone raised on Twilight Princess or Breath of the Wild probably will find these a lot less essential.

    ", + "content": "

    For the 35th anniversary of Super Mario Bros. last year, Nintendo released a special edition Game & Watch. (If you don’t know, Game & Watch were a line of handheld LCD devices from the ‘80s that could each play one very simple game.) Rather than featuring a single title, the Super Mario anniversary device had a full version of the original adventure as well as its Japan-only sequel, known in the West as Super Mario Bros.: The Lost Levels.

    Nintendo’s pulling the same trick this year with a 35th-anniversary Legend of Zelda-themed Game & Watch that just went on sale. And like last year’s model, it includes a color screen and full games, but the selection is more generous. It includes the original The Legend of Zelda and Zelda II: The Adventure of Link, both originally released on the NES. It also includes The Legend of Zelda: Link’s Awakening, which came out on the Game Boy in 1993, making this essentially a collection of Zelda’s early 8-bit adventures.

    I actually have never really played the first two Zelda games, though I do love Link’s Awakening. I played the Switch remaster a few years ago, but I haven’t touched the original game since my childhood — so when we got a chance to check this tiny device out, I was pretty thrilled to give that game a go.

    The Game & Watch itself is elegantly designed, but also feels rather cheap. It’s a tiny, palm-sized device with an eye-catching gold front, while the rest of the device is clad in green plastic. The front has a 2.36-inch color LCD screen that is very small but also looks great — and when playing Link’s Awakening, the upgrade from the Game Boy’s screen, which had no backlight, is dramatic. The D-Pad and buttons are nothing to write home about, but they’re good enough.

    On the right side of the device is an exceedingly modern USB-C port for charging its battery (which is pretty meager, so you’re going to need to do that a lot) and a power button; the speaker is on the left side. Finally, there’s a great Easter egg on the back: When the screen is on, the Triforce glows subtly through the green plastic. It’s a great little detail.

    \"The
    Nathan Ingraham / Engadget

    The Game & Watch has a few different modes: clock, timer and game. Pressing the “game” button lets you switch between the three Zelda titles, a Link-themed version of Vermin (from a 1980 Game & Watch), and the timer. The clock and timer are fairly self-explanatory, but their use of Zelda action as backgrounds is expertly done.

    On the clock, you’ll see the original Legend of Zelda, and the CPU-controlled Link essentially battles his way through the game over the course of the next 12 hours, defeating Ganon and rescuing Zelda at 11:59. If you’re so inclined, you can pick up the console and control the action from the clock screen at any time. Likewise, the timer features a handful of different scenes from Zelda II: The Adventure of Link that you can either watch or play yourself. The device’s packaging even converts into a little stand so you can use the Game & Watch as a desk clock.

    If you’re interested in this Game & Watch, though, you’re not in it for playing the clock: you want to relive Link’s earliest adventures on the smallest portable device you can find. Sure, you can play the NES Zelda collection on the Switch (or many other old Nintendo devices), but the Game & Watch’s miniature screen and old-school controls feel just right for these adventures. That’s doubly true with Link’s Awakening, since it was originally designed for portable systems.

    The games themselves are exactly as you remember them, with no quality of life enhancements or graphics updates; Link’s Awakening is in black and white, rather than the later “DX” version released for the Game Boy color. I’m not complaining, though, as these original versions seem right for the Game & Watch as a celebration of the series’ 8-bit origins.

    \"The
    Nathan Ingraham / Engadget

    How you feel about these games will depend on your history with the series. Like I said, I’ve never played the original NES Zelda adventures; I got on board with A Link to the Past in 1992. As such, I don’t have a lot of nostalgic love for the original pair, and playing the first game was an exercise in frustration. There’s barely a map, Link is slow while enemies are fast, and aiming is imprecise at best. I definitely died more than my fair share of times, which was rather humbling for this self-described Zelda expert. But hey, I shouldn’t have expected anything different from a 1986 game, and I started to get the hang of it soon enough.

    Link’s Awakening, on the other hand, was like visiting an old friend. Muscle and brain memory combined to have me slashing my way through it in no time at all, and it controlled just like I remembered. The A and B buttons may have felt rather squishy, but the D-pad was close enough to the one on my old Game Boy that I felt right at home. I don’t know if I’ll finish the NES Zelda games, but I’ll definitely play through Link’s Awakening.

    So who exactly is this $50 device for? The Super Mario Bros. Game & Watch was really only meant for people who loved that first Mario game, not necessarily people who love the Mario franchise in general. Likewise, The Legend of Zelda Game & Watch is best for someone who loved these original games growing up. It doesn’t even have to be all three, though — if one of them was a formative gaming experience, you’ll delight in getting a chance to play it on a cute little handheld. But someone raised on Twilight Princess or Breath of the Wild probably will find these a lot less essential.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/legend-of-zelda-game-and-watch-review-173041656.html?src=rss", + "creator": "Nathan Ingraham", + "pubDate": "Mon, 22 Nov 2021 17:30:41 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Analogue's Pocket handheld starts shipping on December 13th", + "description": "

    After multiple delays, the Analogue Pocket finally has an exact release date. In an email the company sent to those who pre-ordered the handheld console, Analogue said it would start shipping the device on December 13th. It expects to deliver most pre-orders by the end of the year.

    Pocket is shipping on December 13th. An email has been sent out to everyone who has pre-ordered with details on address updating and more: https://t.co/Y5W6Qg7WVPpic.twitter.com/e7rJwhJikz

    — Analogue (@analogue) November 22, 2021

    If you expect you won’t be at home to receive your shipment during that time, Analogue recommends you email it about holding your order. In that case, your Pocket will ship sometime around January 3rd. Lastly, if you want to make any last-minute tweaks to your order, the final day to do so is November 28th.

    Getting the Pocket to market has been something of a journey for Analogue. When the company first announced the $199 handheld, with its ability to play Game Boy, Game Gear, Neo Geo Pocket Color and Atari Lynx games, it promised to deliver it sometime in 2020. But that was before the pandemic, and like with many other electronics, supply chain issues forced Analogue to adapt.

    ", + "content": "

    After multiple delays, the Analogue Pocket finally has an exact release date. In an email the company sent to those who pre-ordered the handheld console, Analogue said it would start shipping the device on December 13th. It expects to deliver most pre-orders by the end of the year.

    Pocket is shipping on December 13th. An email has been sent out to everyone who has pre-ordered with details on address updating and more: https://t.co/Y5W6Qg7WVPpic.twitter.com/e7rJwhJikz

    — Analogue (@analogue) November 22, 2021

    If you expect you won’t be at home to receive your shipment during that time, Analogue recommends you email it about holding your order. In that case, your Pocket will ship sometime around January 3rd. Lastly, if you want to make any last-minute tweaks to your order, the final day to do so is November 28th.

    Getting the Pocket to market has been something of a journey for Analogue. When the company first announced the $199 handheld, with its ability to play Game Boy, Game Gear, Neo Geo Pocket Color and Atari Lynx games, it promised to deliver it sometime in 2020. But that was before the pandemic, and like with many other electronics, supply chain issues forced Analogue to adapt.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/analogue-pocket-december-13-release-date-164548462.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Mon, 22 Nov 2021 16:45:48 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "iRobot's Roomba 694 is on sale for a record low of $179 right now", + "description": "

    If you're looking for an affordable robot vacuum to gift this year, one of iRobot's latest may do the trick. The Roomba 694, which came out earlier this year as a replacement for the Roomba 675, has dropped back down to an all-time low of $179. Normally $275, this model was already fairly inexpensive — especially for an iRobot device — but this Black Friday sale puts it in line with budget models from the likes of Anker and others.

    Buy Roomba 694 at Amazon - $179

    iRobot carried over most of the features from the Roomba 675 to the new 694, but the latest robo-vac has a sleeker design that features three physical buttons on its top. You can manually control the device using those buttons, or you can turn to the mobile app for that. When we tested the Roomba 694 for our budget robot vacuum guide, we found it to be good at cleaning both hard and carpeted floors, thanks in part to iRobot's three-stage cleaning system, and we liked its ability to focus on particularly dirty spots until they were completely clean. One of the on-device buttons even lets you activate a spot-cleaning mode if and when you want the device to clean only a targeted spot.

    The companion app is one of the Roomba 694's selling points. It's pretty easy to navigate, even for those who have never used a robot vacuum before. With the iRobot app and the device connected to WiFi, you can set cleaning schedule and remotely turn the device on and off. You can even use Alexa or Google Assistant commands to tell the robo-vac to start a cleaning job — and when it's finished, it'll automatically return to its base for a recharge. It should last roughly 90 minutes on a single charge, which should be enough time for it to clean one floor of your home (depending on how big it is) or the entirety of a small apartment.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    If you're looking for an affordable robot vacuum to gift this year, one of iRobot's latest may do the trick. The Roomba 694, which came out earlier this year as a replacement for the Roomba 675, has dropped back down to an all-time low of $179. Normally $275, this model was already fairly inexpensive — especially for an iRobot device — but this Black Friday sale puts it in line with budget models from the likes of Anker and others.

    Buy Roomba 694 at Amazon - $179

    iRobot carried over most of the features from the Roomba 675 to the new 694, but the latest robo-vac has a sleeker design that features three physical buttons on its top. You can manually control the device using those buttons, or you can turn to the mobile app for that. When we tested the Roomba 694 for our budget robot vacuum guide, we found it to be good at cleaning both hard and carpeted floors, thanks in part to iRobot's three-stage cleaning system, and we liked its ability to focus on particularly dirty spots until they were completely clean. One of the on-device buttons even lets you activate a spot-cleaning mode if and when you want the device to clean only a targeted spot.

    The companion app is one of the Roomba 694's selling points. It's pretty easy to navigate, even for those who have never used a robot vacuum before. With the iRobot app and the device connected to WiFi, you can set cleaning schedule and remotely turn the device on and off. You can even use Alexa or Google Assistant commands to tell the robo-vac to start a cleaning job — and when it's finished, it'll automatically return to its base for a recharge. It should last roughly 90 minutes on a single charge, which should be enough time for it to clean one floor of your home (depending on how big it is) or the entirety of a small apartment.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/irobots-roomba-694-is-on-sale-for-a-record-low-of-179-right-now-163552774.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Mon, 22 Nov 2021 16:35:52 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Uber Eats users in Ontario can now buy cannabis through the app", + "description": "

    Uber Eats is moving into the cannabis market. Starting today, users in Ontario can place an order at retailer Tokyo Smoke through the app. Don't expect an Uber driver to drop off joints, though. Cannabis orders are pickup-only for the time being.

    Users need to search for "cannabis" or "Tokyo Smoke" and confirm they're of legal age before they can make their purchase. Orders will be ready for pickup within an hour. At the store, buyers will need to present their ID to Tokyo Smoke staff to prove they're aged 19 or older. 

    With the help of the swift order turnaround, Uber and Tokyo Smoke hope they can steer business away from those who deal pot illegally. Uber says the underground market accounts for 40 percent of non-medical cannabis sales in Canada, where recreational use was legalized in 2018.

    Cannabis is a new market for Uber. The company didn't mention whether it will offer cannabis purchases in other provinces or via other retailers, or if it will eventually deliver orders. Uber has been making inroads into alcohol delivery, and CEO Dara Khosrowshahi said earlier this year the company might deliver cannabis in the US if it were legalized at federal level.

    ", + "content": "

    Uber Eats is moving into the cannabis market. Starting today, users in Ontario can place an order at retailer Tokyo Smoke through the app. Don't expect an Uber driver to drop off joints, though. Cannabis orders are pickup-only for the time being.

    Users need to search for "cannabis" or "Tokyo Smoke" and confirm they're of legal age before they can make their purchase. Orders will be ready for pickup within an hour. At the store, buyers will need to present their ID to Tokyo Smoke staff to prove they're aged 19 or older. 

    With the help of the swift order turnaround, Uber and Tokyo Smoke hope they can steer business away from those who deal pot illegally. Uber says the underground market accounts for 40 percent of non-medical cannabis sales in Canada, where recreational use was legalized in 2018.

    Cannabis is a new market for Uber. The company didn't mention whether it will offer cannabis purchases in other provinces or via other retailers, or if it will eventually deliver orders. Uber has been making inroads into alcohol delivery, and CEO Dara Khosrowshahi said earlier this year the company might deliver cannabis in the US if it were legalized at federal level.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/uber-eats-ontario-canada-cannabis-order-pickup-tokyo-smoke-161959413.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Mon, 22 Nov 2021 16:19:59 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sundance’s ‘biodigital’ film festival will try to bridge the gap between VR and reality", + "description": "

    Next year's Sundance Film Festival will mark a momentous return to Park City, Utah, after in-person festivities were cancelled last year. But Sundance isn't giving up on the digital platforms it used to stream films and bring cinephiles into a VR social hub last January. As part of its New Frontier exhibition, Sundance plans to expand The Spaceship, its virtual venue where attendees can chat together and explore VR and mixed reality art installations.

    In an effort to connect Sundance's in-person attendees with its global online audience, the Festival will also launch a "Biodigital Bridge" in Park City. Shari Frilot, Sundance's Senior Programmer and Chief Curator of New Frontier, describes it as a human-scale screen where physical and digital attendees will be able to interact with each other. Developed together with the immersive studio Active Theory, the bridge will offer basic chat support, but it's mostly a way for Sundance-goers to see how other attendees enjoy the event.

    \"Sundance
    Sundance New Frontier curator Shari Frilot.
    Sundance Film Festival

    Frilot says New Frontier has been pushing the concept of biodigital experiences for several years now, mostly through an exploration of how technology can intersect with our lives. Think of the way that an app like Uber, or even Google Maps, has reshaped the way we navigate physical spaces. But now that the pandemic has forced us to rely on our tech more than ever — Sundance wouldn't have been possible without it last year, after all — the term seems practically prescient. It's more than just a buzzword: Frilot says she's interested in exploring the technology that best serves humanity, or Team Human, as media theorist Douglas Rushkoff put it.

    Last year, I found Sundance's online platform last year to be a fascinating way to explore the festival and interact with fans. The core of the experience is the aforementioned Spaceship, which allows attendees on computers and VR headsets to mull about together. On a laptop or desktop, it resembles a stripped down version of Second Life. You walk around as simplistic avatars, and if you choose, you can also flip on your webcam, which fills your avatar's head with a live video feed. Since Sundance's platform is built on WebXR, a way to deliver virtual reality over the web, you can enter that same space in VR by slipping on any headset and visiting Sundance's website.

    \"Sundance
    Sundance Film Festival

    Compared to SXSW's VR platform, which looked beautiful but mostly felt like a virtual wasteland, it was clear that Sundance got something right last year. After isolating for most of 2020, being able to see many of my cinephile friends in VR made last year's Sundance feel special. So for next year, Frilot says, the festival is going even further. The Spaceship will be upgraded with a new Cinema House, where attendees on computers and VR headsets can view events livestreamed from Park City, as well as room-scale discussions.

    On the ground, Sundance will also have a new space called The Craft, which will let in-person attendees visit New Frontier exhibits, artist discussions and panels. There will also be VR headsets to use, though the festival is also encouraging people to bring their own gear if they've got it. Sundance hasn't finalized its list of New Frontier exhibits yet, but Frilot tells me many artists are optimizing for the Oculus Quest 2, so fest-goers can experience their work without being connected to a PC. But there will likely still be pieces that demand a serious VR rig. Sundance's famed Egyptian theater will also host some New Frontier performances, which will occur both on the ground and virtually on the Spaceship.

    \"Sundance's

    You'll need a $50 Sundance Explorer Pass to access all of these virtual goodies, which is double what it cost last year. It's a shame to see the price jump so quickly, but it's also reflective of the deeper commitment the festival is making in its digital platforms. Notably, the Explorer Pass is also open to people around the world, whereas Sundance's virtual screenings are limited to U.S. attendees.

    "[The virtual platform] is not just this thing that we're trying, we're actually doubling down on this," Frilot says. "This points to the vital landscape of how cinema and storytelling is going to manifest [going forward]. We're here to not only contribute to it, but to meet it and support it."

    ", + "content": "

    Next year's Sundance Film Festival will mark a momentous return to Park City, Utah, after in-person festivities were cancelled last year. But Sundance isn't giving up on the digital platforms it used to stream films and bring cinephiles into a VR social hub last January. As part of its New Frontier exhibition, Sundance plans to expand The Spaceship, its virtual venue where attendees can chat together and explore VR and mixed reality art installations.

    In an effort to connect Sundance's in-person attendees with its global online audience, the Festival will also launch a "Biodigital Bridge" in Park City. Shari Frilot, Sundance's Senior Programmer and Chief Curator of New Frontier, describes it as a human-scale screen where physical and digital attendees will be able to interact with each other. Developed together with the immersive studio Active Theory, the bridge will offer basic chat support, but it's mostly a way for Sundance-goers to see how other attendees enjoy the event.

    \"Sundance
    Sundance New Frontier curator Shari Frilot.
    Sundance Film Festival

    Frilot says New Frontier has been pushing the concept of biodigital experiences for several years now, mostly through an exploration of how technology can intersect with our lives. Think of the way that an app like Uber, or even Google Maps, has reshaped the way we navigate physical spaces. But now that the pandemic has forced us to rely on our tech more than ever — Sundance wouldn't have been possible without it last year, after all — the term seems practically prescient. It's more than just a buzzword: Frilot says she's interested in exploring the technology that best serves humanity, or Team Human, as media theorist Douglas Rushkoff put it.

    Last year, I found Sundance's online platform last year to be a fascinating way to explore the festival and interact with fans. The core of the experience is the aforementioned Spaceship, which allows attendees on computers and VR headsets to mull about together. On a laptop or desktop, it resembles a stripped down version of Second Life. You walk around as simplistic avatars, and if you choose, you can also flip on your webcam, which fills your avatar's head with a live video feed. Since Sundance's platform is built on WebXR, a way to deliver virtual reality over the web, you can enter that same space in VR by slipping on any headset and visiting Sundance's website.

    \"Sundance
    Sundance Film Festival

    Compared to SXSW's VR platform, which looked beautiful but mostly felt like a virtual wasteland, it was clear that Sundance got something right last year. After isolating for most of 2020, being able to see many of my cinephile friends in VR made last year's Sundance feel special. So for next year, Frilot says, the festival is going even further. The Spaceship will be upgraded with a new Cinema House, where attendees on computers and VR headsets can view events livestreamed from Park City, as well as room-scale discussions.

    On the ground, Sundance will also have a new space called The Craft, which will let in-person attendees visit New Frontier exhibits, artist discussions and panels. There will also be VR headsets to use, though the festival is also encouraging people to bring their own gear if they've got it. Sundance hasn't finalized its list of New Frontier exhibits yet, but Frilot tells me many artists are optimizing for the Oculus Quest 2, so fest-goers can experience their work without being connected to a PC. But there will likely still be pieces that demand a serious VR rig. Sundance's famed Egyptian theater will also host some New Frontier performances, which will occur both on the ground and virtually on the Spaceship.

    \"Sundance's

    You'll need a $50 Sundance Explorer Pass to access all of these virtual goodies, which is double what it cost last year. It's a shame to see the price jump so quickly, but it's also reflective of the deeper commitment the festival is making in its digital platforms. Notably, the Explorer Pass is also open to people around the world, whereas Sundance's virtual screenings are limited to U.S. attendees.

    "[The virtual platform] is not just this thing that we're trying, we're actually doubling down on this," Frilot says. "This points to the vital landscape of how cinema and storytelling is going to manifest [going forward]. We're here to not only contribute to it, but to meet it and support it."

    ", + "category": "Travel & Tourism", + "link": "https://www.engadget.com/sundance-vr-2022-film-festival-154350393.html?src=rss", + "creator": "Devindra Hardawar", + "pubDate": "Mon, 22 Nov 2021 15:43:50 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Instant Pot Duo Plus is already half off for Black Friday", + "description": "

    For those who haven't jumped on the Instant Pot bandwagon yet, the holiday shopping season is a great time to buy one because you'll find most models on sale. We're a few days out from Black Friday but the six-quart Instant Pot Duo Plus is already half off, bringing it down to a record low of $59. The higher-end Instant Pot Pro Crisp, which includes an air-fryer lid, is also down to an all-time low of $170.

    Buy Instant Pot Duo Plus at Amazon - $59Buy Instant Pot Pro Crisp at Amazon - $170

    The Instant Pot Duo Plus is better for most people, and certainly better for Instant Pot newbies. It combines nine cooking methods in one device: pressure cooking, slow cooking, sautéing, rice cooking, yogurt making, steaming, warming, sous vide cooking and sterilizing. It also has a number of quick-cooking modes, including slow cook, soup, eggs and rice, that can be activated with just one button press. All that is to say that this one device can prepare a bunch of different foods in various ways, without much hassle on the part of the home cook. The inner pot is made of food-grade stainless steel and is dishwasher safe, too, so cleanup is a breeze as well. And with this model's six-quart capacity, you'll be able to make a full meal for a mid-sized family or a group of visiting friends easily.

    Air frying is a big trend right now and thankfully you don't have to buy a dedicated air fryer to get those results. A few Instant Pot models have an air fry mode, but they require a special lid. The Instant Pot Pro Crisp is one such model that comes with the necessary lid (along with the standard multi-cooker lid) and it's $80 off right now, bringing it down to $170. This model has 11 cooking modes, the two included lids plus additional accessories like an air fryer basket and a dehydrating/broiling tray. It's also an eight-quart machine, making it even better than the discounted Duo Plus for large families and gatherings.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    For those who haven't jumped on the Instant Pot bandwagon yet, the holiday shopping season is a great time to buy one because you'll find most models on sale. We're a few days out from Black Friday but the six-quart Instant Pot Duo Plus is already half off, bringing it down to a record low of $59. The higher-end Instant Pot Pro Crisp, which includes an air-fryer lid, is also down to an all-time low of $170.

    Buy Instant Pot Duo Plus at Amazon - $59Buy Instant Pot Pro Crisp at Amazon - $170

    The Instant Pot Duo Plus is better for most people, and certainly better for Instant Pot newbies. It combines nine cooking methods in one device: pressure cooking, slow cooking, sautéing, rice cooking, yogurt making, steaming, warming, sous vide cooking and sterilizing. It also has a number of quick-cooking modes, including slow cook, soup, eggs and rice, that can be activated with just one button press. All that is to say that this one device can prepare a bunch of different foods in various ways, without much hassle on the part of the home cook. The inner pot is made of food-grade stainless steel and is dishwasher safe, too, so cleanup is a breeze as well. And with this model's six-quart capacity, you'll be able to make a full meal for a mid-sized family or a group of visiting friends easily.

    Air frying is a big trend right now and thankfully you don't have to buy a dedicated air fryer to get those results. A few Instant Pot models have an air fry mode, but they require a special lid. The Instant Pot Pro Crisp is one such model that comes with the necessary lid (along with the standard multi-cooker lid) and it's $80 off right now, bringing it down to $170. This model has 11 cooking modes, the two included lids plus additional accessories like an air fryer basket and a dehydrating/broiling tray. It's also an eight-quart machine, making it even better than the discounted Duo Plus for large families and gatherings.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/the-instant-pot-duo-plus-is-already-half-off-for-black-friday-151743555.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Mon, 22 Nov 2021 15:17:43 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Google Messages will display iMessage reactions as emoji", + "description": "

    The latest version of Google's Messages app seems to fix a long-standing issue for Android users: it finally displays reactions sent via Apple's iMessage correctly. As reported by 9to5 Google, the app now turns Tapbacks into emoji.

    Until now, Messages has converted Tapbacks into "fallback" text. So, if an Android user sent a message to an iPhone owner reading "see you in ten?" and their iOS buddy used the thumbs up reaction, Messages displayed that response as its own line of text (i.e. "liked 'see you in ten?'"). That often made conversations far messier than they needed to be, especially in group chats.

    Google brought emoji reactions to Messages on RCS-compatible Android devices last year, but there are some differences from iOS Tapbacks. While Apple uses a heart icon, a "ha ha" label and other punctuation, Google uses emoji. So, the Android app appears to convert the heart into a face with heart eyes, "ha ha" into a laughing face and so on. Some nuance might get lost in translation, but it's still far cleaner than Google's previous method of displaying Tapbacks.

    Word of the change first emerged via 9to5 Google's deep dive into the latest Messages beta. Google is now rolling out the update. We're not quite at the stage where iMessage is on Android, but at least Google is playing a little nicer with iOS.

    ", + "content": "

    The latest version of Google's Messages app seems to fix a long-standing issue for Android users: it finally displays reactions sent via Apple's iMessage correctly. As reported by 9to5 Google, the app now turns Tapbacks into emoji.

    Until now, Messages has converted Tapbacks into "fallback" text. So, if an Android user sent a message to an iPhone owner reading "see you in ten?" and their iOS buddy used the thumbs up reaction, Messages displayed that response as its own line of text (i.e. "liked 'see you in ten?'"). That often made conversations far messier than they needed to be, especially in group chats.

    Google brought emoji reactions to Messages on RCS-compatible Android devices last year, but there are some differences from iOS Tapbacks. While Apple uses a heart icon, a "ha ha" label and other punctuation, Google uses emoji. So, the Android app appears to convert the heart into a face with heart eyes, "ha ha" into a laughing face and so on. Some nuance might get lost in translation, but it's still far cleaner than Google's previous method of displaying Tapbacks.

    Word of the change first emerged via 9to5 Google's deep dive into the latest Messages beta. Google is now rolling out the update. We're not quite at the stage where iMessage is on Android, but at least Google is playing a little nicer with iOS.

    ", + "category": "Software", + "link": "https://www.engadget.com/google-messages-android-imessage-reactions-emoji-150947375.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Mon, 22 Nov 2021 15:09:47 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "GoDaddy discloses recent security breach that exposed 1.2 million accounts", + "description": "

    In disclosures to the Securities and Exchange Commission, web registrar and hosting company GoDaddy has revealed that it discovered it had been hacked. The company says that it discovered an “unauthorized third party” had gained access to its Managed WordPress hosting environment. Anything up to 1.2 million users have seen their email address and customer number exposed, as well as admin passwords for both WordPress sites hosted on the platform, plus passwords for sFTPs, databases and SSL private keys.

    The document says that GoDaddy believes that the breach first occurred on September 6th, 2021, and the investigation is currently ongoing. Demetrius Comes, Chief Information Security Officer, says that GoDaddy is currently working with law enforcement and a private IT forensics firm. In addition, it says that it has reset the relevant credentials and will work with users to issue new SSL certificates. Comes ends his statement by saying that the company will, perhaps a little too belatedly, “learn from this incident” and will take steps to prevent such a breach happening in future.

    This is far from the first time that GoDaddy has been spoken in the same sentence as a security breach in recent years. In 2018, an AWS error exposed data on GoDaddy servers, and in 2020, 28,000 user accounts were breached by an unauthorized individual. Later last year, GoDaddy was also referenced as part of a hack that took down a number of sites in the cryptocurrency space.

    ", + "content": "

    In disclosures to the Securities and Exchange Commission, web registrar and hosting company GoDaddy has revealed that it discovered it had been hacked. The company says that it discovered an “unauthorized third party” had gained access to its Managed WordPress hosting environment. Anything up to 1.2 million users have seen their email address and customer number exposed, as well as admin passwords for both WordPress sites hosted on the platform, plus passwords for sFTPs, databases and SSL private keys.

    The document says that GoDaddy believes that the breach first occurred on September 6th, 2021, and the investigation is currently ongoing. Demetrius Comes, Chief Information Security Officer, says that GoDaddy is currently working with law enforcement and a private IT forensics firm. In addition, it says that it has reset the relevant credentials and will work with users to issue new SSL certificates. Comes ends his statement by saying that the company will, perhaps a little too belatedly, “learn from this incident” and will take steps to prevent such a breach happening in future.

    This is far from the first time that GoDaddy has been spoken in the same sentence as a security breach in recent years. In 2018, an AWS error exposed data on GoDaddy servers, and in 2020, 28,000 user accounts were breached by an unauthorized individual. Later last year, GoDaddy was also referenced as part of a hack that took down a number of sites in the cryptocurrency space.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/godaddy-wordpress-security-issue-1-2-million-users-150142622.html?src=rss", + "creator": "Daniel Cooper", + "pubDate": "Mon, 22 Nov 2021 15:01:42 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A little-known company made smart fitness clothing you might actually wear at the gym", + "description": "

    Smartwear hasn’t quite had its moment. Innovators like Hexoskin and Omsignal, not to mention huge companies like Adidas and Ralph Lauren, have struggled to make an impact, demanding a lot of money for dedicated shirts and sensors, while contending with mediocre accuracy, polarizing style choices and not many compelling reasons to exist. As Adam Crofts, founder of the startup Prevayl, puts it, there have been a lot of lessons to learn from other companies’ mistakes. He’s hoping to get it right.

    Prevayl, whose first products launch in the UK later this month, combines a small tracking sensor with a line of fitness “smart” shirts, from crop tops through to vests and compression shirts, in addition to a companion app (of course) and an online community. Usually, that means something approximating a forum, but according to the company’s website, it’s created “a members-only private community designed for amateur athletes and the sporting elite.”

    It’s limited its first wave of users to 700 people. The audience seems to be, well, the fittest friends and acquaintances you know. The ones that know what they can benchpress, their fastest 5K time, or their VO2 Max. The latter is not a haircare product.

    Prevayl’s sweet spot is this area between amateur athlete and biometric obsessive, and it’s approaching the fitness tech fight with style. It has a slick promotional video featuring pro athletes, a moody black logo and a surprisingly slick, well designed app. (Seriously, it amazes me how poor most entry-level fitness apps can still look.) And the shirt? Well, it looks good on the athletes.

    \"Prevayl

    At a preview event in London, the team set me up in one of their first shirts, ahead of a planned launch early next year. It feels like a premium, luxury sports tee. It’s breathable, soft to the touch and tight. An elasticated band across the chest on all of the garments houses the conductive sensors, connected with graphene-augmented knitted electrodes. The fibers connecting these sensors look like metallic shoelaces and are machine washable. The shirt can go straight into a warm laundry wash; you just need to ensure you’ve taken the sensor out from the tiny pocket on the front of the clothing.

    \"Prevayl
    Mat Smith/Engadget

    There’s no need to fasten the sensor in place, as it comes in contact with the conductive fabric as soon as it’s in the front of the shirt. The sensor itself is an evolution from the chunky haphazard sensor unit design of smartwear’s past. The sensor has a plastic stopper that protects the USB-C charging port, while the charging cable is a small, machined aluminum clasp that magnetically folds in on itself.

    The company makes everything here in-house, and Crofts believes this is why Prevayl can do things differently. “Usually, it’s been tech [companies] trying to make clothing or visa versa.” The company’s approach to the clothing itself was “style led” design. Prevayl’s head office has entire machines and technicians dedicated to knitting the clothing part of the equation.

    Despite the sensor itself being so small, it’s packed with tech. There’s a “clinical-grade” ECG, that tracks your workout with four times the frequency of Polar heart rate monitors. It also monitors breathing frequency, motion and even body temperature. There’s even a bioimpedance sensor, which can be used for body composition scans, but there didn’t seem to be any feature that takes advantage of that yet. Prevayl is trying to do it all.

    The company puts all this biometric data to use through many of the features and guidance you’ve seen on other fitness devices and services. Like Whoop, the system can be used to gauge whether your body has fully recovered from a workout; like MyZone’s traffic light system, it color-codes your workout effort into five categories, measuring both how hard you’re working out and when your heart rate has recovered. This is all in addition to tracking your heart-rate, caloric burn and more. Within the app, you can even see an accurate cardiogram of your heart as it beats away.

    \"Prevayl
    Mat Smith/Engadget

    One of the bigger challenges, which many fitness trackers and wearables struggle with, is ensuring a decent level of accuracy. Crofts mentioned multiple times during our interview that the company has been obsessed with gathering data.

    The company worked with the UK’s University of Salford to validate the accuracy of its ECG unit. The team also recruited professional athletes, including British Olympic and Paralympic athletes and professional sportspeople, to test its prototypes and offer up crucial data for the team to chew over. The next stage is testing with more typical gym-goers, weekend warriors and the marginal gain-chaser, kicking off this month.

    Even sized at a large, my tee felt a little too snug. I know many of us aren’t fans of the compression fit, but this, a tank top and crop top are the only options for now. Fortunately, Prevayl is working on loose fit and long-sleeved options, which I’d find more appealing. More colors, beyond Personal Trainer Black (my name, not theirs), are also incoming. The issue remains, though: If you wanted to use this system frequently, you will need more than one top. Or to do a daily laundry run.

    As the sensor is removable, this should strip away some (most?) of the cost of additional shirts. But Prevayl wants to invade the luxury sportswear segment and that means prices to reflect that ambition. To begin with, it will cost you at least £120, which is roughly equivalent to $160. This starter kit includes a sensor priced at £60, and a tank top. Not including the sensor, the Smart Tank will cost £60, while the Smarts Sports Bra will be £65. The Smart T-Shirt, which I tested, will cost £70. The impressive specs and tight app integration will go up against the expensive cost of entry.

    Judging from my demo with Prevayl’s team (and my own early testing), the product is already looking polished. I spoke with a fitness professional at my local gym who, conveniently, had also tested out Prevayl. She noted that any new smartwear product would have to fight against incumbent chest straps and fitness trackers. Unlike a smartwatch, it’s nearly impossible to wear this top in tandem with a chest strap from another manufacturer. People are creators of habit — especially when it comes to exercise. People swear by Strada or their Apple Watch because it’s familiar and consistent. At this early stage, Prevayl’s online community isn’t yet live.

    For now, the company is focusing on the UK and Ireland, but Prevayl’s spokesperson told me that the US will be a priority. I’m planning to test the smart shirt further, but I might have to invest in more items if I want to get serious about using Prevayl regularly.

    ", + "content": "

    Smartwear hasn’t quite had its moment. Innovators like Hexoskin and Omsignal, not to mention huge companies like Adidas and Ralph Lauren, have struggled to make an impact, demanding a lot of money for dedicated shirts and sensors, while contending with mediocre accuracy, polarizing style choices and not many compelling reasons to exist. As Adam Crofts, founder of the startup Prevayl, puts it, there have been a lot of lessons to learn from other companies’ mistakes. He’s hoping to get it right.

    Prevayl, whose first products launch in the UK later this month, combines a small tracking sensor with a line of fitness “smart” shirts, from crop tops through to vests and compression shirts, in addition to a companion app (of course) and an online community. Usually, that means something approximating a forum, but according to the company’s website, it’s created “a members-only private community designed for amateur athletes and the sporting elite.”

    It’s limited its first wave of users to 700 people. The audience seems to be, well, the fittest friends and acquaintances you know. The ones that know what they can benchpress, their fastest 5K time, or their VO2 Max. The latter is not a haircare product.

    Prevayl’s sweet spot is this area between amateur athlete and biometric obsessive, and it’s approaching the fitness tech fight with style. It has a slick promotional video featuring pro athletes, a moody black logo and a surprisingly slick, well designed app. (Seriously, it amazes me how poor most entry-level fitness apps can still look.) And the shirt? Well, it looks good on the athletes.

    \"Prevayl

    At a preview event in London, the team set me up in one of their first shirts, ahead of a planned launch early next year. It feels like a premium, luxury sports tee. It’s breathable, soft to the touch and tight. An elasticated band across the chest on all of the garments houses the conductive sensors, connected with graphene-augmented knitted electrodes. The fibers connecting these sensors look like metallic shoelaces and are machine washable. The shirt can go straight into a warm laundry wash; you just need to ensure you’ve taken the sensor out from the tiny pocket on the front of the clothing.

    \"Prevayl
    Mat Smith/Engadget

    There’s no need to fasten the sensor in place, as it comes in contact with the conductive fabric as soon as it’s in the front of the shirt. The sensor itself is an evolution from the chunky haphazard sensor unit design of smartwear’s past. The sensor has a plastic stopper that protects the USB-C charging port, while the charging cable is a small, machined aluminum clasp that magnetically folds in on itself.

    The company makes everything here in-house, and Crofts believes this is why Prevayl can do things differently. “Usually, it’s been tech [companies] trying to make clothing or visa versa.” The company’s approach to the clothing itself was “style led” design. Prevayl’s head office has entire machines and technicians dedicated to knitting the clothing part of the equation.

    Despite the sensor itself being so small, it’s packed with tech. There’s a “clinical-grade” ECG, that tracks your workout with four times the frequency of Polar heart rate monitors. It also monitors breathing frequency, motion and even body temperature. There’s even a bioimpedance sensor, which can be used for body composition scans, but there didn’t seem to be any feature that takes advantage of that yet. Prevayl is trying to do it all.

    The company puts all this biometric data to use through many of the features and guidance you’ve seen on other fitness devices and services. Like Whoop, the system can be used to gauge whether your body has fully recovered from a workout; like MyZone’s traffic light system, it color-codes your workout effort into five categories, measuring both how hard you’re working out and when your heart rate has recovered. This is all in addition to tracking your heart-rate, caloric burn and more. Within the app, you can even see an accurate cardiogram of your heart as it beats away.

    \"Prevayl
    Mat Smith/Engadget

    One of the bigger challenges, which many fitness trackers and wearables struggle with, is ensuring a decent level of accuracy. Crofts mentioned multiple times during our interview that the company has been obsessed with gathering data.

    The company worked with the UK’s University of Salford to validate the accuracy of its ECG unit. The team also recruited professional athletes, including British Olympic and Paralympic athletes and professional sportspeople, to test its prototypes and offer up crucial data for the team to chew over. The next stage is testing with more typical gym-goers, weekend warriors and the marginal gain-chaser, kicking off this month.

    Even sized at a large, my tee felt a little too snug. I know many of us aren’t fans of the compression fit, but this, a tank top and crop top are the only options for now. Fortunately, Prevayl is working on loose fit and long-sleeved options, which I’d find more appealing. More colors, beyond Personal Trainer Black (my name, not theirs), are also incoming. The issue remains, though: If you wanted to use this system frequently, you will need more than one top. Or to do a daily laundry run.

    As the sensor is removable, this should strip away some (most?) of the cost of additional shirts. But Prevayl wants to invade the luxury sportswear segment and that means prices to reflect that ambition. To begin with, it will cost you at least £120, which is roughly equivalent to $160. This starter kit includes a sensor priced at £60, and a tank top. Not including the sensor, the Smart Tank will cost £60, while the Smarts Sports Bra will be £65. The Smart T-Shirt, which I tested, will cost £70. The impressive specs and tight app integration will go up against the expensive cost of entry.

    Judging from my demo with Prevayl’s team (and my own early testing), the product is already looking polished. I spoke with a fitness professional at my local gym who, conveniently, had also tested out Prevayl. She noted that any new smartwear product would have to fight against incumbent chest straps and fitness trackers. Unlike a smartwatch, it’s nearly impossible to wear this top in tandem with a chest strap from another manufacturer. People are creators of habit — especially when it comes to exercise. People swear by Strada or their Apple Watch because it’s familiar and consistent. At this early stage, Prevayl’s online community isn’t yet live.

    For now, the company is focusing on the UK and Ireland, but Prevayl’s spokesperson told me that the US will be a priority. I’m planning to test the smart shirt further, but I might have to invest in more items if I want to get serious about using Prevayl regularly.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/prevayl-smartwear-smart-shirt-fitness-workout-150040128.html?src=rss", + "creator": "Mat Smith", + "pubDate": "Mon, 22 Nov 2021 15:00:40 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Crucial's 1TB MX500 internal SSD is back on sale for $85", + "description": "

    It's frustrating to run out of space on your desktop or laptop, but you can turn to storage devices for extra room and now's a good time to look for them if you're getting short on space. Black Friday deals have already popped up on some of our favorite models, including those from Crucial. The 1TB MX500 internal SSD is on sale for $85, which is 15 percent off its normal price and only a few dollars shy of a record low. The 2TB model is down to $168 as well, and if you don't need that much extra space, you can pick up the 500GB version for only $53.

    Buy Crucial MX500 (1TB) at Amazon - $85

    The MX500 should fit into most computers thanks to its 2.5-inch design, and it supports sequential read speeds of up to 560 MB/s and sequential write speeds of up to 510 MB/s. It also comes with AES 256-bit hardware encryption as well as integrated power-loss immunity, the latter of which should protect your data even if your power gets cut unexpectedly.

    If you're looking for an internal drive that's a bit more high-end, or one that works with the PS5, Crucial's P5 Plus in 1TB is down to $145, which is 19 percent off its regular rate and an all-time low. This drive made it into our PS5 SSD guide because, even at its normal price, it's a solid budget option for the console as long as you're willing to supply your own heatsink. It's an NVMe PCIe SSD with read speeds up to 6,600 MB/s and write speeds up to 5,000 MB/s, and it's optimized for high-performance gaming and computing.

    For those with tighter budgets who still want to expand their PS5 storage options, Crucial's X6 external drive in 1TB is 38 percent off right now, bringing it down to $80. Yes, you can use portable SSDs with the console, but there are some limitations: when connected to a PS5, an external drive can only be used to play PS4 titles or store PS5 games. That means you can move a PS5 title out of cold storage when you want to play it, which may be best if you have slower internet speeds impeding your ability to download games quickly. We like the X6 for its fast 540 MB/s read speeds, durable design that's shock, drop, vibration and temperature resistant and its compatibility with a wide range of devices.

    Buy Crucial P5 Plus (1TB) at Amazon - $145Buy Crucial X6 (1TB) at Amazon - $80

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    It's frustrating to run out of space on your desktop or laptop, but you can turn to storage devices for extra room and now's a good time to look for them if you're getting short on space. Black Friday deals have already popped up on some of our favorite models, including those from Crucial. The 1TB MX500 internal SSD is on sale for $85, which is 15 percent off its normal price and only a few dollars shy of a record low. The 2TB model is down to $168 as well, and if you don't need that much extra space, you can pick up the 500GB version for only $53.

    Buy Crucial MX500 (1TB) at Amazon - $85

    The MX500 should fit into most computers thanks to its 2.5-inch design, and it supports sequential read speeds of up to 560 MB/s and sequential write speeds of up to 510 MB/s. It also comes with AES 256-bit hardware encryption as well as integrated power-loss immunity, the latter of which should protect your data even if your power gets cut unexpectedly.

    If you're looking for an internal drive that's a bit more high-end, or one that works with the PS5, Crucial's P5 Plus in 1TB is down to $145, which is 19 percent off its regular rate and an all-time low. This drive made it into our PS5 SSD guide because, even at its normal price, it's a solid budget option for the console as long as you're willing to supply your own heatsink. It's an NVMe PCIe SSD with read speeds up to 6,600 MB/s and write speeds up to 5,000 MB/s, and it's optimized for high-performance gaming and computing.

    For those with tighter budgets who still want to expand their PS5 storage options, Crucial's X6 external drive in 1TB is 38 percent off right now, bringing it down to $80. Yes, you can use portable SSDs with the console, but there are some limitations: when connected to a PS5, an external drive can only be used to play PS4 titles or store PS5 games. That means you can move a PS5 title out of cold storage when you want to play it, which may be best if you have slower internet speeds impeding your ability to download games quickly. We like the X6 for its fast 540 MB/s read speeds, durable design that's shock, drop, vibration and temperature resistant and its compatibility with a wide range of devices.

    Buy Crucial P5 Plus (1TB) at Amazon - $145Buy Crucial X6 (1TB) at Amazon - $80

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/crucials-1tb-mx500-internal-ssd-is-back-on-sale-for-85-143458149.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Mon, 22 Nov 2021 14:34:58 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The best deals on AirPods you can get for Black Friday", + "description": "

    Apple's AirPods are some of the most popular earbuds (and headphones) available right now, so don't be shocked if they top some of your loved ones' wish lists. Black Friday typically brings decent sales on these devices, and we're already starting to see good discounts across the web. There are a few different models at this point: the latest 3rd-generation AirPods were updated just last month with a new design, improved audio quality and longer battery life, while the AirPods Pro remain the best sounding Apple earbuds and now they come with a MagSafe charging case. You can still grab the 2nd-generation AirPods as well, and the AirPods Max are best for those that prefer over-ear headphones. Here are the best deals on Apple's AirPods that we found for Black Friday.

    AirPods Pro

    \"Apple
    Billy Steele / Engadget

    The updated AirPods Pro with the MagSafe case are on sale for $170 at Amazon right now. Walmart will have them for $159 starting at 3pm ET today for Walmart+ members, while everyone else can get that discount starting at 7pm ET. If you're a Sam's Club member, you can grab the Pros for $150 with $70 of Scan & Go Savings starting on Black Friday. These offer the best sound quality and fit of any of Apple's earbuds, and now they have a magnetic wireless charging case that's compatible with MagSafe accessories.

    Buy AirPods Pro at Amazon - $170Buy AirPods Pro at Walmart - $159

    AirPods (3rd gen)

    \"Apple
    Billy Steele/Engadget

    Apple's latest AirPods are down to $155 for Black Friday at Amazon thanks to a sale price and an additional $15 coupon that will be applied at checkout. We gave them a score of 88 for their more comfortable design, much improved audio quality and longer battery life.

    Buy AirPods (3rd gen) at Amazon - $155

    AirPods (2nd gen)

    \"Apple
    Engadget

    The previous-generation AirPods are on sale for $109 right now, or roughly $50 off its normal price. While not the latest models, these are still decent earbuds that we liked for their improved wireless performance and good battery life.

    Buy AirPods (2nd gen) at Amazon - $109

    AirPods Max

    \"Apple
    Engadget

    Apple's AirPods Max in a few colors are down to $440 right now, or only $10 more than their record-low price. These headphones earned a score of 84 from us for their excellent, balanced sound, solid ANC and good battery life.

    Buy AirPods Max at Amazon - $440

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Apple's AirPods are some of the most popular earbuds (and headphones) available right now, so don't be shocked if they top some of your loved ones' wish lists. Black Friday typically brings decent sales on these devices, and we're already starting to see good discounts across the web. There are a few different models at this point: the latest 3rd-generation AirPods were updated just last month with a new design, improved audio quality and longer battery life, while the AirPods Pro remain the best sounding Apple earbuds and now they come with a MagSafe charging case. You can still grab the 2nd-generation AirPods as well, and the AirPods Max are best for those that prefer over-ear headphones. Here are the best deals on Apple's AirPods that we found for Black Friday.

    AirPods Pro

    \"Apple
    Billy Steele / Engadget

    The updated AirPods Pro with the MagSafe case are on sale for $170 at Amazon right now. Walmart will have them for $159 starting at 3pm ET today for Walmart+ members, while everyone else can get that discount starting at 7pm ET. If you're a Sam's Club member, you can grab the Pros for $150 with $70 of Scan & Go Savings starting on Black Friday. These offer the best sound quality and fit of any of Apple's earbuds, and now they have a magnetic wireless charging case that's compatible with MagSafe accessories.

    Buy AirPods Pro at Amazon - $170Buy AirPods Pro at Walmart - $159

    AirPods (3rd gen)

    \"Apple
    Billy Steele/Engadget

    Apple's latest AirPods are down to $155 for Black Friday at Amazon thanks to a sale price and an additional $15 coupon that will be applied at checkout. We gave them a score of 88 for their more comfortable design, much improved audio quality and longer battery life.

    Buy AirPods (3rd gen) at Amazon - $155

    AirPods (2nd gen)

    \"Apple
    Engadget

    The previous-generation AirPods are on sale for $109 right now, or roughly $50 off its normal price. While not the latest models, these are still decent earbuds that we liked for their improved wireless performance and good battery life.

    Buy AirPods (2nd gen) at Amazon - $109

    AirPods Max

    \"Apple
    Engadget

    Apple's AirPods Max in a few colors are down to $440 right now, or only $10 more than their record-low price. These headphones earned a score of 84 from us for their excellent, balanced sound, solid ANC and good battery life.

    Buy AirPods Max at Amazon - $440

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Information Technology", + "link": "https://www.engadget.com/best-apple-airpods-deals-black-friday-2021-134723984.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Mon, 22 Nov 2021 13:47:23 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Canon's best budget mirrorless camera is $100 off at Amazon", + "description": "

    Canon's EOS M200 is still one of the best budget mirrorless cameras thanks to features like the Dual Pixel autofocus system and 4K video. Now, you can pick one up with an EF-M 15-45mm f/3.5-6.3 at Amazon for just $450 or $100 (18 percent) off the regular price. 

    Buy Canon EOS M200 at Amazon - $450

    The EOS M200 is a top pick as a budget camera because it's so compact and versatile. It takes great photos thanks to the 24.1-megapixel APS-C sensor, which delivers sharp images with natural colors and skin tones. It also comes with Canon's Dual Pixel eye-detect autofocus tech, so most of them will be in focus, too. And for social or tourist shooting, it comes with a pop-up flash.

    At the same time, it can handle 4K video at 24 fps, albeit with a 1.6 times crop. That, along with the flip-up display, makes it very useful as a vlogging camera — and it's even good for social media because it can also shoot vertical video. The 15-45mm lens, meanwhile, offers a decent zoom range for most types of shooting.

    The downsides are the lack of a viewfinder, though that helps keep the size very small. It also offers a limited lens selection and relatively slow burst shooting speeds. However, it's a real bargain at $450, which is a cheaper price than most cameras without any lens at all. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Canon's EOS M200 is still one of the best budget mirrorless cameras thanks to features like the Dual Pixel autofocus system and 4K video. Now, you can pick one up with an EF-M 15-45mm f/3.5-6.3 at Amazon for just $450 or $100 (18 percent) off the regular price. 

    Buy Canon EOS M200 at Amazon - $450

    The EOS M200 is a top pick as a budget camera because it's so compact and versatile. It takes great photos thanks to the 24.1-megapixel APS-C sensor, which delivers sharp images with natural colors and skin tones. It also comes with Canon's Dual Pixel eye-detect autofocus tech, so most of them will be in focus, too. And for social or tourist shooting, it comes with a pop-up flash.

    At the same time, it can handle 4K video at 24 fps, albeit with a 1.6 times crop. That, along with the flip-up display, makes it very useful as a vlogging camera — and it's even good for social media because it can also shoot vertical video. The 15-45mm lens, meanwhile, offers a decent zoom range for most types of shooting.

    The downsides are the lack of a viewfinder, though that helps keep the size very small. It also offers a limited lens selection and relatively slow burst shooting speeds. However, it's a real bargain at $450, which is a cheaper price than most cameras without any lens at all. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/canons-best-budget-mirrorless-camera-is-100-off-at-amazon-123104866.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Mon, 22 Nov 2021 12:31:04 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Morning After: Adele has the power to remove the shuffle button", + "description": "

    Spotify has removed the shuffle button from all album pages after Adele pressed the company for the change in time for the launch of her album 30. According to her own tweet, albums should be listened to "as [artists] intended" as they tell "a story." If you were ever in doubt of the influence of major music artists like Adele or Taylor Swift, here’s your answer.

    Adele's debut single from 30, "Easy On Me," broke a single-day Spotify streaming record previously held by K-pop megagroup BTS. That probably helped.

    — Mat Smith

    'Halo Infinite' is best when it stops being 'Halo'

    Choices.

    \"The
    Microsoft

    Halo Infinite's opening had Engadget Senior Editor Devindra Hardawar worried, especially after its year-long delay. Sure, it was nice to be back in Master Chief's shoes, but he feared a retread of familiar Halo gameplay, even with the addition of a new grappling hook. Same environments, same cannon fodder.

    But a few hours in, once Devindra acquired a Cortana-like AI called The Weapon, Halo Infinite finally opened up. After clearing out an early area, he was presented with something rarely seen in Halo: choice. Read on for his full preview of arguably Xbox’s most highly anticipated game. 

    Continue reading.

    Disneyland gets the 'Hey, Disney' voice assistant in 2022

    You'll also get smarter MagicBands in the bargain.

    Disney has revealed that "Hey, Disney" is coming to Disneyland hotel rooms sometime in 2022. As in Walt Disney World, it'll be available alongside Alexa in your room's Echo speaker and handle requests ranging from amenities through to stories and jokes.

    There’s more technology in the park, too, as MagicBand+ wearables will also reach Disneyland in 2022. You can use the wristband to enter the park, make purchases and go touch-free, and they'll use a mix of lights, haptic feedback and gesture controls throughout the theme park.

    Continue reading.

    Early Pixel 6a leak suggests Google might finally ditch the headphone jack

    One of the last hold-outs.

    \"The
    OnLeaks/91Mobiles

    Google's Pixel 6 is barely on store shelves, but don’t let that stop rumors about its budget A-Series getting another device. Well-known tipster OnLeaks and 91Mobiles have posted what they say are Pixel 6a design renders, and they might prove polarizing. The future midrange phone would follow the redesigned Pixel 6, meaning, yes, that ‘cyclops’ camera bar. However, the headphone jack from the Pixel 5a and other "a" models appears to have vanished.

    Continue reading.

    El Salvador plans to create an entire city based on Bitcoin

    There would even be a power plant to help with bitcoin mining.

    President Nayib Bukele has unveiled plans to build a Bitcoin City near a volcano along the Gulf of Fonseca, between La Unión and Conchagua. Yes, it sounds like a video-game locale in Cyberpunk, but sadly it’s more about business. Even if it’s near a volcano.

    The metropolis will have its own geothermal power plant to support crypto mining, and there will be no capital gains, income, payroll or property taxes, just value added tax.

    Continue reading.

    Creepy soft synth has a visualizer that stares back

    Synth#boi is an art project you can play — and buy.

    \"TMA\"
    Synthboy

    The more you play on the Synth#boi, the more the 'person' in the visualizer lights up — it's as if the device is staring back at you and judging your performance. Which isn’t sinister at all. 

    Continue reading.

     

     

    The biggest news stories you might have missed

    Early Black Friday gaming deals include one year of PS Plus for $40

    Why Apple changed its mind on Right to Repair

    ICYMI: It's finally time to test SharePlay on iOS 15.1

    Engadget Deals: Apple Watch SE and Fitbits drop to all-time low prices at Amazon

    Netflix renews 'Arcane' for a second season

    ", + "content": "

    Spotify has removed the shuffle button from all album pages after Adele pressed the company for the change in time for the launch of her album 30. According to her own tweet, albums should be listened to "as [artists] intended" as they tell "a story." If you were ever in doubt of the influence of major music artists like Adele or Taylor Swift, here’s your answer.

    Adele's debut single from 30, "Easy On Me," broke a single-day Spotify streaming record previously held by K-pop megagroup BTS. That probably helped.

    — Mat Smith

    'Halo Infinite' is best when it stops being 'Halo'

    Choices.

    \"The
    Microsoft

    Halo Infinite's opening had Engadget Senior Editor Devindra Hardawar worried, especially after its year-long delay. Sure, it was nice to be back in Master Chief's shoes, but he feared a retread of familiar Halo gameplay, even with the addition of a new grappling hook. Same environments, same cannon fodder.

    But a few hours in, once Devindra acquired a Cortana-like AI called The Weapon, Halo Infinite finally opened up. After clearing out an early area, he was presented with something rarely seen in Halo: choice. Read on for his full preview of arguably Xbox’s most highly anticipated game. 

    Continue reading.

    Disneyland gets the 'Hey, Disney' voice assistant in 2022

    You'll also get smarter MagicBands in the bargain.

    Disney has revealed that "Hey, Disney" is coming to Disneyland hotel rooms sometime in 2022. As in Walt Disney World, it'll be available alongside Alexa in your room's Echo speaker and handle requests ranging from amenities through to stories and jokes.

    There’s more technology in the park, too, as MagicBand+ wearables will also reach Disneyland in 2022. You can use the wristband to enter the park, make purchases and go touch-free, and they'll use a mix of lights, haptic feedback and gesture controls throughout the theme park.

    Continue reading.

    Early Pixel 6a leak suggests Google might finally ditch the headphone jack

    One of the last hold-outs.

    \"The
    OnLeaks/91Mobiles

    Google's Pixel 6 is barely on store shelves, but don’t let that stop rumors about its budget A-Series getting another device. Well-known tipster OnLeaks and 91Mobiles have posted what they say are Pixel 6a design renders, and they might prove polarizing. The future midrange phone would follow the redesigned Pixel 6, meaning, yes, that ‘cyclops’ camera bar. However, the headphone jack from the Pixel 5a and other "a" models appears to have vanished.

    Continue reading.

    El Salvador plans to create an entire city based on Bitcoin

    There would even be a power plant to help with bitcoin mining.

    President Nayib Bukele has unveiled plans to build a Bitcoin City near a volcano along the Gulf of Fonseca, between La Unión and Conchagua. Yes, it sounds like a video-game locale in Cyberpunk, but sadly it’s more about business. Even if it’s near a volcano.

    The metropolis will have its own geothermal power plant to support crypto mining, and there will be no capital gains, income, payroll or property taxes, just value added tax.

    Continue reading.

    Creepy soft synth has a visualizer that stares back

    Synth#boi is an art project you can play — and buy.

    \"TMA\"
    Synthboy

    The more you play on the Synth#boi, the more the 'person' in the visualizer lights up — it's as if the device is staring back at you and judging your performance. Which isn’t sinister at all. 

    Continue reading.

     

     

    The biggest news stories you might have missed

    Early Black Friday gaming deals include one year of PS Plus for $40

    Why Apple changed its mind on Right to Repair

    ICYMI: It's finally time to test SharePlay on iOS 15.1

    Engadget Deals: Apple Watch SE and Fitbits drop to all-time low prices at Amazon

    Netflix renews 'Arcane' for a second season

    ", + "category": "Celebrities", + "link": "https://www.engadget.com/the-morning-after-adele-has-the-power-to-remove-the-shuffle-button-121513705.html?src=rss", + "creator": "Mat Smith", + "pubDate": "Mon, 22 Nov 2021 12:15:13 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UK will require new homes to have EV chargers starting in 2022", + "description": "

    Electric vehicle (EV) charging stations will be required for all new homes and businesses in the UK starting in 2022, the government announced today. The new measure aims to boost EV adoption in the nation by adding up to 145,000 extra charging points each year. 

     "This will mean people can buy new properties already ready for an electric vehicle future, while ensuring charge points are readily available at new shops and workplaces across the UK — making it as easy as refueling a petrol or diesel car today," the press release states.

    The UK government has already backed the installation of over 250,000 charging points, so the new rules would increase that by over 50 percent in the first year alone. Buildings like supermarkets and workplaces are included in the law, along with large scale renovations that will have over 10 parking spaces. However, details of the rules, like specifications and power outputs of the installations, have yet to be released. 

    Britain's opposition Labour party noted that London and the southeast part of the country have more charging points "than the rest of England and Wales combined," and the new law doesn't help in that regard. It also said that it doesn't include any provisions that would make EVs more affordable for lower- and middle-income families, the BBC reported.

    The UK government aims to completely ban the sale of fossil fuel cars by 2030 — 10 years earlier than planned. The government previously said that it's prepared to spend £500 million (about $660 million) on building EV charging infrastructure in the country.

    ", + "content": "

    Electric vehicle (EV) charging stations will be required for all new homes and businesses in the UK starting in 2022, the government announced today. The new measure aims to boost EV adoption in the nation by adding up to 145,000 extra charging points each year. 

     "This will mean people can buy new properties already ready for an electric vehicle future, while ensuring charge points are readily available at new shops and workplaces across the UK — making it as easy as refueling a petrol or diesel car today," the press release states.

    The UK government has already backed the installation of over 250,000 charging points, so the new rules would increase that by over 50 percent in the first year alone. Buildings like supermarkets and workplaces are included in the law, along with large scale renovations that will have over 10 parking spaces. However, details of the rules, like specifications and power outputs of the installations, have yet to be released. 

    Britain's opposition Labour party noted that London and the southeast part of the country have more charging points "than the rest of England and Wales combined," and the new law doesn't help in that regard. It also said that it doesn't include any provisions that would make EVs more affordable for lower- and middle-income families, the BBC reported.

    The UK government aims to completely ban the sale of fossil fuel cars by 2030 — 10 years earlier than planned. The government previously said that it's prepared to spend £500 million (about $660 million) on building EV charging infrastructure in the country.

    ", + "category": "Politics & Government", + "link": "https://www.engadget.com/uk-announces-that-new-homes-must-have-ev-chargers-113524579.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Mon, 22 Nov 2021 11:35:24 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Personalized warnings could reduce hate speech on Twitter, researchers say", + "description": "

    A set of carefully-worded warnings directed to the right accounts could help reduce the amount of hate on Twitter. That’s the conclusion of new research examining whether targeted warnings could reduce hate speech on the platform.

    Researchers at New York University’s Center for Social Media and Politics found that personalized warnings alerting Twitter users to the consequences of their behavior reduced the number of tweets with hateful language a week after. While more study is needed, the experiment suggests that there is a “potential path forward for platforms seeking to reduce the use of hateful language by users,” according to Mustafa Mikdat Yildirim, the lead author of the paper.

    In the experiment, researchers identified accounts at risk of being suspended for breaking Twitter’s rules against hate speech. They looked for people who had used at least one word contained in “hateful language dictionaries” over the previous week, who also followed at least one account that had recently been suspended after using such language.

    From there, the researchers created test accounts with personas such as “hate speech warner,” and used the accounts to tweet warnings at these individuals. They tested out several variations, but all had roughly the same message: that using hate speech put them at risk of being suspended, and that it had already happened to someone they follow.

    “The user @account you follow was suspended, and I suspect this was because of hateful language,” reads one sample message shared in the paper. “If you continue to use hate speech, you might get suspended temporarily.” In another variation, the account doing the warning identified themselves as a professional researcher, while also letting the person know they were at risk of being suspended. “We tried to be as credible and convincing as possible,” Yildirim tells Engadget.

    The researchers found that the warnings were effective, at least in the short term. “Our results show that only one warning tweet sent by an account with no more than 100 followers can decrease the ratio of tweets with hateful language by up to 10%,” the authors write. Interestingly, they found that messages that were “more politely phrased” led to even greater declines, with a decrease of up to 20 percent. “We tried to increase the politeness of our message by basically starting our warning by saying that ‘oh, we respect your right to free speech, but on the other hand keep in mind that your hate speech might harm others,’” Yildirim says.

    In the paper, Yildirim and his co-authors note that their test accounts only had around 100 followers each, and that they weren’t associated with an authoritative entity. But if the same type of warnings were to come from Twitter itself, or an NGO or other organization, then the warnings may be even more useful. “The thing that we learned from this experiment is that the real mechanism at play could be the fact that we actually let these people know that there's some account, or some entity, that is watching and monitoring their behavior,” Yildirim says. “The fact that their use of hate speech is seen by someone else could be the most important factor that led these people to decrease their hate speech.”

    ", + "content": "

    A set of carefully-worded warnings directed to the right accounts could help reduce the amount of hate on Twitter. That’s the conclusion of new research examining whether targeted warnings could reduce hate speech on the platform.

    Researchers at New York University’s Center for Social Media and Politics found that personalized warnings alerting Twitter users to the consequences of their behavior reduced the number of tweets with hateful language a week after. While more study is needed, the experiment suggests that there is a “potential path forward for platforms seeking to reduce the use of hateful language by users,” according to Mustafa Mikdat Yildirim, the lead author of the paper.

    In the experiment, researchers identified accounts at risk of being suspended for breaking Twitter’s rules against hate speech. They looked for people who had used at least one word contained in “hateful language dictionaries” over the previous week, who also followed at least one account that had recently been suspended after using such language.

    From there, the researchers created test accounts with personas such as “hate speech warner,” and used the accounts to tweet warnings at these individuals. They tested out several variations, but all had roughly the same message: that using hate speech put them at risk of being suspended, and that it had already happened to someone they follow.

    “The user @account you follow was suspended, and I suspect this was because of hateful language,” reads one sample message shared in the paper. “If you continue to use hate speech, you might get suspended temporarily.” In another variation, the account doing the warning identified themselves as a professional researcher, while also letting the person know they were at risk of being suspended. “We tried to be as credible and convincing as possible,” Yildirim tells Engadget.

    The researchers found that the warnings were effective, at least in the short term. “Our results show that only one warning tweet sent by an account with no more than 100 followers can decrease the ratio of tweets with hateful language by up to 10%,” the authors write. Interestingly, they found that messages that were “more politely phrased” led to even greater declines, with a decrease of up to 20 percent. “We tried to increase the politeness of our message by basically starting our warning by saying that ‘oh, we respect your right to free speech, but on the other hand keep in mind that your hate speech might harm others,’” Yildirim says.

    In the paper, Yildirim and his co-authors note that their test accounts only had around 100 followers each, and that they weren’t associated with an authoritative entity. But if the same type of warnings were to come from Twitter itself, or an NGO or other organization, then the warnings may be even more useful. “The thing that we learned from this experiment is that the real mechanism at play could be the fact that we actually let these people know that there's some account, or some entity, that is watching and monitoring their behavior,” Yildirim says. “The fact that their use of hate speech is seen by someone else could be the most important factor that led these people to decrease their hate speech.”

    ", + "category": "Media", + "link": "https://www.engadget.com/personalized-warnings-could-reduce-hate-speech-on-twitter-researchers-say-110029755.html?src=rss", + "creator": "Karissa Bell", + "pubDate": "Mon, 22 Nov 2021 11:00:29 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Epson's excellent Home Cinema 4100 4K Pro projector is $500 off right now", + "description": "

    With features like a 3-chip design that delivers a full RGB color signal with no weird "rainbow" patterns, Epson's Home Cinema 4010 4K Pro is one of the best projectors available under $2,000. If you've been looking at one to get a true cinema experience, it's now on sale for $1,500 on Amazon, for a savings of $500 or 25 percent off the regular price. 

    Buy Epson Home Cinema 4010 4K Pro at Amazon - $1,500

    The Home Cinema 4010 4K Pro made our list of Best Projectors for 2021, thanks to features like 2,400 lumen brightness, a dynamic iris for crisper blacks, a motorized 2.1X zoom, focus and lens shift. It delivers in picture quality as well, offering both HDR10 and HLG, while covering 100 percent of the DCI-P3 color space in cinema mode. 

    Short throw projectors might have all the buzz, but regular long throw projectors still have their place — especially if you'd rather mount the projector and screen on the ceiling. The only drawbacks are Epson's pixel-shifting technology that yields a bit less than 4K resolution, and a lack of support for 60Hz 4K due to the HDMI 1.4 ports. Still, it delivers where it counts with color accuracy and brightness, and the $1,500 price tag makes it a very attractive option. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    With features like a 3-chip design that delivers a full RGB color signal with no weird "rainbow" patterns, Epson's Home Cinema 4010 4K Pro is one of the best projectors available under $2,000. If you've been looking at one to get a true cinema experience, it's now on sale for $1,500 on Amazon, for a savings of $500 or 25 percent off the regular price. 

    Buy Epson Home Cinema 4010 4K Pro at Amazon - $1,500

    The Home Cinema 4010 4K Pro made our list of Best Projectors for 2021, thanks to features like 2,400 lumen brightness, a dynamic iris for crisper blacks, a motorized 2.1X zoom, focus and lens shift. It delivers in picture quality as well, offering both HDR10 and HLG, while covering 100 percent of the DCI-P3 color space in cinema mode. 

    Short throw projectors might have all the buzz, but regular long throw projectors still have their place — especially if you'd rather mount the projector and screen on the ceiling. The only drawbacks are Epson's pixel-shifting technology that yields a bit less than 4K resolution, and a lack of support for 60Hz 4K due to the HDMI 1.4 ports. Still, it delivers where it counts with color accuracy and brightness, and the $1,500 price tag makes it a very attractive option. 

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/epson-home-cinema-4100-4k-pro-projector-amazon-deal-094949207.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Mon, 22 Nov 2021 09:49:49 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rolls-Royce's all-electric airplane smashes record with 387.4 MPH top speed", + "description": "

    Just two months after its maiden flight, Rolls-Royce's "Spirit of Innovation" has hit a top speed of 387.4 MPH, tentatively smashing the speed record for electric airplanes, Gizmodo has reported. It also claimed the top speed of 345.4 MPH over a 3 kilometer (1.86 mile) course and lowest time to a 3,000 meter (9,843 feet) altitude (202 seconds). The records have yet to be certified, but if the 345.5 MPH speed stands, it would beat the current record of 213 MPH — held by a Siemens-powered Extra 330LE — by an impressive 132 MPH. 

    Rolls-Royce (the aviation, not the car company), conducted the tests on November 16th. To have the records certified, it's submitting the trials to the Fédération Aéronautique Internationale (FAI), the body in charge of world aviation records. If confirmed, the speeds would be pretty impressive considering that the plane only made its maiden flight in September — suggesting that with more time, it could go even faster.

    The Spirit of Innovation is an old-school "tail-dragger" airplane (steering at the rear) with the canopy pushed way back, and looks as fast as it goes. It's powered by a 400 kW (535 HP), 750 volt motor. Rolls-Royce said it uses the "most power-dense propulsion battery pack ever assembled in aerospace," with 6,480 cells

    As Engadget detailed in an explainer, electric airplanes aren't practical since current batteries are 50 times less energy dense than jet fuel. However, they do hold some promise for very short trips, like a 30 minute jaunt between Vancouver and Victoria in Canada. And unlike non-turbocharged ICE engines, electric motors retain full power as an airplane climbs, making them ideal for time-to-altitude record attempts — as the Spirit of Innovation has just shown. 

    ", + "content": "

    Just two months after its maiden flight, Rolls-Royce's "Spirit of Innovation" has hit a top speed of 387.4 MPH, tentatively smashing the speed record for electric airplanes, Gizmodo has reported. It also claimed the top speed of 345.4 MPH over a 3 kilometer (1.86 mile) course and lowest time to a 3,000 meter (9,843 feet) altitude (202 seconds). The records have yet to be certified, but if the 345.5 MPH speed stands, it would beat the current record of 213 MPH — held by a Siemens-powered Extra 330LE — by an impressive 132 MPH. 

    Rolls-Royce (the aviation, not the car company), conducted the tests on November 16th. To have the records certified, it's submitting the trials to the Fédération Aéronautique Internationale (FAI), the body in charge of world aviation records. If confirmed, the speeds would be pretty impressive considering that the plane only made its maiden flight in September — suggesting that with more time, it could go even faster.

    The Spirit of Innovation is an old-school "tail-dragger" airplane (steering at the rear) with the canopy pushed way back, and looks as fast as it goes. It's powered by a 400 kW (535 HP), 750 volt motor. Rolls-Royce said it uses the "most power-dense propulsion battery pack ever assembled in aerospace," with 6,480 cells

    As Engadget detailed in an explainer, electric airplanes aren't practical since current batteries are 50 times less energy dense than jet fuel. However, they do hold some promise for very short trips, like a 30 minute jaunt between Vancouver and Victoria in Canada. And unlike non-turbocharged ICE engines, electric motors retain full power as an airplane climbs, making them ideal for time-to-altitude record attempts — as the Spirit of Innovation has just shown. 

    ", + "category": "Airline Industry", + "link": "https://www.engadget.com/rolls-royces-all-electric-airplane-hits-a-record-3874-mph-top-speed-082803118.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Mon, 22 Nov 2021 08:28:03 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Hey, Disney' voice assistant comes to Disneyland in 2022", + "description": "

    You won't have to book a trip to Florida to try Disney's Amazon-based voice assistant. Disney has revealed that "hey, Disney" is coming to Disneyland hotel rooms sometime in 2022. As in Walt Disney World, it'll be available alongside Alexa in your room's Echo speaker and handle request ranging from amenities through to stories and jokes.

    Guests will also see some more technology when they're visiting the park itself, as MagicBand+ wearables will also reach Disneyland in 2022. You can use the wristband to enter the park, make purchases and otherwise go touch-free, but they'll also use a mix of lights, haptic feedback and gesture control to enliven your experiences in certain areas. The interactions will be specific to Disneyland, so you won't have to worry about rehashed 'magic' moments.

    Both additions could save time and may be helpful as a lingering pandemic still leaves some people jittery about physical contact. And to some degree, this is about updating the image of the parks themselves. Disney clearly wants to portray the parks as tech-savvy, and the combo of voice control with wristworn devices might help.

    ", + "content": "

    You won't have to book a trip to Florida to try Disney's Amazon-based voice assistant. Disney has revealed that "hey, Disney" is coming to Disneyland hotel rooms sometime in 2022. As in Walt Disney World, it'll be available alongside Alexa in your room's Echo speaker and handle request ranging from amenities through to stories and jokes.

    Guests will also see some more technology when they're visiting the park itself, as MagicBand+ wearables will also reach Disneyland in 2022. You can use the wristband to enter the park, make purchases and otherwise go touch-free, but they'll also use a mix of lights, haptic feedback and gesture control to enliven your experiences in certain areas. The interactions will be specific to Disneyland, so you won't have to worry about rehashed 'magic' moments.

    Both additions could save time and may be helpful as a lingering pandemic still leaves some people jittery about physical contact. And to some degree, this is about updating the image of the parks themselves. Disney clearly wants to portray the parks as tech-savvy, and the combo of voice control with wristworn devices might help.

    ", + "category": "Professional Services", + "link": "https://www.engadget.com/disneyland-hey-disney-release-date-220908254.html?src=rss", + "creator": "Jon Fingas", + "pubDate": "Sun, 21 Nov 2021 22:09:08 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "SpaceX and NASA plan to crash a satellite into an asteroid next week", + "description": "

    Since 2017, NASA has been in the process of testing to see whether crashing a satellite into an asteroid can change its course, enlisting the help of SpaceX on this endeavor in 2019. Today, the rocket company shared that it has completed a static fire test and is targeting November 21st as the launch date of the Double Asteroid Redirection Test (DART). 

    At 10:21pm PT that day, NASA will "intentionally crash the DART spacecraft into an asteroid to see if that is an effective way to change its course, should an Earth-threatening asteroid be discovered in the future," SpaceX said in a tweet.

    A static fire test is one of several steps in getting a launch vehicle ready to deploy, and it checks engine startup performance, measuring things like pressure and temperature. With this stage complete, SpaceX and NASA look set to go ahead next week.

    DART is targeting a binary asteroid with two bodies called Didymos (the Greek word for "twin"). Didymos B is 160 meters (about 174 yards) large, and orbits the larger Didymos A, which is 780 meters in size. The binary asteroid would have passed Earth safely in 2022 and again in 2024 — they weren't on track to make contact with our planet. 

    But NASA has already identified at least 23 objects that could potentially collide with us over the next 100 years. Coming up with a defense strategy is key to protecting humanity should Armageddon ever be on the horizon. 

    ", + "content": "

    Since 2017, NASA has been in the process of testing to see whether crashing a satellite into an asteroid can change its course, enlisting the help of SpaceX on this endeavor in 2019. Today, the rocket company shared that it has completed a static fire test and is targeting November 21st as the launch date of the Double Asteroid Redirection Test (DART). 

    At 10:21pm PT that day, NASA will "intentionally crash the DART spacecraft into an asteroid to see if that is an effective way to change its course, should an Earth-threatening asteroid be discovered in the future," SpaceX said in a tweet.

    A static fire test is one of several steps in getting a launch vehicle ready to deploy, and it checks engine startup performance, measuring things like pressure and temperature. With this stage complete, SpaceX and NASA look set to go ahead next week.

    DART is targeting a binary asteroid with two bodies called Didymos (the Greek word for "twin"). Didymos B is 160 meters (about 174 yards) large, and orbits the larger Didymos A, which is 780 meters in size. The binary asteroid would have passed Earth safely in 2022 and again in 2024 — they weren't on track to make contact with our planet. 

    But NASA has already identified at least 23 objects that could potentially collide with us over the next 100 years. Coming up with a defense strategy is key to protecting humanity should Armageddon ever be on the horizon. 

    ", + "category": "Science", + "link": "https://www.engadget.com/space-x-nasa-dart-static-fire-test-date-nov-21-223815055.html?src=rss", + "creator": "Cherlynn Low", + "pubDate": "Fri, 19 Nov 2021 22:38:15 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Ford and Rivian cancel plan to jointly develop an EV", + "description": "

    Ford and Rivian have abandoned a plan they had to jointly develop an EV together. In an interview with Automotive News, Ford CEO Jim Farley said the automaker will go it alone as it aims to produce 600,000 vehicles per year by the end of 2023.

    When the company invested $500 million in Rivian in 2019, the two said they would work together to produce a Ford-branded EV featuring the startup's "skateboard" powertrain. In early 2020, the two, citing the pandemic, canceled a Lincoln-branded EV. At the time, they said they still planned to go forward with an "alternative vehicle" based on Rivian's technology. Now, that project won't go forward either.

    "Right now, we have growing confidence in our ability to win in the electric space," Farley told Automotive News. "When you compare today with when we originally made that investment, so much has changed: about our ability, about the brand's direction in both cases, and now it's more certain to us what we have to do."

    According to Farley, part of the reason Ford and Rivian decided not to move forward with the project is the complexities of marrying their hardware and software together. The companies say the decision has not affected their relationship.

    "As Ford has scaled its own EV strategy and demand for Rivian vehicles has grown, we've mutually decided to focus on our own projects and deliveries," a spokesperson for Rivian told Engadget. "Our relationship with Ford is an important part of our journey, and Ford remains an investor and ally on our shared path to an electrified future."

    ", + "content": "

    Ford and Rivian have abandoned a plan they had to jointly develop an EV together. In an interview with Automotive News, Ford CEO Jim Farley said the automaker will go it alone as it aims to produce 600,000 vehicles per year by the end of 2023.

    When the company invested $500 million in Rivian in 2019, the two said they would work together to produce a Ford-branded EV featuring the startup's "skateboard" powertrain. In early 2020, the two, citing the pandemic, canceled a Lincoln-branded EV. At the time, they said they still planned to go forward with an "alternative vehicle" based on Rivian's technology. Now, that project won't go forward either.

    "Right now, we have growing confidence in our ability to win in the electric space," Farley told Automotive News. "When you compare today with when we originally made that investment, so much has changed: about our ability, about the brand's direction in both cases, and now it's more certain to us what we have to do."

    According to Farley, part of the reason Ford and Rivian decided not to move forward with the project is the complexities of marrying their hardware and software together. The companies say the decision has not affected their relationship.

    "As Ford has scaled its own EV strategy and demand for Rivian vehicles has grown, we've mutually decided to focus on our own projects and deliveries," a spokesperson for Rivian told Engadget. "Our relationship with Ford is an important part of our journey, and Ford remains an investor and ally on our shared path to an electrified future."

    ", + "category": "Automotive Industry", + "link": "https://www.engadget.com/ford-rivian-cancel-joint-ev-214303423.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Fri, 19 Nov 2021 21:43:03 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "'Call of Duty: Warzone' Pacific update delayed to December 8th", + "description": "

    Activision has delayed the release of Call of Duty Vanguard’s season one update and Warzone Pacific by about a week. The publisher now plans to make both available on December 8th, instead of December 2nd and December 3rd as previously planned. Activision did not provide a reason for the delay. However, it has been mired in controversy this week following an explosive report from The Wall Street Journal on CEO Bobby Kotick and the role he may have played in creating the toxic “frat boy” culture that has seen the company in the news frequently in recent months.

    Update: Season 1 of #Vanguard and Warzone Pacific will now release Dec. 8.

    Vanguard owners will have 24-hour exclusive first play access to the Caldera map. Open access begins on Dec. 9. pic.twitter.com/GnnYCp6g75

    — Call of Duty (@CallofDuty) November 19, 2021

    According to a tweet from the official Call of Duty Twitter account, Vanguard’s first seasonal update includes new maps and modes, an update to the game’s Zombies mode and the addition of new gear and weapons for players to earn. Warzone Pacific, meanwhile, adds a map called Caldera to Activision’s popular battle royale. If you own a copy of Vanguard, you’ll get the chance to play the new battleground 24 hours before everyone else.

    ", + "content": "

    Activision has delayed the release of Call of Duty Vanguard’s season one update and Warzone Pacific by about a week. The publisher now plans to make both available on December 8th, instead of December 2nd and December 3rd as previously planned. Activision did not provide a reason for the delay. However, it has been mired in controversy this week following an explosive report from The Wall Street Journal on CEO Bobby Kotick and the role he may have played in creating the toxic “frat boy” culture that has seen the company in the news frequently in recent months.

    Update: Season 1 of #Vanguard and Warzone Pacific will now release Dec. 8.

    Vanguard owners will have 24-hour exclusive first play access to the Caldera map. Open access begins on Dec. 9. pic.twitter.com/GnnYCp6g75

    — Call of Duty (@CallofDuty) November 19, 2021

    According to a tweet from the official Call of Duty Twitter account, Vanguard’s first seasonal update includes new maps and modes, an update to the game’s Zombies mode and the addition of new gear and weapons for players to earn. Warzone Pacific, meanwhile, adds a map called Caldera to Activision’s popular battle royale. If you own a copy of Vanguard, you’ll get the chance to play the new battleground 24 hours before everyone else.

    ", + "category": "Media", + "link": "https://www.engadget.com/call-of-duty-warzone-pacific-vanguard-season-one-delayed-205110303.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Fri, 19 Nov 2021 20:51:10 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Hulu's live TV plans will soon be $5 more per month", + "description": "

    If you’re a Hulu + Live TV customer, Disney plans to add Disney+ and ESPN+ to your subscription, and you have no choice in the matter. On Friday, the company sent an email to current subscribers informing them of the impending change. Starting on December 21st, all Hulu + Live subscriptions will include access to Disney’s two other streaming platforms. Previously, you could get Hulu + Live TV on its own.

    And with the change, the price of Hulu + Live TV plans is increasing by $5 per month for both current and new customers. Come the 21st, the ad-supported tier will cost $69.99 per month, while the “no ads” package will cost $75.99 every 30 days. If you’re a Hulu + Live TV customer with an existing Disney+ and or ESPN+ subscription, those will roll into the new plan.

    Disney previously increased the price of its live TV packages in 2020 when they went up by $10 per month. People never like paying more for a service, but the way in which the company is handling this latest price hike may irk some customers. Disney’s latest earnings report may provide some insight into the company’s motivations. In Q4, the company added 2.1 million Disney+ subscribers, far fewer than the 9.4 million Wall Street had expected it to attract. It’s possible Disney anticipates whatever Hulu subscribers it loses will be worth an increase to its Disney+ customer base.

    ", + "content": "

    If you’re a Hulu + Live TV customer, Disney plans to add Disney+ and ESPN+ to your subscription, and you have no choice in the matter. On Friday, the company sent an email to current subscribers informing them of the impending change. Starting on December 21st, all Hulu + Live subscriptions will include access to Disney’s two other streaming platforms. Previously, you could get Hulu + Live TV on its own.

    And with the change, the price of Hulu + Live TV plans is increasing by $5 per month for both current and new customers. Come the 21st, the ad-supported tier will cost $69.99 per month, while the “no ads” package will cost $75.99 every 30 days. If you’re a Hulu + Live TV customer with an existing Disney+ and or ESPN+ subscription, those will roll into the new plan.

    Disney previously increased the price of its live TV packages in 2020 when they went up by $10 per month. People never like paying more for a service, but the way in which the company is handling this latest price hike may irk some customers. Disney’s latest earnings report may provide some insight into the company’s motivations. In Q4, the company added 2.1 million Disney+ subscribers, far fewer than the 9.4 million Wall Street had expected it to attract. It’s possible Disney anticipates whatever Hulu subscribers it loses will be worth an increase to its Disney+ customer base.

    ", + "category": "Professional Services", + "link": "https://www.engadget.com/hulu-live-tv-disney-plus-bundle-price-hike-202004930.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Fri, 19 Nov 2021 20:20:04 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Rockstar apologizes for broken GTA remasters and pledges to fix bugs", + "description": "

    Rockstar Games has apologized for the shoddy quality of Grand Theft Auto: The Trilogy - Definitive Edition. It plans to fix "the unexpected technical issues" and improve the three games in the collection.

    "We want to sincerely apologize to everyone who has encountered issues playing these games," the publisher said. "The updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect." The first update is scheduled to arrive in the coming days and it will "address a number of issues."

    An update regarding the unexpected technical issues with Grand Theft Auto: The Trilogy – The Definitive Edition. https://t.co/YP4pkOLQmGpic.twitter.com/AsfYPuMI0d

    — Rockstar Games (@RockstarGames) November 19, 2021

    It didn't take long for players to start sharing clips of bugs and glitches on social media after the remastered collection of GTA III, GTA: Vice City and GTA: San Andreas arrived last week. Digital Foundry took a deep dive into GTA III and found there were "issues that are so blatant and jarring and ridiculous, it's hard to understand how the game made its way through quality control."

    What's more, Rockstar pulled the PC version of the bundle soon after launch to "remove some data files that were unintentionally included in the new versions of these games" (those are believed to include files related to the infamous San Andreas "Hot Coffee" mod). The collection was available to buy again a few days later. Rockstar Launcher services were unavailable for over a day too, making the collection and the PC versions of Grand Theft Auto Online and Red Dead Online unplayable during that time.

    Soon after Rockstar announced the release date for the trilogy in October, it removed the original versions the games from digital storefronts. Now, the classic versions of GTA III, Vice City and San Andreas are returning to PC as a bundle on the Rockstar Store. Players who buy the remastered trilogy on PC by June 30th will receive the originals at no extra cost.

    Meanwhile, Rockstar has asked everyone to refrain from attacking developers on social media. "We would kindly ask our community to please maintain a respectful and civil discourse around this release as we work through these issues," it said. Grove Street Games, which is behind ports of several other Rockstar titles, worked on these remasters.

    ", + "content": "

    Rockstar Games has apologized for the shoddy quality of Grand Theft Auto: The Trilogy - Definitive Edition. It plans to fix "the unexpected technical issues" and improve the three games in the collection.

    "We want to sincerely apologize to everyone who has encountered issues playing these games," the publisher said. "The updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect." The first update is scheduled to arrive in the coming days and it will "address a number of issues."

    An update regarding the unexpected technical issues with Grand Theft Auto: The Trilogy – The Definitive Edition. https://t.co/YP4pkOLQmGpic.twitter.com/AsfYPuMI0d

    — Rockstar Games (@RockstarGames) November 19, 2021

    It didn't take long for players to start sharing clips of bugs and glitches on social media after the remastered collection of GTA III, GTA: Vice City and GTA: San Andreas arrived last week. Digital Foundry took a deep dive into GTA III and found there were "issues that are so blatant and jarring and ridiculous, it's hard to understand how the game made its way through quality control."

    What's more, Rockstar pulled the PC version of the bundle soon after launch to "remove some data files that were unintentionally included in the new versions of these games" (those are believed to include files related to the infamous San Andreas "Hot Coffee" mod). The collection was available to buy again a few days later. Rockstar Launcher services were unavailable for over a day too, making the collection and the PC versions of Grand Theft Auto Online and Red Dead Online unplayable during that time.

    Soon after Rockstar announced the release date for the trilogy in October, it removed the original versions the games from digital storefronts. Now, the classic versions of GTA III, Vice City and San Andreas are returning to PC as a bundle on the Rockstar Store. Players who buy the remastered trilogy on PC by June 30th will receive the originals at no extra cost.

    Meanwhile, Rockstar has asked everyone to refrain from attacking developers on social media. "We would kindly ask our community to please maintain a respectful and civil discourse around this release as we work through these issues," it said. Grove Street Games, which is behind ports of several other Rockstar titles, worked on these remasters.

    ", + "category": "Automotive Industry", + "link": "https://www.engadget.com/gta-trilogy-patch-remaster-rockstar-games-195157534.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Fri, 19 Nov 2021 19:51:57 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Tesla factory employee alleges 'rampant sexual harassment' in lawsuit", + "description": "

    Female employees at Tesla’s Fremont factory in California face “rampant sexual harassment,” according to a lawsuit filed on Thursday. In a complaint with the state’s Superior Court in Alameda County, Jessica Barraza, a production associate with Tesla, said she was subjected to “nightmarish” working conditions over the past three years. Barraza’s lawsuit describes a factory floor that looks more like “a crude, archaic construction site or frat house” than the site of advanced EV production.

    Barraza’s allegations against Tesla are numerous. In one incident, the suit alleges a male co-worker stuck his leg between her thighs when she went to punch in after a lunch break. Amid the harassment, Barraza says her complaints fell on deaf ears. In one instance, she says a supervisor did nothing when she complained of a co-worker staring at her breasts. “Maybe you shouldn’t wear shirts that draw attention to your chest,” her supervisor told her, according to the suit. Barraza told the man she was “wearing a work shirt provided by Tesla.”

    “After almost three years of experiencing all the harassment, it robs your sense of security — it almost dehumanizes you,” Barraza said in an interview with The Washington Post, which was the first outlet to report on the suit. We’ve reached out to Tesla for comment. The company does not typically respond to media requests. 

    The suit comes one month after Tesla was ordered by a federal court to pay $137 million to a Black employee who said they were subjected to daily racist abuse at its Fremont factory. “We continue to grow and improve in how we address employee concerns,” the company said at the time. “Occasionally, we’ll get it wrong, and when that happens we should be held accountable.” Tesla is appealing the award.

    Tesla also isn’t the only EV-maker accused of fostering a toxic workplace for women. Just days before its IPO, Rivian was sued by Laura Schwab, one of its former executives. In her lawsuit, Schwab alleges the automaker fired her after she complained of a “toxic ‘bro culture’” that saw her excluded from meetings and more. “The culture at Rivian was actually the worst I’ve experienced in over 20 years in the automotive industry,” Schwab said at the time.

    ", + "content": "

    Female employees at Tesla’s Fremont factory in California face “rampant sexual harassment,” according to a lawsuit filed on Thursday. In a complaint with the state’s Superior Court in Alameda County, Jessica Barraza, a production associate with Tesla, said she was subjected to “nightmarish” working conditions over the past three years. Barraza’s lawsuit describes a factory floor that looks more like “a crude, archaic construction site or frat house” than the site of advanced EV production.

    Barraza’s allegations against Tesla are numerous. In one incident, the suit alleges a male co-worker stuck his leg between her thighs when she went to punch in after a lunch break. Amid the harassment, Barraza says her complaints fell on deaf ears. In one instance, she says a supervisor did nothing when she complained of a co-worker staring at her breasts. “Maybe you shouldn’t wear shirts that draw attention to your chest,” her supervisor told her, according to the suit. Barraza told the man she was “wearing a work shirt provided by Tesla.”

    “After almost three years of experiencing all the harassment, it robs your sense of security — it almost dehumanizes you,” Barraza said in an interview with The Washington Post, which was the first outlet to report on the suit. We’ve reached out to Tesla for comment. The company does not typically respond to media requests. 

    The suit comes one month after Tesla was ordered by a federal court to pay $137 million to a Black employee who said they were subjected to daily racist abuse at its Fremont factory. “We continue to grow and improve in how we address employee concerns,” the company said at the time. “Occasionally, we’ll get it wrong, and when that happens we should be held accountable.” Tesla is appealing the award.

    Tesla also isn’t the only EV-maker accused of fostering a toxic workplace for women. Just days before its IPO, Rivian was sued by Laura Schwab, one of its former executives. In her lawsuit, Schwab alleges the automaker fired her after she complained of a “toxic ‘bro culture’” that saw her excluded from meetings and more. “The culture at Rivian was actually the worst I’ve experienced in over 20 years in the automotive industry,” Schwab said at the time.

    ", + "category": "Business", + "link": "https://www.engadget.com/tesla-fremont-sexual-harassment-suit-185934119.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Fri, 19 Nov 2021 18:59:34 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Halo Infinite's campaign co-op and Forge modes have been delayed again", + "description": "

    The first previews for the Halo Infinite campaign have arrived and it's looking like an exciting step forward for the series. Unfortunately, players will have to wait even longer than expected to play the mode with their friends.

    Developer 343 Industries announced in August that Halo Infinite won't have campaign co-op (a stalwart mode in the Halo series) or Forge custom games when it arrives on December 8th. It plans to add campaign co-op when season two starts, which was initially supposed to happen three months after launch, with Forge to follow in season three.

    However, 343 Industries revealed this week that season one will run until May. The studio's head of creative, Joseph Staten, confirmed to Eurogamer that means campaign co-op won't arrive until May at the earliest, and Forge will arrive even later.

    That'll likely come as a disappointment to fans, but 343 Industries' decision to focus on the campaign and multiplayer might have been the right one. It already delayed Halo Infinite by a year, so getting the two core modes right was critical.

    Fortunately, the free-to-play multiplayer component, which 343 Industries surprise launched three weeks early on Monday, is a blast. It's evidently a hit already, too. The mode quickly hit 272,000 concurrent players on Steam, and that's before you include those playing on console, through the PC Xbox app and on cloud gaming. 

    ", + "content": "

    The first previews for the Halo Infinite campaign have arrived and it's looking like an exciting step forward for the series. Unfortunately, players will have to wait even longer than expected to play the mode with their friends.

    Developer 343 Industries announced in August that Halo Infinite won't have campaign co-op (a stalwart mode in the Halo series) or Forge custom games when it arrives on December 8th. It plans to add campaign co-op when season two starts, which was initially supposed to happen three months after launch, with Forge to follow in season three.

    However, 343 Industries revealed this week that season one will run until May. The studio's head of creative, Joseph Staten, confirmed to Eurogamer that means campaign co-op won't arrive until May at the earliest, and Forge will arrive even later.

    That'll likely come as a disappointment to fans, but 343 Industries' decision to focus on the campaign and multiplayer might have been the right one. It already delayed Halo Infinite by a year, so getting the two core modes right was critical.

    Fortunately, the free-to-play multiplayer component, which 343 Industries surprise launched three weeks early on Monday, is a blast. It's evidently a hit already, too. The mode quickly hit 272,000 concurrent players on Steam, and that's before you include those playing on console, through the PC Xbox app and on cloud gaming. 

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/halo-infinite-campaign-co-op-forge-delayed-183757524.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Fri, 19 Nov 2021 18:37:57 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon opens pre-orders for its Halo View fitness band", + "description": "

    Amazon announced a new version of its Halo fitness band at its September hardware event, and now you can lock in a pre-order. Halo View, Amazon's first wearable with a display, is $50 during the pre-order period. It'll typically cost $80.

    Pre-order Halo View at Amazon - $50

    The device, which will ship sometime in December, comes with a year-long Halo membership. The plan includes workouts and nutrition guidance, and it typically costs $4 per month.

    Halo View has a similar design to Fitbit's Charge bands. The AMOLED color screen displays details about your live workouts, activity history, blood oxygen and sleep scores, among other things (some of those features are exclusive to the Halo subscription). You can view text notifications too.

    The swim-proof device contains a skin temperature sensor, heart rate monitor and an accelerometer. Amazon claims the battery runs for up to seven days on a single charge, and that it will fully recharge in two hours.

    Although Halo View doesn't have a built-in microphone, there is integration with Alexa. If you connect to the voice assistant through the Halo app settings, you can ask an Alexa-enabled device to tell you about your health summary, sleep quality and other information.

    Amazon says privacy was a key consideration in how it designed Halo. "There are multiple layers of protections in place to keep data safe and in your control," the company claims. It also pledged not to sell health data that's linked directly to you. You'll have the option to download your health data or delete it from the Halo app at any time too.

    ", + "content": "

    Amazon announced a new version of its Halo fitness band at its September hardware event, and now you can lock in a pre-order. Halo View, Amazon's first wearable with a display, is $50 during the pre-order period. It'll typically cost $80.

    Pre-order Halo View at Amazon - $50

    The device, which will ship sometime in December, comes with a year-long Halo membership. The plan includes workouts and nutrition guidance, and it typically costs $4 per month.

    Halo View has a similar design to Fitbit's Charge bands. The AMOLED color screen displays details about your live workouts, activity history, blood oxygen and sleep scores, among other things (some of those features are exclusive to the Halo subscription). You can view text notifications too.

    The swim-proof device contains a skin temperature sensor, heart rate monitor and an accelerometer. Amazon claims the battery runs for up to seven days on a single charge, and that it will fully recharge in two hours.

    Although Halo View doesn't have a built-in microphone, there is integration with Alexa. If you connect to the voice assistant through the Halo app settings, you can ask an Alexa-enabled device to tell you about your health summary, sleep quality and other information.

    Amazon says privacy was a key consideration in how it designed Halo. "There are multiple layers of protections in place to keep data safe and in your control," the company claims. It also pledged not to sell health data that's linked directly to you. You'll have the option to download your health data or delete it from the Halo app at any time too.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/amazon-halo-view-fitness-band-pre-order-174406400.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Fri, 19 Nov 2021 17:44:06 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Why Apple changed its mind on Right to Repair", + "description": "

    Apple does not have a good track record in terms of letting customers repair their hardware. The last decade-plus has seen Apple’s computers become essentially impossible for users to service or upgrade, and the iPhone has always been a locked box. Adventurous owners might follow guides from iFixit to try and do repairs themselves, but it’s a dangerous proposition. Remember, it was just earlier this year, when we discovered that replacing the display on an iPhone 13 would disable Face ID. (Apple later backpedaled on this.)

    So Apple’s announcement earlier this week that it would start selling parts and tools directly to consumers and offer repair guides was a huge surprise, and a move immediately hailed as a victory by right-to-repair activists. “One of the most visible opponents to repair access is reversing course,” said Nathan Proctor, a senior Right to Repair campaign director at Public Interest Research Groups (PIRG). “Apple’s move shows that what repair advocates have been asking for was always possible.” iFixit was similarly pleased, saying that the move is “exactly the right thing for Apple to be doing.”

    Both groups caveated their statements by noting a few catches. PIRG says that Apple’s plans weren’t as comprehensive as the right-to-repair legislation being discussed in more than two dozen states, while iFixit wants to “analyze the legal terms and test the program” before it can say just how much credit Apple deserves. But regardless, it’s still a major about-face. So what led Apple to this move?

    Proctor told Engadget in an email exchange that he thinks “combined pressure from consumers, regulators and shareholders has shifted Apple's thinking.” But he was also quick to point out that there was pressure coming from inside Apple itself. “We saw from some leaked emails from 2019 that many inside Apple never wanted to be hostile to repair in the ways that Apple has been at times,” he said. You probably saw that [Apple co-founder Steve] Wozniak called [out] the practices, but leaked emails show internal concern they were doing the wrong thing.”

    Apple has made some other movies recently that show that potential government scrutiny and oversight could be driving change at the company. In 2020, Apple finally let users set different browser and email apps as default on the iPhone and iPad, and Siri has gotten smarter about learning your preferences for different music apps when you ask it to play tunes.

    While it’s likely that Apple is thinking about government pressure, this change might also simply be part of the company listening to its users and correcting some mistakes it made over the last five years or so. Take the new MacBook Pro, perhaps the biggest “mea culpa” Apple has ever offered: The company reversed its trend of pursuing thin and light design at all costs and instead actually made the both the 14- and 16-inch MacBook Pros thicker and heavier than their predecessors. The company also added back ports it had previously removed, killed the unpopular Touch Bar, and generally made a laptop that made it seem like they were listening to consumer feedback. The same could be said for its new home repair program.

    \"A
    Regis Duvignau / Reuters

    Apple’s move this week can also be seen as an extension of a program the company launched last year, when it started providing parts and training to third-party repair shops that met Apple’s qualifications. Obviously, this isn’t the same as making it easy for anyone to do repairs, but opening up access means the repair landscape for Apple products has changed significantly in the last few years.

    However big of a change this new plan is, though, Proctor and PIRG see this as a first step, something Apple will need to keep up and expand to really deliver what right-to-repair activists think consumers deserve. “I think Right to Repair knows what it wants, and it will be really hard to convince us to settle for anything less than an open market for repair,” Proctor said. “If they had done this step years ago, maybe we would have to settle, but we have the momentum, and we are going to empower repair as much as we can. I think most legislators agree: This is just one company and a limited program. The floor got raised, but we aren't near the ceiling yet.”

    iFixit has a similar view on the situation. “[Apple] pioneered glued-in batteries and proprietary screws, and now they are taking the first steps on a path back to long-lasting, repairable products. iFixit believes that a sustainable, repairable world of technology is possible, and hope that Apple follows up on this commitment to improve their repairability.”

    As for what’s to come, it sounds like Apple is committed to making this just a first step. The company said that repair options would initially focus on commonly-repaired modules in the iPhone 12 and 13, like the screen, battery and cameras, but it says that more options will come in the following year. We don’t know if Apple will ever give right-to-repair activists everything they want. It seems unlikely that Apple will make an iPhone where you can just pop it open and drop a new battery in, like the phones of old.

    Apple can often be a bellwether for the rest of the industry — just look how quickly other phone-makers dropped their headphone jacks. So, it’s possible we’ll see some other big consumer electronics companies make similar moves. “I think other companies will follow,” Proctor said. He also noted that Google had just released software that lets a replacement display on the Pixel 6 be properly calibrated to work with the in-screen fingerprint sensor.” We see a lot of changes in the works, and we are hopeful we can set a new baseline [for] access to repair.” If that happens, we’ll likely remember Apple’s about-face as a catalyst for these changes — assuming the company follows through with its new stance and makes it easier for owners to repair a wider variety of its products.

    ", + "content": "

    Apple does not have a good track record in terms of letting customers repair their hardware. The last decade-plus has seen Apple’s computers become essentially impossible for users to service or upgrade, and the iPhone has always been a locked box. Adventurous owners might follow guides from iFixit to try and do repairs themselves, but it’s a dangerous proposition. Remember, it was just earlier this year, when we discovered that replacing the display on an iPhone 13 would disable Face ID. (Apple later backpedaled on this.)

    So Apple’s announcement earlier this week that it would start selling parts and tools directly to consumers and offer repair guides was a huge surprise, and a move immediately hailed as a victory by right-to-repair activists. “One of the most visible opponents to repair access is reversing course,” said Nathan Proctor, a senior Right to Repair campaign director at Public Interest Research Groups (PIRG). “Apple’s move shows that what repair advocates have been asking for was always possible.” iFixit was similarly pleased, saying that the move is “exactly the right thing for Apple to be doing.”

    Both groups caveated their statements by noting a few catches. PIRG says that Apple’s plans weren’t as comprehensive as the right-to-repair legislation being discussed in more than two dozen states, while iFixit wants to “analyze the legal terms and test the program” before it can say just how much credit Apple deserves. But regardless, it’s still a major about-face. So what led Apple to this move?

    Proctor told Engadget in an email exchange that he thinks “combined pressure from consumers, regulators and shareholders has shifted Apple's thinking.” But he was also quick to point out that there was pressure coming from inside Apple itself. “We saw from some leaked emails from 2019 that many inside Apple never wanted to be hostile to repair in the ways that Apple has been at times,” he said. You probably saw that [Apple co-founder Steve] Wozniak called [out] the practices, but leaked emails show internal concern they were doing the wrong thing.”

    Apple has made some other movies recently that show that potential government scrutiny and oversight could be driving change at the company. In 2020, Apple finally let users set different browser and email apps as default on the iPhone and iPad, and Siri has gotten smarter about learning your preferences for different music apps when you ask it to play tunes.

    While it’s likely that Apple is thinking about government pressure, this change might also simply be part of the company listening to its users and correcting some mistakes it made over the last five years or so. Take the new MacBook Pro, perhaps the biggest “mea culpa” Apple has ever offered: The company reversed its trend of pursuing thin and light design at all costs and instead actually made the both the 14- and 16-inch MacBook Pros thicker and heavier than their predecessors. The company also added back ports it had previously removed, killed the unpopular Touch Bar, and generally made a laptop that made it seem like they were listening to consumer feedback. The same could be said for its new home repair program.

    \"A
    Regis Duvignau / Reuters

    Apple’s move this week can also be seen as an extension of a program the company launched last year, when it started providing parts and training to third-party repair shops that met Apple’s qualifications. Obviously, this isn’t the same as making it easy for anyone to do repairs, but opening up access means the repair landscape for Apple products has changed significantly in the last few years.

    However big of a change this new plan is, though, Proctor and PIRG see this as a first step, something Apple will need to keep up and expand to really deliver what right-to-repair activists think consumers deserve. “I think Right to Repair knows what it wants, and it will be really hard to convince us to settle for anything less than an open market for repair,” Proctor said. “If they had done this step years ago, maybe we would have to settle, but we have the momentum, and we are going to empower repair as much as we can. I think most legislators agree: This is just one company and a limited program. The floor got raised, but we aren't near the ceiling yet.”

    iFixit has a similar view on the situation. “[Apple] pioneered glued-in batteries and proprietary screws, and now they are taking the first steps on a path back to long-lasting, repairable products. iFixit believes that a sustainable, repairable world of technology is possible, and hope that Apple follows up on this commitment to improve their repairability.”

    As for what’s to come, it sounds like Apple is committed to making this just a first step. The company said that repair options would initially focus on commonly-repaired modules in the iPhone 12 and 13, like the screen, battery and cameras, but it says that more options will come in the following year. We don’t know if Apple will ever give right-to-repair activists everything they want. It seems unlikely that Apple will make an iPhone where you can just pop it open and drop a new battery in, like the phones of old.

    Apple can often be a bellwether for the rest of the industry — just look how quickly other phone-makers dropped their headphone jacks. So, it’s possible we’ll see some other big consumer electronics companies make similar moves. “I think other companies will follow,” Proctor said. He also noted that Google had just released software that lets a replacement display on the Pixel 6 be properly calibrated to work with the in-screen fingerprint sensor.” We see a lot of changes in the works, and we are hopeful we can set a new baseline [for] access to repair.” If that happens, we’ll likely remember Apple’s about-face as a catalyst for these changes — assuming the company follows through with its new stance and makes it easier for owners to repair a wider variety of its products.

    ", + "category": "Personal Finance - Lifestyle", + "link": "https://www.engadget.com/apple-user-iphone-repair-policy-change-173047862.html?src=rss", + "creator": "Nathan Ingraham", + "pubDate": "Fri, 19 Nov 2021 17:30:47 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The OnePlus 9 Pro is $270 off right now", + "description": "

    If you're looking for an alternative smartphone to an iPhone, Samsung handset or Pixel, you can't go far wrong with the OnePlus 9 Pro. It has many of the bells and whistles you'd expect from a premium smartphone. Just before Black Friday, you can pick up the OnePlus 9 Pro from the OnePlus website, Amazon or Best Buy for $799, $270 less than the regular price.

    Buy OnePlus 9 Pro at OnePlus - $799Buy OnePlus 9 Pro at Amazon - $799Buy OnePlus 9 Pro at Best Buy - $799

    We gave the OnePlus Pro 9 a score of 88 in our review, calling it the best OnePlus phone to date. The IP68-rated device has a 6.7-inch, 3,216 x 1,440 screen with brightness of up to 1,300 nits and a 120Hz maximum refresh rate. It includes dual speakers, a microSIM slot and a USB-C port that's compatible with the OnePlus Warp Charge adaptor.

    The OnePlus 9 Pro features Hasselblad lenses on the rear, including a 48MP main camera, 50MP ultra-wide camera and 8MP telephoto camera. The array can shoot 8K video at 30fps, but we had reservations about the telephoto lens, which sometimes overexposed images in scenarios with a lot of light.

    The device is powered by a Snapdragon 888 processor, which is plenty capable. It comes with 12GB of RAM and 256GB of storage. The dual 4,500mAh battery cells should get you a full day of use on a single charge.

    The standard OnePlus 9 is on sale too. You can pick it up for $599 at Amazon and Best Buy — $130 off the regular price. It has a slightly smaller 6.5-inch, Full HD display and also runs on a Snapdragon 888 with the same RAM and storage as its larger sibling. Although it too has Hasselblad cameras, the OnePlus 9 has an older 48-megapixel sensor to reduce the cost.

    Buy OnePlus 9 at Amazon - $599Buy OnePlus 9 at Best Buy - $599

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    If you're looking for an alternative smartphone to an iPhone, Samsung handset or Pixel, you can't go far wrong with the OnePlus 9 Pro. It has many of the bells and whistles you'd expect from a premium smartphone. Just before Black Friday, you can pick up the OnePlus 9 Pro from the OnePlus website, Amazon or Best Buy for $799, $270 less than the regular price.

    Buy OnePlus 9 Pro at OnePlus - $799Buy OnePlus 9 Pro at Amazon - $799Buy OnePlus 9 Pro at Best Buy - $799

    We gave the OnePlus Pro 9 a score of 88 in our review, calling it the best OnePlus phone to date. The IP68-rated device has a 6.7-inch, 3,216 x 1,440 screen with brightness of up to 1,300 nits and a 120Hz maximum refresh rate. It includes dual speakers, a microSIM slot and a USB-C port that's compatible with the OnePlus Warp Charge adaptor.

    The OnePlus 9 Pro features Hasselblad lenses on the rear, including a 48MP main camera, 50MP ultra-wide camera and 8MP telephoto camera. The array can shoot 8K video at 30fps, but we had reservations about the telephoto lens, which sometimes overexposed images in scenarios with a lot of light.

    The device is powered by a Snapdragon 888 processor, which is plenty capable. It comes with 12GB of RAM and 256GB of storage. The dual 4,500mAh battery cells should get you a full day of use on a single charge.

    The standard OnePlus 9 is on sale too. You can pick it up for $599 at Amazon and Best Buy — $130 off the regular price. It has a slightly smaller 6.5-inch, Full HD display and also runs on a Snapdragon 888 with the same RAM and storage as its larger sibling. Although it too has Hasselblad cameras, the OnePlus 9 has an older 48-megapixel sensor to reduce the cost.

    Buy OnePlus 9 at Amazon - $599Buy OnePlus 9 at Best Buy - $599

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Shopping", + "link": "https://www.engadget.com/oneplus-9-pro-black-friday-good-deal-170202094.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Fri, 19 Nov 2021 17:17:02 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Miami votes to end electric scooter pilot program", + "description": "

    Once home to most electric scooters in the US, Miami is turning its back on the micromobility vehicles. Per the Miami Herald, city commissioners voted on Thursday to end a multi-year pilot that had allowed companies like Bird and Lime to operate shared scooter rentals within the city’s core. Those companies now have until 5PM on Friday, November 19th, to collect their electric scooters. If they don’t comply in time, the city will impound the vehicles.

    “We’re shutting it down,” Commissioner Alex Díaz de la Portilla told the outlet. “That’s it.” Like in many other cities across the US and other parts of the world, electric scooters were a source of controversy in Miami. Supporters claimed they were an effective solution for last-mile travel, while detractors said they made city sidewalks unsafe. It’s that latter point of view that swayed the commission’s vote.

    “On Biscayne Boulevard, at whatever hour of the day, you see kids on these scooters,” said Commissioner Díaz de la Portilla. “This is an accident waiting to happen.” Ken Russell, the lone commissioner who voted against ending the program, pointed out it had been a revenue generator for the city. Miami had earned approximately $2.4 million through the pilot program, and it had used that money to fund new bike lanes.

    The vote caught the scooter companies off guard. “We’re extremely disappointed in the Commission’s hasty and short-sighted action to end the scooter program, taking away a safe and popular transportation option used by thousands of Miami residents daily and putting dozens of workers out of a job the week before Thanksgiving,” said Caroline Samponaro, vice president of transit, bike and scooter policy at Lyft, in a statement shared with Engadget.

    As the Miami Herald points out, there is a chance scooters could return to Miami. City staff are drafting rules that would allow rental companies to bid for a contract to operate in the city as part of a permanent program. But based on the fact the Miami City Commission would need to vote to authorize such a program, it’s not clear if there’s enough support.

    ", + "content": "

    Once home to most electric scooters in the US, Miami is turning its back on the micromobility vehicles. Per the Miami Herald, city commissioners voted on Thursday to end a multi-year pilot that had allowed companies like Bird and Lime to operate shared scooter rentals within the city’s core. Those companies now have until 5PM on Friday, November 19th, to collect their electric scooters. If they don’t comply in time, the city will impound the vehicles.

    “We’re shutting it down,” Commissioner Alex Díaz de la Portilla told the outlet. “That’s it.” Like in many other cities across the US and other parts of the world, electric scooters were a source of controversy in Miami. Supporters claimed they were an effective solution for last-mile travel, while detractors said they made city sidewalks unsafe. It’s that latter point of view that swayed the commission’s vote.

    “On Biscayne Boulevard, at whatever hour of the day, you see kids on these scooters,” said Commissioner Díaz de la Portilla. “This is an accident waiting to happen.” Ken Russell, the lone commissioner who voted against ending the program, pointed out it had been a revenue generator for the city. Miami had earned approximately $2.4 million through the pilot program, and it had used that money to fund new bike lanes.

    The vote caught the scooter companies off guard. “We’re extremely disappointed in the Commission’s hasty and short-sighted action to end the scooter program, taking away a safe and popular transportation option used by thousands of Miami residents daily and putting dozens of workers out of a job the week before Thanksgiving,” said Caroline Samponaro, vice president of transit, bike and scooter policy at Lyft, in a statement shared with Engadget.

    As the Miami Herald points out, there is a chance scooters could return to Miami. City staff are drafting rules that would allow rental companies to bid for a contract to operate in the city as part of a permanent program. But based on the fact the Miami City Commission would need to vote to authorize such a program, it’s not clear if there’s enough support.

    ", + "category": "Automotive Industry", + "link": "https://www.engadget.com/miami-ends-electric-scooter-pilot-program-165747077.html?src=rss", + "creator": "Igor Bonifacic", + "pubDate": "Fri, 19 Nov 2021 17:02:48 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Bose's QuietComfort 45 headphones drop to $279, plus the rest of the week's best tech deals", + "description": "

    We're officially one week out from Black Friday and it seems most retailers have launched at least a portion of their deals and sales already. You can find the exhaustive list on our deals homepage, but we've gathered the highlights here. Bose's new QuietComfort 45 headphones remain on sale for $279, while the Mac Mini M1 is still $100 off. A bunch of Amazon and Google devices have been discounted, and you can still get the second-generation Apple Pencil for $100. Here are the best early Black Friday tech deals that you can still get today.

    Bose QuietComfort 45

    \"With
    Billy Steele/Engadget

    Bose's new QuietComfort 45 headphones are on sale for $279 right now, or $50 off their normal price. We gave them a score of 86 for their clear, balanced audio, improved ANC and long battery life.

    Buy QuietComfort 45 at Amazon - $279

    Mac Mini M1

    \"Apple
    Engadget

    Apple's Mac Mini M1 is on sale for $600 thanks to an automatically applied coupon at Amazon. It was already the most affordable M1 machine you could get, but these deal makes it even cheaper. It's the best option if you need a compact desktop that runs macOS and has a newer, more powerful processor.

    Buy Mac Mini M1 at Amazon - $600

    HomePod Mini

    \"Apple
    Apple

    The new colors of the HomePod mini are $5 cheaper right now at B&H Photo, bringing them down to $95 each. It's not a huge discount, but we rarely see these smart speakers drop below $85 - $90 a piece. We gave the HomePod mini a score of 84 for its solid audio quality, cute and compact design and improved Siri smarts.

    Buy HomePod mini at B&H - $95

    Apple Pencil (2nd-gen)

    \"Apple
    Valentina Palladino / Engadget

    The second-generation Apple Pencil is on sale for $100 right now, which is an all-time-low price. It works with all iPads except for the latest 10.2-inch entry-level model, which still supports the first-gen stylus. It's a must-have if you plan on taking notes or creating artwork with your iPad.

    Buy Apple Pencil (2nd gen) at Amazon - $100

    Samsung foldables

    \"The
    David Imel for Engadget

    Samsung's latest foldables are on sale for Black Friday, and you can get a free pair of Galaxy Buds 2 when you buy. The Z Flip 3 is down to $850 while the Z Fold 3 is on sale for $1,500 — if you buy through Amazon, you just have to apply the free-earbuds promotional offer on the product page before checking out.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Google deals

    \"Google
    Engadget

    A number of Google gadgets have been discounted ahead of Black Friday. Key among them are the Pixel 6 smartphone for up to $100 off, the Nest Hub for half off and the Nest Audio for only $60.

    Buy Pixel 6 at Best Buy - $499Buy Nest Hub at Best Buy - $50Buy Nest Audio at Best Buy - $60

    Sony WH-1000XM4

    \"Sony
    Billy Steele / Engadget

    Sony's WH-1000XM4 headphones are on sale for $248, which is a record-low price. These are our current favorite ANC cans and we gave them a score of 94 for their excellent sound quality, good ANC and multi-device connectivity.

    Buy WH-1000XM4 at Amazon - $248

    Sony WF-1000XM4

    \"Sony
    Billy Steele/Engadget

    Sony's excellent WF-1000XM4 earbuds are still down to $248. We gave them a score of 86 for their great sound quality, powerful ANC and improved battery life.

    Buy WF-1000XM4 at Amazon - $248

    Jabra Elite 75t

    \"Jabra
    Billy Steele / Engadget

    Jabra's Elite 75 earbuds are on sale for $80, which is $70 off and a record low. While not the latest earbuds from Jabra, they remain some of our favorites thanks to their solid audio quality, comfortable design and new ANC abilities that came through a recent software update.

    Buy Elite 75t at Amazon - $80

    August WiFi smart lock

    \"August
    Engadget

    The 4th-generation August WiFi smart lock is on sale for $179 right now. We gave the smart home gadget a score of 80 for its minimalist design, easy installation process and mandatory two-factor authentication.

    Buy August WiFi smart lock at Amazon - $179Buy August WiFi smart lock at Wellbots - $179

    Samsung T7 SSD

    \"Samsung
    Samsung

    Samsung's T7 portable SSD in 1TB has dropped to a record low of $130. You can also grab the 2TB model on sale for $250 right now, too. We like these compact drives for their durable yet sleek design, speedy performance and optional password protection.

    Buy Samsung T7 (1TB) at Amazon - $130Buy Samsung T7 (2TB) at Amazon - $250

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    Roku's Streambar is on sale for $80 right now, or $50 off its normal price. That's the best price we've seen on the compact soundbar. It earned a score of 86 from us for its solid audio quality, Dolby Atmos support and built-in 4K streaming technology.

    Buy Streambar at Amazon - $80Buy Streambar at Roku - $80

    Amazon Echo devices

    \"Amazon
    Nathan Ingraham / Engadget

    Amazon's slashed the prices of most of its Echo devices ahead of Black Friday. Of note are the Echo smart speaker for $60 and the latest Echo Show 5 for $45. The sale includes other items like the Echo Buds and the Echo Frames, and we recommend grabbing Echo devices now while they're at all-time-low prices and before shipping times get too long.

    Buy Echo at Amazon - $60Buy Echo Show 5 at Amazon - $45

    Amazon Fire tablets

    \"Amazon
    Valentina Palladino / Engadget

    A number of regular and kids edition Fire tablets have been discounted ahead of Black Friday. Notably, the Fire HD 8 and HD 10 are half off, while all Fire Kids Pro devices are at record-low prices. 

    Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Amazon Fire TV Stick 4K Max

    \"Amazon
    Amazon

    The new Fire TV Stick 4K Max is on sale for $35, or $20 off its normal price. It has all of the same features as the standard 4K streaming stick that Amazon sells, but it also supports WiFi 6 and picture-in-picture live view.

    Buy Fire TV Stick 4K Max at Amazon - $35

    Kindle

    \"Amazon
    Engadget

    The basic Kindle is on sale for $50, which is a record-low price. While it doesn't have all the bells and whistles of the Paperwhite, it remains a solid e-reader thanks to its front-lit display, sleek design and improved contrast display.

    Buy Kindle at Amazon - $50

    Blink cameras

    \"Blink
    Amazon / Blink

    Most Blink security cameras have been discounted ahead of Black Friday: a one-pack of the Outdoor cam is on sale for $60, the same configuration for the Indoor camera is down to $50 and the tiny, wired Blink Mini is on sale for $20.

    Buy Blink Outdoor at Amazon - $60Buy Blink Indoor at Amazon - $50Buy Blink Mini at Amazon - $20

    Solo Stove

    \"Solo
    Engadget

    Solo Stove's early Black Friday sale knocks up to $200 off its fire pits. The midrange Bonfire is on sale for $225, which is $125 off its normal price. These stainless steel fire pits have made it into some of our outdoor-focused guides, and we like them for their attractive designs and their ability to create a cozy fire that doesn't emit tons of smoke.

    Shop Solo Stove Black Friday sale

    Adobe All Apps plan

    \"Over
    gorodenkoff via Getty Images

    New Adobe subscribers can get the All Apps plan for only $30 per month, which is 40 percent off its normal price. That gets you Photoshop, Illustrator, InDesign, Premiere Pro and Acrobat, which are most of Adobe's most popular programs. Students can save even more: the discount is $16 per month for them, or 70 percent off the normal rate.

    Buy All Apps plan at Adobe - $30/month

    Arturia sale

    \"Arturia
    Arturia

    Arturia's early Black Friday sale knocks 50 percent off software through December 8th. That includes the FX Collection 2 vintage plugin set, which is now $199, the V Collection 8 synth keyboard pack for $299 and the Pigments soft synth with the Spectrum sound pack for $99.

    Shop Arturia Black Friday sale

    New early Black Friday tech deals

    Jabra 85h

    Jabra's 85h wireless headphones are back down to their lowest price yet, only $150. We gave them a score of 84 when they first came out in 2019 for their custom EQ and ANC modes, solid onboard controls and insane battery life.

    Buy Jabra 85h at Amazon - $150

    NordVPN

    NordVPN has a promotion going on right now that gets you two years of the service for $89. That's 68 percent off its normal price. We like NordVPN for its speed, its no-logs policy, the thousands of servers it has to choose from and that one account supports up to six connected devices.

    Buy NordVPN (2 years) - $89

    Segway Kickscooter Max

    Wellbots has the Segway Kickscooter Max for $150 off, bringing it down to $799 when you use the code ENGADGET150 at checkout. This model has the longest driving range of all Ninebot scooters, pneumatic inflatable tires, 6-hour fast charging and more.

    Buy Kickscooter Max at Wellbots - $799

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    We're officially one week out from Black Friday and it seems most retailers have launched at least a portion of their deals and sales already. You can find the exhaustive list on our deals homepage, but we've gathered the highlights here. Bose's new QuietComfort 45 headphones remain on sale for $279, while the Mac Mini M1 is still $100 off. A bunch of Amazon and Google devices have been discounted, and you can still get the second-generation Apple Pencil for $100. Here are the best early Black Friday tech deals that you can still get today.

    Bose QuietComfort 45

    \"With
    Billy Steele/Engadget

    Bose's new QuietComfort 45 headphones are on sale for $279 right now, or $50 off their normal price. We gave them a score of 86 for their clear, balanced audio, improved ANC and long battery life.

    Buy QuietComfort 45 at Amazon - $279

    Mac Mini M1

    \"Apple
    Engadget

    Apple's Mac Mini M1 is on sale for $600 thanks to an automatically applied coupon at Amazon. It was already the most affordable M1 machine you could get, but these deal makes it even cheaper. It's the best option if you need a compact desktop that runs macOS and has a newer, more powerful processor.

    Buy Mac Mini M1 at Amazon - $600

    HomePod Mini

    \"Apple
    Apple

    The new colors of the HomePod mini are $5 cheaper right now at B&H Photo, bringing them down to $95 each. It's not a huge discount, but we rarely see these smart speakers drop below $85 - $90 a piece. We gave the HomePod mini a score of 84 for its solid audio quality, cute and compact design and improved Siri smarts.

    Buy HomePod mini at B&H - $95

    Apple Pencil (2nd-gen)

    \"Apple
    Valentina Palladino / Engadget

    The second-generation Apple Pencil is on sale for $100 right now, which is an all-time-low price. It works with all iPads except for the latest 10.2-inch entry-level model, which still supports the first-gen stylus. It's a must-have if you plan on taking notes or creating artwork with your iPad.

    Buy Apple Pencil (2nd gen) at Amazon - $100

    Samsung foldables

    \"The
    David Imel for Engadget

    Samsung's latest foldables are on sale for Black Friday, and you can get a free pair of Galaxy Buds 2 when you buy. The Z Flip 3 is down to $850 while the Z Fold 3 is on sale for $1,500 — if you buy through Amazon, you just have to apply the free-earbuds promotional offer on the product page before checking out.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Google deals

    \"Google
    Engadget

    A number of Google gadgets have been discounted ahead of Black Friday. Key among them are the Pixel 6 smartphone for up to $100 off, the Nest Hub for half off and the Nest Audio for only $60.

    Buy Pixel 6 at Best Buy - $499Buy Nest Hub at Best Buy - $50Buy Nest Audio at Best Buy - $60

    Sony WH-1000XM4

    \"Sony
    Billy Steele / Engadget

    Sony's WH-1000XM4 headphones are on sale for $248, which is a record-low price. These are our current favorite ANC cans and we gave them a score of 94 for their excellent sound quality, good ANC and multi-device connectivity.

    Buy WH-1000XM4 at Amazon - $248

    Sony WF-1000XM4

    \"Sony
    Billy Steele/Engadget

    Sony's excellent WF-1000XM4 earbuds are still down to $248. We gave them a score of 86 for their great sound quality, powerful ANC and improved battery life.

    Buy WF-1000XM4 at Amazon - $248

    Jabra Elite 75t

    \"Jabra
    Billy Steele / Engadget

    Jabra's Elite 75 earbuds are on sale for $80, which is $70 off and a record low. While not the latest earbuds from Jabra, they remain some of our favorites thanks to their solid audio quality, comfortable design and new ANC abilities that came through a recent software update.

    Buy Elite 75t at Amazon - $80

    August WiFi smart lock

    \"August
    Engadget

    The 4th-generation August WiFi smart lock is on sale for $179 right now. We gave the smart home gadget a score of 80 for its minimalist design, easy installation process and mandatory two-factor authentication.

    Buy August WiFi smart lock at Amazon - $179Buy August WiFi smart lock at Wellbots - $179

    Samsung T7 SSD

    \"Samsung
    Samsung

    Samsung's T7 portable SSD in 1TB has dropped to a record low of $130. You can also grab the 2TB model on sale for $250 right now, too. We like these compact drives for their durable yet sleek design, speedy performance and optional password protection.

    Buy Samsung T7 (1TB) at Amazon - $130Buy Samsung T7 (2TB) at Amazon - $250

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    Roku's Streambar is on sale for $80 right now, or $50 off its normal price. That's the best price we've seen on the compact soundbar. It earned a score of 86 from us for its solid audio quality, Dolby Atmos support and built-in 4K streaming technology.

    Buy Streambar at Amazon - $80Buy Streambar at Roku - $80

    Amazon Echo devices

    \"Amazon
    Nathan Ingraham / Engadget

    Amazon's slashed the prices of most of its Echo devices ahead of Black Friday. Of note are the Echo smart speaker for $60 and the latest Echo Show 5 for $45. The sale includes other items like the Echo Buds and the Echo Frames, and we recommend grabbing Echo devices now while they're at all-time-low prices and before shipping times get too long.

    Buy Echo at Amazon - $60Buy Echo Show 5 at Amazon - $45

    Amazon Fire tablets

    \"Amazon
    Valentina Palladino / Engadget

    A number of regular and kids edition Fire tablets have been discounted ahead of Black Friday. Notably, the Fire HD 8 and HD 10 are half off, while all Fire Kids Pro devices are at record-low prices. 

    Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Amazon Fire TV Stick 4K Max

    \"Amazon
    Amazon

    The new Fire TV Stick 4K Max is on sale for $35, or $20 off its normal price. It has all of the same features as the standard 4K streaming stick that Amazon sells, but it also supports WiFi 6 and picture-in-picture live view.

    Buy Fire TV Stick 4K Max at Amazon - $35

    Kindle

    \"Amazon
    Engadget

    The basic Kindle is on sale for $50, which is a record-low price. While it doesn't have all the bells and whistles of the Paperwhite, it remains a solid e-reader thanks to its front-lit display, sleek design and improved contrast display.

    Buy Kindle at Amazon - $50

    Blink cameras

    \"Blink
    Amazon / Blink

    Most Blink security cameras have been discounted ahead of Black Friday: a one-pack of the Outdoor cam is on sale for $60, the same configuration for the Indoor camera is down to $50 and the tiny, wired Blink Mini is on sale for $20.

    Buy Blink Outdoor at Amazon - $60Buy Blink Indoor at Amazon - $50Buy Blink Mini at Amazon - $20

    Solo Stove

    \"Solo
    Engadget

    Solo Stove's early Black Friday sale knocks up to $200 off its fire pits. The midrange Bonfire is on sale for $225, which is $125 off its normal price. These stainless steel fire pits have made it into some of our outdoor-focused guides, and we like them for their attractive designs and their ability to create a cozy fire that doesn't emit tons of smoke.

    Shop Solo Stove Black Friday sale

    Adobe All Apps plan

    \"Over
    gorodenkoff via Getty Images

    New Adobe subscribers can get the All Apps plan for only $30 per month, which is 40 percent off its normal price. That gets you Photoshop, Illustrator, InDesign, Premiere Pro and Acrobat, which are most of Adobe's most popular programs. Students can save even more: the discount is $16 per month for them, or 70 percent off the normal rate.

    Buy All Apps plan at Adobe - $30/month

    Arturia sale

    \"Arturia
    Arturia

    Arturia's early Black Friday sale knocks 50 percent off software through December 8th. That includes the FX Collection 2 vintage plugin set, which is now $199, the V Collection 8 synth keyboard pack for $299 and the Pigments soft synth with the Spectrum sound pack for $99.

    Shop Arturia Black Friday sale

    New early Black Friday tech deals

    Jabra 85h

    Jabra's 85h wireless headphones are back down to their lowest price yet, only $150. We gave them a score of 84 when they first came out in 2019 for their custom EQ and ANC modes, solid onboard controls and insane battery life.

    Buy Jabra 85h at Amazon - $150

    NordVPN

    NordVPN has a promotion going on right now that gets you two years of the service for $89. That's 68 percent off its normal price. We like NordVPN for its speed, its no-logs policy, the thousands of servers it has to choose from and that one account supports up to six connected devices.

    Buy NordVPN (2 years) - $89

    Segway Kickscooter Max

    Wellbots has the Segway Kickscooter Max for $150 off, bringing it down to $799 when you use the code ENGADGET150 at checkout. This model has the longest driving range of all Ninebot scooters, pneumatic inflatable tires, 6-hour fast charging and more.

    Buy Kickscooter Max at Wellbots - $799

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Shopping", + "link": "https://www.engadget.com/boses-quietcomfort-45-headphones-drop-to-279-best-tech-deals-this-week-164510659.html?src=rss", + "creator": "Engadget", + "pubDate": "Fri, 19 Nov 2021 16:45:10 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Early Black Friday gaming deals include one year of PS Plus for $40", + "description": "

    Just ahead of Black Friday, some solid gaming deals are popping up. A 12-month subscription to PlayStation Plus is currently $40 on Amazon. It typically costs $60 and it's a digital code, so you won't have to wait for delivery. If you’re already a PS Plus member, it’s still worth checking out this deal, since you can stack additional subscriptions.

    Buy PS Plus (1 year) at Amazon - $40

    You'll need a PS Plus membership to play most multiplayer games on PlayStation 4 and PlayStation 5. There are exceptions for some free-to-play games, including Fortnite. In addition, members often get discounts on digital purchases through the PlayStation Store, as well as cloud storage and backups for game save files.

    One of the major value adds of PS Plus is that players receive a mystery bag of a few games each month across PS4 and PS5. There are three extra PS VR games this month to mark the headset’s fifth anniversary. You’ll retain access to claimed PS Plus games as long as you maintain your subscription.

    PS5 owners can take advantage of the PS Plus Collection too. It’s a selection of first-party and third-party PS4 games, some of which have been patched for better performance on PS5. The lineup includes God of War, Monster Hunter: World, Final Fantasy XV, Uncharted 4: A Thief's End, Ratchet & Clank, Days Gone, Battlefield 1, Batman: Arkham Knight, The Last Guardian, The Last of Us Remastered, Persona 5 and Resident Evil 7. The same rule applies: if your PS Plus subscription lapses, you won’t be able to play games you claimed through the collection.

    Of course, given that this is the biggest shopping season of the year, there are discounts on games as well, and many of the better deals are for physical editions. You can find savings on PlayStation console exclusives like Deathloop ($25 at GameStop if you click 'New' and $30 at Amazon, usually $60), the director's cut of Ghost of Tsushima on PS5 (down from $70 to $50), Demon's Souls (also reduced by $30 to $40) and, in one of the bigger discounts, Returnal, which has dropped from $70 to $30.

    There are good deals on multi-platform titles too, such as Eidos-Montreal's surprisingly wonderful Marvel's Guardians of the Galaxy, which is half off at $30 on all platforms. Hitman 3 and Resident Evil: Village are both less than half price at the minute at $20. Hades, which is widely regarded as one of the best games of 2020, is also $20 on all platforms.

    Far Cry 6 is a third off at $40, and you can save on FIFA 22 as well. The latest edition of EA's famed soccer series is $40 on PS5 and Xbox Series X/S (it's a digital code for the latter consoles), and $28 on PS4 and Xbox One.

    The PS5 digital edition and Xbox Series X don't have disc drives, so deals on physical games won't mean much to owners of those consoles. However, it's worth checking out the PlayStation and Xbox digital stores for Black Friday deals there too.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Just ahead of Black Friday, some solid gaming deals are popping up. A 12-month subscription to PlayStation Plus is currently $40 on Amazon. It typically costs $60 and it's a digital code, so you won't have to wait for delivery. If you’re already a PS Plus member, it’s still worth checking out this deal, since you can stack additional subscriptions.

    Buy PS Plus (1 year) at Amazon - $40

    You'll need a PS Plus membership to play most multiplayer games on PlayStation 4 and PlayStation 5. There are exceptions for some free-to-play games, including Fortnite. In addition, members often get discounts on digital purchases through the PlayStation Store, as well as cloud storage and backups for game save files.

    One of the major value adds of PS Plus is that players receive a mystery bag of a few games each month across PS4 and PS5. There are three extra PS VR games this month to mark the headset’s fifth anniversary. You’ll retain access to claimed PS Plus games as long as you maintain your subscription.

    PS5 owners can take advantage of the PS Plus Collection too. It’s a selection of first-party and third-party PS4 games, some of which have been patched for better performance on PS5. The lineup includes God of War, Monster Hunter: World, Final Fantasy XV, Uncharted 4: A Thief's End, Ratchet & Clank, Days Gone, Battlefield 1, Batman: Arkham Knight, The Last Guardian, The Last of Us Remastered, Persona 5 and Resident Evil 7. The same rule applies: if your PS Plus subscription lapses, you won’t be able to play games you claimed through the collection.

    Of course, given that this is the biggest shopping season of the year, there are discounts on games as well, and many of the better deals are for physical editions. You can find savings on PlayStation console exclusives like Deathloop ($25 at GameStop if you click 'New' and $30 at Amazon, usually $60), the director's cut of Ghost of Tsushima on PS5 (down from $70 to $50), Demon's Souls (also reduced by $30 to $40) and, in one of the bigger discounts, Returnal, which has dropped from $70 to $30.

    There are good deals on multi-platform titles too, such as Eidos-Montreal's surprisingly wonderful Marvel's Guardians of the Galaxy, which is half off at $30 on all platforms. Hitman 3 and Resident Evil: Village are both less than half price at the minute at $20. Hades, which is widely regarded as one of the best games of 2020, is also $20 on all platforms.

    Far Cry 6 is a third off at $40, and you can save on FIFA 22 as well. The latest edition of EA's famed soccer series is $40 on PS5 and Xbox Series X/S (it's a digital code for the latter consoles), and $28 on PS4 and Xbox One.

    The PS5 digital edition and Xbox Series X don't have disc drives, so deals on physical games won't mean much to owners of those consoles. However, it's worth checking out the PlayStation and Xbox digital stores for Black Friday deals there too.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Shopping", + "link": "https://www.engadget.com/black-friday-gaming-deals-ps-plus-ps4-ps5-xbox-154250418.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Fri, 19 Nov 2021 15:42:50 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Sony's excellent WH-1000XM4 headphones are back down to $248", + "description": "

    Sony made the best even better with this year's WH-1000XM4 wireless headphones and they're back on sale ahead of Black Friday. You can grab the cans for $248 right now, or more than $100 off their normal price. If you prefer earbuds, the WF-1000XM4 have been discounted for a bit and remain down to $248 as well.

    Buy WH-1000XM4 at Amazon - $248Buy WH-1000XM4 at Best Buy - $248Buy WF-1000XM4 earbuds at Amazon - $248Buy WF-1000XM4 earbuds at Best Buy - $248

    All of the key (and stellar) features of the previous WH-1000XM3 are in the latest headphones, but the new model has a few upgrades, too. The design is slightly sleeker and more comfortable, and you'll get about 30 hours on a single charge so you can wear them for long stretches of time. Sound quality is great with punchy bass, and Sony's 360 Reality Audio provides an immersive experience similar to that of Dolby Atmos. Active noise cancellation is also solid and, with Adaptive Sound Control enabled, the headphones will automatically adjust the level of noise cancellation based on your environment.

    We also appreciate the addition of two new features: multi-device connectivity and Speak to Chat. The former allows you to connect the XM4 to a couple of devices at once, switching between them at will. The latter will automatically pause audio coming from the headphones when it detects you speaking. Most people will likely use the former feature more on a regular basis, but the latter is nice to have, too.

    For those who prefer earbuds, you'll get many similar features in the WF-1000XM4. These earned a score of 86 from us for their excellent sound quality and ANC, improved battery life and wireless charging case. They also have the same Speak-to-Chat feature that the headphones have, even if it can be a bit finicky sometimes. The ANC on these buds is noticeably better than that of their predecessors, and they also support 360 Reality Audio.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Sony made the best even better with this year's WH-1000XM4 wireless headphones and they're back on sale ahead of Black Friday. You can grab the cans for $248 right now, or more than $100 off their normal price. If you prefer earbuds, the WF-1000XM4 have been discounted for a bit and remain down to $248 as well.

    Buy WH-1000XM4 at Amazon - $248Buy WH-1000XM4 at Best Buy - $248Buy WF-1000XM4 earbuds at Amazon - $248Buy WF-1000XM4 earbuds at Best Buy - $248

    All of the key (and stellar) features of the previous WH-1000XM3 are in the latest headphones, but the new model has a few upgrades, too. The design is slightly sleeker and more comfortable, and you'll get about 30 hours on a single charge so you can wear them for long stretches of time. Sound quality is great with punchy bass, and Sony's 360 Reality Audio provides an immersive experience similar to that of Dolby Atmos. Active noise cancellation is also solid and, with Adaptive Sound Control enabled, the headphones will automatically adjust the level of noise cancellation based on your environment.

    We also appreciate the addition of two new features: multi-device connectivity and Speak to Chat. The former allows you to connect the XM4 to a couple of devices at once, switching between them at will. The latter will automatically pause audio coming from the headphones when it detects you speaking. Most people will likely use the former feature more on a regular basis, but the latter is nice to have, too.

    For those who prefer earbuds, you'll get many similar features in the WF-1000XM4. These earned a score of 86 from us for their excellent sound quality and ANC, improved battery life and wireless charging case. They also have the same Speak-to-Chat feature that the headphones have, even if it can be a bit finicky sometimes. The ANC on these buds is noticeably better than that of their predecessors, and they also support 360 Reality Audio.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Audio Technology", + "link": "https://www.engadget.com/sonys-excellent-wh1000xm4-headphones-are-back-down-to-248-151142901.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Fri, 19 Nov 2021 15:11:42 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Samsung’s Black Friday sale knocks up to $300 off foldables and includes free earbuds", + "description": "

    Samsung's latest family of foldables is its best yet, but also its most expensive. Their high price tags can make it hard to be an early adopter without emptying your bank account. But Black Friday sales have come in clutch for the Galaxy Z Flip 3 and the Galaxy Z Fold 3 — both are on sale for record-low prices at Amazon right now. The Z Flip 3 is $150 off and down to $850 while the Z Fold 3 is $300 off and down to $1,500. Both also come with a free pair of Galaxy Buds 2 if you apply the promotional offer on the product page before checking out. If you'd rather order directly from Samsung, you can get the same deal on the Z Fold 3 there, but the Z Flip 3 costs an extra $50.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Out of the two, the Z Flip 3 impressed us more, in part because Samsung fixed many of the problems found in its predecessor. While you'll still notice a crease in its 6.7-inch AMOLED display, it's not as noticeable as before, and the screen and the device overall seems more durable this time around. The handset doesn't scratch as easily anymore and it's IPX8 water resistant, too.

    The main screen runs at 2,640 x 1,080 resolution and is lovely to use, and it supports up to 120Hz refresh rates. When folded, the 1.9-inch external screen displays short bits of information like the weather and calendar events, and it can be used to quickly access certain features like Samsung Pay. We also appreciate the new software features that Samsung built in that are foldable specific such as Flex Mode, which will show things like a a YouTube video on the top half of the display when the device is partially folded and the comments section on the bottom.

    While the Z Flip 3 is both impressive and fairly practical, we found the Z Fold 3 to be remarkable but much less useful. It's larger and heavier for one, and when closed, it's narrower than most smartphones, which makes it a bit awkward. Its 7.6-inch AMOLED interior display provides an immersive experience and is more flexible than previous iterations, and we appreciate the S Pen support. But overall, it's not the best smartphone nor the best small tablet. However, that might not matter to those who are super excited about owning a foldable — and these Black Friday sales make that reality a bit more accessible.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Samsung's latest family of foldables is its best yet, but also its most expensive. Their high price tags can make it hard to be an early adopter without emptying your bank account. But Black Friday sales have come in clutch for the Galaxy Z Flip 3 and the Galaxy Z Fold 3 — both are on sale for record-low prices at Amazon right now. The Z Flip 3 is $150 off and down to $850 while the Z Fold 3 is $300 off and down to $1,500. Both also come with a free pair of Galaxy Buds 2 if you apply the promotional offer on the product page before checking out. If you'd rather order directly from Samsung, you can get the same deal on the Z Fold 3 there, but the Z Flip 3 costs an extra $50.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Out of the two, the Z Flip 3 impressed us more, in part because Samsung fixed many of the problems found in its predecessor. While you'll still notice a crease in its 6.7-inch AMOLED display, it's not as noticeable as before, and the screen and the device overall seems more durable this time around. The handset doesn't scratch as easily anymore and it's IPX8 water resistant, too.

    The main screen runs at 2,640 x 1,080 resolution and is lovely to use, and it supports up to 120Hz refresh rates. When folded, the 1.9-inch external screen displays short bits of information like the weather and calendar events, and it can be used to quickly access certain features like Samsung Pay. We also appreciate the new software features that Samsung built in that are foldable specific such as Flex Mode, which will show things like a a YouTube video on the top half of the display when the device is partially folded and the comments section on the bottom.

    While the Z Flip 3 is both impressive and fairly practical, we found the Z Fold 3 to be remarkable but much less useful. It's larger and heavier for one, and when closed, it's narrower than most smartphones, which makes it a bit awkward. Its 7.6-inch AMOLED interior display provides an immersive experience and is more flexible than previous iterations, and we appreciate the S Pen support. But overall, it's not the best smartphone nor the best small tablet. However, that might not matter to those who are super excited about owning a foldable — and these Black Friday sales make that reality a bit more accessible.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Personal Finance - Lifestyle", + "link": "https://www.engadget.com/samsungs-black-friday-sale-knocks-up-to-300-off-foldables-and-includes-free-earbuds-135545170.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Fri, 19 Nov 2021 13:55:45 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Engadget Podcast: The storm around Activision Blizzard’s CEO", + "description": "

    This week, Cherlynn and Devindra are joined by Engadget’s Jessica Conditt to dive into the latest controversy around Activision Blizzard CEO Bobby Kotick. According to a recent Wall Street Journal report, he was well aware of sexual misconduct allegations at the company, and he deliberately kept Activision's board in the dark. Also, we chat about what Apple’s self service program means for you, as well as a new accessibility gadget that brings eye tracking to the iPad.

    Listen below, or subscribe on your podcast app of choice. If you've got suggestions or topics you'd like covered on the show, be sure to email us or drop a note in the comments! And be sure to check out our other podcasts, the Morning After and Engadget News!


    Subscribe!


    Topics


    Video livestream

    Credits
    Hosts: Cherlynn Low and Devindra Hardawar
    Guest: Jessica Conditt
    Producer: Ben Ellman
    Livestream producers: Julio Barrientos,Luke Brooks
    Graphics artists: Luke Brooks, Kyle Maack
    Music: Dale North and Terrence O'Brien

    ", + "content": "

    This week, Cherlynn and Devindra are joined by Engadget’s Jessica Conditt to dive into the latest controversy around Activision Blizzard CEO Bobby Kotick. According to a recent Wall Street Journal report, he was well aware of sexual misconduct allegations at the company, and he deliberately kept Activision's board in the dark. Also, we chat about what Apple’s self service program means for you, as well as a new accessibility gadget that brings eye tracking to the iPad.

    Listen below, or subscribe on your podcast app of choice. If you've got suggestions or topics you'd like covered on the show, be sure to email us or drop a note in the comments! And be sure to check out our other podcasts, the Morning After and Engadget News!


    Subscribe!


    Topics


    Video livestream

    Credits
    Hosts: Cherlynn Low and Devindra Hardawar
    Guest: Jessica Conditt
    Producer: Ben Ellman
    Livestream producers: Julio Barrientos,Luke Brooks
    Graphics artists: Luke Brooks, Kyle Maack
    Music: Dale North and Terrence O'Brien

    ", + "category": "Media", + "link": "https://www.engadget.com/engadget-podcast-activision-blizzard-bobby-kotick-133022102.html?src=rss", + "creator": "Devindra Hardawar", + "pubDate": "Fri, 19 Nov 2021 13:30:22 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "UK to ban any handheld use of a mobile phone behind the wheel", + "description": "

    The UK government is strengthening its existing laws against the use of mobile phones while driving. It's already illegal to text and make calls behind the wheel unless it's an emergency. Starting next year, though, any use of mobile phone while driving will be deemed illegal — that includes using phones to take photos or videos, to play games or to scroll through playlists and other content. 

    Drivers can't do any of those even while their vehicle isn't moving. The government will revise The Highway Code to explain that being stationary on the road, such as at traffic lights or in the middle of traffic jams, still count as driving. Anybody caught using their phones in those circumstances will still be fined £200 (US$269) and will get six penalty points on their license, which means new drivers could get their licenses revoked

    The only exception is if they're using their phone to make payments at a card reader, say at a drive-through window or a road toll. Paying for online shopping purchases isn't an acceptable reason to get out of being penalized if they're caught. To note, drivers can continue using their devices hands-free, such as for navigation purposes, so long as they're secured in a cradle.

    The UK has long been planning to close the legal loophole allowing drivers to use their mobile devices, so long as they're not texting or calling. Authorities consulted the public about expanding its existing laws, and 81 percent of responders apparently supported their proposals.

    Transport Secretary Grant Shapps said in a statement:

    "Too many deaths and injuries occur while mobile phones are being held. By making it easier to prosecute people illegally using their phone at the wheel, we are ensuring the law is brought into the 21st century while further protecting all road users."

    ", + "content": "

    The UK government is strengthening its existing laws against the use of mobile phones while driving. It's already illegal to text and make calls behind the wheel unless it's an emergency. Starting next year, though, any use of mobile phone while driving will be deemed illegal — that includes using phones to take photos or videos, to play games or to scroll through playlists and other content. 

    Drivers can't do any of those even while their vehicle isn't moving. The government will revise The Highway Code to explain that being stationary on the road, such as at traffic lights or in the middle of traffic jams, still count as driving. Anybody caught using their phones in those circumstances will still be fined £200 (US$269) and will get six penalty points on their license, which means new drivers could get their licenses revoked

    The only exception is if they're using their phone to make payments at a card reader, say at a drive-through window or a road toll. Paying for online shopping purchases isn't an acceptable reason to get out of being penalized if they're caught. To note, drivers can continue using their devices hands-free, such as for navigation purposes, so long as they're secured in a cradle.

    The UK has long been planning to close the legal loophole allowing drivers to use their mobile devices, so long as they're not texting or calling. Authorities consulted the public about expanding its existing laws, and 81 percent of responders apparently supported their proposals.

    Transport Secretary Grant Shapps said in a statement:

    "Too many deaths and injuries occur while mobile phones are being held. By making it easier to prosecute people illegally using their phone at the wheel, we are ensuring the law is brought into the 21st century while further protecting all road users."

    ", + "category": "Transportation", + "link": "https://www.engadget.com/uk-ban-any-handheld-use-mobile-phone-driving-125038275.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Fri, 19 Nov 2021 12:50:38 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The Morning After: Pressure on Activision Blizzard CEO to resign grows", + "description": "

    We reported on employees calling for Activision Blizzard boss Bobby Kotick’s resignation earlier this week in TMA, but pressure continues to mount. Alongside more than 800 Activision Blizzard employees and contractors that have signed a petition calling for CEO Bobby Kotick to be removed, there have been responses from both the head of PlayStation, Jim Ryan, and Microsoft’s Phil Spencer.

    In a memo obtained by Bloomberg, Spencer reportedly said he and other leaders at Xbox are “disturbed and deeply troubled by the horrific events and actions” that reportedly took place at Activision Blizzard and that Microsoft was “evaluating all aspects” of their relationship with the game publisher.

    -Mat Smith

    Apple’s fully self-driving car ambitions reportedly still exist

    The company may be narrowing its focus.

    Bloomberg sources claim Apple is now shifting its attention to a fully self-driving car, not just a more conventional vehicle with semi-autonomous features. New project leader Kevin Lynch wants the very first model to drive itself, according to sources.

    The company is reportedly speeding up its plans, too. Instead of a targeted launch in five to seven years, the sources said it was now aiming for 2025 — that’s just four years away.

    Continue reading.

     

    Canadian police arrest teen for stealing $36.5 million in cryptocurrency

    It's one of the biggest crypto thefts involving a single person.

    Police in Canada say they recently arrested a teen who allegedly stole $46 million CAD (approximately $36.5 million) worth of cryptocurrency from a single individual in the US.

    The owner of the currency was the victim of a SIM swap attack. Their cellphone number was hijacked and used to intercept two-factor authentication requests, thereby allowing access to their protected accounts. Some of the stolen money was used to purchase a “rare” online gaming username, which eventually allowed the Hamilton Police Service, as well as FBI and US Secret Service Electronic Crimes Task Force, to identify the account holder. Police seized approximately $7 million CAD ($5.5 million) in stolen cryptocurrency when they arrested the teen.

    Continue reading.

    Nike is building its metaverse inside of 'Roblox'

    Yes, there’s a product showroom.

    \"The
    Roblox

    Nike announced a partnership with Roblox to offer a free virtual playspace called Nikeland. In its current iteration, Nikeland includes minigames such as tag, dodgeball and the floor is lava that players can check out with their friends. Mobile integration allows you to use your phone to translate real-life movement into the game. In that way, you can do things like long jumps and fast sprints.

    Why did Nike team-up with Roblox? Because it’s huge. With more than 200 million estimated monthly active users, it’s one of the most popular games among kids and teenagers.

    Continue reading.

    Google's second-gen Pixel Stand is available for pre-order

    It has a fan?

    \"The
    Google

    The new Pixel Stand is both bigger and more powerful than its predecessor — even if it didn’t make it in time for the Pixel 6 launch. It can charge the Pixel 6 Pro at up to 23W (21W for the regular Pixel 6) and has a fan to keep everything cool, but also presumably make noise while you charge. And while it will charge many Qi-compatible devices at up to 15W, Google phone owners receive some extra perks. You can use the Pixel 3 and newer models as makeshift Google Assistant smart speakers, display personal data like calendars while unlocked or turn your phone into a photo frame.

    Continue reading. 

    The biggest news stories you might have missed

    Latest iOS update for iPhones 12 and 13 fixes dropped call issue

    Engadget Deals: Google's Pixel 6 is up to $100 off right now

    Engadget Deals: Apple's new 16-inch MacBook Pro is discounted by $100 at Amazon

    The employee behind the #AppleToo protest is leaving the company

    Subaru's Solterra EV has a 220-mile range and 360-degree safety camera

    Cricut's Explore 3 is the perfect cutting machine for obsessive crafters

    ", + "content": "

    We reported on employees calling for Activision Blizzard boss Bobby Kotick’s resignation earlier this week in TMA, but pressure continues to mount. Alongside more than 800 Activision Blizzard employees and contractors that have signed a petition calling for CEO Bobby Kotick to be removed, there have been responses from both the head of PlayStation, Jim Ryan, and Microsoft’s Phil Spencer.

    In a memo obtained by Bloomberg, Spencer reportedly said he and other leaders at Xbox are “disturbed and deeply troubled by the horrific events and actions” that reportedly took place at Activision Blizzard and that Microsoft was “evaluating all aspects” of their relationship with the game publisher.

    -Mat Smith

    Apple’s fully self-driving car ambitions reportedly still exist

    The company may be narrowing its focus.

    Bloomberg sources claim Apple is now shifting its attention to a fully self-driving car, not just a more conventional vehicle with semi-autonomous features. New project leader Kevin Lynch wants the very first model to drive itself, according to sources.

    The company is reportedly speeding up its plans, too. Instead of a targeted launch in five to seven years, the sources said it was now aiming for 2025 — that’s just four years away.

    Continue reading.

     

    Canadian police arrest teen for stealing $36.5 million in cryptocurrency

    It's one of the biggest crypto thefts involving a single person.

    Police in Canada say they recently arrested a teen who allegedly stole $46 million CAD (approximately $36.5 million) worth of cryptocurrency from a single individual in the US.

    The owner of the currency was the victim of a SIM swap attack. Their cellphone number was hijacked and used to intercept two-factor authentication requests, thereby allowing access to their protected accounts. Some of the stolen money was used to purchase a “rare” online gaming username, which eventually allowed the Hamilton Police Service, as well as FBI and US Secret Service Electronic Crimes Task Force, to identify the account holder. Police seized approximately $7 million CAD ($5.5 million) in stolen cryptocurrency when they arrested the teen.

    Continue reading.

    Nike is building its metaverse inside of 'Roblox'

    Yes, there’s a product showroom.

    \"The
    Roblox

    Nike announced a partnership with Roblox to offer a free virtual playspace called Nikeland. In its current iteration, Nikeland includes minigames such as tag, dodgeball and the floor is lava that players can check out with their friends. Mobile integration allows you to use your phone to translate real-life movement into the game. In that way, you can do things like long jumps and fast sprints.

    Why did Nike team-up with Roblox? Because it’s huge. With more than 200 million estimated monthly active users, it’s one of the most popular games among kids and teenagers.

    Continue reading.

    Google's second-gen Pixel Stand is available for pre-order

    It has a fan?

    \"The
    Google

    The new Pixel Stand is both bigger and more powerful than its predecessor — even if it didn’t make it in time for the Pixel 6 launch. It can charge the Pixel 6 Pro at up to 23W (21W for the regular Pixel 6) and has a fan to keep everything cool, but also presumably make noise while you charge. And while it will charge many Qi-compatible devices at up to 15W, Google phone owners receive some extra perks. You can use the Pixel 3 and newer models as makeshift Google Assistant smart speakers, display personal data like calendars while unlocked or turn your phone into a photo frame.

    Continue reading. 

    The biggest news stories you might have missed

    Latest iOS update for iPhones 12 and 13 fixes dropped call issue

    Engadget Deals: Google's Pixel 6 is up to $100 off right now

    Engadget Deals: Apple's new 16-inch MacBook Pro is discounted by $100 at Amazon

    The employee behind the #AppleToo protest is leaving the company

    Subaru's Solterra EV has a 220-mile range and 360-degree safety camera

    Cricut's Explore 3 is the perfect cutting machine for obsessive crafters

    ", + "category": "Society & Culture", + "link": "https://www.engadget.com/the-morning-after-pressure-on-activision-blizzard-ceo-to-resign-121555249.html?src=rss", + "creator": "Mat Smith", + "pubDate": "Fri, 19 Nov 2021 12:15:55 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Twitch increases the number of custom emotes affiliate streamers can offer", + "description": "

    Emotes are a great way to add character and distinctiveness to a Twitch community — they can also get casual viewers to pay for subscriptions. A Twitch affiliate who's just starting out, however, used to only have a single custom emote slot. Now, the livestreaming website has upped the initial number of emote slots to five, based on affiliates' feedback. That means streamers can offer five custom emotes from the get-go, simply by meeting the bare requirements needed to become part of the affiliate program. In all, affiliates can earn nine slots for custom emotes by reaching certain subscription milestones. 

    Twitch is also carrying the change over to its partner program, increasing the slots available for them, as well. To be able to apply for partner status, an affiliate must reach a certain number of streaming hours, views and subscribers. Even then, they might not get in. That's why giving potential subscribers more incentive in the form of emotes could help beginners reach their goal sooner and earn more money.

    The website has also given affiliates the capability offer animated emotes to their community. They'll start with one slot and can unlock up to five as their audience grows. Those who can't afford to pay an artist to create animated emotes for them can use the website's Easy Animate feature to quickly convert static emotes into animated versions for free. These updates have started rolling out to Twitch streamers and will be reaching everyone in the coming weeks. 

    ", + "content": "

    Emotes are a great way to add character and distinctiveness to a Twitch community — they can also get casual viewers to pay for subscriptions. A Twitch affiliate who's just starting out, however, used to only have a single custom emote slot. Now, the livestreaming website has upped the initial number of emote slots to five, based on affiliates' feedback. That means streamers can offer five custom emotes from the get-go, simply by meeting the bare requirements needed to become part of the affiliate program. In all, affiliates can earn nine slots for custom emotes by reaching certain subscription milestones. 

    Twitch is also carrying the change over to its partner program, increasing the slots available for them, as well. To be able to apply for partner status, an affiliate must reach a certain number of streaming hours, views and subscribers. Even then, they might not get in. That's why giving potential subscribers more incentive in the form of emotes could help beginners reach their goal sooner and earn more money.

    The website has also given affiliates the capability offer animated emotes to their community. They'll start with one slot and can unlock up to five as their audience grows. Those who can't afford to pay an artist to create animated emotes for them can use the website's Easy Animate feature to quickly convert static emotes into animated versions for free. These updates have started rolling out to Twitch streamers and will be reaching everyone in the coming weeks. 

    ", + "category": "Financials Industry", + "link": "https://www.engadget.com/twitch-increases-custom-emotes-affiliates-115056303.html?src=rss", + "creator": "Mariella Moon", + "pubDate": "Fri, 19 Nov 2021 11:50:56 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Earthworm Jim is set to return in a new TV series", + "description": "

    The cult classic '90s game Earthworm Jim is coming back to TV as a new series, according to Variety and a tweet from Interplay Entertainment. Interplay holds the rights to Earthworm Jim games and recently announced it was bringing the franchise back as an Intellivision Amico exclusive. 

    The project will be headed be Interplay's newly formed TV and film studio division, working with the animation studio Passion Pictures. "There’s so much potential in this story universe: a galaxy full of animals battling for power," project lead Michel K. Parandi told Variety. "Jim is an earthworm in a universe where Earth is nothing more than a myth. His struggle to find meaning is surreal and comical, but it’s also relatable."

    The first Earthworm Jim game came out on Sega Genesis and Super Nintendo in 1994, with the last released in 1999. There's still no word on when the new game will arrive. There was also a Warner Bros. cartoon series based on the game that ran for two season in 1995, with the lead character played by none other than Dan Castellaneta, best known as the voice of Homer Simpson. 

    In a follow-up tweet, Interplay said that the original creator of the game, presumably Doug TenNapel, "is not involved at all." TenNapel was originally brought in as a creative consultant on the game, but his participation was called into question after he made a number of racist and homophobic comments on a podcast. 

    ", + "content": "

    The cult classic '90s game Earthworm Jim is coming back to TV as a new series, according to Variety and a tweet from Interplay Entertainment. Interplay holds the rights to Earthworm Jim games and recently announced it was bringing the franchise back as an Intellivision Amico exclusive. 

    The project will be headed be Interplay's newly formed TV and film studio division, working with the animation studio Passion Pictures. "There’s so much potential in this story universe: a galaxy full of animals battling for power," project lead Michel K. Parandi told Variety. "Jim is an earthworm in a universe where Earth is nothing more than a myth. His struggle to find meaning is surreal and comical, but it’s also relatable."

    The first Earthworm Jim game came out on Sega Genesis and Super Nintendo in 1994, with the last released in 1999. There's still no word on when the new game will arrive. There was also a Warner Bros. cartoon series based on the game that ran for two season in 1995, with the lead character played by none other than Dan Castellaneta, best known as the voice of Homer Simpson. 

    In a follow-up tweet, Interplay said that the original creator of the game, presumably Doug TenNapel, "is not involved at all." TenNapel was originally brought in as a creative consultant on the game, but his participation was called into question after he made a number of racist and homophobic comments on a podcast. 

    ", + "category": "Consumer Discretionary", + "link": "https://www.engadget.com/earthworm-jim-is-set-to-return-in-a-new-tv-series-111519345.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Fri, 19 Nov 2021 11:15:19 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon's early Black Friday sale knocks Blink cameras down to as low as $20", + "description": "

    Blink's security cameras have the benefits of being small, wireless and relatively affordable, and you can grab most of them for less during Amazon's Black Friday sale. Both Indoor and Outdoor models have been discounted so you can grab a one-camera kit of either for $50 and $60, respectively. Most packs are on sale, too, so you can grab enough to outfit a good portion of your home and save a decent amount of money while doing so. Also, the wired Blink Mini is down to $20 in this sale, which is a record-low price.

    Buy Blink Indoor at Amazon - $50Buy Blink Outdoor at Amazon - $60Buy Blink Mini at Amazon - $20

    You only have to decide if you want to put Blink cameras inside or outside your home before you buy them. Aside from the weather resistance on the Outdoor models, the cams are basically the same. Both record 1080p video, have infrared night vision, support two-way audio and send motion alerts to your phone. Two-way audio lets you chat with whomever (or whatever) is on the other end of the camera while motion alerts will keep you posted about any movement the camera's detect, be it a deliveryman or a rogue bird. Plus, these cameras support Alexa voice commands, so if you have an Echo Show device, you can ask it to show you the video feeds from any of your Blink cameras.

    If you're unsure about going all-in on these cameras, the Blink Mini is a cheap way to try them out first. It's not wireless like the standard cams, but it has most of the same features and is even more compact. It'll record in 1080p and it supports two-way audio, motion alerts and Alexa — you'll just have to make sure you place it close to an outlet in your home.

    Amazon also knocked down the prices of its Eero 6 routers for Black Friday. The Eero 6 is down to $77 whi;e the Eero Pro 6 is on sale for $171. While both support WiFi 6, the Eero Pro 6 can cover up to 2,000 square feet with just one router while the Eero 6 has a more modest 1,500 square feet of coverage. Also, the Pro 6 is a tri-band router and will be better for speeds up to a gigabit, whereas the dual-band Eero 6 supports speeds up to 900 Mbps.

    Buy Eero 6 at Amazon - $77Buy Eero Pro 6 at Amazon - $171

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Blink's security cameras have the benefits of being small, wireless and relatively affordable, and you can grab most of them for less during Amazon's Black Friday sale. Both Indoor and Outdoor models have been discounted so you can grab a one-camera kit of either for $50 and $60, respectively. Most packs are on sale, too, so you can grab enough to outfit a good portion of your home and save a decent amount of money while doing so. Also, the wired Blink Mini is down to $20 in this sale, which is a record-low price.

    Buy Blink Indoor at Amazon - $50Buy Blink Outdoor at Amazon - $60Buy Blink Mini at Amazon - $20

    You only have to decide if you want to put Blink cameras inside or outside your home before you buy them. Aside from the weather resistance on the Outdoor models, the cams are basically the same. Both record 1080p video, have infrared night vision, support two-way audio and send motion alerts to your phone. Two-way audio lets you chat with whomever (or whatever) is on the other end of the camera while motion alerts will keep you posted about any movement the camera's detect, be it a deliveryman or a rogue bird. Plus, these cameras support Alexa voice commands, so if you have an Echo Show device, you can ask it to show you the video feeds from any of your Blink cameras.

    If you're unsure about going all-in on these cameras, the Blink Mini is a cheap way to try them out first. It's not wireless like the standard cams, but it has most of the same features and is even more compact. It'll record in 1080p and it supports two-way audio, motion alerts and Alexa — you'll just have to make sure you place it close to an outlet in your home.

    Amazon also knocked down the prices of its Eero 6 routers for Black Friday. The Eero 6 is down to $77 whi;e the Eero Pro 6 is on sale for $171. While both support WiFi 6, the Eero Pro 6 can cover up to 2,000 square feet with just one router while the Eero 6 has a more modest 1,500 square feet of coverage. Also, the Pro 6 is a tri-band router and will be better for speeds up to a gigabit, whereas the dual-band Eero 6 supports speeds up to 900 Mbps.

    Buy Eero 6 at Amazon - $77Buy Eero Pro 6 at Amazon - $171

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Technology & Electronics", + "link": "https://www.engadget.com/amazons-early-black-friday-knocks-blink-cameras-down-to-as-low-as-20-103044165.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Fri, 19 Nov 2021 10:30:44 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Twitter brings its in-app tipping feature to Android", + "description": "

    After introducing its "tip jar" feature to all iOS users over 18, Twitter has brought the feature to Android as well. The idea is that if you see a particularly entertaining or informative tweet, you can send money to the creator's Cash App, Patreon, Paypal, Bandcamp and Venmo from directly within the app. 

    Tips is now on Android!

    You can get set up to receive tips from your profile –– tap the “Edit profile” button then tap “Tips” to start.

    — Twitter Support (@TwitterSupport) November 18, 2021

    Twitter first introduced tip jars in May, then rolled it out widely to iOS users in September. A similar feature is available inside Twitter's Clubhouse-like "Spaces" feature, letting creators charge for "tickets" to its live access features. Twitter also recently opened "super follows" to select creators, allowing them to monetize tweets and provide exclusive content, along with a subscription service that could eliminate publications’ paywalls on the platform.

    On top of using regular money via payment services, Twitter may soon let you tip others using Bitcoin. According to a leak, Twitter is planning to use the Lightning Network to enable Bitcoin payments with high speed and relatively low fees.

    ", + "content": "

    After introducing its "tip jar" feature to all iOS users over 18, Twitter has brought the feature to Android as well. The idea is that if you see a particularly entertaining or informative tweet, you can send money to the creator's Cash App, Patreon, Paypal, Bandcamp and Venmo from directly within the app. 

    Tips is now on Android!

    You can get set up to receive tips from your profile –– tap the “Edit profile” button then tap “Tips” to start.

    — Twitter Support (@TwitterSupport) November 18, 2021

    Twitter first introduced tip jars in May, then rolled it out widely to iOS users in September. A similar feature is available inside Twitter's Clubhouse-like "Spaces" feature, letting creators charge for "tickets" to its live access features. Twitter also recently opened "super follows" to select creators, allowing them to monetize tweets and provide exclusive content, along with a subscription service that could eliminate publications’ paywalls on the platform.

    On top of using regular money via payment services, Twitter may soon let you tip others using Bitcoin. According to a leak, Twitter is planning to use the Lightning Network to enable Bitcoin payments with high speed and relatively low fees.

    ", + "category": "Media", + "link": "https://www.engadget.com/twitter-finally-brings-in-app-tipping-to-android-users-095508562.html?src=rss", + "creator": "Steve Dent", + "pubDate": "Fri, 19 Nov 2021 09:55:08 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon Fire tablets are down to record-low prices right now", + "description": "

    Amazon's Fire tablets make great portable, secondary devices, or primary devices for the kids in your life. They're already pretty affordable — that's one of the best things about them — but Black Friday has knocked their prices down even more. Most Fire tablets are on sale right now, including the primary three in the lineup: the Fire 7 is down to $35, while the Fire HD 8 and HD 10 are on sale for $45 and $75, respectively. These deals are all the same or better than those we saw during Prime Day back in June — but now you don't have to be a Prime subscriber to get the discounts.

    Buy Fire 7 at Amazon - $35Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Out of the three, the Fire HD 8 will suit most people well. We gave it a score of 81 due in part to its refined design, long battery life and new USB-C charging port. It runs on a quad-core 2.0GHz processor and has up to 64GB of onboard storage, but you can expand it to up to 1TB with a microSD card. It's a handy device to use on the couch or on the go when you want a larger screen to online shop, check email and even video chat with friends and family. It also may be a better option than a Kindle if you read a lot of graphic novels and manga since it has a full-color 1,280 x 800 display.

    If you're willing to spend a bit more, the Fire HD 10 gives you a number of extra perks. Key among them are a larger, 1,920 x 1,200 display, an octa-core 2.0GHz processor, an extra gigabyte of RAM and an improved rear camera. Those planning on primarily streaming TV shows and movies with the tablet should opt for the bigger HD 10, along with those who don't want to sacrifice speed and performance even when getting an affordable slab.

    Fire tablets make good kids devices since they have a bunch of parental controls and they cost significantly less than that expensive slab you may have just bought for yourself. You could opt to simply buy one of the above devices for your child, or you can get one of Amazon's Kids Edition bundles which pair the tablets with a kid-friendly case, a two-year warranty and a one-year subscription to Amazon Kids+. All of the Kids devices are on sale right now, too: the Fire 7 Kids Pro is down to $60 while the Fire HD 8 Kids Pro has been discounted to $70 and the Fire HD 10 Kids Pro is on sale for $120.

    Buy Fire 7 Kids Pro at Amazon - $60Buy Fire HD 8 Kids Pro at Amazon - $70Buy Fire HD 10 Kids Pro at Amazon - $120

    Amazon Kids+ is one of the key benefits to these bundles. The service gives your child access to over 20,000 apps, games, books, audiobooks and more that are age appropriate directly on the tablet. It's essentially a whole ton of content that parents don't have to screen beforehand to know if it's kid-friendly. Just make sure to keep an eye on your subscription because it will renew for the full $3-per-month price after one year. Also, the Kids Pro tablets come with a special digital store in which kids can request apps to download with parental approval. Overall, they're good, affordable options if your child has been bugging you for a tablet and you'd rather get one that you have a bit of extra control over.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Amazon's Fire tablets make great portable, secondary devices, or primary devices for the kids in your life. They're already pretty affordable — that's one of the best things about them — but Black Friday has knocked their prices down even more. Most Fire tablets are on sale right now, including the primary three in the lineup: the Fire 7 is down to $35, while the Fire HD 8 and HD 10 are on sale for $45 and $75, respectively. These deals are all the same or better than those we saw during Prime Day back in June — but now you don't have to be a Prime subscriber to get the discounts.

    Buy Fire 7 at Amazon - $35Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Out of the three, the Fire HD 8 will suit most people well. We gave it a score of 81 due in part to its refined design, long battery life and new USB-C charging port. It runs on a quad-core 2.0GHz processor and has up to 64GB of onboard storage, but you can expand it to up to 1TB with a microSD card. It's a handy device to use on the couch or on the go when you want a larger screen to online shop, check email and even video chat with friends and family. It also may be a better option than a Kindle if you read a lot of graphic novels and manga since it has a full-color 1,280 x 800 display.

    If you're willing to spend a bit more, the Fire HD 10 gives you a number of extra perks. Key among them are a larger, 1,920 x 1,200 display, an octa-core 2.0GHz processor, an extra gigabyte of RAM and an improved rear camera. Those planning on primarily streaming TV shows and movies with the tablet should opt for the bigger HD 10, along with those who don't want to sacrifice speed and performance even when getting an affordable slab.

    Fire tablets make good kids devices since they have a bunch of parental controls and they cost significantly less than that expensive slab you may have just bought for yourself. You could opt to simply buy one of the above devices for your child, or you can get one of Amazon's Kids Edition bundles which pair the tablets with a kid-friendly case, a two-year warranty and a one-year subscription to Amazon Kids+. All of the Kids devices are on sale right now, too: the Fire 7 Kids Pro is down to $60 while the Fire HD 8 Kids Pro has been discounted to $70 and the Fire HD 10 Kids Pro is on sale for $120.

    Buy Fire 7 Kids Pro at Amazon - $60Buy Fire HD 8 Kids Pro at Amazon - $70Buy Fire HD 10 Kids Pro at Amazon - $120

    Amazon Kids+ is one of the key benefits to these bundles. The service gives your child access to over 20,000 apps, games, books, audiobooks and more that are age appropriate directly on the tablet. It's essentially a whole ton of content that parents don't have to screen beforehand to know if it's kid-friendly. Just make sure to keep an eye on your subscription because it will renew for the full $3-per-month price after one year. Also, the Kids Pro tablets come with a special digital store in which kids can request apps to download with parental approval. Overall, they're good, affordable options if your child has been bugging you for a tablet and you'd rather get one that you have a bit of extra control over.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Personal Finance - Lifestyle", + "link": "https://www.engadget.com/most-amazon-fire-tablets-are-down-to-record-low-prices-right-now-093003172.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Fri, 19 Nov 2021 09:30:03 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Amazon's Kindle drops to an all-time low of $50 ahead of Black Friday", + "description": "

    As ever, Amazon is discounting many of its products for the Black Friday shopping period. Like many other companies, Amazon is getting out of the gate a little early with deals on Kindles. The standard Kindle is down from $90 to $50, which is the lowest price we've seen for the e-reader. Back in the summer, it dropped to $55 for Amazon Prime Day.

    Buy Kindle at Amazon - $50

    This is the ad-supported version of the tenth-generation Kindle, which has a 167 ppi glare-free display with a built-in front light. It comes with 8GB of storage, which is enough to store thousands of books. You can also pair it with Bluetooth headphones or speakers to listen to audiobooks.

    Elsewhere, two Kindles for kids are on sale. Kindle Kids is down to $60 (usually $110) and Kindle Paperwhite Kids, which usually costs $160, has dropped to $115, only a couple of months after Amazon announced it. Both come with a year of access to Amazon Kids+, a kid-friendly cover and a two-year worry-free guarantee — Amazon will replace the device if it breaks during that period.

    Buy Kindle Kids at Amazon - $60Buy Kindle Paperwhite Kids at Amazon - $115

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    As ever, Amazon is discounting many of its products for the Black Friday shopping period. Like many other companies, Amazon is getting out of the gate a little early with deals on Kindles. The standard Kindle is down from $90 to $50, which is the lowest price we've seen for the e-reader. Back in the summer, it dropped to $55 for Amazon Prime Day.

    Buy Kindle at Amazon - $50

    This is the ad-supported version of the tenth-generation Kindle, which has a 167 ppi glare-free display with a built-in front light. It comes with 8GB of storage, which is enough to store thousands of books. You can also pair it with Bluetooth headphones or speakers to listen to audiobooks.

    Elsewhere, two Kindles for kids are on sale. Kindle Kids is down to $60 (usually $110) and Kindle Paperwhite Kids, which usually costs $160, has dropped to $115, only a couple of months after Amazon announced it. Both come with a year of access to Amazon Kids+, a kid-friendly cover and a two-year worry-free guarantee — Amazon will replace the device if it breaks during that period.

    Buy Kindle Kids at Amazon - $60Buy Kindle Paperwhite Kids at Amazon - $115

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "Personal Finance - Lifestyle", + "link": "https://www.engadget.com/amazon-kindle-kids-paperwhite-black-friday-good-deal-090022162.html?src=rss", + "creator": "Kris Holt", + "pubDate": "Fri, 19 Nov 2021 09:00:22 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "A bunch of Amazon Echo devices are already on sale for Black Friday", + "description": "

    Black Friday for Echo and Fire TV devices has already started — Amazon knocked down the prices of many of its Echo gadgets today. Most of the sale prices are the same as we saw during Amazon Prime Day in June, or even better. Discounts of note are the Echo for $60 and the second-generation Echo Show 5 for $45. While the latest Echo Show 8 isn't on sale yet, the first-gen device bundled with a Blink Mini security camera is $80 off as well, bringing it down to $65.

    Buy Echo at Amazon - $60Buy Echo Show 5 (2nd gen) at Amazon - $45Buy Echo Show 8 (1st gen) bundle at Amazon - $65

    You probably already know the deal with Echo devices, but we'll recap here. The Echo and the Echo Dot are the big and little versions of Amazon's smart speaker. The Echo is actually one of our favorites thanks to its solid sound quality, even better sound with in stereo mode and attractive design.

    Those who have less space to play with should consider the Echo Show 5, especially now that it's nearly half off. The latest version of the tiny smart display has a slightly better camera for video calls, but otherwise it's the same as last year's model. The five-inch screen is just the right size for a bedside smart alarm clock, and we liked its surprisingly good sound quality, physical camera shutter and sunrise alarm feature. The Echo Show 8 is a good alternative if you want a slightly larger display, which will make it better in a kitchen, living room or entryway setting. The bundle currently on sale that includes a Blink Mini camera is a solid deal, especially since you can ask Alexa to show you the camera's video feed directly on the Show 8's screen.

    \"Amazon’s
    Billy Steele/Engadget

    A couple of other Echo devices are on sale, including the Echo Buds and the Echo Frames. The former earned a score of 80 from us for their improved sound quality, good ANC and smaller size. Wireless charging is optional, but thankfully both models have been discounted and both come in at less than $100. The Echo Frames are Amazon's version of smart glasses, and we gave them a score of 76 for their lightweight design, hands-free Alexa access and compatibility with prescription lenses.

    Buy Echo Buds (2nd gen) at Amazon - $70Buy Echo Frames at Amazon - $155

    On top of all the Echo discounts, most Fire TV devices are cheaper than usual, too. Many of these went on sale starting last weekend, but they're worth another mention. The new Fire TV Stick 4K Max, which supports WiFi 6 and picture-in-picture live view, is down to $35, while the Fire TV Stick Lite and the Fire TV Stick are on sale for $18 and $20, respectively.

    Amazon's most powerful streaming device has also been discounted — the Fire TV Cube is down to a record low of $80, and it's the device to get if you want to stream 4K, Dolby Vision and HDR content, and want hands-free TV controls with Alexa. And if you're on the market for an over-the-air DVR, the Fire TV Recast is $100 off right now, bringing it down to $130.

    Buy Fire TV Stick 4K Max at Amazon - $35Buy Fire TV Stick Lite at Amazon - $18Buy Fire TV Stick at Amazon - $20Buy Fire TV Cube at Amazon - $80Buy Fire TV Recast at Amazon - $130

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "content": "

    Black Friday for Echo and Fire TV devices has already started — Amazon knocked down the prices of many of its Echo gadgets today. Most of the sale prices are the same as we saw during Amazon Prime Day in June, or even better. Discounts of note are the Echo for $60 and the second-generation Echo Show 5 for $45. While the latest Echo Show 8 isn't on sale yet, the first-gen device bundled with a Blink Mini security camera is $80 off as well, bringing it down to $65.

    Buy Echo at Amazon - $60Buy Echo Show 5 (2nd gen) at Amazon - $45Buy Echo Show 8 (1st gen) bundle at Amazon - $65

    You probably already know the deal with Echo devices, but we'll recap here. The Echo and the Echo Dot are the big and little versions of Amazon's smart speaker. The Echo is actually one of our favorites thanks to its solid sound quality, even better sound with in stereo mode and attractive design.

    Those who have less space to play with should consider the Echo Show 5, especially now that it's nearly half off. The latest version of the tiny smart display has a slightly better camera for video calls, but otherwise it's the same as last year's model. The five-inch screen is just the right size for a bedside smart alarm clock, and we liked its surprisingly good sound quality, physical camera shutter and sunrise alarm feature. The Echo Show 8 is a good alternative if you want a slightly larger display, which will make it better in a kitchen, living room or entryway setting. The bundle currently on sale that includes a Blink Mini camera is a solid deal, especially since you can ask Alexa to show you the camera's video feed directly on the Show 8's screen.

    \"Amazon’s
    Billy Steele/Engadget

    A couple of other Echo devices are on sale, including the Echo Buds and the Echo Frames. The former earned a score of 80 from us for their improved sound quality, good ANC and smaller size. Wireless charging is optional, but thankfully both models have been discounted and both come in at less than $100. The Echo Frames are Amazon's version of smart glasses, and we gave them a score of 76 for their lightweight design, hands-free Alexa access and compatibility with prescription lenses.

    Buy Echo Buds (2nd gen) at Amazon - $70Buy Echo Frames at Amazon - $155

    On top of all the Echo discounts, most Fire TV devices are cheaper than usual, too. Many of these went on sale starting last weekend, but they're worth another mention. The new Fire TV Stick 4K Max, which supports WiFi 6 and picture-in-picture live view, is down to $35, while the Fire TV Stick Lite and the Fire TV Stick are on sale for $18 and $20, respectively.

    Amazon's most powerful streaming device has also been discounted — the Fire TV Cube is down to a record low of $80, and it's the device to get if you want to stream 4K, Dolby Vision and HDR content, and want hands-free TV controls with Alexa. And if you're on the market for an over-the-air DVR, the Fire TV Recast is $100 off right now, bringing it down to $130.

    Buy Fire TV Stick 4K Max at Amazon - $35Buy Fire TV Stick Lite at Amazon - $18Buy Fire TV Stick at Amazon - $20Buy Fire TV Cube at Amazon - $80Buy Fire TV Recast at Amazon - $130

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", + "category": "site|engadget", + "link": "https://www.engadget.com/a-bunch-of-amazon-echo-devices-are-already-on-sale-for-black-friday-083029077.html?src=rss", + "creator": "Valentina Palladino", + "pubDate": "Fri, 19 Nov 2021 08:30:29 +0000", + "folder": "00.03 News/Tech", + "feed": "EndGadget", + "read": true, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/Tech", + "name": "EndGadget" + }, + { + "title": "Naked Security", + "subtitle": "", + "link": "https://nakedsecurity.sophos.com", + "image": "https://nakedsecurity.sophos.com/wp-content/uploads/sites/2/2020/03/cropped-sophos.png?w=32", + "description": "Computer Security News, Advice and Research", + "items": [ + { + "title": "S3 Ep60: Exchange exploit, GoDaddy breach and cookies made public [Podcast]", + "description": "Latest episode - listen now! Solid cybersecurity advice in plain English.", + "content": "Latest episode - listen now! Solid cybersecurity advice in plain English.", + "category": "Podcast", + "link": "https://nakedsecurity.sophos.com/2021/11/25/s3-ep60-exchange-exploit-godaddy-breach-and-cookies-made-public-podcast/", + "creator": "Paul Ducklin", + "pubDate": "Thu, 25 Nov 2021 12:38:14 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "US government securities watchdog spoofed by investment scammers – don’t fall for it!", + "description": "Those numbers that show up on your phone to tell you who's calling? Treat them as SUGGESTIONS, never as PROOF.", + "content": "Those numbers that show up on your phone to tell you who's calling? Treat them as SUGGESTIONS, never as PROOF.", + "category": "Data loss", + "link": "https://nakedsecurity.sophos.com/2021/11/24/us-government-securities-watchdog-spoofed-by-investment-scammers-dont-fall-for-it/", + "creator": "Paul Ducklin", + "pubDate": "Wed, 24 Nov 2021 17:57:38 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Check your patches – public exploit now out for critical Exchange bug", + "description": "It was a zero-day bug until Patch Tuesday, now there's an anyone-can-use-it exploit. Don't be the one who hasn't patched.", + "content": "It was a zero-day bug until Patch Tuesday, now there's an anyone-can-use-it exploit. Don't be the one who hasn't patched.", + "category": "Microsoft", + "link": "https://nakedsecurity.sophos.com/2021/11/23/check-your-patches-public-exploit-now-out-for-critical-exchange-bug/", + "creator": "Paul Ducklin", + "pubDate": "Tue, 23 Nov 2021 14:36:27 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "GoDaddy admits to password breach: check your Managed WordPress site!", + "description": "GoDaddy found crooks in its network, and kicked them out - but not before they'd been in there for six weeks.", + "content": "GoDaddy found crooks in its network, and kicked them out - but not before they'd been in there for six weeks.", + "category": "Data loss", + "link": "https://nakedsecurity.sophos.com/2021/11/23/godaddy-admits-to-password-breach-check-your-managed-wordpress-site/", + "creator": "Paul Ducklin", + "pubDate": "Tue, 23 Nov 2021 00:35:39 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Black Friday and Cyber Monday – here’s what you REALLY need to do!", + "description": "The world fills up with cybersecurity tips every year when Black Friday comes round. But what about the rest of the year?", + "content": "The world fills up with cybersecurity tips every year when Black Friday comes round. But what about the rest of the year?", + "category": "Malware", + "link": "https://nakedsecurity.sophos.com/2021/11/22/black-friday-and-cyber-monday-heres-what-you-really-need-to-do/", + "creator": "Paul Ducklin", + "pubDate": "Mon, 22 Nov 2021 12:52:03 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Github cookie leakage – thousands of Firefox cookie files uploaded by mistake", + "description": "Be aware before you share! That's a good rule for developers and techies, just as much as it is for social media addicts.", + "content": "Be aware before you share! That's a good rule for developers and techies, just as much as it is for social media addicts.", + "category": "Data loss", + "link": "https://nakedsecurity.sophos.com/2021/11/18/github-cookie-leakage-thousands-of-firefox-cookie-files-uploaded-by-mistake/", + "creator": "Paul Ducklin", + "pubDate": "Thu, 18 Nov 2021 22:20:26 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "S3 Ep59: Emotet, an FBI hoax, Samba bugs, and a hijackable suitcase [Podcast]", + "description": "Latest episode - listen now!", + "content": "Latest episode - listen now!", + "category": "Apple", + "link": "https://nakedsecurity.sophos.com/2021/11/18/s3-ep59-emotet-an-fbi-hoax-samba-bugs-and-a-hijackable-suitcase-podcast/", + "creator": "Paul Ducklin", + "pubDate": "Thu, 18 Nov 2021 19:00:14 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Apple’s Mail Privacy Protection feature – watch out if you have a Watch!", + "description": "Apple's \"Protect Mail Activity\" is a handy privacy enhancement for your messaging habits. As long as you know its limitations...", + "content": "Apple's \"Protect Mail Activity\" is a handy privacy enhancement for your messaging habits. As long as you know its limitations...", + "category": "Apple", + "link": "https://nakedsecurity.sophos.com/2021/11/17/apples-privacy-protection-feature-watch-out-if-you-have-a-watch/", + "creator": "Paul Ducklin", + "pubDate": "Wed, 17 Nov 2021 19:55:38 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": true, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "The self-driving smart suitcase… that the person behind you can hijack!", + "description": "Apparently, we need a self-driving IoT Bluetooth robot suitcase. Who knew?", + "content": "Apparently, we need a self-driving IoT Bluetooth robot suitcase. Who knew?", + "category": "IoT", + "link": "https://nakedsecurity.sophos.com/2021/11/16/the-self-driving-smart-suitcase-that-the-person-behind-you-can-hijack/", + "creator": "Paul Ducklin", + "pubDate": "Tue, 16 Nov 2021 21:09:17 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The U.S. Navy's Range Has Diminished Dangerously", - "description": "Carrier air wings aren’t prepared to overcome weapons that push U.S. ships away from shore.", - "content": "Carrier air wings aren’t prepared to overcome weapons that push U.S. ships away from shore.", - "category": "PAID", - "link": "https://www.wsj.com/articles/the-navy-range-has-diminished-dangerously-missile-aircraft-carrier-killer-china-ngad-air-dominance-11637248615", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 12:03:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "title": "Emotet malware: “The report of my death was an exaggeration”", + "description": "\"Old malware rarely dies.\" The best way to predict the future is to look at the past... if it worked before, it will probably work again.", + "content": "\"Old malware rarely dies.\" The best way to predict the future is to look at the past... if it worked before, it will probably work again.", + "category": "Botnet", + "link": "https://nakedsecurity.sophos.com/2021/11/16/emotet-malware-the-report-of-my-death-was-an-exaggeration/", + "creator": "Paul Ducklin", + "pubDate": "Tue, 16 Nov 2021 19:13:19 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Will Joe Manchin Stand His Ground on Inflation?", - "description": "Federal spending is its biggest driver. He has demanded an honest accounting, due this week.", - "content": "Federal spending is its biggest driver. He has demanded an honest accounting, due this week.", - "category": "PAID", - "link": "https://www.wsj.com/articles/joe-manchin-stand-his-ground-on-inflation-budget-debt-economy-build-back-better-cbo-11637248788", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 12:05:00 -0500", - "folder": "00.03 News/News - EN", - "feed": "Wall Street Journal", + "title": "FBI email hack spreads fake security alerts. Here’s what to do…", + "description": "Fake warnings and false accusations - it's a \"call to distraction\"", + "content": "Fake warnings and false accusations - it's a \"call to distraction\"", + "category": "Law & order", + "link": "https://nakedsecurity.sophos.com/2021/11/13/dhs-warning-about-hackers-in-your-network-dont-panic/", + "creator": "Naked Security writer", + "pubDate": "Sat, 13 Nov 2021 20:50:13 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - EN", - "name": "Wall Street Journal" - }, - "14": { - "title": "Courrier international - Actualités France et Monde", - "subtitle": "", - "link": "https://www.courrierinternational.com/", - "image": "https://www.courrierinternational.com/sites/ci_master/themes/ci/images/courrier-logo-default-rss.png", - "description": "Derniers articles parus sur Courrier international", - "items": [ - { - "title": "Un nouveau plan de relance massif au Japon", - "description": "Le Premier ministre japonais Fumio Kishida a dévoilé un plan de relance d’une ampleur historique afin de renouer avec la croissance et rétablir une économie moribonde.", - "content": "Le Premier ministre japonais Fumio Kishida a dévoilé un plan de relance d’une ampleur historique afin de renouer avec la croissance et rétablir une économie moribonde.", - "category": "", - "link": "https://www.courrierinternational.com/article/le-chiffre-du-jour-un-nouveau-plan-de-relance-massif-au-japon", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:27:05 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", - "read": true, - "favorite": false, - "created": false, - "tags": [] }, { - "title": "L’inflation peut-elle couler la présidence de Joe Biden ?", - "description": "La hausse des prix s’accélère un peu partout dans le monde, en particulier aux États-Unis, où le président Biden risque d’en payer le prix politique, comme Jimmy Carter avant lui. Cette hausse est-elle temporaire ou faut-il s’en alarmer ?", - "content": "La hausse des prix s’accélère un peu partout dans le monde, en particulier aux États-Unis, où le président Biden risque d’en payer le prix politique, comme Jimmy Carter avant lui. Cette hausse est-elle temporaire ou faut-il s’en alarmer ?", - "category": "", - "link": "https://www.courrierinternational.com/article/economie-linflation-peut-elle-couler-la-presidence-de-joe-biden", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 17:24:05 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "title": "Samba update patches plaintext password plundering problem", + "description": "When Microsoft itself says STOP USING X, where X is one of its own protocols... we think you should listen.", + "content": "When Microsoft itself says STOP USING X, where X is one of its own protocols... we think you should listen.", + "category": "Cryptography", + "link": "https://nakedsecurity.sophos.com/2021/11/12/samba-update-patches-plaintext-passwork-plundering-problem/", + "creator": "Paul Ducklin", + "pubDate": "Fri, 12 Nov 2021 19:59:11 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Amazon interdit Visa à ses clients britanniques", - "description": "Le géant du commerce électronique n’acceptera plus de paiement avec une carte de crédit Visa sur sa plateforme au Royaume-Uni à partir du 19 janvier. Une manière d’obliger le réseau mondial à réduire ses frais de transactions.", - "content": "Le géant du commerce électronique n’acceptera plus de paiement avec une carte de crédit Visa sur sa plateforme au Royaume-Uni à partir du 19 janvier. Une manière d’obliger le réseau mondial à réduire ses frais de transactions.", - "category": "", - "link": "https://www.courrierinternational.com/article/e-commerce-amazon-interdit-visa-ses-clients-britanniques", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 17:03:05 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", - "read": true, + "title": "S3 Ep58: Faces on Facebook, scams that pose as complaints, and a Kaseya bust [Podcast]", + "description": "Latest epsiode - listen now!", + "content": "Latest epsiode - listen now!", + "category": "Facebook", + "link": "https://nakedsecurity.sophos.com/2021/11/11/s3-ep58-faces-on-facebook-scams-that-pose-as-complaints-and-a-kaseya-bust-podcast/", + "creator": "Paul Ducklin", + "pubDate": "Thu, 11 Nov 2021 19:41:49 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Fin de la grève “historique” chez John Deere aux États-Unis", - "description": "Les grévistes du fabricant de matériel agricole américain ont voté la reprise du travail après avoir obtenu de substantielles hausses de salaire. Le conflit, qui durait depuis un mois, symbolisait la résurgence du mouvement social après deux ans de pandémie.", - "content": "Les grévistes du fabricant de matériel agricole américain ont voté la reprise du travail après avoir obtenu de substantielles hausses de salaire. Le conflit, qui durait depuis un mois, symbolisait la résurgence du mouvement social après deux ans de pandémie.", - "category": "", - "link": "https://www.courrierinternational.com/article/social-fin-de-la-greve-historique-chez-john-deere-aux-etats-unis", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 14:15:50 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "title": "Patch Tuesday updates the Win 7 updater… for at most 1 more year of updates", + "description": "The clock stopped long ago on Windows 7, except for those who paid for overtime. But there won't be any double overtime!", + "content": "The clock stopped long ago on Windows 7, except for those who paid for overtime. But there won't be any double overtime!", + "category": "Microsoft", + "link": "https://nakedsecurity.sophos.com/2021/11/10/patch-tuesday-updates-the-win-7-updater-for-at-most-1-more-year-of-updates/", + "creator": "Paul Ducklin", + "pubDate": "Wed, 10 Nov 2021 19:45:09 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Shell file à l’anglaise, les Pays-Bas accusent le coup", - "description": "La compagnie énergétique anglo-néerlandaise a annoncé lundi 15 novembre sa décision de s’installer fiscalement au Royaume-Uni. Pour une partie des Pays-Bas, et en particulier pour le Premier ministre de droite libérale Mark Rutte, la nouvelle a beaucoup de mal à passer.", - "content": "La compagnie énergétique anglo-néerlandaise a annoncé lundi 15 novembre sa décision de s’installer fiscalement au Royaume-Uni. Pour une partie des Pays-Bas, et en particulier pour le Premier ministre de droite libérale Mark Rutte, la nouvelle a beaucoup de mal à passer.", - "category": "", - "link": "https://www.courrierinternational.com/revue-de-presse/fiscalite-shell-file-langlaise-les-pays-bas-accusent-le-coup", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 10:27:49 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "title": "Sophos 2022 Threat Report: Malware, Mobile, Machine learning and more!", + "description": "The crooks have shown that they're willing to learn and adapt their attacks, so we need to make sure we learn and adapt, too.", + "content": "The crooks have shown that they're willing to learn and adapt their attacks, so we need to make sure we learn and adapt, too.", + "category": "Machine Learning", + "link": "https://nakedsecurity.sophos.com/2021/11/09/2022-threat-report/", + "creator": "Paul Ducklin", + "pubDate": "Tue, 09 Nov 2021 19:31:14 +0000", + "folder": "00.03 News/Tech", + "feed": "Naked Security", "read": false, "favorite": false, "created": false, "tags": [] - }, + } + ], + "folder": "00.03 News/Tech", + "name": "Naked Security" + }, + { + "title": "Slashdot", + "subtitle": "", + "link": "https://slashdot.org/", + "image": null, + "description": "News for nerds, stuff that matters", + "items": [ { - "title": "La semaine de quatre jours, c’est bon pour la planète", - "description": "Diminuer le temps de travail permet de réduire les déplacements, la production et la consommation. Et donc les émissions polluantes, plaide le quotidien de la City.", - "content": "Diminuer le temps de travail permet de réduire les déplacements, la production et la consommation. Et donc les émissions polluantes, plaide le quotidien de la City.", + "title": "FIFA To Test Automatic Offside Technology Next Week in Preparation for Qatar World Cup", + "description": "FIFA will trial its new automatic offside technology next week at the Arab Cup as a test to potentially use it at the World Cup in Qatar next year. From a report: As per the Times, the technology relies on an artificial intelligence (AI) system sending an instant message to VAR when a player is offside, with the official then left to determine if a player has interfered with the passage of play or not. The technology will be used at all six stadiums used in the Arab Cup -- which also takes place in Qatar -- and comes after several trials behind closed doors took place at the likes of the Etihad Stadium and the Allianz Arena. Despite being able to relay an instant message to VAR, the technology will only be classed as semi-automated as the verdict will be sent to VAR and not the referee himself.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "FIFA will trial its new automatic offside technology next week at the Arab Cup as a test to potentially use it at the World Cup in Qatar next year. From a report: As per the Times, the technology relies on an artificial intelligence (AI) system sending an instant message to VAR when a player is offside, with the official then left to determine if a player has interfered with the passage of play or not. The technology will be used at all six stadiums used in the Arab Cup -- which also takes place in Qatar -- and comes after several trials behind closed doors took place at the likes of the Etihad Stadium and the Allianz Arena. Despite being able to relay an instant message to VAR, the technology will only be classed as semi-automated as the verdict will be sent to VAR and not the referee himself.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/boulot-la-semaine-de-quatre-jours-cest-bon-pour-la-planete", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 06:06:22 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/25/2259237/fifa-to-test-automatic-offside-technology-next-week-in-preparation-for-qatar-world-cup?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T23:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le patron d’Activision Blizzard mis en cause pour sa gestion du harcèlement sexuel", - "description": "Contrairement à ses affirmations, Bobby Kotick aurait eu une parfaite connaissance du sexisme ambiant au sein du géant américain des jeux vidéo qu’il dirige. Les appels à sa démission se multiplient après les révélations d’une retentissante enquête parue dans le Wall Street Journal.", - "content": "Contrairement à ses affirmations, Bobby Kotick aurait eu une parfaite connaissance du sexisme ambiant au sein du géant américain des jeux vidéo qu’il dirige. Les appels à sa démission se multiplient après les révélations d’une retentissante enquête parue dans le Wall Street Journal.", + "title": "China's New Space Reactor 'Will Be 100 Times More Powerful Than a Similar Device NASA Plans To Put on the Surface of the Moon by 2030'", + "description": "Hmmmmmm writes: China is developing a powerful nuclear reactor for its moon and Mars missions, according to researchers involved in the project. The reactor can generate one megawatt of electric power, 100 times more powerful than a similar device Nasa plans to put on the surface of the moon by 2030. The project was launched with funding from the central government in 2019. Although technical details and the launch date were not revealed, the engineering design of a prototype machine was completed recently and some critical components have been built, two scientists who took part in the project confirmed to the South China Morning Post this week. \n\nTo China, this is an ambitious project with unprecedented challenges. The only publicly known nuclear device it has sent into space is a tiny radioactive battery on Yutu 2, the first rover to land on the far side of the moon in 2019. That device could only generate a few watts of heat to help the rover during long lunar nights. Chemical fuel and solar panels will no longer be enough to meet the demands of human space exploration, which is expected to expand significantly with human settlements on the moon or Mars on the agenda, according to the Chinese researchers. \"Nuclear power is the most hopeful solution. Other nations have launched some ambitious plans. China cannot afford the cost of losing this race,\" said one researcher with the Chinese Academy of Sciences who asked not to be named as they were not authorised to speak to the media.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Hmmmmmm writes: China is developing a powerful nuclear reactor for its moon and Mars missions, according to researchers involved in the project. The reactor can generate one megawatt of electric power, 100 times more powerful than a similar device Nasa plans to put on the surface of the moon by 2030. The project was launched with funding from the central government in 2019. Although technical details and the launch date were not revealed, the engineering design of a prototype machine was completed recently and some critical components have been built, two scientists who took part in the project confirmed to the South China Morning Post this week. \n\nTo China, this is an ambitious project with unprecedented challenges. The only publicly known nuclear device it has sent into space is a tiny radioactive battery on Yutu 2, the first rover to land on the far side of the moon in 2019. That device could only generate a few watts of heat to help the rover during long lunar nights. Chemical fuel and solar panels will no longer be enough to meet the demands of human space exploration, which is expected to expand significantly with human settlements on the moon or Mars on the agenda, according to the Chinese researchers. \"Nuclear power is the most hopeful solution. Other nations have launched some ambitious plans. China cannot afford the cost of losing this race,\" said one researcher with the Chinese Academy of Sciences who asked not to be named as they were not authorised to speak to the media.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/revue-de-presse/jeux-video-le-patron-dactivision-blizzard-mis-en-cause-pour-sa-gestion-du", - "creator": "", - "pubDate": "Wed, 17 Nov 2021 17:58:58 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/25/2153254/chinas-new-space-reactor-will-be-100-times-more-powerful-than-a-similar-device-nasa-plans-to-put-on-the-surface-of-the-moon-by-2030?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T22:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le bitcoin à la peine après les nouvelles attaques de la Chine contre le minage", - "description": "La principale agence de planification chinoise a annoncé, le mardi 16 novembre, le détail des mesures de répression des cryptomonnaies. Les deux principales monnaies virtuelles, le bitcoin et l’ether, ont aussitôt dévissé.", - "content": "La principale agence de planification chinoise a annoncé, le mardi 16 novembre, le détail des mesures de répression des cryptomonnaies. Les deux principales monnaies virtuelles, le bitcoin et l’ether, ont aussitôt dévissé.", + "title": "Australia Defamation Case Signals a Crackdown on Ordinary Citizens, Critics Say", + "description": "Australia's defense minister on Wednesday won a defamation case over a six-word tweet that called him a \"rape apologist.\" From a report: Critics and experts said the court case exemplified the conservative government's heavy-handed approach toward regulating damaging commentary on social media -- what Prime Minister Scott Morrison called \"a coward's palace.\" The case also represented a troubling shift as politicians bring more lawsuits against ordinary citizens, they said. The dispute began when Shane Bazzi, an advocate for refugees who has 13,000 Twitter followers, wrote a Twitter post in February about Peter Dutton, then the country's home affairs minister and now the defense minister. \n\n\"Peter Dutton is a rape apologist,\" the tweet said, and linked to an article about comments Mr. Dutton had made that women seeking asylum in Australia used rape claims as an excuse to enter the country. The post was published on the same day that Mr. Dutton also used the phrase \"she said, he said\" in reference to explosive accusations by Brittany Higgins, a former government staff member, who said she had been sexually assaulted in Australia's Parliament House. Mr. Dutton began defamation proceedings soon after, saying that the post had \"deeply offended\" him and had wrongly suggested he condoned and excused rape. Mr Bazzi's blue Twitter check mark, Mr. Dutton also argued, implied recognition by the social media giant and had led the minister to believe that the post was not just the \"rant of somebody randomly on Twitter.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Australia's defense minister on Wednesday won a defamation case over a six-word tweet that called him a \"rape apologist.\" From a report: Critics and experts said the court case exemplified the conservative government's heavy-handed approach toward regulating damaging commentary on social media -- what Prime Minister Scott Morrison called \"a coward's palace.\" The case also represented a troubling shift as politicians bring more lawsuits against ordinary citizens, they said. The dispute began when Shane Bazzi, an advocate for refugees who has 13,000 Twitter followers, wrote a Twitter post in February about Peter Dutton, then the country's home affairs minister and now the defense minister. \n\n\"Peter Dutton is a rape apologist,\" the tweet said, and linked to an article about comments Mr. Dutton had made that women seeking asylum in Australia used rape claims as an excuse to enter the country. The post was published on the same day that Mr. Dutton also used the phrase \"she said, he said\" in reference to explosive accusations by Brittany Higgins, a former government staff member, who said she had been sexually assaulted in Australia's Parliament House. Mr. Dutton began defamation proceedings soon after, saying that the post had \"deeply offended\" him and had wrongly suggested he condoned and excused rape. Mr Bazzi's blue Twitter check mark, Mr. Dutton also argued, implied recognition by the social media giant and had led the minister to believe that the post was not just the \"rant of somebody randomly on Twitter.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/cryptomonnaie-le-bitcoin-la-peine-apres-les-nouvelles-attaques-de-la-chine-contre-le-minage", - "creator": "", - "pubDate": "Wed, 17 Nov 2021 17:21:03 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://yro.slashdot.org/story/21/11/25/219248/australia-defamation-case-signals-a-crackdown-on-ordinary-citizens-critics-say?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T21:09:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La première mini-centrale nucléaire de Bill Gates en fonction d’ici sept ans aux États-Unis", - "description": "Porté par le milliardaire américain via sa start-up TerraPower depuis 2006, le premier petit réacteur nucléaire Natrium sera implanté à Kemmerer, dans le Wyoming, et serait opérationnel d’ici sept ans. Sa construction sera financée pour moitié par le plan d’infrastructures de Joe Biden.", - "content": "Porté par le milliardaire américain via sa start-up TerraPower depuis 2006, le premier petit réacteur nucléaire Natrium sera implanté à Kemmerer, dans le Wyoming, et serait opérationnel d’ici sept ans. Sa construction sera financée pour moitié par le plan d’infrastructures de Joe Biden.", + "title": "UK Privacy Watchdog Warns Adtech the End of Tracking is Nigh", + "description": "It's been well over two years since the UK's data protection watchdog warned the behavioural advertising industry it's wildly out of control. From a report: The ICO hasn't done anything to stop the systematic unlawfulness of the tracking and targeting industry abusing Internet users' personal data to try to manipulate their attention -- not in terms of actually enforcing the law against offenders and stopping what digital rights campaigners have described as the biggest data breach in history. Indeed, it's being sued over inaction against real-time-bidding's misuse of personal data by complainants who filed a petition on the issue all the way back in September 2018. \n\nBut today the UK's (outgoing) information commissioner, Elizabeth Denham, published an opinion -- in which she warns the industry that its old unlawful tricks simply won't do in the future. New methods of advertising must be compliant with a set of what she describes as \"clear data protection standards\" in order to safeguard people's privacy online, she writes.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "It's been well over two years since the UK's data protection watchdog warned the behavioural advertising industry it's wildly out of control. From a report: The ICO hasn't done anything to stop the systematic unlawfulness of the tracking and targeting industry abusing Internet users' personal data to try to manipulate their attention -- not in terms of actually enforcing the law against offenders and stopping what digital rights campaigners have described as the biggest data breach in history. Indeed, it's being sued over inaction against real-time-bidding's misuse of personal data by complainants who filed a petition on the issue all the way back in September 2018. \n\nBut today the UK's (outgoing) information commissioner, Elizabeth Denham, published an opinion -- in which she warns the industry that its old unlawful tricks simply won't do in the future. New methods of advertising must be compliant with a set of what she describes as \"clear data protection standards\" in order to safeguard people's privacy online, she writes.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/energie-la-premiere-mini-centrale-nucleaire-de-bill-gates-en-fonction-dici-sept-ans-aux", - "creator": "", - "pubDate": "Wed, 17 Nov 2021 13:01:18 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/25/1853246/uk-privacy-watchdog-warns-adtech-the-end-of-tracking-is-nigh?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T19:30:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Remettre le travail à sa place", - "description": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous nous interrogeons sur notre rapport au travail. Aux États-Unis, le rapport de force s’inverse dans les entreprises. Après l’Islande, l’Espagne et l’Irlande testent la semaine de quatre jours. Comment rééquilibrer nos vies ? En travaillant moins ? Les décryptages de la presse étrangère.", - "content": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous nous interrogeons sur notre rapport au travail. Aux États-Unis, le rapport de force s’inverse dans les entreprises. Après l’Islande, l’Espagne et l’Irlande testent la semaine de quatre jours. Comment rééquilibrer nos vies ? En travaillant moins ? Les décryptages de la presse étrangère.", + "title": "Israel Restricts Cyberweapons Export List By Two-thirds, From 102 To 37 Countries", + "description": "The Israeli government has restricted the list of countries to which local security firms are allowed to sell surveillance and offensive hacking tools by almost two-thirds, cutting the official cyber export list from 102 to 37 entries. From a report: The new list, obtained by Israeli business newspaper Calcalist earlier today, only includes countries with proven democracies, such as those from Europe and the Five Eyes coalition: Australia, Austria, Belgium, Bulgaria, Canada, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Iceland, India, Ireland, Italy, Japan, Latvia, Liechtenstein, Lithuania, Luxembourg, Malta, New Zealand, Norway, Portugal, Romania, Slovakia, Slovenia, South Korea, Spain, Sweden, Switzerland, the Netherlands, the UK, and the US. \n\nThe list noticeably removes autocratic regimes, to which Israeli companies have often supplied surveillance tools. Spyware developed by Israeli companies like Candiru and the NSO Group has been linked in recent years to human rights abuses in tens of countries, with the tools being used by the local governments to spy on reporters, activists, dissidents, and political rivals.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The Israeli government has restricted the list of countries to which local security firms are allowed to sell surveillance and offensive hacking tools by almost two-thirds, cutting the official cyber export list from 102 to 37 entries. From a report: The new list, obtained by Israeli business newspaper Calcalist earlier today, only includes countries with proven democracies, such as those from Europe and the Five Eyes coalition: Australia, Austria, Belgium, Bulgaria, Canada, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Iceland, India, Ireland, Italy, Japan, Latvia, Liechtenstein, Lithuania, Luxembourg, Malta, New Zealand, Norway, Portugal, Romania, Slovakia, Slovenia, South Korea, Spain, Sweden, Switzerland, the Netherlands, the UK, and the US. \n\nThe list noticeably removes autocratic regimes, to which Israeli companies have often supplied surveillance tools. Spyware developed by Israeli companies like Candiru and the NSO Group has been linked in recent years to human rights abuses in tens of countries, with the tools being used by the local governments to spy on reporters, activists, dissidents, and political rivals.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/la-une-de-lhebdo-remettre-le-travail-sa-place", - "creator": "", - "pubDate": "Wed, 17 Nov 2021 09:19:17 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/25/1840256/israel-restricts-cyberweapons-export-list-by-two-thirds-from-102-to-37-countries?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T18:42:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le plan stratégique de Google à 650 millions d’euros pour l’Australie", - "description": "Changement de ton entre le géant américain et le pouvoir australien. Alors qu’en janvier Google menaçait de couper l’accès à son moteur de recherche, ce mardi, son PDG a lancé le projet Digital Future, qui prévoit 6 000 emplois directs d’ici cinq ans, en présence du Premier ministre.", - "content": "Changement de ton entre le géant américain et le pouvoir australien. Alors qu’en janvier Google menaçait de couper l’accès à son moteur de recherche, ce mardi, son PDG a lancé le projet Digital Future, qui prévoit 6 000 emplois directs d’ici cinq ans, en présence du Premier ministre.", + "title": "Roblox Sues YouTuber For $1.6 Million Over Terrorizing Kids Platform", + "description": "Roblox is taking notorious YouTuber Benjamin \"Ruben Sim\" Simon to court over his alleged attacks on the gaming social media platform and its young fans. A lawsuit filed in California court on Tuesday wants the longtime banned player to pay $1.6 million in damages and stop harassing Roblox employees and players. From a report: First reported by Polygon, the lawsuit contains a number of allegations against Simon, who has been making and profiting from Roblox videos since 2010. Those videos run the gamut, featuring him doing everything from sexually harassing players he encounters in the game to making public \"terrorist threats\" against the company during its annual convention. According to Roblox, this led the company to have to temporarily shut down its Roblox Developers Conference in San Francisco last month after Simon reportedly posted about police searching for \"Islamic Extremists\" at the event. The company claims this cost it $50,000 to investigate the false reports.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Roblox is taking notorious YouTuber Benjamin \"Ruben Sim\" Simon to court over his alleged attacks on the gaming social media platform and its young fans. A lawsuit filed in California court on Tuesday wants the longtime banned player to pay $1.6 million in damages and stop harassing Roblox employees and players. From a report: First reported by Polygon, the lawsuit contains a number of allegations against Simon, who has been making and profiting from Roblox videos since 2010. Those videos run the gamut, featuring him doing everything from sexually harassing players he encounters in the game to making public \"terrorist threats\" against the company during its annual convention. According to Roblox, this led the company to have to temporarily shut down its Roblox Developers Conference in San Francisco last month after Simon reportedly posted about police searching for \"Islamic Extremists\" at the event. The company claims this cost it $50,000 to investigate the false reports.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/big-tech-le-plan-strategique-de-google-650-millions-deuros-pour-laustralie", - "creator": "", - "pubDate": "Tue, 16 Nov 2021 17:51:39 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://yro.slashdot.org/story/21/11/25/1742220/roblox-sues-youtuber-for-16-million-over-terrorizing-kids-platform?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T17:42:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La tour de Babel du streaming, les chauffards d’Amazon et le malheur des hackeurs", - "description": "Grâce à Netflix, Hulu et aux autres géants du streaming, nos écrans sont devenus des kaléidoscopes bigarrés, pleins de petites merveilles danoises, coréennes, indiennes ou brésiliennes. Après le succès planétaire de la série coréenne Squid Game, une enquête du magazine Rest of World révèle une conséquence méconnue de cette nouvelle tour de Babel culturelle : la pénurie de traducteurs...", - "content": "Grâce à Netflix, Hulu et aux autres géants du streaming, nos écrans sont devenus des kaléidoscopes bigarrés, pleins de petites merveilles danoises, coréennes, indiennes ou brésiliennes. Après le succès planétaire de la série coréenne Squid Game, une enquête du magazine Rest of World révèle une conséquence méconnue de cette nouvelle tour de Babel culturelle : la pénurie de traducteurs...", + "title": "Walmart Pulls Children's Toy That Swears and Sings in Polish About Doing Cocaine", + "description": "An Ontario grandmother who bought an educational toy for her 15-month-old granddaughter was shocked when the dancing cactus started swearing and singing about doing cocaine. From a report: \"This toy uses swear words and talking about cocaine use,\" Ania Tanner told CTV News Toronto. \"This is not what I ordered for my granddaughter.\" The cactus was sold on Walmart's website as an educational toy for about $26 and sings songs in English, Spanish and Polish. But Tanner, who is Polish, said when she listened to the Polish lyrics, the cactus was singing about doing cocaine, drug abuse, suicide, depression and used profanities. \"It just so happens that I am Polish and when I started to listen to the songs and I heard the words,\" she said. \"I was in shock. I thought what is this some kind of joke?\" The song is by Polish Rapper Cypis, who is reportedly unaware his song was used by the Chinese manufacturer of the children's toy. \"It's about taking five grams of cocaine and being alone ... It's a very depressing song,\" Tanner said. This singing cactus toy was also sold in Europe through Amazon and in July 2021 other families also noticed and complained about the lyrics that many felt were inappropriate for a children's toy.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An Ontario grandmother who bought an educational toy for her 15-month-old granddaughter was shocked when the dancing cactus started swearing and singing about doing cocaine. From a report: \"This toy uses swear words and talking about cocaine use,\" Ania Tanner told CTV News Toronto. \"This is not what I ordered for my granddaughter.\" The cactus was sold on Walmart's website as an educational toy for about $26 and sings songs in English, Spanish and Polish. But Tanner, who is Polish, said when she listened to the Polish lyrics, the cactus was singing about doing cocaine, drug abuse, suicide, depression and used profanities. \"It just so happens that I am Polish and when I started to listen to the songs and I heard the words,\" she said. \"I was in shock. I thought what is this some kind of joke?\" The song is by Polish Rapper Cypis, who is reportedly unaware his song was used by the Chinese manufacturer of the children's toy. \"It's about taking five grams of cocaine and being alone ... It's a very depressing song,\" Tanner said. This singing cactus toy was also sold in Europe through Amazon and in July 2021 other families also noticed and complained about the lyrics that many felt were inappropriate for a children's toy.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/la-lettre-tech-la-tour-de-babel-du-streaming-les-chauffards-damazon-et-le-malheur-des", - "creator": "", - "pubDate": "Tue, 16 Nov 2021 10:49:01 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://slashdot.org/story/21/11/25/165218/walmart-pulls-childrens-toy-that-swears-and-sings-in-polish-about-doing-cocaine?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T16:06:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, - { - "title": "De Barcelone à Paris, l’offensive anti-Airbnb", - "description": "La pandémie a permis de le mesurer : Airbnb participe à l’inflation des loyers et des prix à la vente dans les grandes métropoles. Beaucoup d’entre elles déploient désormais un arsenal contre la plateforme de location.", - "content": "La pandémie a permis de le mesurer : Airbnb participe à l’inflation des loyers et des prix à la vente dans les grandes métropoles. Beaucoup d’entre elles déploient désormais un arsenal contre la plateforme de location.", - "category": "", - "link": "https://www.courrierinternational.com/article/immobilier-de-barcelone-paris-loffensive-anti-airbnb", - "creator": "", - "pubDate": "Tue, 16 Nov 2021 06:37:50 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + { + "title": "Germany Considers a Full Covid Lockdown and Mandatory Vaccines", + "description": "Germany is set to decide on tougher Covid-19 restrictions and could even opt for a full lockdown amid record daily infections and mounting pressure on hospitals. From a report: Olaf Scholz, Germany's chancellor-designate, said Wednesday that the Covid situation was serious and that the country would massively push its vaccination campaign, noting that \"vaccination is the way out of this pandemic.\" Scholz said Germany \"should make vaccination compulsory for certain groups,\" without stating which groups, while new Finance Minister Christian Lindner stated that Germans should avoid all unnecessary contact this winter \"to preserve all of our health in this pandemic.\" \n\nThat Scholz chose to address the Covid crisis as he and his new government colleagues announced a draft coalition deal on Wednesday shows where the officials' immediate priorities lie. The country's outgoing health minister, Jens Spahn, issued a dire warning to Germans this week, saying that by the end of winter \"pretty much everyone in Germany will be vaccinated, recovered or dead.\" Outgoing Chancellor Angela Merkel has called on the heads of Germany's 16 federal states (which have largely been free to determine their own Covid measures) to decide upon stricter rules by Wednesday. On Tuesday, Spahn reiterated that request, adding that more public spaces should be restricted to the vaccinated, the recently recovered, or those that have had a negative test -- otherwise known as the \"3G rule.\" From Wednesday, 3G rules apply to any Germans going into the workplace or accessing public transport.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Germany is set to decide on tougher Covid-19 restrictions and could even opt for a full lockdown amid record daily infections and mounting pressure on hospitals. From a report: Olaf Scholz, Germany's chancellor-designate, said Wednesday that the Covid situation was serious and that the country would massively push its vaccination campaign, noting that \"vaccination is the way out of this pandemic.\" Scholz said Germany \"should make vaccination compulsory for certain groups,\" without stating which groups, while new Finance Minister Christian Lindner stated that Germans should avoid all unnecessary contact this winter \"to preserve all of our health in this pandemic.\" \n\nThat Scholz chose to address the Covid crisis as he and his new government colleagues announced a draft coalition deal on Wednesday shows where the officials' immediate priorities lie. The country's outgoing health minister, Jens Spahn, issued a dire warning to Germans this week, saying that by the end of winter \"pretty much everyone in Germany will be vaccinated, recovered or dead.\" Outgoing Chancellor Angela Merkel has called on the heads of Germany's 16 federal states (which have largely been free to determine their own Covid measures) to decide upon stricter rules by Wednesday. On Tuesday, Spahn reiterated that request, adding that more public spaces should be restricted to the vaccinated, the recently recovered, or those that have had a negative test -- otherwise known as the \"3G rule.\" From Wednesday, 3G rules apply to any Germans going into the workplace or accessing public transport.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "category": "", + "link": "https://science.slashdot.org/story/21/11/25/1329245/germany-considers-a-full-covid-lockdown-and-mandatory-vaccines?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T15:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Airbus décroche un mégacontrat de 255 avions", - "description": "Au salon aéronautique de Dubaï, l’avionneur européen a annoncé un contrat estimé à 30 milliards de dollars avec le fonds d’investissement Indigo Partners, représentant des compagnies aériennes low cost. Et veut y voir le signe du retour à la normale post-pandémie.", - "content": "Au salon aéronautique de Dubaï, l’avionneur européen a annoncé un contrat estimé à 30 milliards de dollars avec le fonds d’investissement Indigo Partners, représentant des compagnies aériennes low cost. Et veut y voir le signe du retour à la normale post-pandémie.", + "title": "Black Friday is Causing Toxic Traffic Jams at US Ports and Warehouses", + "description": "As millions of Americans rush to take advantage of Black Friday deals this weekend, the shopping spree will add to a pollution crisis unfolding at America's ports . For months, broken supply chains have saddled port-side neighborhoods with more pollution than they normally endure. The holiday season will make things even worse. From a report: The disaster is unfolding in spectacular fashion in Southern California, home to the busiest port complex in the western hemisphere (which includes the ports of Los Angeles and Long Beach). Here, cargo ships have piled up offshore as the pandemic wreaks havoc on global supply chains. The traffic jam extends to inland distribution hubs that attract trucks, trains, and planes shuttling goods from warehouses to consumers' doorsteps. \n\nThat all has consequences for people's health. \"We need these things off these ships, I understand that,\" says Afif El-Hasan, a pediatrician and national spokesperson for the American Lung Association. \"But it's going to hurt the people around the [areas] these goods come through.\" There are a lot of factors that wrecked global supply chains, but in short, there was a mismatch in supply and demand. The pandemic shuttered factories. Meanwhile, people started shopping more for home improvement projects and new hobbies they picked up during pandemic-induced lockdowns. In the US, the container ships ferrying those goods from Asia started piling up at ports. During the first three quarters of this year, the movement of containers in and out of the ports of Los Angeles and Long Beach was nearly 30 percent higher than during the same time period in 2019. By November, container ships were parking outside the Port of Los Angeles for an average of 17 days -- more than twice as long as they were towards the start of the year. That has literally led to tons more air pollution in the region because the ships run their auxiliary engines while idling offshore.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "As millions of Americans rush to take advantage of Black Friday deals this weekend, the shopping spree will add to a pollution crisis unfolding at America's ports . For months, broken supply chains have saddled port-side neighborhoods with more pollution than they normally endure. The holiday season will make things even worse. From a report: The disaster is unfolding in spectacular fashion in Southern California, home to the busiest port complex in the western hemisphere (which includes the ports of Los Angeles and Long Beach). Here, cargo ships have piled up offshore as the pandemic wreaks havoc on global supply chains. The traffic jam extends to inland distribution hubs that attract trucks, trains, and planes shuttling goods from warehouses to consumers' doorsteps. \n\nThat all has consequences for people's health. \"We need these things off these ships, I understand that,\" says Afif El-Hasan, a pediatrician and national spokesperson for the American Lung Association. \"But it's going to hurt the people around the [areas] these goods come through.\" There are a lot of factors that wrecked global supply chains, but in short, there was a mismatch in supply and demand. The pandemic shuttered factories. Meanwhile, people started shopping more for home improvement projects and new hobbies they picked up during pandemic-induced lockdowns. In the US, the container ships ferrying those goods from Asia started piling up at ports. During the first three quarters of this year, the movement of containers in and out of the ports of Los Angeles and Long Beach was nearly 30 percent higher than during the same time period in 2019. By November, container ships were parking outside the Port of Los Angeles for an average of 17 days -- more than twice as long as they were towards the start of the year. That has literally led to tons more air pollution in the region because the ships run their auxiliary engines while idling offshore.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/aviation-airbus-decroche-un-megacontrat-de-255-avions", - "creator": "", - "pubDate": "Mon, 15 Nov 2021 18:16:17 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/25/1321258/black-friday-is-causing-toxic-traffic-jams-at-us-ports-and-warehouses?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T14:01:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les semaines de 75 heures des sous-traitants du géant de la mode Shein", - "description": "Une enquête de l’ONG Public Eye dénonce les conditions de travail de certains fournisseurs de la marque d’ultrafast fashion chinoise. Pour tenir le rythme, certains multiplient les heures supplémentaires en violation du droit du travail.", - "content": "Une enquête de l’ONG Public Eye dénonce les conditions de travail de certains fournisseurs de la marque d’ultrafast fashion chinoise. Pour tenir le rythme, certains multiplient les heures supplémentaires en violation du droit du travail.", + "title": "Verizon and AT&T To Temporarily Turn Down 5G Power To Address FAA Worries", + "description": "AT&T and Verizon said they will slightly reduce the power of their 5G transmissions in C-band spectrum for six months. The companies said they will do so to allow federal aviation officials more time to study how such transmission might affect radio altimeters in aircraft. From a report: \"We are committed to the rapid deployment of 5G and the safety of aviation,\" the two companies told the FCC in a new letter. \"While we continue to believe the FCC's current rules provide for both, we will, without waiver of our legal rights associated with our substantial investments in these licenses, adopt these precautionary measures to allow for additional time for continued analysis.\" Importantly, according to the Wall Street Journal, executives in the wireless industry don't expect the power reduction to \"seriously impair\" the operators' 5G operations in the spectrum band. Further, the operators continued to argue that their 5G transmissions in C-band spectrum do not pose a risk to air travel in the US, despite a report from some airlines showing a potential risk of interference to aircraft operations.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "AT&T and Verizon said they will slightly reduce the power of their 5G transmissions in C-band spectrum for six months. The companies said they will do so to allow federal aviation officials more time to study how such transmission might affect radio altimeters in aircraft. From a report: \"We are committed to the rapid deployment of 5G and the safety of aviation,\" the two companies told the FCC in a new letter. \"While we continue to believe the FCC's current rules provide for both, we will, without waiver of our legal rights associated with our substantial investments in these licenses, adopt these precautionary measures to allow for additional time for continued analysis.\" Importantly, according to the Wall Street Journal, executives in the wireless industry don't expect the power reduction to \"seriously impair\" the operators' 5G operations in the spectrum band. Further, the operators continued to argue that their 5G transmissions in C-band spectrum do not pose a risk to air travel in the US, despite a report from some airlines showing a potential risk of interference to aircraft operations.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/social-les-semaines-de-75-heures-des-sous-traitants-du-geant-de-la-mode-shein", - "creator": "", - "pubDate": "Mon, 15 Nov 2021 17:43:11 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/25/0038251/verizon-and-att-to-temporarily-turn-down-5g-power-to-address-faa-worries?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T12:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La gomme arabique, moisson dorée du Soudan", - "description": "La récolte ancestrale de la sève d’acacia fait du Soudan le premier producteur mondial de cet ingrédient essentiel à l’industrie mondiale, depuis le chewing-gum jusqu’aux médicaments. Mais les paysans ne perçoivent qu’une petite fraction des profits engendrés par cette ressource. \n \n ", - "content": "La récolte ancestrale de la sève d’acacia fait du Soudan le premier producteur mondial de cet ingrédient essentiel à l’industrie mondiale, depuis le chewing-gum jusqu’aux médicaments. Mais les paysans ne perçoivent qu’une petite fraction des profits engendrés par cette ressource. \n \n ", + "title": "The World Needs To Crack Battery Recycling, Fast", + "description": "As batteries start to pile up, carmakers, battery companies and researchers are trying to save them from ending up in landfills. From a report: Recyclers are primarily interested in extracting the valuable metals and minerals in the cells. Getting to these materials is complex and dangerous: After removing the steel casing, the battery pack needs to be unbundled into cells carefully, to avoid puncturing any hazardous materials. The electrolyte, a liquid whose job it is to move lithium ions between the cathode and anode, can catch fire or even explode if heated. Only once the pack has been dismantled, recyclers can safely extract the conductive lithium, nickel, copper, and cobalt. \n\nUsed in the cathode, cobalt is the most sought-after material used in batteries. In its raw form, the rare, bluish-grey metal is predominantly sourced from the Democratic Republic of Congo, where miners work in perilous conditions. The world's major electric car manufacturers are already moving away from cobalt, deterred by the human rights abuses, shortages in the supply chain. That raises the question of whether recyclers will still find it worthwhile to dismantle newer battery types lacking the most valuable ingredients. \"When you move to more sustainable materials, and lower cost materials, the incentive to recycle and recover them diminishes,\" says Jenny Baker, an energy storage expert at Swansea University. She likens this to a dilemma in consumer electronics: It is often cheaper to buy a new mobile phone than to get it fixed or recycled. \n\n[...] In a first step, recyclers typically shred the cathode and anode materials of spent batteries into a powdery mixture, the so-called black mass. In the board game analogy, this would be the first slide down on a snake, Gavin Harper, a research fellow at the University of Birmingham, explains. The black mass can then be processed in one of two ways to extract its valuable components. One method, called pyrometallurgy, involves smelting the black mass in a furnace powered with fossil fuels. It's a relatively cheap method but a lot of lithium, aluminium, graphite and manganese is lost in the process. Another method, hydrometallurgy, leaches the metals out of the black mass by dissolving it in acids and other solvents. This method, Harper says, would correspond to a shorter snake in the board game, because more material can be recovered: you fall back, but not by as many squares as when using pyrometallurgy. The process, however, consumes a lot of energy and produces toxic gases and wastewater.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "As batteries start to pile up, carmakers, battery companies and researchers are trying to save them from ending up in landfills. From a report: Recyclers are primarily interested in extracting the valuable metals and minerals in the cells. Getting to these materials is complex and dangerous: After removing the steel casing, the battery pack needs to be unbundled into cells carefully, to avoid puncturing any hazardous materials. The electrolyte, a liquid whose job it is to move lithium ions between the cathode and anode, can catch fire or even explode if heated. Only once the pack has been dismantled, recyclers can safely extract the conductive lithium, nickel, copper, and cobalt. \n\nUsed in the cathode, cobalt is the most sought-after material used in batteries. In its raw form, the rare, bluish-grey metal is predominantly sourced from the Democratic Republic of Congo, where miners work in perilous conditions. The world's major electric car manufacturers are already moving away from cobalt, deterred by the human rights abuses, shortages in the supply chain. That raises the question of whether recyclers will still find it worthwhile to dismantle newer battery types lacking the most valuable ingredients. \"When you move to more sustainable materials, and lower cost materials, the incentive to recycle and recover them diminishes,\" says Jenny Baker, an energy storage expert at Swansea University. She likens this to a dilemma in consumer electronics: It is often cheaper to buy a new mobile phone than to get it fixed or recycled. \n\n[...] In a first step, recyclers typically shred the cathode and anode materials of spent batteries into a powdery mixture, the so-called black mass. In the board game analogy, this would be the first slide down on a snake, Gavin Harper, a research fellow at the University of Birmingham, explains. The black mass can then be processed in one of two ways to extract its valuable components. One method, called pyrometallurgy, involves smelting the black mass in a furnace powered with fossil fuels. It's a relatively cheap method but a lot of lithium, aluminium, graphite and manganese is lost in the process. Another method, hydrometallurgy, leaches the metals out of the black mass by dissolving it in acids and other solvents. This method, Harper says, would correspond to a shorter snake in the board game, because more material can be recovered: you fall back, but not by as many squares as when using pyrometallurgy. The process, however, consumes a lot of energy and produces toxic gases and wastewater.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/long-format/reportage-la-gomme-arabique-moisson-doree-du-soudan", - "creator": "", - "pubDate": "Sun, 14 Nov 2021 06:52:54 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/25/0028229/the-world-needs-to-crack-battery-recycling-fast?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T09:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "AstraZeneca veut tirer des bénéfices de son vaccin contre le Covid-19", - "description": "Le géant pharmaceutique s’était engagé à ne pas gagner d’argent avant la fin de la pandémie, en vendant à prix coûtant ses doses contre le Covid-19. Mais l’entreprise suédo-britannique estime que la maladie est devenue endémique. Et signe des contrats aux marges bénéficiaires “modestes” pour 2022.", - "content": "Le géant pharmaceutique s’était engagé à ne pas gagner d’argent avant la fin de la pandémie, en vendant à prix coûtant ses doses contre le Covid-19. Mais l’entreprise suédo-britannique estime que la maladie est devenue endémique. Et signe des contrats aux marges bénéficiaires “modestes” pour 2022.", + "title": "Europe Must Ban Bitcoin Mining To Hit the 1.5C Paris Climate Goal, Say Swedish Regulators", + "description": "Faced with a sharp rise in energy consumption, Swedish authorities are calling on the European Union to ban \"energy intensive\" crypto mining. From a report: Erik Thedeen, director of the Swedish Financial Supervisory Authority, and Bjorn Risinger, director of the Swedish Environmental Protection Agency, said cryptocurrency's rising energy usage is threatening Sweden's ability to meet its obligations under the Paris Climate Agreement. Between April and August this year, the energy consumption of Bitcoin mining in the Nordic country rose \"several hundred per cent,\" and now consumes the equivalent electricity of 200,000 households, Thedeen and Risinger said. \n\nIn an open letter, the directors of Sweden's top financial and environmental regulators called for an EU-wide ban on \"proof of work\" cryptocurrency mining, for Sweden to \"halt the establishment\" of new crypto mining operations and for companies that trade and invest in crypto assets to be prohibited from describing their business activities as environmentally sustainable.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Faced with a sharp rise in energy consumption, Swedish authorities are calling on the European Union to ban \"energy intensive\" crypto mining. From a report: Erik Thedeen, director of the Swedish Financial Supervisory Authority, and Bjorn Risinger, director of the Swedish Environmental Protection Agency, said cryptocurrency's rising energy usage is threatening Sweden's ability to meet its obligations under the Paris Climate Agreement. Between April and August this year, the energy consumption of Bitcoin mining in the Nordic country rose \"several hundred per cent,\" and now consumes the equivalent electricity of 200,000 households, Thedeen and Risinger said. \n\nIn an open letter, the directors of Sweden's top financial and environmental regulators called for an EU-wide ban on \"proof of work\" cryptocurrency mining, for Sweden to \"halt the establishment\" of new crypto mining operations and for companies that trade and invest in crypto assets to be prohibited from describing their business activities as environmentally sustainable.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/industrie-astrazeneca-veut-tirer-des-benefices-de-son-vaccin-contre-le-covid-19", - "creator": "", - "pubDate": "Fri, 12 Nov 2021 19:48:03 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://slashdot.org/story/21/11/25/003228/europe-must-ban-bitcoin-mining-to-hit-the-15c-paris-climate-goal-say-swedish-regulators?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T04:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Quand Adele, Ed Sheeran et Abba embouteillent l’industrie du vinyle", - "description": "Le retour en force du vinyle atteint de tels sommets que le secteur est en forte tension, peu aidé par des sorties pop attendues et des problèmes de chaîne d’approvisionnement.", - "content": "Le retour en force du vinyle atteint de tels sommets que le secteur est en forte tension, peu aidé par des sorties pop attendues et des problèmes de chaîne d’approvisionnement.", + "title": "Centrist Dems Sink Biden's Nominee for Top Bank Regulator", + "description": "Five Democratic senators have told the White House they won't support Saule Omarova to head the Office of the Comptroller of the Currency, effectively killing her nomination for the powerful bank-regulator position. Axios: The defiant opposition from a broad coalition of senators reflects the real policy concerns they had with Omarova, a Cornell University law professor who's attracted controversy for her academic writings about hemming in big banks. Their opposition also hints at a willingness of some Democratic senators to buck the White House on an important nomination, even if it hands Republicans a political -- and symbolic -- victory. \n\nRepublicans have attacked the Kazakh-born scholar in remarkably personal terms, and turned her nomination into a proxy battle over how banks should be regulated.\nDriving the news: In phone call on Wednesday, Sens. Jon Tester (D-Mont.) Mark Warner (D-Va.) and Kyrsten Sinema (D-Ariz.), all members of the Senate Banking Committee, told Sen. Sherrod Brown (D-Ohio) -- the panel's chairman -- of their opposition. They're joined in opposing her by Sens. John Hickenlooper (D-Colo.) and Mark Kelly (D-Ariz.).

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Five Democratic senators have told the White House they won't support Saule Omarova to head the Office of the Comptroller of the Currency, effectively killing her nomination for the powerful bank-regulator position. Axios: The defiant opposition from a broad coalition of senators reflects the real policy concerns they had with Omarova, a Cornell University law professor who's attracted controversy for her academic writings about hemming in big banks. Their opposition also hints at a willingness of some Democratic senators to buck the White House on an important nomination, even if it hands Republicans a political -- and symbolic -- victory. \n\nRepublicans have attacked the Kazakh-born scholar in remarkably personal terms, and turned her nomination into a proxy battle over how banks should be regulated.\nDriving the news: In phone call on Wednesday, Sens. Jon Tester (D-Mont.) Mark Warner (D-Va.) and Kyrsten Sinema (D-Ariz.), all members of the Senate Banking Committee, told Sen. Sherrod Brown (D-Ohio) -- the panel's chairman -- of their opposition. They're joined in opposing her by Sens. John Hickenlooper (D-Colo.) and Mark Kelly (D-Ariz.).

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/musique-quand-adele-ed-sheeran-et-abba-embouteillent-lindustrie-du-vinyle", - "creator": "", - "pubDate": "Fri, 12 Nov 2021 06:02:49 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/25/0043256/centrist-dems-sink-bidens-nominee-for-top-bank-regulator?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-25T00:45:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Tremblez, chers Français, le vin anglais sort de sa cave", - "description": "À la faveur du réchauffement climatique et d’investissements importants, y compris de la part de maisons françaises, la production et la qualité du pétillant britannique explosent, s’enthousiasme ce journal londonien. Les vins tranquilles, quant à eux, signent une percée remarquée.", - "content": "À la faveur du réchauffement climatique et d’investissements importants, y compris de la part de maisons françaises, la production et la qualité du pétillant britannique explosent, s’enthousiasme ce journal londonien. Les vins tranquilles, quant à eux, signent une percée remarquée.", + "title": "Inside the Rise and Fall of Clubhouse, a Pandemic Poster Child of VC-backed Hype", + "description": "From a report: In May 2020, when the pandemic raged, the comedian and TV writer Marlena Rodriguez got an invite to a new app called Clubhouse that offered the homebound online masses a way to spend some of their suddenly abundant time. In the ensuing months, Rodriguez jousted in a chat room with the celebrity Ashton Kutcher, gained more than 13,000 followers, and started a party room on Fridays that frequently swelled to over 1,000 people. She wrote a play, \"Once Upon a Clubhouse,\" and hired actors to perform it on the app. \"I was in love,\" she said. Today, \"I question why I'm even still on Clubhouse,\" Rodriguez said. Her Friday-night room has dwindled to about 30 people. \n\nMore than any other startup, Clubhouse epitomizes the venture-capital-backed euphoria that swept the tech industry since lockdowns shut millions of people inside and pushed them online for connection, entertainment, and information. Marc Andreessen has called the app \"the Athenian agora come to life,\" referring to the hub of democracy in ancient Greece. It has raised more than $100m from his firm and other top VCs, garnering a $4bn valuation. But with vaccinations rising and more people returning to normal life, Clubhouse has been hit particularly hard. Daily downloads of the app have plunged more than 90% since a peak in June, while daily average users are down almost 80% since February, Apptopia data indicated. Insider interviews with creators, advertisers, VCs, and others in the tech industry show a platform struggling to build an audience and keep it. Moneymaking opportunities are also slim, which makes the app a tough sell for creators and users as there are many other options online and off.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "From a report: In May 2020, when the pandemic raged, the comedian and TV writer Marlena Rodriguez got an invite to a new app called Clubhouse that offered the homebound online masses a way to spend some of their suddenly abundant time. In the ensuing months, Rodriguez jousted in a chat room with the celebrity Ashton Kutcher, gained more than 13,000 followers, and started a party room on Fridays that frequently swelled to over 1,000 people. She wrote a play, \"Once Upon a Clubhouse,\" and hired actors to perform it on the app. \"I was in love,\" she said. Today, \"I question why I'm even still on Clubhouse,\" Rodriguez said. Her Friday-night room has dwindled to about 30 people. \n\nMore than any other startup, Clubhouse epitomizes the venture-capital-backed euphoria that swept the tech industry since lockdowns shut millions of people inside and pushed them online for connection, entertainment, and information. Marc Andreessen has called the app \"the Athenian agora come to life,\" referring to the hub of democracy in ancient Greece. It has raised more than $100m from his firm and other top VCs, garnering a $4bn valuation. But with vaccinations rising and more people returning to normal life, Clubhouse has been hit particularly hard. Daily downloads of the app have plunged more than 90% since a peak in June, while daily average users are down almost 80% since February, Apptopia data indicated. Insider interviews with creators, advertisers, VCs, and others in the tech industry show a platform struggling to build an audience and keep it. Moneymaking opportunities are also slim, which makes the app a tough sell for creators and users as there are many other options online and off.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/boom-tremblez-chers-francais-le-vin-anglais-sort-de-sa-cave", - "creator": "", - "pubDate": "Fri, 12 Nov 2021 06:02:49 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://slashdot.org/story/21/11/24/2352243/inside-the-rise-and-fall-of-clubhouse-a-pandemic-poster-child-of-vc-backed-hype?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T23:55:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Aux quatre coins du globe, le marché du logement est devenu fou", - "description": "Prix galopants, loyers exorbitants pour des surfaces sans cesse réduites, jeunes professionnels contraints de retourner vivre chez leurs parents… De Buenos Aires à Melbourne, en passant par Berlin ou Dublin, le marché de l’immobilier s’emballe et rien ne semble pouvoir le freiner.", - "content": "Prix galopants, loyers exorbitants pour des surfaces sans cesse réduites, jeunes professionnels contraints de retourner vivre chez leurs parents… De Buenos Aires à Melbourne, en passant par Berlin ou Dublin, le marché de l’immobilier s’emballe et rien ne semble pouvoir le freiner.", + "title": "China Suspends Tencent From Updating Existing Apps or Launching New Apps", + "description": "China has suspended Tencent Holdings from updating its existing apps or launching any new apps as part of a \"temporary administrative guidance\" against the tech giant, Chinese media outlets including Shanghai-based Chinastarmarket.cn reported. From a report: According to the report, China's Ministry of Industry and Information Technology has told app stores and platforms to implement the order against Tencent apps from Wednesday in a harsh administrative punishment against the tech giant, which runs dozens of apps including the super app WeChat that has 1.2 billion users. Tencent said in a statement that it is cooperating with the authorities on inspecting its apps, indirectly confirming the report. \n\nThere are more than 70 apps published by Tencent that are active and there are more than 100 games published by Tencent Mobile Games, according to app tracking firm Qimai.\nIt is not known how long the suspension will last and the Chinese ministry has not published any information about the ban. \"We are continuously working to enhance user protection features within our apps, and also have regular cooperation with relevant government agencies to ensure regulatory compliance. Our apps remain functional and available for download,\" Tencent said in its statement.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "China has suspended Tencent Holdings from updating its existing apps or launching any new apps as part of a \"temporary administrative guidance\" against the tech giant, Chinese media outlets including Shanghai-based Chinastarmarket.cn reported. From a report: According to the report, China's Ministry of Industry and Information Technology has told app stores and platforms to implement the order against Tencent apps from Wednesday in a harsh administrative punishment against the tech giant, which runs dozens of apps including the super app WeChat that has 1.2 billion users. Tencent said in a statement that it is cooperating with the authorities on inspecting its apps, indirectly confirming the report. \n\nThere are more than 70 apps published by Tencent that are active and there are more than 100 games published by Tencent Mobile Games, according to app tracking firm Qimai.\nIt is not known how long the suspension will last and the Chinese ministry has not published any information about the ban. \"We are continuously working to enhance user protection features within our apps, and also have regular cooperation with relevant government agencies to ensure regulatory compliance. Our apps remain functional and available for download,\" Tencent said in its statement.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/immobilier-aux-quatre-coins-du-globe-le-marche-du-logement-est-devenu-fou", - "creator": "", - "pubDate": "Thu, 11 Nov 2021 06:19:27 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://slashdot.org/story/21/11/24/2137246/china-suspends-tencent-from-updating-existing-apps-or-launching-new-apps?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T22:31:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les États-Unis enregistrent la plus forte hausse des prix depuis trente ans", - "description": "Outre-Atlantique, en octobre, une augmentation de 6,2 % des prix a été enregistrée par rapport au même mois en 2020. Un record qui inquiète les ménages américains et leur président.\n ", - "content": "Outre-Atlantique, en octobre, une augmentation de 6,2 % des prix a été enregistrée par rapport au même mois en 2020. Un record qui inquiète les ménages américains et leur président.\n ", + "title": "Congress Decimates 911's Digital Upgrade", + "description": "Public safety officials fear the nation's 911 centers will\ncontinue to languish in the analog era\n, after Democrats slashed proposed funding for a digital makeover in their social spending bill. From a report: The potentially life-saving ability for people to send texts, pictures or videos to 911 centers, and for centers to seamlessly share data with each other, remains out of reach for many of the country's 6,000 centers. The House Energy & Commerce Committee advanced a proposal that would have spent $10 billion on next-generation 911 centers in September, but that funding was reduced to $470 million for deployment in the final House version of the Build Back Better Act. \n\nA cost report to Congress on next-generation 911 from 2018 estimated it would take about $12 billion to implement the networks nationwide, though advocates say $15 billion might be needed. \"To say I'm disappointed is to put it mildly,\" Brian Fontes, CEO of NENA: The 911 Association, told Axios. \"It's extraordinarily unfortunate.\" Next-generation 911 would allow centers to accept multimedia from those in need and let centers share data among themselves easily to ensure the best response.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Public safety officials fear the nation's 911 centers will\ncontinue to languish in the analog era\n, after Democrats slashed proposed funding for a digital makeover in their social spending bill. From a report: The potentially life-saving ability for people to send texts, pictures or videos to 911 centers, and for centers to seamlessly share data with each other, remains out of reach for many of the country's 6,000 centers. The House Energy & Commerce Committee advanced a proposal that would have spent $10 billion on next-generation 911 centers in September, but that funding was reduced to $470 million for deployment in the final House version of the Build Back Better Act. \n\nA cost report to Congress on next-generation 911 from 2018 estimated it would take about $12 billion to implement the networks nationwide, though advocates say $15 billion might be needed. \"To say I'm disappointed is to put it mildly,\" Brian Fontes, CEO of NENA: The 911 Association, told Axios. \"It's extraordinarily unfortunate.\" Next-generation 911 would allow centers to accept multimedia from those in need and let centers share data among themselves easily to ensure the best response.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/inflation-les-etats-unis-enregistrent-la-plus-forte-hausse-des-prix-depuis-trente-ans", - "creator": "", - "pubDate": "Wed, 10 Nov 2021 19:44:21 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/24/2011227/congress-decimates-911s-digital-upgrade?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T21:30:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le “South China Morning Post” bientôt absorbé par Pékin ?", - "description": "Le grand quotidien anglophone de Hong Kong semble être sur le point de changer de propriétaire. Alors que son rapprochement avec Pékin était de plus en plus visible, le journal pourrait cette fois passer directement sous le contrôle de l’État chinois.", - "content": "Le grand quotidien anglophone de Hong Kong semble être sur le point de changer de propriétaire. Alors que son rapprochement avec Pékin était de plus en plus visible, le journal pourrait cette fois passer directement sous le contrôle de l’État chinois.", + "title": "The Head of Instagram Agrees To Testify as Congress Probes the App's Effects on Young People", + "description": "Adam Mosseri, the head of Instagram, has agreed for the first time to testify before Congress, as bipartisan anger mounts over harms to young people from the app. From a report: Mr. Mosseri is expected to appear before a Senate panel during the week of Dec. 6 as part of a series of hearings on protecting children online, said Senator Richard Blumenthal, who will lead the hearing. Mr. Mosseri's appearance follows hearings this year with Antigone Davis, the global head of safety for Meta, the parent company of Instagram and Facebook, and with Frances Haugen, a former employee turned whistle-blower. Ms. Haugen's revelations about the social networking company, particularly those about Facebook and Instagram's research into its effects on some teenagers and young girls, have spurred criticism, inquiries from politicians and investigations from regulators. \n\nIn September, Ms. Davis told Congress that the company disputed the premise that Instagram was harmful for teenagers and noted that the leaked research did not have causal data. But after Ms. Haugen's testimony last month, Mr. Blumenthal, a Connecticut Democrat, wrote a letter to Mark Zuckerberg, the chief executive of Meta, suggesting that his company had \"provided false or inaccurate testimony to me regarding attempts to internally conceal its research.\" Mr. Blumenthal asked that Mr. Zuckerberg or Mr. Mosseri testify in front of the consumer protection subcommittee of the Senate's Commerce Committee to set the record straight.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Adam Mosseri, the head of Instagram, has agreed for the first time to testify before Congress, as bipartisan anger mounts over harms to young people from the app. From a report: Mr. Mosseri is expected to appear before a Senate panel during the week of Dec. 6 as part of a series of hearings on protecting children online, said Senator Richard Blumenthal, who will lead the hearing. Mr. Mosseri's appearance follows hearings this year with Antigone Davis, the global head of safety for Meta, the parent company of Instagram and Facebook, and with Frances Haugen, a former employee turned whistle-blower. Ms. Haugen's revelations about the social networking company, particularly those about Facebook and Instagram's research into its effects on some teenagers and young girls, have spurred criticism, inquiries from politicians and investigations from regulators. \n\nIn September, Ms. Davis told Congress that the company disputed the premise that Instagram was harmful for teenagers and noted that the leaked research did not have causal data. But after Ms. Haugen's testimony last month, Mr. Blumenthal, a Connecticut Democrat, wrote a letter to Mark Zuckerberg, the chief executive of Meta, suggesting that his company had \"provided false or inaccurate testimony to me regarding attempts to internally conceal its research.\" Mr. Blumenthal asked that Mr. Zuckerberg or Mr. Mosseri testify in front of the consumer protection subcommittee of the Senate's Commerce Committee to set the record straight.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/revue-de-presse/hong-kong-le-south-china-morning-post-bientot-absorbe-par-pekin", - "creator": "", - "pubDate": "Wed, 10 Nov 2021 17:27:08 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://politics.slashdot.org/story/21/11/24/1953222/the-head-of-instagram-agrees-to-testify-as-congress-probes-the-apps-effects-on-young-people?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T20:30:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Logement : la loi du plus riche", - "description": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous décryptons la surchauffe de l’immobilier, de Buenos Aires à Singapour en passant par Dublin et Melbourne. Une bombe à retardement pour l’économie mondiale, qui risque d’alimenter la colère des classes moyennes.", - "content": "Chaque semaine, Courrier international explique ses choix éditoriaux et les débats qu’ils suscitent parfois au sein de la rédaction. Dans ce numéro, nous décryptons la surchauffe de l’immobilier, de Buenos Aires à Singapour en passant par Dublin et Melbourne. Une bombe à retardement pour l’économie mondiale, qui risque d’alimenter la colère des classes moyennes.", + "title": "US Blacklists Chinese Quantum Computing Companies", + "description": "The US has placed a dozen Chinese groups involved in quantum computing and other advanced technologies on an export blacklist, saying they pose a risk of gaining access to critical American technologies for the People's Liberation Army. From a report: The move, which makes it almost impossible for US companies to sell technologies to the listed companies, targeted a total of 27 entities, including 12 in China and two affiliated firms in Japan and Singapore. In addition to quantum computing, the list included companies in the semiconductor and aerospace industries. Eight of the Chinese groups were specifically targeted to prevent them from accessing sensitive quantum-related technology, the US commerce department said, arguing they could help the PLA improve counter-stealth and counter-submarine applications and facilitate efforts to break US encryption. \n\nThe actions mark the latest effort by the Biden administration to make it more difficult for China to secure cutting-edge technologies with military applications. Last month, US intelligence officials warned American companies about Chinese efforts to access technology in areas including quantum computing and artificial intelligence. \"This is a sensible move and an important reminder of the scope and scale of China's efforts to achieve technological breakthroughs that erode US national security,\" said Martijn Rasser, a former CIA official who heads the technology and national security programme at the Center for a New American Security think-tank. In addition to the Chinese groups targeted, Washington put 13 Pakistani firms on the \"entity list\" for activities related to nuclear and ballistic missile programmes. It added the Moscow Institute of Physics and Technology to a \"military end-user\" list that makes it more difficult to sell technology with military applications.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The US has placed a dozen Chinese groups involved in quantum computing and other advanced technologies on an export blacklist, saying they pose a risk of gaining access to critical American technologies for the People's Liberation Army. From a report: The move, which makes it almost impossible for US companies to sell technologies to the listed companies, targeted a total of 27 entities, including 12 in China and two affiliated firms in Japan and Singapore. In addition to quantum computing, the list included companies in the semiconductor and aerospace industries. Eight of the Chinese groups were specifically targeted to prevent them from accessing sensitive quantum-related technology, the US commerce department said, arguing they could help the PLA improve counter-stealth and counter-submarine applications and facilitate efforts to break US encryption. \n\nThe actions mark the latest effort by the Biden administration to make it more difficult for China to secure cutting-edge technologies with military applications. Last month, US intelligence officials warned American companies about Chinese efforts to access technology in areas including quantum computing and artificial intelligence. \"This is a sensible move and an important reminder of the scope and scale of China's efforts to achieve technological breakthroughs that erode US national security,\" said Martijn Rasser, a former CIA official who heads the technology and national security programme at the Center for a New American Security think-tank. In addition to the Chinese groups targeted, Washington put 13 Pakistani firms on the \"entity list\" for activities related to nuclear and ballistic missile programmes. It added the Moscow Institute of Physics and Technology to a \"military end-user\" list that makes it more difficult to sell technology with military applications.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/la-une-de-lhebdo-logement-la-loi-du-plus-riche", - "creator": "", - "pubDate": "Wed, 10 Nov 2021 10:07:40 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/24/1933200/us-blacklists-chinese-quantum-computing-companies?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T19:32:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Alibaba installe sa plateforme logistique européenne à Liège sans tambour ni trompette", - "description": "Depuis cet été, trois avions par jour transportent des tonnes de marchandises du géant du e-commerce chinois à destination de l’Europe. Annoncée depuis 2018, l’arrivée du groupe chinois suscite toujours l’inquiétude des riverains.", - "content": "Depuis cet été, trois avions par jour transportent des tonnes de marchandises du géant du e-commerce chinois à destination de l’Europe. Annoncée depuis 2018, l’arrivée du groupe chinois suscite toujours l’inquiétude des riverains.", + "title": "Next Windows 11 Update Brings Back Clippy", + "description": "An anonymous reader shares a report: We're nearly two months out from the public release of Windows 11, and Microsoft is still slowly updating bits and pieces of the operating system that weren't quite ready in early October. Microsoft announced redesigned emoji back in July, and the next Windows update (version 22000.348, if you're tracking this sort of thing) adds those emoji to Windows 11. The new emoji remove the bold, black outlines from the Windows 10-era designs and change the colors and shapes of a few to make them match up better with Apple's, Google's, and Samsung's glyphs -- compare the new design for Spiral Shell to the old one, for an example. There are also a few cute Microsoft-specific touches, like a Clippy design for the paperclip emoji, though Ninja Cat appears to have been removed entirely.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader shares a report: We're nearly two months out from the public release of Windows 11, and Microsoft is still slowly updating bits and pieces of the operating system that weren't quite ready in early October. Microsoft announced redesigned emoji back in July, and the next Windows update (version 22000.348, if you're tracking this sort of thing) adds those emoji to Windows 11. The new emoji remove the bold, black outlines from the Windows 10-era designs and change the colors and shapes of a few to make them match up better with Apple's, Google's, and Samsung's glyphs -- compare the new design for Spiral Shell to the old one, for an example. There are also a few cute Microsoft-specific touches, like a Clippy design for the paperclip emoji, though Ninja Cat appears to have been removed entirely.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/belgique-alibaba-installe-sa-plateforme-logistique-europeenne-liege-sans-tambour-ni", - "creator": "", - "pubDate": "Tue, 09 Nov 2021 17:28:37 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/24/182206/next-windows-11-update-brings-back-clippy?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T18:01:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le retour de Greg LeMond, le nouvel empire d’Amazon et le métavers au boulot", - "description": "Qui pourrait oublier Greg LeMond, trois fois vainqueur du Tour de France ? Wired est allé le traquer au fond du Tennessee, à Knoxville, où l’ancien champion et légendaire grande gueule du sport international, aujourd’hui âgé de 60 ans et un peu grassouillet, s’acharne à révolutionner le vélo. Le vélo électrique. Lemond n’en est pas à sa première entreprise de ce genre, et ses premiers essais de reconversion dans la tech sportive avaient failli être compromis par l’opprobre des annonceurs...", - "content": "Qui pourrait oublier Greg LeMond, trois fois vainqueur du Tour de France ? Wired est allé le traquer au fond du Tennessee, à Knoxville, où l’ancien champion et légendaire grande gueule du sport international, aujourd’hui âgé de 60 ans et un peu grassouillet, s’acharne à révolutionner le vélo. Le vélo électrique. Lemond n’en est pas à sa première entreprise de ce genre, et ses premiers essais de reconversion dans la tech sportive avaient failli être compromis par l’opprobre des annonceurs...", + "title": "A Three-Party Alliance is Set To Govern Germany", + "description": "Three German parties have reached a deal to form a new government that will end the era of longtime Chancellor Angela Merkel, according to Olaf Scholz, who is poised to replace her. From a report: Scholz, of the center-left Social Democrats, said he expects that members of the parties will give their blessing to the deal in the next 10 days. At a news conference, Scholz and other leaders gave some indications of how the coalition would govern. Among the first measures agreed: compulsory vaccinations in places where particularly vulnerable people are cared for, with the option of expanding that rule. That comes as Germany is seeing a surge in cases, and the political transition has somewhat hampered the country's response. Scholz also stressed the importance of a sovereign Europe, friendship with France and partnership with the United States as key cornerstones of the government's foreign policy -- continuing a long post-war tradition. The new government will not seek \"the lowest common denominator, but the politics of big impacts,\" Scholz promised. Robert Habeck, co-leader of the environmentalist Green party, meanwhile, said measures planned by the government would put Germany on a path to meet the goals of the 2015 Paris climate accord.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Three German parties have reached a deal to form a new government that will end the era of longtime Chancellor Angela Merkel, according to Olaf Scholz, who is poised to replace her. From a report: Scholz, of the center-left Social Democrats, said he expects that members of the parties will give their blessing to the deal in the next 10 days. At a news conference, Scholz and other leaders gave some indications of how the coalition would govern. Among the first measures agreed: compulsory vaccinations in places where particularly vulnerable people are cared for, with the option of expanding that rule. That comes as Germany is seeing a surge in cases, and the political transition has somewhat hampered the country's response. Scholz also stressed the importance of a sovereign Europe, friendship with France and partnership with the United States as key cornerstones of the government's foreign policy -- continuing a long post-war tradition. The new government will not seek \"the lowest common denominator, but the politics of big impacts,\" Scholz promised. Robert Habeck, co-leader of the environmentalist Green party, meanwhile, said measures planned by the government would put Germany on a path to meet the goals of the 2015 Paris climate accord.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/la-lettre-tech-le-retour-de-greg-lemond-le-nouvel-empire-damazon-et-le-metavers-au-boulot", - "creator": "", - "pubDate": "Tue, 09 Nov 2021 09:25:52 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://politics.slashdot.org/story/21/11/24/1656201/a-three-party-alliance-is-set-to-govern-germany?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T17:01:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Paytm vise le record d’introduction en Bourse en Inde", - "description": "Le pionnier du paiement en ligne espère lever 2,46 milliards de dollars à partir de ce lundi 8 novembre sur la place boursière de Bombay. Le grand quotidien de la capitale économique du pays met en garde contre les mirages de la fintech.", - "content": "Le pionnier du paiement en ligne espère lever 2,46 milliards de dollars à partir de ce lundi 8 novembre sur la place boursière de Bombay. Le grand quotidien de la capitale économique du pays met en garde contre les mirages de la fintech.", + "title": "Virtual Real Estate Plot Sells for Record $2.4 Million", + "description": "A patch of virtual real estate in the online world Decentraland sold for a record $2.4 million worth of cryptocurrency, the buyer crypto investor Tokens.com and Decentraland said on Tuesday. From a report: Decentraland is an online environment -- also called a \"metaverse\" -- where users can buy land, visit buildings, walk around and meet people as avatars. Such environments have grown in popularity this year, as the pandemic caused people to spend more time online. read more Interest surged last month when Facebook changed its name to Meta to reflect its focus on developing virtual reality products for the metaverse. Decentraland is a specific type of metaverse that uses blockchain. Land and other items in Decentraland are sold in the form of non-fungible tokens (NFTs), a kind of crypto asset. Crypto enthusiasts buy land there as a speculative investment, using Decentraland's cryptocurrency, MANA. A subsidiary of Tokens.com, called the Metaverse Group, bought a patch of real estate for 618,000 MANA on Monday, which was around $3.27 million at the time of this Slashdot post, a Decentraland spokesman and a statement by Tokens.com said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "A patch of virtual real estate in the online world Decentraland sold for a record $2.4 million worth of cryptocurrency, the buyer crypto investor Tokens.com and Decentraland said on Tuesday. From a report: Decentraland is an online environment -- also called a \"metaverse\" -- where users can buy land, visit buildings, walk around and meet people as avatars. Such environments have grown in popularity this year, as the pandemic caused people to spend more time online. read more Interest surged last month when Facebook changed its name to Meta to reflect its focus on developing virtual reality products for the metaverse. Decentraland is a specific type of metaverse that uses blockchain. Land and other items in Decentraland are sold in the form of non-fungible tokens (NFTs), a kind of crypto asset. Crypto enthusiasts buy land there as a speculative investment, using Decentraland's cryptocurrency, MANA. A subsidiary of Tokens.com, called the Metaverse Group, bought a patch of real estate for 618,000 MANA on Monday, which was around $3.27 million at the time of this Slashdot post, a Decentraland spokesman and a statement by Tokens.com said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/le-chiffre-du-jour-paytm-vise-le-record-dintroduction-en-bourse-en-inde", - "creator": "", - "pubDate": "Mon, 08 Nov 2021 17:55:49 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://slashdot.org/story/21/11/24/1617259/virtual-real-estate-plot-sells-for-record-24-million?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T16:17:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Face à la pénurie de routiers, le Royaume-Uni s’en remet aux trains", - "description": "Pour éviter les rayons vides à Noël, le gestionnaire du réseau ferré britannique consacre un nombre croissant de sillons aux trains de marchandise, constate la presse. Certains espèrent un virage durable en direction du rail, sur fond de transition écologique.", - "content": "Pour éviter les rayons vides à Noël, le gestionnaire du réseau ferré britannique consacre un nombre croissant de sillons aux trains de marchandise, constate la presse. Certains espèrent un virage durable en direction du rail, sur fond de transition écologique.", + "title": "Survey Shows Europeans Not Done Quitting Jobs", + "description": "Quit a day job to do TikTok full-time? Why not, say some Europeans. From a report: About one in 10 are considering leaving their main job in the next six months and instead earning money from social media, e-commerce or trading platforms, according to a Morgan Stanley poll of 12,500 people. \"The received wisdom is that as Covid subsides, and with modest extra flexibility from employers, the majority of people will re-embrace their prior routines,\" a team of Morgan Stanley economists and equity analysts wrote in a note. \"Our data suggest otherwise.\" With labor shortages already weighing on Europe's economic rebound, wage inflation will persist for longer if the Great Resignation -- the post-pandemic trend of people leaving the workforce -- carries on, the bank said. \"It reveals a far greater potential risk of structurally higher wages,\" Morgan Stanley wrote.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Quit a day job to do TikTok full-time? Why not, say some Europeans. From a report: About one in 10 are considering leaving their main job in the next six months and instead earning money from social media, e-commerce or trading platforms, according to a Morgan Stanley poll of 12,500 people. \"The received wisdom is that as Covid subsides, and with modest extra flexibility from employers, the majority of people will re-embrace their prior routines,\" a team of Morgan Stanley economists and equity analysts wrote in a note. \"Our data suggest otherwise.\" With labor shortages already weighing on Europe's economic rebound, wage inflation will persist for longer if the Great Resignation -- the post-pandemic trend of people leaving the workforce -- carries on, the bank said. \"It reveals a far greater potential risk of structurally higher wages,\" Morgan Stanley wrote.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/logistique-face-la-penurie-de-routiers-le-royaume-uni-sen-remet-aux-trains", - "creator": "", - "pubDate": "Mon, 08 Nov 2021 16:42:13 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/24/1455251/survey-shows-europeans-not-done-quitting-jobs?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T15:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Elon Musk a-t-il gagné son coup de poker contre la taxe des milliardaires ?", - "description": "En lançant sur Twitter samedi un sondage pour décider s’il devait vendre 10 % des actions de Tesla, l’entrepreneur américain s’opposait au projet démocrate de taxation des plus-values. Ce lundi, l’action du constructeur automobile dégringole.", - "content": "En lançant sur Twitter samedi un sondage pour décider s’il devait vendre 10 % des actions de Tesla, l’entrepreneur américain s’opposait au projet démocrate de taxation des plus-values. Ce lundi, l’action du constructeur automobile dégringole.", + "title": "Japan To Implement Bank-deposit-backed Digital Currency in 2022", + "description": "A new digital currency backed by bank deposits is set for a test run in Japan as early as this year, an effort that will involve the nation's top banks and about 70 other companies. From a report: The test run will focus on the digital currency's feasibility for business transactions, such as large payments between companies. The group aims to bring the currency into circulation as soon as the latter half of 2022. The Digital Currency Forum announced the trial on Wednesday. The Forum includes MUFG Bank, Sumitomo Mitsui Banking Corp., Mizuho Bank, Japan Post Bank and the Nippon Telegraph and Telephone group. East Japan Railway, which operates Tokyo's busy Yamanote Line, top trading house Mitsubishi Corp., Kansai Electric Power and retail giant Seven & i Holdings are also involved. Tokyo-based cryptocurrency exchange service provider Decurret, a subsidiary of Internet Initiative Japan, and others will lead the trial.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "A new digital currency backed by bank deposits is set for a test run in Japan as early as this year, an effort that will involve the nation's top banks and about 70 other companies. From a report: The test run will focus on the digital currency's feasibility for business transactions, such as large payments between companies. The group aims to bring the currency into circulation as soon as the latter half of 2022. The Digital Currency Forum announced the trial on Wednesday. The Forum includes MUFG Bank, Sumitomo Mitsui Banking Corp., Mizuho Bank, Japan Post Bank and the Nippon Telegraph and Telephone group. East Japan Railway, which operates Tokyo's busy Yamanote Line, top trading house Mitsubishi Corp., Kansai Electric Power and retail giant Seven & i Holdings are also involved. Tokyo-based cryptocurrency exchange service provider Decurret, a subsidiary of Internet Initiative Japan, and others will lead the trial.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/bourse-elon-musk-t-il-gagne-son-coup-de-poker-contre-la-taxe-des-milliardaires", - "creator": "", - "pubDate": "Mon, 08 Nov 2021 16:31:17 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://slashdot.org/story/21/11/24/1419247/japan-to-implement-bank-deposit-backed-digital-currency-in-2022?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-24T14:19:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les petits boulots les plus bizarres d’Allemagne", - "description": "Le travail à temps partiel concerne 3,4 millions de personnes, principalement des étudiants et des retraités. Des journalistes de Die Zeit ont raconté leurs expériences les plus étranges.", - "content": "Le travail à temps partiel concerne 3,4 millions de personnes, principalement des étudiants et des retraités. Des journalistes de Die Zeit ont raconté leurs expériences les plus étranges.", + "title": "A Third of All Dark Web Domains Are Now V3 Onion Sites", + "description": "An anonymous reader quotes a report from The Record: Throughout 2020 and 2021, the Tor anonymity network has gone through a major change as the Tor software team has released a new version of its software that updated how .onion domains look and work. More specifically, the Tor Project has done away with 16-character-long .onion domains, also known as v2 addresses, and replaced them with 56-character-long domains, known as v3. The move, driven by a need to improve the Tor network's privacy, security, and resilience to deanonymization attacks, was announced years in advance, and the entire process took more than a year to complete.\n \nBut despite the Tor team's best efforts to announce the move in advance, new numbers compiled and released by dark web monitoring company DarkOwl show that the Tor network is still made up in large part of servers running older v2 domains. \"In the last six weeks, DarkOwl's Vision platform has observed an average of 104,095 active .onion services across both address schemes of which: 62% are v2 addresses and 38% are v3 addresses,\" the company said last week. DarkOwl says it detected a spike in new v3 domains in July 2021, which coincided with the Tor team adding a fullscreen warning before accessing v2 domains in preparation for the browser's v11 release this fall. This resulted in more than 2,900 v3 domains being registered in the last two weeks of July alone. However, as the Tor team noted in its own v2-to-v3 analysis in September, the number of v3 domains is trending up. The report adds that v2 sites are expected to go extinct in the coming year. \"The reason is that as most Tor node operators will update their servers to versions that will not support v2 domains, there will be no Tor relays capable of routing the traffic to these old-gen domains,\" report The Record.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from The Record: Throughout 2020 and 2021, the Tor anonymity network has gone through a major change as the Tor software team has released a new version of its software that updated how .onion domains look and work. More specifically, the Tor Project has done away with 16-character-long .onion domains, also known as v2 addresses, and replaced them with 56-character-long domains, known as v3. The move, driven by a need to improve the Tor network's privacy, security, and resilience to deanonymization attacks, was announced years in advance, and the entire process took more than a year to complete.\n \nBut despite the Tor team's best efforts to announce the move in advance, new numbers compiled and released by dark web monitoring company DarkOwl show that the Tor network is still made up in large part of servers running older v2 domains. \"In the last six weeks, DarkOwl's Vision platform has observed an average of 104,095 active .onion services across both address schemes of which: 62% are v2 addresses and 38% are v3 addresses,\" the company said last week. DarkOwl says it detected a spike in new v3 domains in July 2021, which coincided with the Tor team adding a fullscreen warning before accessing v2 domains in preparation for the browser's v11 release this fall. This resulted in more than 2,900 v3 domains being registered in the last two weeks of July alone. However, as the Tor team noted in its own v2-to-v3 analysis in September, the number of v3 domains is trending up. The report adds that v2 sites are expected to go extinct in the coming year. \"The reason is that as most Tor node operators will update their servers to versions that will not support v2 domains, there will be no Tor relays capable of routing the traffic to these old-gen domains,\" report The Record.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/travail-les-petits-boulots-les-plus-bizarres-dallemagne", - "creator": "", - "pubDate": "Mon, 08 Nov 2021 09:20:08 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/24/014240/a-third-of-all-dark-web-domains-are-now-v3-onion-sites?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T13:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ces abattoirs européens qui exploitent les ouvriers étrangers", - "description": "S’il y a de la viande bon marché en Europe, c’est aussi parce que les industriels du secteur ont externalisé une partie de la main-d’œuvre. Des milliers d’étrangers, employés par des intermédiaires, sont sous-payés et travaillent dans des conditions déplorables, explique cette enquête du Guardian.", - "content": "S’il y a de la viande bon marché en Europe, c’est aussi parce que les industriels du secteur ont externalisé une partie de la main-d’œuvre. Des milliers d’étrangers, employés par des intermédiaires, sont sous-payés et travaillent dans des conditions déplorables, explique cette enquête du Guardian.", + "title": "US To Require Vaccines For All Border Crossers In January", + "description": "President Joe Biden will require essential, nonresident travelers crossing U.S. land borders, such as truck drivers, government and emergency response officials, to be fully vaccinated beginning on Jan. 22, the administration planned to announce Tuesday. The Associated Press reports: A senior administration official said the requirement, which the White House previewed in October, brings the rules for essential travelers in line with those that took effect earlier this month for leisure travelers, when the U.S. reopened its borders to fully vaccinated individuals. Essential travelers entering by ferry will also be required to be fully vaccinated by the same date, the official said. The rules pertain to non-U.S. nationals. American citizens and permanent residents may still enter the U.S. regardless of their vaccination status, but face additional testing hurdles because officials believe they more easily contract and spread COVID-19 and in order to encourage them to get a shot. [...] About 47 million adults in the U.S. remain unvaccinated, according to figures from the Centers for Disease Control and Prevention.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "President Joe Biden will require essential, nonresident travelers crossing U.S. land borders, such as truck drivers, government and emergency response officials, to be fully vaccinated beginning on Jan. 22, the administration planned to announce Tuesday. The Associated Press reports: A senior administration official said the requirement, which the White House previewed in October, brings the rules for essential travelers in line with those that took effect earlier this month for leisure travelers, when the U.S. reopened its borders to fully vaccinated individuals. Essential travelers entering by ferry will also be required to be fully vaccinated by the same date, the official said. The rules pertain to non-U.S. nationals. American citizens and permanent residents may still enter the U.S. regardless of their vaccination status, but face additional testing hurdles because officials believe they more easily contract and spread COVID-19 and in order to encourage them to get a shot. [...] About 47 million adults in the U.S. remain unvaccinated, according to figures from the Centers for Disease Control and Prevention.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/agroalimentaire-ces-abattoirs-europeens-qui-exploitent-les-ouvriers-etrangers", - "creator": "", - "pubDate": "Mon, 08 Nov 2021 05:57:22 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/24/0057256/us-to-require-vaccines-for-all-border-crossers-in-january?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T10:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La cocotte-minute de la livraison express", - "description": "À Londres comme à Paris, une nouvelle génération de start-up tente de mettre la main sur le marché déjà concurrentiel du quick commerce, les livraisons de courses ultrarapides, en moins de dix minutes. Le Wall Street Journal décrypte ce phénomène en plein essor.", - "content": "À Londres comme à Paris, une nouvelle génération de start-up tente de mettre la main sur le marché déjà concurrentiel du quick commerce, les livraisons de courses ultrarapides, en moins de dix minutes. Le Wall Street Journal décrypte ce phénomène en plein essor.", + "title": "Watch NASA Crash a Spacecraft Into An Asteroid", + "description": "If all goes as planned, a SpaceX Falcon 9 rocket carrying the Double Asteroid Redirection Test (DART) will launch early Wednesday morning \"to test whether slamming a spacecraft into an asteroid can nudge it into a different trajectory,\" reports The New York Times. \"Results from the test, if successful, will come in handy if NASA and other space agencies ever need to deflect an asteroid to save Earth and avert a catastrophic impact.\" From the report: The DART spacecraft is scheduled to lift off atop a SpaceX Falcon 9 rocket on Wednesday at 1:20 a.m. Eastern time (or 10:20 p.m. local time) from the Vandenberg Space Force Base in California. NASA plans to host a livestream of the launch on its YouTube channel starting at 12:30 a.m. on Wednesday. If bad weather around the Vandenberg launch site prompts a delay, the next opportunity for liftoff would be about 24 hours later.\n \nAfter launching to space, the spacecraft will make nearly one full orbit around the sun before it crosses paths with Dimorphos, a football-field-size asteroid that closely orbits a bigger asteroid, called Didymos, every 11 hours and 55 minutes. Astronomers call those two asteroids a binary system, where one is a mini-moon to the other. Together, the two asteroids make one full orbit around the sun every two years. Dimorphos poses no threat to Earth, and the mission is essentially target practice. DART's impact will happen in late September or early October next year, when the binary asteroids are at their closest point to Earth, roughly 6.8 million miles away.\n \nFour hours before impact, the DART spacecraft, formally called a kinetic impactor, will autonomously steer itself straight toward Dimorphos for a head-on collision at 15,000 miles per hour. An onboard camera will capture and send back photos to Earth in real time until 20 seconds before impact. A tiny satellite from the Italian Space Agency, deployed 10 days before the impact, will come as close as 34 miles from the asteroid to snap images every six seconds in the moments before and after DART's impact.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "If all goes as planned, a SpaceX Falcon 9 rocket carrying the Double Asteroid Redirection Test (DART) will launch early Wednesday morning \"to test whether slamming a spacecraft into an asteroid can nudge it into a different trajectory,\" reports The New York Times. \"Results from the test, if successful, will come in handy if NASA and other space agencies ever need to deflect an asteroid to save Earth and avert a catastrophic impact.\" From the report: The DART spacecraft is scheduled to lift off atop a SpaceX Falcon 9 rocket on Wednesday at 1:20 a.m. Eastern time (or 10:20 p.m. local time) from the Vandenberg Space Force Base in California. NASA plans to host a livestream of the launch on its YouTube channel starting at 12:30 a.m. on Wednesday. If bad weather around the Vandenberg launch site prompts a delay, the next opportunity for liftoff would be about 24 hours later.\n \nAfter launching to space, the spacecraft will make nearly one full orbit around the sun before it crosses paths with Dimorphos, a football-field-size asteroid that closely orbits a bigger asteroid, called Didymos, every 11 hours and 55 minutes. Astronomers call those two asteroids a binary system, where one is a mini-moon to the other. Together, the two asteroids make one full orbit around the sun every two years. Dimorphos poses no threat to Earth, and the mission is essentially target practice. DART's impact will happen in late September or early October next year, when the binary asteroids are at their closest point to Earth, roughly 6.8 million miles away.\n \nFour hours before impact, the DART spacecraft, formally called a kinetic impactor, will autonomously steer itself straight toward Dimorphos for a head-on collision at 15,000 miles per hour. An onboard camera will capture and send back photos to Earth in real time until 20 seconds before impact. A tiny satellite from the Italian Space Agency, deployed 10 days before the impact, will come as close as 34 miles from the asteroid to snap images every six seconds in the moments before and after DART's impact.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/concurrence-la-cocotte-minute-de-la-livraison-express", - "creator": "", - "pubDate": "Sat, 06 Nov 2021 14:35:11 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/24/0053225/watch-nasa-crash-a-spacecraft-into-an-asteroid?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T07:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La France, détrônée par l’Espagne, n’est plus le deuxième plus gros producteur de vin", - "description": "Même si elle n’a pas été épargnée par les intempéries cette année, l’Espagne a ravi sa deuxième place à la France dans le classement des plus gros producteurs de vin, constate le quotidien barcelonais La Vanguardia.", - "content": "Même si elle n’a pas été épargnée par les intempéries cette année, l’Espagne a ravi sa deuxième place à la France dans le classement des plus gros producteurs de vin, constate le quotidien barcelonais La Vanguardia.", + "title": "Elizabeth Holmes Admits Doctoring Lab Reports With Pharma Company Logos", + "description": "An anonymous reader quotes a report from NBC News: Theranos founder and former CEO Elizabeth Holmes returned to the witness stand Tuesday, confirming key aspects of the prosecutor's allegations behind the 11 counts of fraud she faces, but asserting that there was nothing wrong in what she did. The prosecution has repeatedly shown jurors lab reports emblazoned with logos of the pharmaceutical companies Pfizer and Schering-Plough. Witnesses from those companies who worked with Theranos testified that the use of the logos was unauthorized and they were unaware of it at the time. Holmes admitted that she was the one who had added the logos to Theranos lab reports and sent them to Walgreens as she pursued a deal to put her blood-testing startup's diagnostic machines in the pharmacy's retail stores. \"This work was done in partnership with those companies and I was trying to convey that,\" she said by way of explanation. \"I wish I had done it differently,\" she added.\n \nAddressing another key point made by the prosecution, Holmes said that when Theranos switched from using on-site analyzers to process samples to a centralized lab approach, it used third-party devices rather than its own equipment as an \"invention\" because there were too many samples to handle. Witnesses have testified that Theranos' signature blood-testing machine repeatedly failed quality assurance tests and delivered erroneous results. Holmes said the company didn't tell its business partners about this arrangement because it was a trade secret. She rebutted the prosecution's arguments about some of the alleged misrepresentations she made to investors, the media and business partners, affirming that she had received specific positive reports from employees and outside experts and believed their statements to be true.\n \nWhen presented with company emails and PowerPoint presentations, defense attorney Kevin Downey asked Holmes about specific instances brought up by the prosecution. Jurors saw an email sent to Holmes by then-chief company scientist, biochemist Ian Gibbons, about the development of Theranos' fourth-generation device. \"Our immunoassays match the best that can be done in clinical labs and work with small blood samples. Generally our assays are faster by a factor of three to 10 than kits,\" Gibbons wrote. Downey asked Holmes what she took that email to mean. \"I understood that the 4 series could do any blood test,\" she replied. If Holmes is convicted, she could face up to 20 years in prison. She may also face \"a $250,000 fine and full or partial restitution to investors, totaling nearly $155 million,\" adds NBC News.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from NBC News: Theranos founder and former CEO Elizabeth Holmes returned to the witness stand Tuesday, confirming key aspects of the prosecutor's allegations behind the 11 counts of fraud she faces, but asserting that there was nothing wrong in what she did. The prosecution has repeatedly shown jurors lab reports emblazoned with logos of the pharmaceutical companies Pfizer and Schering-Plough. Witnesses from those companies who worked with Theranos testified that the use of the logos was unauthorized and they were unaware of it at the time. Holmes admitted that she was the one who had added the logos to Theranos lab reports and sent them to Walgreens as she pursued a deal to put her blood-testing startup's diagnostic machines in the pharmacy's retail stores. \"This work was done in partnership with those companies and I was trying to convey that,\" she said by way of explanation. \"I wish I had done it differently,\" she added.\n \nAddressing another key point made by the prosecution, Holmes said that when Theranos switched from using on-site analyzers to process samples to a centralized lab approach, it used third-party devices rather than its own equipment as an \"invention\" because there were too many samples to handle. Witnesses have testified that Theranos' signature blood-testing machine repeatedly failed quality assurance tests and delivered erroneous results. Holmes said the company didn't tell its business partners about this arrangement because it was a trade secret. She rebutted the prosecution's arguments about some of the alleged misrepresentations she made to investors, the media and business partners, affirming that she had received specific positive reports from employees and outside experts and believed their statements to be true.\n \nWhen presented with company emails and PowerPoint presentations, defense attorney Kevin Downey asked Holmes about specific instances brought up by the prosecution. Jurors saw an email sent to Holmes by then-chief company scientist, biochemist Ian Gibbons, about the development of Theranos' fourth-generation device. \"Our immunoassays match the best that can be done in clinical labs and work with small blood samples. Generally our assays are faster by a factor of three to 10 than kits,\" Gibbons wrote. Downey asked Holmes what she took that email to mean. \"I understood that the 4 series could do any blood test,\" she replied. If Holmes is convicted, she could face up to 20 years in prison. She may also face \"a $250,000 fine and full or partial restitution to investors, totaling nearly $155 million,\" adds NBC News.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/classement-la-france-detronee-par-lespagne-nest-plus-le-deuxieme-plus-gros-producteur-de-vin", - "creator": "", - "pubDate": "Fri, 05 Nov 2021 16:59:49 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://yro.slashdot.org/story/21/11/24/0045232/elizabeth-holmes-admits-doctoring-lab-reports-with-pharma-company-logos?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T03:30:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Des engagements encourageants pour délaisser les énergies fossiles", - "description": "Plusieurs pays promettent de ne plus financer les énergies fossiles ou de mettre fin aux projets de centrale à charbon, explique le New Scientist.", - "content": "Plusieurs pays promettent de ne plus financer les énergies fossiles ou de mettre fin aux projets de centrale à charbon, explique le New Scientist.", + "title": "California Moves To Recommend Delaying Algebra To 9th Grade Statewide", + "description": "California is in the process of approving new guidelines for math education in public schools that \"pushes Algebra 1 back to 9th grade, de-emphasizes calculus, and applies social justice principles to math lessons,\" writes Joe Hong via the San Francisco Standard. The new approach would have been approved earlier this month but has been delayed due to the attention and controversy it has received. Here's an excerpt from the report: When Rebecca Pariso agreed to join a team of educators tasked in late 2019 with California's new mathematics framework, she said she expected some controversy. But she didn't expect her work would be in the national spotlight. [...] Every eight years (PDF), a group of educators comes together to update the state's math curriculum framework. This particular update has attracted extra attention, and controversy, because of perceived changes it makes to how \"gifted\" students progress -- and because it pushes Algebra 1 back to 9th grade, de-emphasizes calculus, and applies social justice principles to math lessons. San Francisco pioneered key aspects of the new approach, opting in 2014 to delay algebra instruction until 9th grade and to push advanced mathematics courses until at least after 10th grade as a means of promoting equity.\n \nSan Francisco Unified School District touted the effort as a success, asserting that algebra failure rates fell and the number of students taking advanced math rose as a result of the change. The California Department of Education cited those results in drafting the statewide framework. But critics have accused the district of using cherry-picked and misleading assertions to bolster the case for the changes. The intent of the state mathematics framework, its designers say, is to maintain rigor while also helping remedy California's achievement gaps for Black, Latino and low-income students, which remain some of the largest in the nation. At the heart of the wrangling lies a broad agreement about at least one thing: The way California public schools teach math isn't working. On national standardized tests, California ranks in the bottom quartile among all states and U.S. territories for 8th grade math scores.\n \nYet for all the sound and fury, the proposed framework, about 800-pages long, is little more than a set of suggestions. Its designers are revising it now and will subject it to 60 more days of public review. Once it's approved in July, districts may adopt as much or as little of the framework as they choose -- and can disregard it completely without any penalty. \"It's not mandated that you use the framework,\" said framework team member Dianne Wilson, a program specialist at Elk Grove Unified. \"There's a concern that it will be implemented unequally.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "California is in the process of approving new guidelines for math education in public schools that \"pushes Algebra 1 back to 9th grade, de-emphasizes calculus, and applies social justice principles to math lessons,\" writes Joe Hong via the San Francisco Standard. The new approach would have been approved earlier this month but has been delayed due to the attention and controversy it has received. Here's an excerpt from the report: When Rebecca Pariso agreed to join a team of educators tasked in late 2019 with California's new mathematics framework, she said she expected some controversy. But she didn't expect her work would be in the national spotlight. [...] Every eight years (PDF), a group of educators comes together to update the state's math curriculum framework. This particular update has attracted extra attention, and controversy, because of perceived changes it makes to how \"gifted\" students progress -- and because it pushes Algebra 1 back to 9th grade, de-emphasizes calculus, and applies social justice principles to math lessons. San Francisco pioneered key aspects of the new approach, opting in 2014 to delay algebra instruction until 9th grade and to push advanced mathematics courses until at least after 10th grade as a means of promoting equity.\n \nSan Francisco Unified School District touted the effort as a success, asserting that algebra failure rates fell and the number of students taking advanced math rose as a result of the change. The California Department of Education cited those results in drafting the statewide framework. But critics have accused the district of using cherry-picked and misleading assertions to bolster the case for the changes. The intent of the state mathematics framework, its designers say, is to maintain rigor while also helping remedy California's achievement gaps for Black, Latino and low-income students, which remain some of the largest in the nation. At the heart of the wrangling lies a broad agreement about at least one thing: The way California public schools teach math isn't working. On national standardized tests, California ranks in the bottom quartile among all states and U.S. territories for 8th grade math scores.\n \nYet for all the sound and fury, the proposed framework, about 800-pages long, is little more than a set of suggestions. Its designers are revising it now and will subject it to 60 more days of public review. Once it's approved in July, districts may adopt as much or as little of the framework as they choose -- and can disregard it completely without any penalty. \"It's not mandated that you use the framework,\" said framework team member Dianne Wilson, a program specialist at Elk Grove Unified. \"There's a concern that it will be implemented unequally.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/cop26-des-engagements-encourageants-pour-delaisser-les-energies-fossiles", - "creator": "", - "pubDate": "Fri, 05 Nov 2021 15:44:45 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/24/001231/california-moves-to-recommend-delaying-algebra-to-9th-grade-statewide?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T02:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Vaccination quasi obligatoire pour plus de 100 millions de salariés américains", - "description": "À compter du 4 janvier prochain, les employés non vaccinés des entreprises de plus de 100 salariés devront se soumettre à un test de dépistage Covid hebdomadaire, à leurs frais. La décision, qui vise à faire “sortir définitivement” les États-Unis de la pandémie, se heurte à l’opposition des républicains.", - "content": "À compter du 4 janvier prochain, les employés non vaccinés des entreprises de plus de 100 salariés devront se soumettre à un test de dépistage Covid hebdomadaire, à leurs frais. La décision, qui vise à faire “sortir définitivement” les États-Unis de la pandémie, se heurte à l’opposition des républicains.", + "title": "Mozilla Is Ending Support For Its Firefox Password Manager Sync App", + "description": "Mozilla announced last week via a support article that its Firefox Lockwise password manager app will reach end-of-life on December 13th. The final release versions are 1.8.1 (iOS) and 4.0.3 (Android) and will no longer be available to download or reinstall after that date. The Verge reports: What started in 2018 as a small experimental mobile app called Lockbox ended up bringing a way to access saved passwords and perform autofills on iOS, Android, and desktop devices to a small but enthusiastic following of Firefox fans. The app was also later adapted as a Firefox extension. It seemed like it was apt to stick around for the long run.\n \nThe support article recommends that users continue accessing passwords using the native Firefox browsers on desktop and mobile. In an added note on the support site, Mozilla suggests that later in December, the Firefox iOS app will gain the ability to manage Firefox passwords systemwide. The note alludes to Mozilla adopting the features of Lockwise and eventually integrating them into the Firefox browser apps natively on all platforms.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Mozilla announced last week via a support article that its Firefox Lockwise password manager app will reach end-of-life on December 13th. The final release versions are 1.8.1 (iOS) and 4.0.3 (Android) and will no longer be available to download or reinstall after that date. The Verge reports: What started in 2018 as a small experimental mobile app called Lockbox ended up bringing a way to access saved passwords and perform autofills on iOS, Android, and desktop devices to a small but enthusiastic following of Firefox fans. The app was also later adapted as a Firefox extension. It seemed like it was apt to stick around for the long run.\n \nThe support article recommends that users continue accessing passwords using the native Firefox browsers on desktop and mobile. In an added note on the support site, Mozilla suggests that later in December, the Firefox iOS app will gain the ability to manage Firefox passwords systemwide. The note alludes to Mozilla adopting the features of Lockwise and eventually integrating them into the Firefox browser apps natively on all platforms.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/pandemie-vaccination-quasi-obligatoire-pour-plus-de-100-millions-de-salaries-americains", - "creator": "", - "pubDate": "Fri, 05 Nov 2021 05:55:22 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/23/2157244/mozilla-is-ending-support-for-its-firefox-password-manager-sync-app?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T01:25:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La Banque centrale américaine ralentit son soutien à l’économie", - "description": "La Fed a annoncé mercredi 3 novembre qu’elle allait progressivement cesser d’injecter des liquidités sur les marchés aux États-Unis, repoussant l’éventualité d’une hausse des taux d’intérêt.", - "content": "La Fed a annoncé mercredi 3 novembre qu’elle allait progressivement cesser d’injecter des liquidités sur les marchés aux États-Unis, repoussant l’éventualité d’une hausse des taux d’intérêt.", + "title": "New Windows Zero-Day With Public Exploit Lets You Become An Admin", + "description": "A security researcher has publicly disclosed an exploit for a new Windows zero-day local privilege elevation vulnerability that gives admin privileges in Windows 10, Windows 11, and Windows Server. BleepingComputer reports: As part of the November 2021 Patch Tuesday, Microsoft fixed a 'Windows Installer Elevation of Privilege Vulnerability' vulnerability tracked as CVE-2021-41379. This vulnerability was discovered by security researcher Abdelhamid Naceri, who found a bypass to the patch and a more powerful new zero-day privilege elevation vulnerability after examining Microsoft's fix. Yesterday, Naceri published a working proof-of-concept exploit for the new zero-day on GitHub, explaining that it works on all supported versions of Windows.\n \n\"This variant was discovered during the analysis of CVE-2021-41379 patch. the bug was not fixed correctly, however, instead of dropping the bypass,\" explains Naceri in his writeup. \"I have chosen to actually drop this variant as it is more powerful than the original one.\" Furthermore, Naceri explained that while it is possible to configure group policies to prevent 'Standard' users from performing MSI installer operations, his zero-day bypasses this policy and will work anyway. BleepingComputer tested Naceri's 'InstallerFileTakeOver' exploit, and it only took a few seconds to gain SYSTEM privileges from a test account with 'Standard' privileges, as demonstrated in [this video]. When BleepingComputer asked Naceri why he publicly disclosed the zero-day vulnerability, we were told he did it out of frustration over Microsoft's decreasing payouts in their bug bounty program. A Microsoft spokesperson said in a statement: \"We are aware of the disclosure and will do what is necessary to keep our customers safe and protected. An attacker using the methods described must already have access and the ability to run code on a target victim's machine.\"\n \nNaceri recommends users wait for Microsoft to release a security patch, as attempting to patch the binary will likely break the installer.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "A security researcher has publicly disclosed an exploit for a new Windows zero-day local privilege elevation vulnerability that gives admin privileges in Windows 10, Windows 11, and Windows Server. BleepingComputer reports: As part of the November 2021 Patch Tuesday, Microsoft fixed a 'Windows Installer Elevation of Privilege Vulnerability' vulnerability tracked as CVE-2021-41379. This vulnerability was discovered by security researcher Abdelhamid Naceri, who found a bypass to the patch and a more powerful new zero-day privilege elevation vulnerability after examining Microsoft's fix. Yesterday, Naceri published a working proof-of-concept exploit for the new zero-day on GitHub, explaining that it works on all supported versions of Windows.\n \n\"This variant was discovered during the analysis of CVE-2021-41379 patch. the bug was not fixed correctly, however, instead of dropping the bypass,\" explains Naceri in his writeup. \"I have chosen to actually drop this variant as it is more powerful than the original one.\" Furthermore, Naceri explained that while it is possible to configure group policies to prevent 'Standard' users from performing MSI installer operations, his zero-day bypasses this policy and will work anyway. BleepingComputer tested Naceri's 'InstallerFileTakeOver' exploit, and it only took a few seconds to gain SYSTEM privileges from a test account with 'Standard' privileges, as demonstrated in [this video]. When BleepingComputer asked Naceri why he publicly disclosed the zero-day vulnerability, we were told he did it out of frustration over Microsoft's decreasing payouts in their bug bounty program. A Microsoft spokesperson said in a statement: \"We are aware of the disclosure and will do what is necessary to keep our customers safe and protected. An attacker using the methods described must already have access and the ability to run code on a target victim's machine.\"\n \nNaceri recommends users wait for Microsoft to release a security patch, as attempting to patch the binary will likely break the installer.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/monnaie-la-banque-centrale-americaine-ralentit-son-soutien-leconomie", - "creator": "", - "pubDate": "Thu, 04 Nov 2021 16:31:25 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://it.slashdot.org/story/21/11/23/2139224/new-windows-zero-day-with-public-exploit-lets-you-become-an-admin?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T00:45:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L’économie argentine vire au cauchemar avec ses multiples taux de change en dollars", - "description": "Il existe au moins sept taux de change en devises différents en Argentine. Un symptôme d’une économie qui se noie depuis longtemps entre dette, inflation et dévaluation, comme une véritable malédiction.", - "content": "Il existe au moins sept taux de change en devises différents en Argentine. Un symptôme d’une économie qui se noie depuis longtemps entre dette, inflation et dévaluation, comme une véritable malédiction.", - "category": "", - "link": "https://www.courrierinternational.com/article/monnaie-leconomie-argentine-vire-au-cauchemar-avec-ses-multiples-taux-de-change-en-dollars", - "creator": "", - "pubDate": "Thu, 04 Nov 2021 11:58:03 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "title": "Components Shortage Sends Smartphone Market Into Decline", + "description": "An anonymous reader quotes a report from Ars Technica: Component shortages have been wreaking havoc on the tech industry since the onset of the COVID-19 pandemic, and smartphones are no outlier. Decelerated production schedules have given way to smaller stock and delayed launches. All of this has resulted in a decline in smartphone sales in Q3 of 2021 compared to Q3 2020, Gartner reported today. According to numbers the research firm shared today, sales to consumers dropped 6.8 percent. A deficit in parts like integrated circuits for power management and radio frequency has hurt smartphone production worldwide.\n \n\"Despite strong consumer demand, smartphone sales declined due to delayed product launches, longer delivery schedule, and insufficient inventory at the channel,\" Anshul Gupta, senior research director at Gartner, said in a statement accompanying the announcement. The analyst added that the production schedules of \"basic and utility\" phones were more affected by supply constraints than \"premium\" ones. As a result, premium smartphone sales actually increased during this time period, even though smartphone sales overall declined. Still, shoppers were left with limited options, Gartner noted. Samsung ended up winning the greatest market share (20.2 percent), thanks to its foldable smartphones. Apple's quarterly market share (14.2 percent) was aided by new features in its iPhones, namely the A15 processor and improvements to battery life and the camera sensor. Gartner also pointed to interest in 5G.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from Ars Technica: Component shortages have been wreaking havoc on the tech industry since the onset of the COVID-19 pandemic, and smartphones are no outlier. Decelerated production schedules have given way to smaller stock and delayed launches. All of this has resulted in a decline in smartphone sales in Q3 of 2021 compared to Q3 2020, Gartner reported today. According to numbers the research firm shared today, sales to consumers dropped 6.8 percent. A deficit in parts like integrated circuits for power management and radio frequency has hurt smartphone production worldwide.\n \n\"Despite strong consumer demand, smartphone sales declined due to delayed product launches, longer delivery schedule, and insufficient inventory at the channel,\" Anshul Gupta, senior research director at Gartner, said in a statement accompanying the announcement. The analyst added that the production schedules of \"basic and utility\" phones were more affected by supply constraints than \"premium\" ones. As a result, premium smartphone sales actually increased during this time period, even though smartphone sales overall declined. Still, shoppers were left with limited options, Gartner noted. Samsung ended up winning the greatest market share (20.2 percent), thanks to its foldable smartphones. Apple's quarterly market share (14.2 percent) was aided by new features in its iPhones, namely the A15 processor and improvements to battery life and the camera sensor. Gartner also pointed to interest in 5G.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "category": "", + "link": "https://mobile.slashdot.org/story/21/11/23/2134202/components-shortage-sends-smartphone-market-into-decline?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-24T00:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les pays du Nord engagent 8,5 milliards de dollars pour décarboner l’Afrique du Sud", - "description": "Réunis à Glasgow pour la 26e Conférence des Nations unies pour le climat, les États-Unis, le Royaume-Uni, l’Union européenne, mais aussi la France et l’Allemagne, ont annoncé, le mardi 2 novembre, avoir conclu un accord avec Johannesburg pour soutenir la “transition énergétique juste” de l’Afrique du Sud, très dépendante du charbon.", - "content": "Réunis à Glasgow pour la 26e Conférence des Nations unies pour le climat, les États-Unis, le Royaume-Uni, l’Union européenne, mais aussi la France et l’Allemagne, ont annoncé, le mardi 2 novembre, avoir conclu un accord avec Johannesburg pour soutenir la “transition énergétique juste” de l’Afrique du Sud, très dépendante du charbon.", + "title": "Japan Allocates $5.2 Billion To Fund Chip Plants By TSMC and Others", + "description": "Japan is allocating about $5.2 billion of its fiscal 2021 supplementary budget to support advanced semiconductor manufacturers, Nikkei has learned. From the report: The government plans to invest about 400 billion yen in a new factory set up by the world's largest contract chipmaker Taiwan Semiconductor Manufacturing Co. in Kumamoto prefecture, southwest Japan. The remaining 200 billion yen will go toward setting up other new factories, with projects under consideration including by U.S. memory chipmaker Micron Technology and Japan's Kioxia Holdings. The Japanese government is considering making semiconductors a new area of focus under a law targeting companies developing high-speed 5G technologies, meaning it would approve investment plans for their factories under the revised law. [...] The 600 billion yen fund would cover subsidies over several years. Companies would receive support under the condition that they would increase production when there is supply shortage, as the Japanese government hopes to ensure a stable domestic chip supply.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Japan is allocating about $5.2 billion of its fiscal 2021 supplementary budget to support advanced semiconductor manufacturers, Nikkei has learned. From the report: The government plans to invest about 400 billion yen in a new factory set up by the world's largest contract chipmaker Taiwan Semiconductor Manufacturing Co. in Kumamoto prefecture, southwest Japan. The remaining 200 billion yen will go toward setting up other new factories, with projects under consideration including by U.S. memory chipmaker Micron Technology and Japan's Kioxia Holdings. The Japanese government is considering making semiconductors a new area of focus under a law targeting companies developing high-speed 5G technologies, meaning it would approve investment plans for their factories under the revised law. [...] The 600 billion yen fund would cover subsidies over several years. Companies would receive support under the condition that they would increase production when there is supply shortage, as the Japanese government hopes to ensure a stable domestic chip supply.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/cop26-les-pays-du-nord-engagent-85-milliards-de-dollars-pour-decarboner-lafrique-du-sud", - "creator": "", - "pubDate": "Wed, 03 Nov 2021 17:48:37 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/23/2127236/japan-allocates-52-billion-to-fund-chip-plants-by-tsmc-and-others?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T23:20:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Des salaires en hausse de 10 % ? Pas assez, selon les grévistes de John Deere aux États-Unis", - "description": "La direction avait doublé la mise, mais les 10 000 salariés du fabricant de matériel agricole Deere & Company ont rejeté mardi l’accord et poursuivent leur grève. Alimentant le mouvement social qui enfle face à la pénurie de main-d’œuvre.", - "content": "La direction avait doublé la mise, mais les 10 000 salariés du fabricant de matériel agricole Deere & Company ont rejeté mardi l’accord et poursuivent leur grève. Alimentant le mouvement social qui enfle face à la pénurie de main-d’œuvre.", + "title": "Atom Bank Introduces Four-Day Work Week Without Cutting Pay", + "description": "The online bank Atom Bank has introduced a four-day work week for its 430 staff without cutting their pay. The BBC reports: Employees now work 34 hours over four days and get Monday or Friday off, when previously they clocked up 37.5 hours across the whole week. Boss Mark Mullen told the BBC it was inspired by the pandemic and would help improve wellbeing and retain staff. However, employees will have to work longer hours on the days that they are in.\n \nAtom was one of the UK's first digital challenger banks and had 2.7 billion pounds of loans on its books in the last financial year. Its new working arrangements kicked in on 1 November after a review found they would not affect customer service or productivity. Mr Mullen said the new arrangement was voluntary, but strongly reflected his staff's preferences for more flexible working. \"Everyone is expected to stick to it,\" he added. \"I can't be sending my staff emails on a Friday, I can't expect to them to respond to them.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The online bank Atom Bank has introduced a four-day work week for its 430 staff without cutting their pay. The BBC reports: Employees now work 34 hours over four days and get Monday or Friday off, when previously they clocked up 37.5 hours across the whole week. Boss Mark Mullen told the BBC it was inspired by the pandemic and would help improve wellbeing and retain staff. However, employees will have to work longer hours on the days that they are in.\n \nAtom was one of the UK's first digital challenger banks and had 2.7 billion pounds of loans on its books in the last financial year. Its new working arrangements kicked in on 1 November after a review found they would not affect customer service or productivity. Mr Mullen said the new arrangement was voluntary, but strongly reflected his staff's preferences for more flexible working. \"Everyone is expected to stick to it,\" he added. \"I can't be sending my staff emails on a Friday, I can't expect to them to respond to them.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/social-des-salaires-en-hausse-de-10-pas-assez-selon-les-grevistes-de-john-deere-aux-etats", - "creator": "", - "pubDate": "Wed, 03 Nov 2021 12:34:19 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/23/2122257/atom-bank-introduces-four-day-work-week-without-cutting-pay?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T22:40:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Facebook cesse d’utiliser son système de reconnaissance faciale", - "description": "Invoquant des “inquiétudes sociétales”, la maison-mère de Facebook, Meta, a annoncé qu’elle n’utiliserait plus la reconnaissance faciale pour proposer un “tag” automatiquement sur les photos. Les données sur plus d’un milliard d’utilisateurs devraient être effacées.", - "content": "Invoquant des “inquiétudes sociétales”, la maison-mère de Facebook, Meta, a annoncé qu’elle n’utiliserait plus la reconnaissance faciale pour proposer un “tag” automatiquement sur les photos. Les données sur plus d’un milliard d’utilisateurs devraient être effacées.", + "title": "Tile Is Selling Its Bluetooth Tracking Business To Life360 For $205 Million", + "description": "An anonymous reader quotes a report from The Verge: Tile popularized marking items and tracking them from your phone with its small Bluetooth tags, but suddenly faces more competition from giants like Apple, Amazon, Google, and Samsung. The company that started out of an incubator and crowdfunding campaign has announced it will be acquired by Life360, which calls itself a \"leading family safety platform.\" The deal is valued at $205 million and is expected to close in the first quarter of 2022. Tile has developed its product line over the years with a variety of different trackers and partnerships with other companies to use its technology. It also has a subscription service, Tile Premium, with extra features, battery replacements, and insurance against potential losses. However, the game may have changed once Apple and Google started building their own item-locating features into iPhones and Android devices.\n \nLife360 bills itself as an overall family safety app, with location sharing between family members, crash detection, and other features. Over the summer, it announced that it has over 1 million paying customers and reported its valuation had crossed $1 billion. It also acquired another item locating hardware startup, Jiobit, which makes cellular-connected trackers for kids and pets. Life360 expects the deal will increase the global footprint for both companies, Tile's non-Bluetooth Finding Network, and create a larger combined subscriber base. Currently listed on the stock exchange in Australia, Life360 says it has plans for a \"potential dual listing in the US\" next year.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from The Verge: Tile popularized marking items and tracking them from your phone with its small Bluetooth tags, but suddenly faces more competition from giants like Apple, Amazon, Google, and Samsung. The company that started out of an incubator and crowdfunding campaign has announced it will be acquired by Life360, which calls itself a \"leading family safety platform.\" The deal is valued at $205 million and is expected to close in the first quarter of 2022. Tile has developed its product line over the years with a variety of different trackers and partnerships with other companies to use its technology. It also has a subscription service, Tile Premium, with extra features, battery replacements, and insurance against potential losses. However, the game may have changed once Apple and Google started building their own item-locating features into iPhones and Android devices.\n \nLife360 bills itself as an overall family safety app, with location sharing between family members, crash detection, and other features. Over the summer, it announced that it has over 1 million paying customers and reported its valuation had crossed $1 billion. It also acquired another item locating hardware startup, Jiobit, which makes cellular-connected trackers for kids and pets. Life360 expects the deal will increase the global footprint for both companies, Tile's non-Bluetooth Finding Network, and create a larger combined subscriber base. Currently listed on the stock exchange in Australia, Life360 says it has plans for a \"potential dual listing in the US\" next year.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/technologie-facebook-cesse-dutiliser-son-systeme-de-reconnaissance-faciale", - "creator": "", - "pubDate": "Tue, 02 Nov 2021 21:24:54 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://slashdot.org/story/21/11/23/2117224/tile-is-selling-its-bluetooth-tracking-business-to-life360-for-205-million?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T22:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La Chine suscite des peurs en demandant à ses habitants de stocker des provisions", - "description": "Le gouvernement de Pékin a appelé les foyers à faire des réserves de produits de base, en prévision, d’après les autorités, de nouveaux confinements locaux.", - "content": "Le gouvernement de Pékin a appelé les foyers à faire des réserves de produits de base, en prévision, d’après les autorités, de nouveaux confinements locaux.", + "title": "UK Visa Scheme for Prize-winning Scientists Receives No Applications", + "description": "Not a single scientist has applied to a UK government visa scheme for Nobel prize laureates and other award winners since its launch six months ago, New Scientist reported Tuesday. From a report: The scheme has come under criticism from scientists and has been described as \"a joke.\" In May, the government launched a fast-track visa route for award-winners in the fields of science, engineering, the humanities and medicine who want to work in the UK. This prestigious prize route makes it easier for some academics to apply for a Global Talent visa -- it requires only one application, with no need to meet conditions such as a grant from the UK Research and Innovation funding body or a job offer at a UK organisation. \n\nThe number of prizes that qualify academics for this route currently stands at over 70, and includes the Turing Award, the L'Oreal-UNESCO for Women in Science International Awards, and various gongs awarded by professional or membership bodies both in the UK and elsewhere. \"Winners of these awards have reached the pinnacle of their career and they have so much to offer the UK,\" said home secretary Priti Patel when the prestigious prize scheme launched in May. \"This is exactly what our new point-based immigration system was designed for -- attracting the best and brightest based on the skills and talent they have, not where they've come from.\" But a freedom of information request by New Scientist has revealed that in the six months since the scheme was launched, no one working in science, engineering, the humanities or medicine has actually applied for a visa through this route.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Not a single scientist has applied to a UK government visa scheme for Nobel prize laureates and other award winners since its launch six months ago, New Scientist reported Tuesday. From a report: The scheme has come under criticism from scientists and has been described as \"a joke.\" In May, the government launched a fast-track visa route for award-winners in the fields of science, engineering, the humanities and medicine who want to work in the UK. This prestigious prize route makes it easier for some academics to apply for a Global Talent visa -- it requires only one application, with no need to meet conditions such as a grant from the UK Research and Innovation funding body or a job offer at a UK organisation. \n\nThe number of prizes that qualify academics for this route currently stands at over 70, and includes the Turing Award, the L'Oreal-UNESCO for Women in Science International Awards, and various gongs awarded by professional or membership bodies both in the UK and elsewhere. \"Winners of these awards have reached the pinnacle of their career and they have so much to offer the UK,\" said home secretary Priti Patel when the prestigious prize scheme launched in May. \"This is exactly what our new point-based immigration system was designed for -- attracting the best and brightest based on the skills and talent they have, not where they've come from.\" But a freedom of information request by New Scientist has revealed that in the six months since the scheme was launched, no one working in science, engineering, the humanities or medicine has actually applied for a visa through this route.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/asie-la-chine-suscite-des-peurs-en-demandant-ses-habitants-de-stocker-des-provisions", - "creator": "", - "pubDate": "Tue, 02 Nov 2021 19:42:26 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/23/2055242/uk-visa-scheme-for-prize-winning-scientists-receives-no-applications?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-23T21:25:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Epic Games met fin à la version chinoise du jeu Fortnite", - "description": "L’éditeur américain du très populaire jeu en ligne, qui avait fait alliance avec le géant numérique local Tencent pour pénétrer le marché chinois, a annoncé la fermeture définitive de Fortress Night.", - "content": "L’éditeur américain du très populaire jeu en ligne, qui avait fait alliance avec le géant numérique local Tencent pour pénétrer le marché chinois, a annoncé la fermeture définitive de Fortress Night.", + "title": "Apple Just Provided the Perfect Example of Why You Can't Trust App Store Review Scores", + "description": "Apple Podcasts rises above bad reviews, but at what cost? From a report: You pissed off people by somewhat breaking your app, and they're leaving angry reviews. How can you salvage your reputation? Apple just found one incredibly effective way -- get listeners to submit better reviews by interrupting their podcast experience with an in-app prompt to submit a rating. That's how the Apple Podcasts app went from a publicly embarrassing 1.8-star score all the way to 4.6 stars in a little over a month without any actual fixes, as developer and App Store watchdog Kosta Eleftheriou points out. And it's still going up: according to AppFigures data, the app has been getting thousands of ratings every day since November 9th, with the vast, overwhelming majority of them issuing a 5-star score. The app has made it to 4.7 stars overall as of this writing and is firmly the No. 1 App Store search result for \"podcast.\" It looks far more desirable to a new user than it might have before. \n\nIf you think there's a perfectly reasonable explanation for this, you might be right -- it could definitely be that people who bother to submit reviews tend to be angry, and a lot of people who love Apple Podcasts and never bothered to look it up in the App Store (remember, it's preinstalled!) are finally balancing things out. But do those people actually love Apple Podcasts? Because if you really look at the reviews, it seems like some funny business is going on. There are new, positive reviews, but they aren't reviews of the Apple Podcasts app at all -- they're reviews of podcasts themselves.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Apple Podcasts rises above bad reviews, but at what cost? From a report: You pissed off people by somewhat breaking your app, and they're leaving angry reviews. How can you salvage your reputation? Apple just found one incredibly effective way -- get listeners to submit better reviews by interrupting their podcast experience with an in-app prompt to submit a rating. That's how the Apple Podcasts app went from a publicly embarrassing 1.8-star score all the way to 4.6 stars in a little over a month without any actual fixes, as developer and App Store watchdog Kosta Eleftheriou points out. And it's still going up: according to AppFigures data, the app has been getting thousands of ratings every day since November 9th, with the vast, overwhelming majority of them issuing a 5-star score. The app has made it to 4.7 stars overall as of this writing and is firmly the No. 1 App Store search result for \"podcast.\" It looks far more desirable to a new user than it might have before. \n\nIf you think there's a perfectly reasonable explanation for this, you might be right -- it could definitely be that people who bother to submit reviews tend to be angry, and a lot of people who love Apple Podcasts and never bothered to look it up in the App Store (remember, it's preinstalled!) are finally balancing things out. But do those people actually love Apple Podcasts? Because if you really look at the reviews, it seems like some funny business is going on. There are new, positive reviews, but they aren't reviews of the Apple Podcasts app at all -- they're reviews of podcasts themselves.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/game-over-epic-games-met-fin-la-version-chinoise-du-jeu-fortnite", - "creator": "", - "pubDate": "Tue, 02 Nov 2021 17:09:10 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://apple.slashdot.org/story/21/11/23/2041205/apple-just-provided-the-perfect-example-of-why-you-cant-trust-app-store-review-scores?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-23T20:45:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L’Espagne, victime collatérale de l’arrêt de l’activité du gazoduc Maghreb-Europe", - "description": "Madrid est pris au piège par les tensions entre l’Algérie et le Maroc, qui ont conduit à la suspension de l’activité du gazoduc Maghreb-Europe. La pénurie de gaz devrait être évitée, rassure la presse espagnole, mais les coûts d’approvisionnement vont augmenter.", - "content": "Madrid est pris au piège par les tensions entre l’Algérie et le Maroc, qui ont conduit à la suspension de l’activité du gazoduc Maghreb-Europe. La pénurie de gaz devrait être évitée, rassure la presse espagnole, mais les coûts d’approvisionnement vont augmenter.", + "title": "Crypto Oversight Road Map Is Set by US Banking Regulators", + "description": "U.S. banking agencies provided more insight into their plans for regulating cryptocurrencies on Tuesday, issuing a to-do list of their priorities for next year and announcing a new policy that would require banks to seek permission before offering digital currency products. From a report: The Federal Reserve and other banking agencies released an agenda outlining areas of focus, including how they plan to weigh custody, crypto-backed loans and the possibility of capital standards, according to a joint statement. Separately, the Office of the Comptroller of the Currency said that banks must get an additional sign-off from the regulator before engaging with digital coins. \"Throughout 2022, the agencies plan to provide greater clarity on whether certain activities related to crypto-assets conducted by banking organizations are legally permissible,\" the Fed, Office of the Comptroller of the Currency and Federal Deposit Insurance said in the statement.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "U.S. banking agencies provided more insight into their plans for regulating cryptocurrencies on Tuesday, issuing a to-do list of their priorities for next year and announcing a new policy that would require banks to seek permission before offering digital currency products. From a report: The Federal Reserve and other banking agencies released an agenda outlining areas of focus, including how they plan to weigh custody, crypto-backed loans and the possibility of capital standards, according to a joint statement. Separately, the Office of the Comptroller of the Currency said that banks must get an additional sign-off from the regulator before engaging with digital coins. \"Throughout 2022, the agencies plan to provide greater clarity on whether certain activities related to crypto-assets conducted by banking organizations are legally permissible,\" the Fed, Office of the Comptroller of the Currency and Federal Deposit Insurance said in the statement.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/revue-de-presse/energie-lespagne-victime-collaterale-de-larret-de-lactivite-du-gazoduc-maghreb", - "creator": "", - "pubDate": "Tue, 02 Nov 2021 17:06:45 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/23/2010249/crypto-oversight-road-map-is-set-by-us-banking-regulators?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-23T20:11:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le premier accord de la COP26 engage plus de cent pays à inverser la déforestation", - "description": "Au deuxième jour du sommet sur le climat à Glasgow, les chefs d’États qui abritent plus de 85 % des forêts mondiales s’accordent à mettre fin à la déforestation d’ici 2030 et promettent d’allouer à cet effet 16,5 milliards d’euros de fonds publics et privés.", - "content": "Au deuxième jour du sommet sur le climat à Glasgow, les chefs d’États qui abritent plus de 85 % des forêts mondiales s’accordent à mettre fin à la déforestation d’ici 2030 et promettent d’allouer à cet effet 16,5 milliards d’euros de fonds publics et privés.", + "title": "China's New Privacy Law Leaves US Behind", + "description": "While China's sweeping new data privacy laws have left tech companies confused about how to comply, they also put the U.S. even further behind in the global race to set digital standards. From a report: China enacted its Personal Information Privacy Law earlier this month, following Europe as the second major international player to have its own sweeping data privacy regulations. The law, regarded as China's version of Europe's General Data Protection Regulation, is a set of rules for how businesses can collect, use, process, share and transfer personal information. Another Chinese data regulation, the Data Security Law, went into effect Sept. 1. The laws aim to protect Chinese citizens from the private sector, while the Chinese government still has easy access to personal data. \n\nIn May, influential U.S. business groups sent comments, viewed by Axios, to the National Peopleâ(TM)s Congress protesting that the draft lawâ(TM)s vague language, monetary penalties and criminal liabilities were harsh. They also said it would hurt innovation by being overly prescriptive and burdensome. The U.S. still does not have a federal data privacy law, and China's move could allow it to set future global norms on its terms. Meanwhile, tech companies doing business in China will have to navigate the vague new rules, and that could be expensive.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "While China's sweeping new data privacy laws have left tech companies confused about how to comply, they also put the U.S. even further behind in the global race to set digital standards. From a report: China enacted its Personal Information Privacy Law earlier this month, following Europe as the second major international player to have its own sweeping data privacy regulations. The law, regarded as China's version of Europe's General Data Protection Regulation, is a set of rules for how businesses can collect, use, process, share and transfer personal information. Another Chinese data regulation, the Data Security Law, went into effect Sept. 1. The laws aim to protect Chinese citizens from the private sector, while the Chinese government still has easy access to personal data. \n\nIn May, influential U.S. business groups sent comments, viewed by Axios, to the National Peopleâ(TM)s Congress protesting that the draft lawâ(TM)s vague language, monetary penalties and criminal liabilities were harsh. They also said it would hurt innovation by being overly prescriptive and burdensome. The U.S. still does not have a federal data privacy law, and China's move could allow it to set future global norms on its terms. Meanwhile, tech companies doing business in China will have to navigate the vague new rules, and that could be expensive.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/le-chiffre-du-jour-le-premier-accord-de-la-cop26-engage-plus-de-cent-pays-inverser-la", - "creator": "", - "pubDate": "Tue, 02 Nov 2021 14:26:32 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://yro.slashdot.org/story/21/11/23/192232/chinas-new-privacy-law-leaves-us-behind?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-23T19:22:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Parole de baleine, le dernier des poumons d’acier, le secret des pénuries et les fous du tungstène", - "description": "On devrait lire plus souvent Hakai Magazine, une publication canadienne de Victoria, en Colombie-Britannique, consacrée à la vie scientifique et culturelle des régions côtières. L’un des articles décrit magistralement le nouveau projet d’un groupe international de biologistes et de spécialistes de l’intelligence artificielle, formé en 2017 au hasard d’un séminaire à l’université Harvard, qui tente de décrypter le langage des baleines dans l’espoir d’engager un jour la...", - "content": "On devrait lire plus souvent Hakai Magazine, une publication canadienne de Victoria, en Colombie-Britannique, consacrée à la vie scientifique et culturelle des régions côtières. L’un des articles décrit magistralement le nouveau projet d’un groupe international de biologistes et de spécialistes de l’intelligence artificielle, formé en 2017 au hasard d’un séminaire à l’université Harvard, qui tente de décrypter le langage des baleines dans l’espoir d’engager un jour la...", + "title": "EU Lawmakers Pass Strict New Rules Affecting Big US Tech", + "description": "The lead committee in the European Parliament writing new tech rules passed measures Tuesday that could impact major U.S. and European tech companies. Lawmakers voted to approve measures in the draft Digital Markets Act that could mean:\n1. A company's messaging or social media app is interoperable, to prevent users feeling forced to use one or the other because that's where their friends are\n2. A ban on behavioral targeting of ads to minors\n3. Fines of as much as 20% of a company's global annual sales for breaches for the law \n\nCompanies identified as \"gatekeepers\" and therefore set to be accountable under the DMA include Amazon, Facebook, Google, Microsoft, Apple and Booking.com, and could later hit online marketplaces Zalando and Alibaba.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The lead committee in the European Parliament writing new tech rules passed measures Tuesday that could impact major U.S. and European tech companies. Lawmakers voted to approve measures in the draft Digital Markets Act that could mean:\n1. A company's messaging or social media app is interoperable, to prevent users feeling forced to use one or the other because that's where their friends are\n2. A ban on behavioral targeting of ads to minors\n3. Fines of as much as 20% of a company's global annual sales for breaches for the law \n\nCompanies identified as \"gatekeepers\" and therefore set to be accountable under the DMA include Amazon, Facebook, Google, Microsoft, Apple and Booking.com, and could later hit online marketplaces Zalando and Alibaba.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/la-lettre-tech-parole-de-baleine-le-dernier-des-poumons-dacier-le-secret-des-penuries-et-les", - "creator": "", - "pubDate": "Tue, 02 Nov 2021 12:19:04 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://tech.slashdot.org/story/21/11/23/1323210/eu-lawmakers-pass-strict-new-rules-affecting-big-us-tech?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-23T14:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Dans la plus grande usine du monde de séquestration du CO2", - "description": "Retirer le dioxyde de carbone de l’air. Le pétrifier sous terre pour accélérer la décarbonation. Cette méthode, utilisée par un nouveau site pilote en Islande, est-elle vraiment la solution à l’urgence climatique ?", - "content": "Retirer le dioxyde de carbone de l’air. Le pétrifier sous terre pour accélérer la décarbonation. Cette méthode, utilisée par un nouveau site pilote en Islande, est-elle vraiment la solution à l’urgence climatique ?", + "title": "Niantic Raises $300 Million At $9 Billion Valuation To Build the 'Real-World Metaverse'", + "description": "An anonymous reader quotes a report from TechCrunch: Niantic, the augmented reality platform that's developing games like Pokemon GO, raised $300 million from Coatue, valuing the company at $9 billion. The San Fransisco-based startup, which initially spun out of Google, will use this money to build what it calls the \"real-world metaverse.\" As early as August, Niantic founder and CEO John Hanke has referred to the metaverse -- at least, the one that renders us bound to VR headsets, like in \"Ready Player One\" -- as a \"dystopian nightmare.\"\n \nUnlike Facebook, which changed its company name to Meta to signal its investment in VR technology, Niantic wants to develop technology that brings people closer to the outside world. Earlier this month, Niantic unveiled its Lightship AR Developer Kit (ARDK), which makes tools to develop AR games publicly available for free to anyone who has a basic knowledge of the Unity game engine. \"At Niantic, we believe humans are the happiest when their virtual world leads them to a physical one,\" Hanke said at the time. \"Unlike a sci-fi metaverse, a real-world metaverse will use technology to improve our experience of the world as we've known it for thousands of years.\" The funding will help expand the ARDK, which has already been used by companies like Coachella, Historic Royal Palaces, Universal Pictures, SoftBank, Warner Music Group and the PGA of America to create augmented reality experiences.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from TechCrunch: Niantic, the augmented reality platform that's developing games like Pokemon GO, raised $300 million from Coatue, valuing the company at $9 billion. The San Fransisco-based startup, which initially spun out of Google, will use this money to build what it calls the \"real-world metaverse.\" As early as August, Niantic founder and CEO John Hanke has referred to the metaverse -- at least, the one that renders us bound to VR headsets, like in \"Ready Player One\" -- as a \"dystopian nightmare.\"\n \nUnlike Facebook, which changed its company name to Meta to signal its investment in VR technology, Niantic wants to develop technology that brings people closer to the outside world. Earlier this month, Niantic unveiled its Lightship AR Developer Kit (ARDK), which makes tools to develop AR games publicly available for free to anyone who has a basic knowledge of the Unity game engine. \"At Niantic, we believe humans are the happiest when their virtual world leads them to a physical one,\" Hanke said at the time. \"Unlike a sci-fi metaverse, a real-world metaverse will use technology to improve our experience of the world as we've known it for thousands of years.\" The funding will help expand the ARDK, which has already been used by companies like Coachella, Historic Royal Palaces, Universal Pictures, SoftBank, Warner Music Group and the PGA of America to create augmented reality experiences.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/technologie-dans-la-plus-grande-usine-du-monde-de-sequestration-du-co2", - "creator": "", - "pubDate": "Tue, 02 Nov 2021 06:03:30 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://news.slashdot.org/story/21/11/23/0122259/niantic-raises-300-million-at-9-billion-valuation-to-build-the-real-world-metaverse?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T13:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le Japon dit enfin adieu à la disquette", - "description": "Sony n’en produit plus, elles sont difficiles à trouver en magasin. Et pourtant, les bonnes vieilles disquettes sont toujours utilisées par certaines entreprises et collectivités territoriales du Japon. Qui, en 2021, lancent enfin leur modernisation numérique. Les explications de la presse japonaise.", - "content": "Sony n’en produit plus, elles sont difficiles à trouver en magasin. Et pourtant, les bonnes vieilles disquettes sont toujours utilisées par certaines entreprises et collectivités territoriales du Japon. Qui, en 2021, lancent enfin leur modernisation numérique. Les explications de la presse japonaise.", + "title": "Apple Users Cancel Spotify Over Lack of HomePod Support", + "description": "Long-time Slashdot reader tlhIngan writes: We know Spotify has many complaints about Apple, specifically how Apple Music competes with Spotify. This has resulted in many complaints about unfair competition from Spotify, enough to bring about the scrutiny of European regulators. However, it appears Spotify might be the architect of their own complaints, from not supporting AirPlay 2 (which they rapidly backtracked on due to customer complaints), to now, not supporting the HomePod natively.\n \nApple introduced third-party support for the HomePod, which allows the speaker to natively play audio from streaming services without requiring an iOS device. Most notably, when the list of providers supporting the feature was announced by Apple, Spotify was conspicuously absent. Now Apple users are demanding Spotify add support for HomePod or they are switching to Apple Music.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Long-time Slashdot reader tlhIngan writes: We know Spotify has many complaints about Apple, specifically how Apple Music competes with Spotify. This has resulted in many complaints about unfair competition from Spotify, enough to bring about the scrutiny of European regulators. However, it appears Spotify might be the architect of their own complaints, from not supporting AirPlay 2 (which they rapidly backtracked on due to customer complaints), to now, not supporting the HomePod natively.\n \nApple introduced third-party support for the HomePod, which allows the speaker to natively play audio from streaming services without requiring an iOS device. Most notably, when the list of providers supporting the feature was announced by Apple, Spotify was conspicuously absent. Now Apple users are demanding Spotify add support for HomePod or they are switching to Apple Music.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/anachronisme-le-japon-dit-enfin-adieu-la-disquette", - "creator": "", - "pubDate": "Mon, 01 Nov 2021 17:26:58 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://entertainment.slashdot.org/story/21/11/23/0057228/apple-users-cancel-spotify-over-lack-of-homepod-support?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T10:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Après le burger sans viande, les œufs végétaux", - "description": "Vendredi 29 octobre, une entreprise suisse a dit avoir conçu le premier œuf dur végétal au monde. Le journal Le Temps raconte comment ce marché représente le nouveau terrain de chasse des géants de l’agroalimentaire.", - "content": "Vendredi 29 octobre, une entreprise suisse a dit avoir conçu le premier œuf dur végétal au monde. Le journal Le Temps raconte comment ce marché représente le nouveau terrain de chasse des géants de l’agroalimentaire.", + "title": "Cancer Cells Use 'Tiny Tentacles' To Suck Mitochondria Out of Immune Cells", + "description": "Hmmmmmm shares a report from SciTechDaily: Investigators from Brigham and Women's Hospital and MIT used the power of nanotechnology to discover a new way that cancer can disarm its would-be cellular attackers by extending out nanoscale tentacles that can reach into an immune cell and pull out its powerpack. Slurping out the immune cell's mitochondria powers up the cancer cell and depletes the immune cell. The new findings, published in Nature Nanotechnology, could lead to new targets for developing the next generation of immunotherapy against cancer.\n \nTo investigate how cancer cells and immune cells interact at the nanoscale level, [corresponding author Shiladitya Sengupta, PhD, and co-director of the Brigham's Center for Engineered Therapeutics] and colleagues set up experiments in which they co-cultured breast cancer cells and immune cells, such as T cells. Using field-emission scanning electron microscopy, they caught a glimpse of something unusual: Cancer cells and immune cells appeared to be physically connected by tiny tendrils, with widths mostly in the 100-1000 nanometer range. (For comparison, a human hair is approximately 80,000 to 100,000 nanometers). In some cases, the nanotubes came together to form thicker tubes. The team then stained mitochondria -- which provide energy for cells -- from the T cells with a fluorescent dye and watched as bright green mitochondria were pulled out of the immune cells, through the nanotubes, and into the cancer cells.\n \n\"By carefully preserving the cell culture condition and observing intracellular structures, we saw these delicate nanotubes and they were stealing the immune cells' energy source,\" said co-corresponding author Hae Lin Jang, PhD, a principal investigator in the Center for Engineered Therapeutics. \"It was very exciting because this kind of behavior had never been observed before in cancer cells. This was a tough project as the nanotubes are fragile and we had to handle the cells very gently to not break them.\" The researchers then looked to see what would happen if they prevented the cancer cells from hijacking mitochondria. When they injected an inhibitor of nanotube formation into mouse models used for studying lung cancer and breast cancer, they saw a significant reduction in tumor growth.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Hmmmmmm shares a report from SciTechDaily: Investigators from Brigham and Women's Hospital and MIT used the power of nanotechnology to discover a new way that cancer can disarm its would-be cellular attackers by extending out nanoscale tentacles that can reach into an immune cell and pull out its powerpack. Slurping out the immune cell's mitochondria powers up the cancer cell and depletes the immune cell. The new findings, published in Nature Nanotechnology, could lead to new targets for developing the next generation of immunotherapy against cancer.\n \nTo investigate how cancer cells and immune cells interact at the nanoscale level, [corresponding author Shiladitya Sengupta, PhD, and co-director of the Brigham's Center for Engineered Therapeutics] and colleagues set up experiments in which they co-cultured breast cancer cells and immune cells, such as T cells. Using field-emission scanning electron microscopy, they caught a glimpse of something unusual: Cancer cells and immune cells appeared to be physically connected by tiny tendrils, with widths mostly in the 100-1000 nanometer range. (For comparison, a human hair is approximately 80,000 to 100,000 nanometers). In some cases, the nanotubes came together to form thicker tubes. The team then stained mitochondria -- which provide energy for cells -- from the T cells with a fluorescent dye and watched as bright green mitochondria were pulled out of the immune cells, through the nanotubes, and into the cancer cells.\n \n\"By carefully preserving the cell culture condition and observing intracellular structures, we saw these delicate nanotubes and they were stealing the immune cells' energy source,\" said co-corresponding author Hae Lin Jang, PhD, a principal investigator in the Center for Engineered Therapeutics. \"It was very exciting because this kind of behavior had never been observed before in cancer cells. This was a tough project as the nanotubes are fragile and we had to handle the cells very gently to not break them.\" The researchers then looked to see what would happen if they prevented the cancer cells from hijacking mitochondria. When they injected an inhibitor of nanotube formation into mouse models used for studying lung cancer and breast cancer, they saw a significant reduction in tumor growth.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/veganisme-apres-le-burger-sans-viande-les-oeufs-vegetaux", - "creator": "", - "pubDate": "Mon, 01 Nov 2021 17:21:08 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/23/012246/cancer-cells-use-tiny-tentacles-to-suck-mitochondria-out-of-immune-cells?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T07:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "On taxe bien l’alcool, pourquoi pas le carbone ?", - "description": "Et si la meilleure politique pour le climat consistait à prélever un impôt sur la pollution ? L’histoire de la taxe sur l’alcool aux États-Unis est à cet égard édifiante.", - "content": "Et si la meilleure politique pour le climat consistait à prélever un impôt sur la pollution ? L’histoire de la taxe sur l’alcool aux États-Unis est à cet égard édifiante.", + "title": "A Smart Artificial Pancreas Could Conquer Diabetes", + "description": "IEEE Spectrum reports on the progress being made to develop a \"smart artificial pancreas\" that senses blood glucose and administers insulin accordingly. An anonymous reader shares an excerpt from the report: The artificial pancreas is finally at hand. This is a machine that senses any change in blood glucose and directs a pump to administer either more or less insulin, a task that may be compared to the way a thermostat coupled to an HVAC system controls the temperature of a house. All commercial artificial pancreas systems are still \"hybrid,\" meaning that users are required to estimate the carbohydrates in a meal they're about to consume and thus assist the system with glucose control. Nevertheless, the artificial pancreas is a triumph of biotechnology.\n \nIt is a triumph of hope, as well. We well remember a morning in late December of 2005, when experts in diabetes technology and bioengineering gathered in the Lister Hill Auditorium at the National Institutes of Health in Bethesda, Md. By that point, existing technology enabled people with diabetes to track their blood glucose levels and use those readings to estimate the amount of insulin they needed. The problem was how to remove human intervention from the equation. A distinguished scientist took the podium and explained that biology's glucose-regulation mechanism was far too complex to be artificially replicated. [Boris Kovatchev, a scientist at the University of Virginia, director of the UVA Center for Diabetes Technology, and a principal investigator of the JDRF Artificial Pancreas Project] and his colleagues disagreed, and after 14 years of work they were able to prove the scientist wrong.\n \nIt was yet another confirmation of Arthur Clarke's First Law: \"When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.\" [...] Progress toward better automatic control will be gradual; we anticipate a smooth transition from hybrid to full autonomy, when the patient never intervenes. Work is underway on using faster-acting insulins that are now in clinical trials. Perhaps one day it will make sense to implant the artificial pancreas within the abdominal cavity, where the insulin can be fed directly into the bloodstream, for still faster action. What comes next? Well, what else seems impossible today?

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "IEEE Spectrum reports on the progress being made to develop a \"smart artificial pancreas\" that senses blood glucose and administers insulin accordingly. An anonymous reader shares an excerpt from the report: The artificial pancreas is finally at hand. This is a machine that senses any change in blood glucose and directs a pump to administer either more or less insulin, a task that may be compared to the way a thermostat coupled to an HVAC system controls the temperature of a house. All commercial artificial pancreas systems are still \"hybrid,\" meaning that users are required to estimate the carbohydrates in a meal they're about to consume and thus assist the system with glucose control. Nevertheless, the artificial pancreas is a triumph of biotechnology.\n \nIt is a triumph of hope, as well. We well remember a morning in late December of 2005, when experts in diabetes technology and bioengineering gathered in the Lister Hill Auditorium at the National Institutes of Health in Bethesda, Md. By that point, existing technology enabled people with diabetes to track their blood glucose levels and use those readings to estimate the amount of insulin they needed. The problem was how to remove human intervention from the equation. A distinguished scientist took the podium and explained that biology's glucose-regulation mechanism was far too complex to be artificially replicated. [Boris Kovatchev, a scientist at the University of Virginia, director of the UVA Center for Diabetes Technology, and a principal investigator of the JDRF Artificial Pancreas Project] and his colleagues disagreed, and after 14 years of work they were able to prove the scientist wrong.\n \nIt was yet another confirmation of Arthur Clarke's First Law: \"When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.\" [...] Progress toward better automatic control will be gradual; we anticipate a smooth transition from hybrid to full autonomy, when the patient never intervenes. Work is underway on using faster-acting insulins that are now in clinical trials. Perhaps one day it will make sense to implant the artificial pancreas within the abdominal cavity, where the insulin can be fed directly into the bloodstream, for still faster action. What comes next? Well, what else seems impossible today?

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/crise-climatique-taxe-bien-lalcool-pourquoi-pas-le-carbone", - "creator": "", - "pubDate": "Mon, 01 Nov 2021 05:44:48 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/23/0049207/a-smart-artificial-pancreas-could-conquer-diabetes?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T03:30:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "À Miami, les riches Latino-Américains se ruent sur l’immobilier", - "description": "Les crises sociales, les bouleversements politiques, la pandémie de Covid-19 ont provoqué un important afflux d’investisseurs des pays d’Amérique latine dans des biens immobiliers de la capitale de la Floride. Nouveauté : ils achètent souvent pour en faire leur résidence principale et télétravailler.", - "content": "Les crises sociales, les bouleversements politiques, la pandémie de Covid-19 ont provoqué un important afflux d’investisseurs des pays d’Amérique latine dans des biens immobiliers de la capitale de la Floride. Nouveauté : ils achètent souvent pour en faire leur résidence principale et télétravailler.", + "title": "Rare Einstein Manuscript Set To Fetch Millions", + "description": "A rare manuscript by theoretical physicist Albert Einstein goes under the hammer in Paris on Tuesday, with auctioneers aiming for a stratospheric price tag. Phys.Org reports: The manuscript, containing preparatory work for Einstein's key achievement the theory of relativity, is estimated at between two and three million euros (2.3-3.4 million), according to Christie's which is hosting the sale on behalf of the Aguttes auction house. \"This is without a doubt the most valuable Einstein manuscript ever to come to auction,\" Christie's said in a statement.\n \nThe 54-page document was handwritten in 1913 and 1914 in Zurich, Switzerland, by Einstein and his colleague and confidant, Swiss engineer Michele Besso. Christie's said it was thanks to Besso that the manuscript was preserved for posterity. This was \"almost like a miracle\" since the German-born genius himself would have been unlikely to hold on to what he considered to be a simple working document, Christie's said. Today, the paper offers \"a fascinating plunge into the the mind of the 20th century's greatest scientist,\" it said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "A rare manuscript by theoretical physicist Albert Einstein goes under the hammer in Paris on Tuesday, with auctioneers aiming for a stratospheric price tag. Phys.Org reports: The manuscript, containing preparatory work for Einstein's key achievement the theory of relativity, is estimated at between two and three million euros (2.3-3.4 million), according to Christie's which is hosting the sale on behalf of the Aguttes auction house. \"This is without a doubt the most valuable Einstein manuscript ever to come to auction,\" Christie's said in a statement.\n \nThe 54-page document was handwritten in 1913 and 1914 in Zurich, Switzerland, by Einstein and his colleague and confidant, Swiss engineer Michele Besso. Christie's said it was thanks to Besso that the manuscript was preserved for posterity. This was \"almost like a miracle\" since the German-born genius himself would have been unlikely to hold on to what he considered to be a simple working document, Christie's said. Today, the paper offers \"a fascinating plunge into the the mind of the 20th century's greatest scientist,\" it said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/tendance-miami-les-riches-latino-americains-se-ruent-sur-limmobilier", - "creator": "", - "pubDate": "Sun, 31 Oct 2021 13:49:12 +0100", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", + "link": "https://science.slashdot.org/story/21/11/23/0037216/rare-einstein-manuscript-set-to-fetch-millions?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T02:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "À Rome, le G20 approuve une taxation des multinationales “qui bénéficiera aux pays riches”", - "description": "En ouvrant le sommet du G20 ce 30 octobre, le chef du gouvernement italien Mario Draghi a invité à relancer le multilatéralisme pour répondre aux défis mondiaux. Dans la foulée, les dirigeants ont donné leur “bénédiction” à un taux d’imposition minimal des grandes entreprises. Ce dernier représente une victoire pour Joe Biden et pour les pays riches, observe la presse étrangère.\n\n\n ", - "content": "En ouvrant le sommet du G20 ce 30 octobre, le chef du gouvernement italien Mario Draghi a invité à relancer le multilatéralisme pour répondre aux défis mondiaux. Dans la foulée, les dirigeants ont donné leur “bénédiction” à un taux d’imposition minimal des grandes entreprises. Ce dernier représente une victoire pour Joe Biden et pour les pays riches, observe la presse étrangère.\n\n\n ", + "title": "Rooftop Solar Helps Send South Australia Grid To Zero Demand In World's First", + "description": "South Australia on Sunday became the first gigawatt scale grid in the world to reach zero demand when the combined output of rooftop solar and other small non-scheduled generators exceeded all the local customer load requirements. Renew Economy reports: The landmark event was observed by several energy analysts, including at Watt Clarity and NEMLog, where Geoff Eldridge noted that a number of measures for South Australia demand notched up record minimums for system normal conditions. It was later confirmed by the Australian Energy Market Operator, which noted that \"scheduled\" demand -- local demand minus the output of rooftop solar and small unscheduled generators such as small solar farms and bio-energy -- fell to minus 38MW in a five minute period at 1235pm (grid time, or AEST).\n \nMinimum demand is now possibly the biggest challenge for market operators like AEMO, because under current market settings it needs to have a certain amount of synchronous generation to maintain system strength and grid stability. It does this by running a minimum amount of gas generation, and through the recent commissioning of spinning machines called synchronous condensers that do not burn fuel. It also needs a link to a neighboring grid, in this case Victoria, so it can export surplus production.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "South Australia on Sunday became the first gigawatt scale grid in the world to reach zero demand when the combined output of rooftop solar and other small non-scheduled generators exceeded all the local customer load requirements. Renew Economy reports: The landmark event was observed by several energy analysts, including at Watt Clarity and NEMLog, where Geoff Eldridge noted that a number of measures for South Australia demand notched up record minimums for system normal conditions. It was later confirmed by the Australian Energy Market Operator, which noted that \"scheduled\" demand -- local demand minus the output of rooftop solar and small unscheduled generators such as small solar farms and bio-energy -- fell to minus 38MW in a five minute period at 1235pm (grid time, or AEST).\n \nMinimum demand is now possibly the biggest challenge for market operators like AEMO, because under current market settings it needs to have a certain amount of synchronous generation to maintain system strength and grid stability. It does this by running a minimum amount of gas generation, and through the recent commissioning of spinning machines called synchronous condensers that do not burn fuel. It also needs a link to a neighboring grid, in this case Victoria, so it can export surplus production.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.courrierinternational.com/article/fiscalite-rome-le-g20-approuve-une-taxation-des-multinationales-qui-beneficiera-aux-pays", - "creator": "", - "pubDate": "Sat, 30 Oct 2021 16:19:38 +0200", - "folder": "00.03 News/News - FR", - "feed": "Courier International - Eco", - "read": true, + "link": "https://hardware.slashdot.org/story/21/11/23/0032249/rooftop-solar-helps-send-south-australia-grid-to-zero-demand-in-worlds-first?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T01:25:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - FR", - "name": "Courier International - Eco" - }, - "15": { - "title": "Le Monde.fr - Actualités et Infos en France et dans le monde", - "subtitle": "", - "link": "https://www.lemonde.fr/rss/en_continu.xml", - "image": null, - "description": "Le Monde.fr - 1er site d’information. Les articles du journal et toute l’actualité en continu : International, France, Société, Economie, Culture, Environnement, Blogs ...", - "items": [ + }, { - "title": "Ligue 1 : Ben Yedder répond à David et permet à Monaco de prendre un point contre Lille", - "description": "Monaco et Lille n’ont pu se départager (2-2) vendredi soir au stade Louis-II, lors du match d’ouverture de la 14e journée de Ligue 1.", - "content": "Monaco et Lille n’ont pu se départager (2-2) vendredi soir au stade Louis-II, lors du match d’ouverture de la 14e journée de Ligue 1.", + "title": "Rolls-Royce's All-Electric Airplane Reached a Record 387.4 MPH Top Speed", + "description": "Rolls-Royce has announced that its all-electric plane, dubbed the \"Spirit of Innovation,\" is the fastest of its kind in the world after it reached a maximum speed of 387.4 mph (623 k/h) in recent flight tests. Gizmodo reports: In a recent news release, the company, not to be mistaken for the car company owned by BMW, claimed that the Spirit of Innovation set three new world records earlier this week. On flight tests carried out on Nov. 16, Rolls-Royce said its aircraft reached a top speed of 345.4 mph (555.9 km/h) over 1.8 miles (3 kilometers), exceeding the current record by 132 mph (213 k/h). It broke another record in a subsequent 9.3-mile (15 kilometer) flight, during which it reached 330 mph (532.1 km/h), surpassing the current record by 182 mph (292.8 km/h).\n \nThe Spirit of Innovation didn't stop there, though. Rolls-Royce affirms that it smashed another record when it reached 9,842.5 feet (3,000 meters) in 202 seconds, beating the current record by 60 seconds. In the company's view, it also took the title of the world's fastest all-electric vehicle when it reached a maximum speed of 387.4 mph (623 km/h) during its flight tests. The company's aircraft is powered by a 400kW electric powertrain and \"the most power-dense propulsion battery pack ever assembled in aerospace.\" \"Following the world's focus on the need for action at COP26, this is another milestone that will help make 'jet zero' a reality and supports our ambitions to deliver the technology breakthroughs society needs to decarbonize transport across air, land and sea,\" CEO Warren East said in the news release.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Rolls-Royce has announced that its all-electric plane, dubbed the \"Spirit of Innovation,\" is the fastest of its kind in the world after it reached a maximum speed of 387.4 mph (623 k/h) in recent flight tests. Gizmodo reports: In a recent news release, the company, not to be mistaken for the car company owned by BMW, claimed that the Spirit of Innovation set three new world records earlier this week. On flight tests carried out on Nov. 16, Rolls-Royce said its aircraft reached a top speed of 345.4 mph (555.9 km/h) over 1.8 miles (3 kilometers), exceeding the current record by 132 mph (213 k/h). It broke another record in a subsequent 9.3-mile (15 kilometer) flight, during which it reached 330 mph (532.1 km/h), surpassing the current record by 182 mph (292.8 km/h).\n \nThe Spirit of Innovation didn't stop there, though. Rolls-Royce affirms that it smashed another record when it reached 9,842.5 feet (3,000 meters) in 202 seconds, beating the current record by 60 seconds. In the company's view, it also took the title of the world's fastest all-electric vehicle when it reached a maximum speed of 387.4 mph (623 km/h) during its flight tests. The company's aircraft is powered by a 400kW electric powertrain and \"the most power-dense propulsion battery pack ever assembled in aerospace.\" \"Following the world's focus on the need for action at COP26, this is another milestone that will help make 'jet zero' a reality and supports our ambitions to deliver the technology breakthroughs society needs to decarbonize transport across air, land and sea,\" CEO Warren East said in the news release.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/sport/article/2021/11/19/ligue-1-ben-yedder-repond-a-david-et-permet-a-monaco-de-prendre-un-point-contre-lille_6102898_3242.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 23:43:42 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", - "read": true, + "link": "https://hardware.slashdot.org/story/21/11/23/0027259/rolls-royces-all-electric-airplane-reached-a-record-3874-mph-top-speed?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T00:45:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Militants d’ultradroite arrêtés : un homme mis en examen pour provocation à un acte de terrorisme", - "description": "Les suspects avaient été interpellés, mardi, après des discussions sur une messagerie cryptée pour « des achats d’armes ». Le deuxième homme, qui dit ne pas appartenir à la mouvance d’ultradroite, est poursuivi pour vente illégale d’armes de chasse.", - "content": "Les suspects avaient été interpellés, mardi, après des discussions sur une messagerie cryptée pour « des achats d’armes ». Le deuxième homme, qui dit ne pas appartenir à la mouvance d’ultradroite, est poursuivi pour vente illégale d’armes de chasse.", + "title": "Qualcomm Has an Exclusivity Deal With Microsoft For Windows On ARM", + "description": "An anonymous reader quotes a report from XDA Developers: Last week, we reported that MediaTek is planning to build a chipset for Windows on ARM. As it turns out, the Windows on ARM chipset space could be even hotter than that, because there's a reason that we've only seen Qualcomm SoCs in ARM PCs so far. Qualcomm actually has an exclusivity deal with Microsoft for Windows on ARM, and speaking with people familiar with it, we've learned that the deal is set to expire soon. Other than the fact that Microsoft has publicly said that anyone who wants to can build a Windows on ARM chip, this really shouldn't come as a surprise. Qualcomm didn't just start building PC chips hoping that Microsoft would compile Windows to support it. No, these two companies worked together to make it happen. Because of that, Qualcomm gets to enjoy a bit of exclusivity.\n \nOne thing I wasn't able to learn is when the deal will expire, only that it's the thing holding back other chip vendors from competing in the space. It's possible that Samsung might want to throw its hat into the ring with its Exynos processors too, especially given its recent partnership with AMD for graphics power. This is also presumably why Apple Silicon Macs aren't officially supported for running Windows 11, so hopefully that will change as well. [...] Between MediaTek's Executive Summit and Qualcomm's Investor Day, there's been a very clear message that ARM SoC vendors absolutely believe that the 'Wintel' partnership is going to fade and that the transition to ARM isn't just happening, it's inevitable. Naturally, that means that all of these companies are going to want to be part of it when it opens up. Qualcomm has quite a head start though, given that it's been doing this for a few years and on top of that, it's going to start building its own custom silicon thanks to its Nuvia acquisition.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from XDA Developers: Last week, we reported that MediaTek is planning to build a chipset for Windows on ARM. As it turns out, the Windows on ARM chipset space could be even hotter than that, because there's a reason that we've only seen Qualcomm SoCs in ARM PCs so far. Qualcomm actually has an exclusivity deal with Microsoft for Windows on ARM, and speaking with people familiar with it, we've learned that the deal is set to expire soon. Other than the fact that Microsoft has publicly said that anyone who wants to can build a Windows on ARM chip, this really shouldn't come as a surprise. Qualcomm didn't just start building PC chips hoping that Microsoft would compile Windows to support it. No, these two companies worked together to make it happen. Because of that, Qualcomm gets to enjoy a bit of exclusivity.\n \nOne thing I wasn't able to learn is when the deal will expire, only that it's the thing holding back other chip vendors from competing in the space. It's possible that Samsung might want to throw its hat into the ring with its Exynos processors too, especially given its recent partnership with AMD for graphics power. This is also presumably why Apple Silicon Macs aren't officially supported for running Windows 11, so hopefully that will change as well. [...] Between MediaTek's Executive Summit and Qualcomm's Investor Day, there's been a very clear message that ARM SoC vendors absolutely believe that the 'Wintel' partnership is going to fade and that the transition to ARM isn't just happening, it's inevitable. Naturally, that means that all of these companies are going to want to be part of it when it opens up. Qualcomm has quite a head start though, given that it's been doing this for a few years and on top of that, it's going to start building its own custom silicon thanks to its Nuvia acquisition.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/militants-d-ultradroite-arretes-un-homme-mis-en-examen-pour-provocation-a-un-acte-de-terrorisme_6102897_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 22:59:25 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/22/2137229/qualcomm-has-an-exclusivity-deal-with-microsoft-for-windows-on-arm?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-23T00:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, - "created": true, + "created": false, "tags": [] }, { - "title": "La préfecture interdit la circulation entre 18 heures et 5 heures, dès vendredi soir, « compte tenu des mouvements sociaux en cours […] et des actes de vandalisme ».", - "description": "La préfecture interdit la circulation dans le département entre 18 heures et 5 heures, dès vendredi soir, « compte tenu des mouvements sociaux en cours dans le département et des actes de vandalisme ».", - "content": "La préfecture interdit la circulation dans le département entre 18 heures et 5 heures, dès vendredi soir, « compte tenu des mouvements sociaux en cours dans le département et des actes de vandalisme ».", + "title": "Adele Gets Spotify To Take Shuffle Button Off All Album Pages", + "description": "Adele has persuaded Spotify to take the shuffle button off all album pages so tracks play in the artist's own order. The BBC reports: The singer tweeted: \"We don't create albums with so much care and thought into our track listing for no reason. Our art tells a story and our stories should be listened to as we intended. Thank you Spotify for listening.\" The streaming service replied \"anything for you\". A statement later hailed their \"new premium feature... to make play the default button on all albums.\" A Spotify spokesperson said they were \"excited\" to be rolling out the feature which was \"long requested by both users and artists.\" The spokesperson said Spotify users could still choose to shuffle an album, but the system would default to playing tracks in the order chosen by the artist. \"As always, we will continue to iterate our products and features to create the best experiences for both artists and their fans,\" the statement concluded.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Adele has persuaded Spotify to take the shuffle button off all album pages so tracks play in the artist's own order. The BBC reports: The singer tweeted: \"We don't create albums with so much care and thought into our track listing for no reason. Our art tells a story and our stories should be listened to as we intended. Thank you Spotify for listening.\" The streaming service replied \"anything for you\". A statement later hailed their \"new premium feature... to make play the default button on all albums.\" A Spotify spokesperson said they were \"excited\" to be rolling out the feature which was \"long requested by both users and artists.\" The spokesperson said Spotify users could still choose to shuffle an album, but the system would default to playing tracks in the order chosen by the artist. \"As always, we will continue to iterate our products and features to create the best experiences for both artists and their fans,\" the statement concluded.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/violences-urbaines-en-guadeloupe-200-policiers-et-gendarmes-envoyes-en-renfort_6102842_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:13:52 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://entertainment.slashdot.org/story/21/11/22/2132229/adele-gets-spotify-to-take-shuffle-button-off-all-album-pages?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-22T23:20:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Kyle Rittenhouse, accusé du meurtre de deux manifestants en marge de manifestations antiracistes aux Etats-Unis, a été acquitté", - "description": "Le jeune homme de 18 ans, qui encourait la réclusion à perpétuité, avait plaidé la légitime défense dans ce dossier révélateur des fractures de l’Amérique sur les armes à feu, l’autodéfense et le mouvement antiraciste Black Lives Matter.", - "content": "Le jeune homme de 18 ans, qui encourait la réclusion à perpétuité, avait plaidé la légitime défense dans ce dossier révélateur des fractures de l’Amérique sur les armes à feu, l’autodéfense et le mouvement antiraciste Black Lives Matter.", + "title": "Gizmodo Is Making the Facebook Papers Public", + "description": " Gizmodo says it will be making the \"Facebook Papers\" public, becoming the first media outlet to do so. These documents were leaked to U.S. regulators by a Facebook whistleblower earlier this year and \"reveal that the social media giant has privately and meticulously tracked real-world harms exacerbated by its platforms,\" reports the Washington Post. Yet it also reports that at the same time Facebook \"ignored warnings from its employees about the risks of their design decisions and exposed vulnerable communities around the world to a cocktail of dangerous content.\" Gizmodo explains how and why they're making this move: We believe there's a strong public need in making as many of the documents public as possible, as quickly as possible. To that end, we've partnered with a small group of independent monitors, who are joining us to establish guidelines for an accountable review of the documents prior to publication. The mission is to minimize any costs to individuals' privacy or the furtherance of other harms while ensuring the responsible disclosure of the greatest amount of information in the public interest. The committee includes [experts from NYU, Mass Amherst, Columbia, Marquette, and the ACLU]. While our group is itself largely American, our first decision was to require local experts when reviewing any document focused on another country. One of the committee's chief responsibilities is to vet local experts to work alongside our reviewers.\n \n[...] Beyond privacy reasons, the documents require additional review to ensure that we aren't just handing criminals and spies a roadmap for undermining what controls Facebook does have in place to defend against propaganda that spreads lies, hate, and fear. That would undermine any benefit the world stands to reap from this act of whistleblower justice. Our work is just beginning, but we're eager to release our first batch of documents as soon as possible. To get the ball rolling, the first release will likely consist mostly of documents that warrant the least amount of inspection. To learn more, check back for updates at the top of this article in the coming days.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": " Gizmodo says it will be making the \"Facebook Papers\" public, becoming the first media outlet to do so. These documents were leaked to U.S. regulators by a Facebook whistleblower earlier this year and \"reveal that the social media giant has privately and meticulously tracked real-world harms exacerbated by its platforms,\" reports the Washington Post. Yet it also reports that at the same time Facebook \"ignored warnings from its employees about the risks of their design decisions and exposed vulnerable communities around the world to a cocktail of dangerous content.\" Gizmodo explains how and why they're making this move: We believe there's a strong public need in making as many of the documents public as possible, as quickly as possible. To that end, we've partnered with a small group of independent monitors, who are joining us to establish guidelines for an accountable review of the documents prior to publication. The mission is to minimize any costs to individuals' privacy or the furtherance of other harms while ensuring the responsible disclosure of the greatest amount of information in the public interest. The committee includes [experts from NYU, Mass Amherst, Columbia, Marquette, and the ACLU]. While our group is itself largely American, our first decision was to require local experts when reviewing any document focused on another country. One of the committee's chief responsibilities is to vet local experts to work alongside our reviewers.\n \n[...] Beyond privacy reasons, the documents require additional review to ensure that we aren't just handing criminals and spies a roadmap for undermining what controls Facebook does have in place to defend against propaganda that spreads lies, hate, and fear. That would undermine any benefit the world stands to reap from this act of whistleblower justice. Our work is just beginning, but we're eager to release our first batch of documents as soon as possible. To get the ball rolling, the first release will likely consist mostly of documents that warrant the least amount of inspection. To learn more, check back for updates at the top of this article in the coming days.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/kyle-rittenhouse-accuse-du-meurtre-de-deux-manifestants-aux-etats-unis-a-ete-acquitte_6102892_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 20:22:01 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/22/2119222/gizmodo-is-making-the-facebook-papers-public?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-22T22:40:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Anne Hidalgo juge « faisable » sa proposition de doubler le salaire des enseignants sur le quinquennat", - "description": "En déplacement en banlieue parisienne, la candidate du Parti socialiste est revenue sur ses propositions au sujet des deux thèmes centraux de sa campagne, la santé et l’éducation.", - "content": "En déplacement en banlieue parisienne, la candidate du Parti socialiste est revenue sur ses propositions au sujet des deux thèmes centraux de sa campagne, la santé et l’éducation.", + "title": "India Police Charge Amazon Execs In Alleged Marijuana Smuggling Case", + "description": "An anonymous reader quotes a report from Reuters: Indian police said on Saturday they had charged senior executives of Amazon.com's local unit under narcotics laws in a case of alleged marijuana smuggling via the online retailer. Police in the central Madhya Pradesh state arrested two men with 20 kg of marijuana on Nov. 14 and found they were using the Amazon India website to order and further smuggle the substance in the guise of stevia leaves, a natural sweetener, to other Indian states.\n \nState police said in a statement that executive directors of Amazon India were being named as accused under the Narcotic Drugs and Psychotropic Substances Act due to differences in answers in documents provided by the company in response to police questions and facts unearthed by discussion. Police did not disclose how many executives were charged. The police, who had previously summoned and spoken to Amazon executives in the case, estimate that about 1,000 kg of marijuana, worth roughly $148,000, was sold via Amazon.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from Reuters: Indian police said on Saturday they had charged senior executives of Amazon.com's local unit under narcotics laws in a case of alleged marijuana smuggling via the online retailer. Police in the central Madhya Pradesh state arrested two men with 20 kg of marijuana on Nov. 14 and found they were using the Amazon India website to order and further smuggle the substance in the guise of stevia leaves, a natural sweetener, to other Indian states.\n \nState police said in a statement that executive directors of Amazon India were being named as accused under the Narcotic Drugs and Psychotropic Substances Act due to differences in answers in documents provided by the company in response to police questions and facts unearthed by discussion. Police did not disclose how many executives were charged. The police, who had previously summoned and spoken to Amazon executives in the case, estimate that about 1,000 kg of marijuana, worth roughly $148,000, was sold via Amazon.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/anne-hidalgo-juge-faisable-sa-proposition-de-doubler-le-salaire-des-enseignants-sur-le-quinquennat_6102889_6059010.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 20:03:20 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://yro.slashdot.org/story/21/11/22/2129249/india-police-charge-amazon-execs-in-alleged-marijuana-smuggling-case?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-22T22:00:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Election présidentielle 2022 : Xavier Bertrand et Emmanuel Macron en désaccord sur le cas Ascoval", - "description": "Au cours d’un déplacement du président de la République dans l’Aisne, le candidat à l’investiture à droite a interpellé le chef de l’Etat au sujet de l’avenir de l’aciérie située dans le Nord.", - "content": "Au cours d’un déplacement du président de la République dans l’Aisne, le candidat à l’investiture à droite a interpellé le chef de l’Etat au sujet de l’avenir de l’aciérie située dans le Nord.", + "title": "Attackers Don't Bother Brute-forcing Long Passwords, Microsoft Engineer Says", + "description": "According to data collected by Microsoft's network of honeypot servers, most brute-force attackers primarily attempt to guess short passwords, with very few attacks targeting credentials that are either long or contain complex characters. From a report: \"I analysed the credentials entered from over -- million brute force attacks against SSH. This is around 30 days of data in Microsoft's sensor network,\" said Ross Bevington, a security researcher at Microsoft. \"77% of attempts used a password between 1 and 7 characters. A password over 10 characters was only seen in 6% of cases,\" said Bevington, who works as Head of Deception at Microsoft, a position in which he's tasked with creating legitimate-looking honeypot systems in order to study attacker trends.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "According to data collected by Microsoft's network of honeypot servers, most brute-force attackers primarily attempt to guess short passwords, with very few attacks targeting credentials that are either long or contain complex characters. From a report: \"I analysed the credentials entered from over -- million brute force attacks against SSH. This is around 30 days of data in Microsoft's sensor network,\" said Ross Bevington, a security researcher at Microsoft. \"77% of attempts used a password between 1 and 7 characters. A password over 10 characters was only seen in 6% of cases,\" said Bevington, who works as Head of Deception at Microsoft, a position in which he's tasked with creating legitimate-looking honeypot systems in order to study attacker trends.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/je-veux-sauver-cette-usine-vous-aussi-echange-tendu-entre-xavier-bertrand-et-emmanuel-macron-sur-l-acierie-ascoval_6102887_6059010.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:48:40 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://it.slashdot.org/story/21/11/22/2036243/attackers-dont-bother-brute-forcing-long-passwords-microsoft-engineer-says?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T21:23:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Photomontage d’un groupuscule d’extrême droite : enquête ouverte pour menaces de mort", - "description": "Les investigations ont été confiées à l’Office central de lutte contre les crimes contre l’humanité, qui compte une division de lutte contre les crimes de haine.", - "content": "Les investigations ont été confiées à l’Office central de lutte contre les crimes contre l’humanité, qui compte une division de lutte contre les crimes de haine.", + "title": "Crypto.com Naming Agreement 'Paid for Itself' After Coin Surges", + "description": "Crypto.com's deal last week to replace Staples as the title sponsor of an iconic downtown Los Angeles sports center appears to have already paid for itself. From a report: The CRO token has surged more than 55% in the past seven days as of Monday and reached a record on Sunday, according to pricing from CoinGecko, and is now the 13th-biggest by market capitalization at about $18 billion. Its gains come as many other top cryptocurrencies, including Bitcoin, Ether and Binance Coin, fall back. Two people familiar with the naming agreement said last week that it was worth $700 million over 20 years. The deal is a continuation of a trend by Crypto.com and others to gain name recognition and customers through pacts in sports, music and more.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Crypto.com's deal last week to replace Staples as the title sponsor of an iconic downtown Los Angeles sports center appears to have already paid for itself. From a report: The CRO token has surged more than 55% in the past seven days as of Monday and reached a record on Sunday, according to pricing from CoinGecko, and is now the 13th-biggest by market capitalization at about $18 billion. Its gains come as many other top cryptocurrencies, including Bitcoin, Ether and Binance Coin, fall back. Two people familiar with the naming agreement said last week that it was worth $700 million over 20 years. The deal is a continuation of a trend by Crypto.com and others to gain name recognition and customers through pacts in sports, music and more.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/photomontage-d-un-groupuscule-d-extreme-droite-enquete-ouverte-pour-menaces-de-mort_6102885_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:45:48 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/22/2031216/cryptocom-naming-agreement-paid-for-itself-after-coin-surges?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T20:45:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Qualcomm is Updating Its Snapdragon Branding To Try and Simplify Its Chip Names", + "description": "Qualcomm has announced some key changes to how it brands its Snapdragon chips, including a shift away from the three-digit numbering system it's been using to differentiate between its products for years. From a report: To start, Snapdragon will now exist as a standalone brand, separate from the \"Qualcomm\" brand (which won't be showing up as much on its chips). It's a direction the company has started moving in earlier this year (the Snapdragon 888 Plus badge, for example, notably lacked the word \"Qualcomm\"), but today's news solidifies that plan going forward. But the biggest change might be in how the company handles actually naming its semiconductor products. \n\nFor years, Qualcomm has labeled its chips with three-digit names, like the Snapdragon 480, Snapdragon 765, or Snapdragon 888. The first number broadly informed customers how powerful the chip was (with the 8-series chips serving as flagships, while 4-series models were for entry-level products). The second number typically indicated annual generational releases (going from a Snapdragon 865 to an 875), while changes in the third number generally showed more minor updates (like the Snapdragon 765G to the Snapdragon 768G). The problem, though, is that in addition to being slightly jargony and confusing to keep track of, Qualcomm is also simply running out of numbers in its naming scheme. The 8-series lineup hit Snapdragon 888 last year, the 7-series is already at Snapdragon 780, and the 6-series is already on the brink with the Snapdragon 695. Going forward, though, Qualcomm says that it'll be shifting to \"a single-digit series and generation number, aligning with other product categories,\" starting with the upcoming announcement of its next 8-series flagship (which had previously been expected to be called the Snapdragon 898, based on Qualcomm's old pattern).

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Qualcomm has announced some key changes to how it brands its Snapdragon chips, including a shift away from the three-digit numbering system it's been using to differentiate between its products for years. From a report: To start, Snapdragon will now exist as a standalone brand, separate from the \"Qualcomm\" brand (which won't be showing up as much on its chips). It's a direction the company has started moving in earlier this year (the Snapdragon 888 Plus badge, for example, notably lacked the word \"Qualcomm\"), but today's news solidifies that plan going forward. But the biggest change might be in how the company handles actually naming its semiconductor products. \n\nFor years, Qualcomm has labeled its chips with three-digit names, like the Snapdragon 480, Snapdragon 765, or Snapdragon 888. The first number broadly informed customers how powerful the chip was (with the 8-series chips serving as flagships, while 4-series models were for entry-level products). The second number typically indicated annual generational releases (going from a Snapdragon 865 to an 875), while changes in the third number generally showed more minor updates (like the Snapdragon 765G to the Snapdragon 768G). The problem, though, is that in addition to being slightly jargony and confusing to keep track of, Qualcomm is also simply running out of numbers in its naming scheme. The 8-series lineup hit Snapdragon 888 last year, the 7-series is already at Snapdragon 780, and the 6-series is already on the brink with the Snapdragon 695. Going forward, though, Qualcomm says that it'll be shifting to \"a single-digit series and generation number, aligning with other product categories,\" starting with the upcoming announcement of its next 8-series flagship (which had previously been expected to be called the Snapdragon 898, based on Qualcomm's old pattern).

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "category": "", + "link": "https://hardware.slashdot.org/story/21/11/22/207226/qualcomm-is-updating-its-snapdragon-branding-to-try-and-simplify-its-chip-names?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T20:07:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pologne : comment le piège biélorusse s’est refermé sur des milliers de migrants", - "description": "Des vidéos tournées à la frontière entre la Pologne et la Biélorussie, authentifiées par « Le Monde », permettent de retracer les huit jours qui ont vu des milliers de migrants tomber dans le piège tendu pour faire pression sur l’UE.", - "content": "Des vidéos tournées à la frontière entre la Pologne et la Biélorussie, authentifiées par « Le Monde », permettent de retracer les huit jours qui ont vu des milliers de migrants tomber dans le piège tendu pour faire pression sur l’UE.", + "title": "Meta Delays Encrypted Messages on Facebook and Instagram To 2023", + "description": "The owner of Facebook and Instagram is delaying plans to encrypt users' messages until 2023 amid warnings from child safety campaigners that its proposals would shield abusers from detection. From a report: Mark Zuckerberg's social media empire has been under pressure to abandon its encryption plans, which the UK home secretary, Priti Patel, has described as \"simply not acceptable.\" The National Society for the Prevention of Cruelty to Children (NSPCC) has said private messaging is the \"frontline of child sexual abuse online\" because it prevents law enforcement, and tech platforms, from seeing messages by ensuring that only the sender and recipient can view their content -- a process known as end-to-end encryption. The head of safety at Facebook and Instagram's parent company, Meta, announced that the encryption process would take place in 2023. The company had previously said the change would happen in 2022 at the earliest. \n\n\"We're taking our time to get this right and we don't plan to finish the global rollout of end-to-end encryption by default across all our messaging services until sometime in 2023,\" Antigone Davis wrote in the Sunday Telegraph. \"As a company that connects billions of people around the world and has built industry-leading technology, we're determined to protect people's private communications and keep people safe online.\" Meta already uses end-to-end encryption on its WhatsApp messaging service and had been planning to extend that to its Messenger and Instagram apps in 2022. It has already encrypted voice and video calls on Messenger. Announcing the privacy drive in 2019, Zuckerberg, said: \"People expect their private communications to be secure and to only be seen by the people they've sent them to -- not hackers, criminals, over-reaching governments or even the people operating the services they're using.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The owner of Facebook and Instagram is delaying plans to encrypt users' messages until 2023 amid warnings from child safety campaigners that its proposals would shield abusers from detection. From a report: Mark Zuckerberg's social media empire has been under pressure to abandon its encryption plans, which the UK home secretary, Priti Patel, has described as \"simply not acceptable.\" The National Society for the Prevention of Cruelty to Children (NSPCC) has said private messaging is the \"frontline of child sexual abuse online\" because it prevents law enforcement, and tech platforms, from seeing messages by ensuring that only the sender and recipient can view their content -- a process known as end-to-end encryption. The head of safety at Facebook and Instagram's parent company, Meta, announced that the encryption process would take place in 2023. The company had previously said the change would happen in 2022 at the earliest. \n\n\"We're taking our time to get this right and we don't plan to finish the global rollout of end-to-end encryption by default across all our messaging services until sometime in 2023,\" Antigone Davis wrote in the Sunday Telegraph. \"As a company that connects billions of people around the world and has built industry-leading technology, we're determined to protect people's private communications and keep people safe online.\" Meta already uses end-to-end encryption on its WhatsApp messaging service and had been planning to extend that to its Messenger and Instagram apps in 2022. It has already encrypted voice and video calls on Messenger. Announcing the privacy drive in 2019, Zuckerberg, said: \"People expect their private communications to be secure and to only be seen by the people they've sent them to -- not hackers, criminals, over-reaching governments or even the people operating the services they're using.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/pologne-comment-le-piege-bielorusse-s-est-referme-sur-des-milliers-de-migrants_6102884_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:45:32 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/22/1914239/meta-delays-encrypted-messages-on-facebook-and-instagram-to-2023?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T19:24:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La loi pour demander « pardon » aux harkis indigne les harkis et leurs enfants", - "description": "Les réparations prévues par le texte voté par l’Assemblée nationale vont concerner seulement quelque 50 000 personnes parmi les 90 000 harkis qui ont fui l’Algérie, une « trahison » pour certains.", - "content": "Les réparations prévues par le texte voté par l’Assemblée nationale vont concerner seulement quelque 50 000 personnes parmi les 90 000 harkis qui ont fui l’Algérie, une « trahison » pour certains.", + "title": "Ridley Scott Confirms 'Blade Runner' and 'Alien' Live-action Shows", + "description": "While making the press rounds for his upcoming film, House of Gucci, iconic director Sir Ridley Scott revealed that both Blade Runner and Alien live-action television series are in the early stages of development. From a report: Speaking to the BBC news radio series, Today, Scott explained that his team has already written an initial pilot script for the former show, which would most likely air as a 10-episode run. Although the Alien series was first announced nearly a year ago as an FX on Hulu exclusive from showrunner Noah Hawley (Fargo and Legion), little has been heard of the project since then. Scott didn't tell much, but confirmed that the Alien series is still \"being written for pilot,\" adding that Hawley and his crew \"have to also write out the history, if it's eight hours or 10 hours, the bible of what happens in those 10 hours.\" A CGI anime set in the world of Agent K and Deckard in the year 2032, Blade Runner: Black Lotus, is currently airing on Adult Swim.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "While making the press rounds for his upcoming film, House of Gucci, iconic director Sir Ridley Scott revealed that both Blade Runner and Alien live-action television series are in the early stages of development. From a report: Speaking to the BBC news radio series, Today, Scott explained that his team has already written an initial pilot script for the former show, which would most likely air as a 10-episode run. Although the Alien series was first announced nearly a year ago as an FX on Hulu exclusive from showrunner Noah Hawley (Fargo and Legion), little has been heard of the project since then. Scott didn't tell much, but confirmed that the Alien series is still \"being written for pilot,\" adding that Hawley and his crew \"have to also write out the history, if it's eight hours or 10 hours, the bible of what happens in those 10 hours.\" A CGI anime set in the world of Agent K and Deckard in the year 2032, Blade Runner: Black Lotus, is currently airing on Adult Swim.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/politique/article/2021/11/19/la-loi-pour-demander-pardon-aux-harkis-indigne-les-harkis-et-leurs-enfants_6102883_823448.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 19:40:55 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://entertainment.slashdot.org/story/21/11/22/1837220/ridley-scott-confirms-blade-runner-and-alien-live-action-shows?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T18:45:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Enquête | Au Canada, l’horreur des pensionnats autochtones", - "description": "Jusqu’en 1996, le pays a arraché à leurs familles des enfants amérindiens pour les conduire dans des institutions catholiques. Beaucoup y ont subi des violences, y compris sexuelles, 6 000 en sont morts. Un génocide culturel pour lequel le pape pourrait présenter des excuses en décembre.", - "content": "Jusqu’en 1996, le pays a arraché à leurs familles des enfants amérindiens pour les conduire dans des institutions catholiques. Beaucoup y ont subi des violences, y compris sexuelles, 6 000 en sont morts. Un génocide culturel pour lequel le pape pourrait présenter des excuses en décembre.", + "title": "US Lawmakers Call for Privacy Legislation After Reuters Report on Amazon Lobbying", + "description": "Five members of Congress called for federal consumer-privacy legislation after a Reuters report published Friday revealed how Amazon has led an under-the-radar campaign to gut privacy protections in 25 states while amassing a valuable trove of personal data on American consumers. From a report: \"Amazon shamefully launched a campaign to squash privacy legislation while its devices listen to and watch our lives,\" U.S. Senator Richard Blumenthal, a Connecticut Democrat who has been involved in bipartisan negotiations on privacy legislation, wrote Friday on Twitter. \"This is now the classic Big Tech move: deploy money and armies of lobbyists to fight meaningful reforms in the shadows but claim to support them publicly.\" \n\nThe revelations underscored the need for bipartisan action on stronger privacy protections, he wrote. No major federal privacy legislation has passed Congress in years because members have been deadlocked on the issue. U.S. Senator Ron Wyden, an Oregon Democrat who has introduced several privacy bills in recent years, said in a statement that the Reuters story showed how companies including Amazon are \"spending millions to weaken state laws,\" and hoping Congress will also water down federal legislation \"until it's worthless.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Five members of Congress called for federal consumer-privacy legislation after a Reuters report published Friday revealed how Amazon has led an under-the-radar campaign to gut privacy protections in 25 states while amassing a valuable trove of personal data on American consumers. From a report: \"Amazon shamefully launched a campaign to squash privacy legislation while its devices listen to and watch our lives,\" U.S. Senator Richard Blumenthal, a Connecticut Democrat who has been involved in bipartisan negotiations on privacy legislation, wrote Friday on Twitter. \"This is now the classic Big Tech move: deploy money and armies of lobbyists to fight meaningful reforms in the shadows but claim to support them publicly.\" \n\nThe revelations underscored the need for bipartisan action on stronger privacy protections, he wrote. No major federal privacy legislation has passed Congress in years because members have been deadlocked on the issue. U.S. Senator Ron Wyden, an Oregon Democrat who has introduced several privacy bills in recent years, said in a statement that the Reuters story showed how companies including Amazon are \"spending millions to weaken state laws,\" and hoping Congress will also water down federal legislation \"until it's worthless.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/m-le-mag/article/2021/11/19/tuer-l-indien-au-c-ur-de-l-enfant-au-canada-les-pensionnats-de-l-horreur_6102637_4500055.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 02:38:09 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://news.slashdot.org/story/21/11/22/184200/us-lawmakers-call-for-privacy-legislation-after-reuters-report-on-amazon-lobbying?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T18:04:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Dans les stations de sports d’hiver, un optimisme prudent après un hiver sans télécabines", - "description": "Les réservations sont en léger repli par rapport à l’année 2019. Le retard se rattrape, mais la cinquième vague de Covid-19 entretient le doute, notamment sur la présence des étrangers.", - "content": "Les réservations sont en léger repli par rapport à l’année 2019. Le retard se rattrape, mais la cinquième vague de Covid-19 entretient le doute, notamment sur la présence des étrangers.", + "title": "Norway Is Running Out of Gas-Guzzling Cars To Tax", + "description": "When it comes to sales of electric cars, Norway is in a league of its own. In September, battery-powered electric vehicles accounted for 77.5 percent of all new cars sold. That figure makes Norway a world leader by a long way -- leapfrogging over the UK, where 15 percent of new car sales were electric as of October, and the US, where that number is just 2.6 percent. From a report: Norway's electric dream has been credited to a series of tax breaks and other financial carrots that mean brands like Tesla can compete on price with combustion engines. But these incentives -- and their success -- have created a unique predicament: Norway is running out of dirty cars to tax. \n\nIt's quite a big problem. The previous government -- a center-right coalition that was replaced by a center-left minority government in October -- estimated that the popularity of EVs was creating a 19.2 billion Norwegian krone ($2.32 billion) hole in the country's annual revenue. While EVs might be great news for the environment, their rapid success in Norway is now forcing some serious fiscal consternation. The road to this point has been long -- and offers lessons to other countries racing to ditch gas-guzzling combustion engines. In Norway, the most progressive electric vehicle policies in the world started with a pop group, an environmentalist, and a small red Fiat Panda. It was 1988 when activist Frederic Hauge, along with fellow green campaigners from the band A-ha, traveled to the Swiss city of Bern, where they found the red Fiat. A previous owner had converted the car to run off a lead battery, and the group planned to use the vehicle to persuade the Norwegian government to encourage electric vehicle uptake. \n\nThe Fiat became the centerpiece of a nine-year campaign in which Hauge and members of A-ha drove the car on Norway's toll roads without paying. The fines racked up, and when they remained unpaid, the vehicle would be impounded and sold at auction, where Hauge would buy it back and repeat the cycle of toll dodging. A-ha's celebrity members added glitz to the crusade against toll fees for EVs and Hauge -- who has led an environmental group called Bellona since 1986 -- courted press attention to demand incentives for electric cars. \"By being a positive vigilante, he made the media and also the politicians aware of the electric car,\" says Oyvind Solberg Thorsen, director of Norway's Road Traffic Information Council, which publishes statistics about the country's roads and vehicles.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "When it comes to sales of electric cars, Norway is in a league of its own. In September, battery-powered electric vehicles accounted for 77.5 percent of all new cars sold. That figure makes Norway a world leader by a long way -- leapfrogging over the UK, where 15 percent of new car sales were electric as of October, and the US, where that number is just 2.6 percent. From a report: Norway's electric dream has been credited to a series of tax breaks and other financial carrots that mean brands like Tesla can compete on price with combustion engines. But these incentives -- and their success -- have created a unique predicament: Norway is running out of dirty cars to tax. \n\nIt's quite a big problem. The previous government -- a center-right coalition that was replaced by a center-left minority government in October -- estimated that the popularity of EVs was creating a 19.2 billion Norwegian krone ($2.32 billion) hole in the country's annual revenue. While EVs might be great news for the environment, their rapid success in Norway is now forcing some serious fiscal consternation. The road to this point has been long -- and offers lessons to other countries racing to ditch gas-guzzling combustion engines. In Norway, the most progressive electric vehicle policies in the world started with a pop group, an environmentalist, and a small red Fiat Panda. It was 1988 when activist Frederic Hauge, along with fellow green campaigners from the band A-ha, traveled to the Swiss city of Bern, where they found the red Fiat. A previous owner had converted the car to run off a lead battery, and the group planned to use the vehicle to persuade the Norwegian government to encourage electric vehicle uptake. \n\nThe Fiat became the centerpiece of a nine-year campaign in which Hauge and members of A-ha drove the car on Norway's toll roads without paying. The fines racked up, and when they remained unpaid, the vehicle would be impounded and sold at auction, where Hauge would buy it back and repeat the cycle of toll dodging. A-ha's celebrity members added glitz to the crusade against toll fees for EVs and Hauge -- who has led an environmental group called Bellona since 1986 -- courted press attention to demand incentives for electric cars. \"By being a positive vigilante, he made the media and also the politicians aware of the electric car,\" says Oyvind Solberg Thorsen, director of Norway's Road Traffic Information Council, which publishes statistics about the country's roads and vehicles.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/dans-les-stations-de-sports-d-hiver-un-optimisme-prudent_6102872_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 18:52:39 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/22/1718211/norway-is-running-out-of-gas-guzzling-cars-to-tax?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T17:25:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Vaccin contre le Covid-19 : la Haute autorité de santé recommande une dose de rappel dès 40 ans", - "description": "La HAS a préconisé vendredi une dose de rappel aux personnes âgées de 40 ans et plus, six mois après leur primovaccination. Emmanuel Macron avait estimé dans la journée qu’il ne serait « pas étonné qu’on aille progressivement vers des rappels vaccinaux pour tous les adultes » déjà vaccinés contre le Covid-19.", - "content": "La HAS a préconisé vendredi une dose de rappel aux personnes âgées de 40 ans et plus, six mois après leur primovaccination. Emmanuel Macron avait estimé dans la journée qu’il ne serait « pas étonné qu’on aille progressivement vers des rappels vaccinaux pour tous les adultes » déjà vaccinés contre le Covid-19.", + "title": "China's Exiled Crypto Machines Fuel Global Mining Boom", + "description": "China's ban on cryptocurrency mining in May triggered an exodus of miners and a global race to relocate millions of the clunky, power intensive machines they use to solve complex puzzles and earn bitcoin. From a report: Fourteen of the biggest crypto mining companies in the world have moved more than 2m machines out of China in the months following the ban, according to data gathered by the Financial Times. The lion's share of machines was hastily moved to the US, Canada, Kazakhstan and Russia. Bit Digital, one of the largest US-listed crypto mining companies, hired an international logistics firm to extract its property from China and is still waiting for a batch of almost 1,000 machines to be released from the docks at the Port of New York. \n\n\"We started our fleet migration in March 2020, which in hindsight was a great move. When the ban was announced we had 20,000 miners in China,\" said Sam Tabar, chief strategy officer of Bit Digital. Still, the company said it had to abandon 372 machines in China, which had \"reached the end of their useful lives.\" Eight out of the 10 largest public mega farms based in North America have expanded the number of machines in their fleets since China's ban, the FT's figures show.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "China's ban on cryptocurrency mining in May triggered an exodus of miners and a global race to relocate millions of the clunky, power intensive machines they use to solve complex puzzles and earn bitcoin. From a report: Fourteen of the biggest crypto mining companies in the world have moved more than 2m machines out of China in the months following the ban, according to data gathered by the Financial Times. The lion's share of machines was hastily moved to the US, Canada, Kazakhstan and Russia. Bit Digital, one of the largest US-listed crypto mining companies, hired an international logistics firm to extract its property from China and is still waiting for a batch of almost 1,000 machines to be released from the docks at the Port of New York. \n\n\"We started our fleet migration in March 2020, which in hindsight was a great move. When the ban was announced we had 20,000 miners in China,\" said Sam Tabar, chief strategy officer of Bit Digital. Still, the company said it had to abandon 372 machines in China, which had \"reached the end of their useful lives.\" Eight out of the 10 largest public mega farms based in North America have expanded the number of machines in their fleets since China's ban, the FT's figures show.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/vaccin-contre-le-covid-19-la-haute-autorite-de-sante-preconise-une-dose-de-rappel-des-40-ans_6102860_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:54:00 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://slashdot.org/story/21/11/22/1658249/chinas-exiled-crypto-machines-fuel-global-mining-boom?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T16:43:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pilules anti-Covid : l’Agence européenne des médicaments approuve l’utilisation en cas d’urgence de celle de Merck, étudie celle de Pfizer", - "description": "Alors que l’Europe est redevenue l’épicentre de la pandémie de Covid-19, les deux traitements des géants pharmaceutiques américains sont très attendus. Les études indiquent qu’ils réduisent le risque d’hospitalisation et de décès chez les patients à risques.", - "content": "Alors que l’Europe est redevenue l’épicentre de la pandémie de Covid-19, les deux traitements des géants pharmaceutiques américains sont très attendus. Les études indiquent qu’ils réduisent le risque d’hospitalisation et de décès chez les patients à risques.", + "title": "WhatsApp Privacy Policy Tweaked in Europe After Record Fine", + "description": "WhatsApp is rewriting its privacy policy as a result of a huge data protection fine earlier this year. From a report: Following an investigation, the Irish data protection watchdog issued a $253.29m fine -- the second-largest in history over GDPR -- and ordered WhatsApp to change its policies. WhatsApp is appealing against the fine, but is amending its policy documents in Europe and the UK to comply. However, it insists that nothing about its actual service is changing. Instead, the tweaks are designed to \"add additional detail around our existing practices\", and will only appear in the European version of the privacy policy, which is already different from the version that applies in the rest of the world. \"There are no changes to our processes or contractual agreements with users, and users will not be required to agree to anything or to take any action in order to continue using WhatsApp,\" the company said, announcing the change. The new policy takes effect immediately. \n\nIn January, WhatsApp users complained about an update to the company's terms that many believed would result in data being shared with parent company Facebook, which is now called Meta. Many thought refusing to agree to the new terms and conditions would result in their accounts being blocked. In reality, very little had changed. However, WhatsApp was forced to delay its changes and spend months fighting the public perception to the contrary. During the confusion, millions of users downloaded WhatsApp competitors such as Signal.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "WhatsApp is rewriting its privacy policy as a result of a huge data protection fine earlier this year. From a report: Following an investigation, the Irish data protection watchdog issued a $253.29m fine -- the second-largest in history over GDPR -- and ordered WhatsApp to change its policies. WhatsApp is appealing against the fine, but is amending its policy documents in Europe and the UK to comply. However, it insists that nothing about its actual service is changing. Instead, the tweaks are designed to \"add additional detail around our existing practices\", and will only appear in the European version of the privacy policy, which is already different from the version that applies in the rest of the world. \"There are no changes to our processes or contractual agreements with users, and users will not be required to agree to anything or to take any action in order to continue using WhatsApp,\" the company said, announcing the change. The new policy takes effect immediately. \n\nIn January, WhatsApp users complained about an update to the company's terms that many believed would result in data being shared with parent company Facebook, which is now called Meta. Many thought refusing to agree to the new terms and conditions would result in their accounts being blocked. In reality, very little had changed. However, WhatsApp was forced to delay its changes and spend months fighting the public perception to the contrary. During the confusion, millions of users downloaded WhatsApp competitors such as Signal.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/pilules-anti-covid-l-agence-europeenne-des-medicaments-approuve-l-utilisation-en-cas-d-urgence-de-celle-de-merck-etudie-celle-de-pfizer_6102858_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:51:10 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://yro.slashdot.org/story/21/11/22/1611249/whatsapp-privacy-policy-tweaked-in-europe-after-record-fine?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T16:03:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L’Autriche va autoriser le suicide assisté", - "description": "Le gouvernement écolo-conservateur devait présenter au Parlement un projet de loi sur le « droit de mettre fin à sa vie » sans provoquer de remous, en dépit du poids de l’Eglise catholique dans le pays.", - "content": "Le gouvernement écolo-conservateur devait présenter au Parlement un projet de loi sur le « droit de mettre fin à sa vie » sans provoquer de remous, en dépit du poids de l’Eglise catholique dans le pays.", + "title": "GoDaddy Security Breach Exposes WordPress Users' Data", + "description": "Web hosting company GoDaddy said on Monday email addresses of up to 1.2 million active and inactive Managed WordPress customers had been exposed in an unauthorized third-party access. From a report: The company said the incident was discovered on Sept. 6 and the third-party accessed the system using a compromised password.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Web hosting company GoDaddy said on Monday email addresses of up to 1.2 million active and inactive Managed WordPress customers had been exposed in an unauthorized third-party access. From a report: The company said the incident was discovered on Sept. 6 and the third-party accessed the system using a compromised password.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/l-autriche-va-autoriser-le-suicide-assiste_6102855_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:38:56 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://it.slashdot.org/story/21/11/22/1523234/godaddy-security-breach-exposes-wordpress-users-data?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T15:24:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L’imam de Saint-Chamond menacé d’expulsion pour des propos « contraires aux valeurs et aux lois de la République » lors d’un prêche", - "description": "Convoqué en juillet par la préfecture de la Loire, l’imam de Saint-Chamond a reçu une obligation de quitter le territoire.", - "content": "Convoqué en juillet par la préfecture de la Loire, l’imam de Saint-Chamond a reçu une obligation de quitter le territoire.", + "title": "The Next Generation of Gaming Didn't Actually Arrive With Xbox Series X and PS5", + "description": "A year ago, the next generation of console gaming was supposed to have arrived. The Xbox Series X (and Series S) and PlayStation 5 strode boldly onto the scene, with massive chassis and even bigger promises of games with better graphics, shorter loading times, and revolutionary new breakthroughs. But a year in, and that next generation of gaming has yet to arrive. From a report: There are still too few consoles, and more importantly, too few games that truly take advantage of them, leaving the first year of the PS5 and Xbox Series X more of a beta test for the lucky few who have been able to get ahold of one, rather than the proper start of a new era of gaming. \n\nA complicated mess of factors have led to the next-gen bottleneck. The physical consoles themselves are still nigh-impossible to buy, which naturally limits the number of customers who own them and can buy games for them. That in turn means that there's little incentive for developers to aim for exclusive next-gen titles that truly harness the power of the PS5 or Xbox Series X. Why limit yourself (and your sales) to the handful of next-gen console owners when there are millions of Xbox One and PS4 customers to whom you can sell copies of games? Adding to the mess has been the fact that industry-wide delays (many of which are due to similar pandemic-related issues as the broader supply chain problems) have also seen tons of next-gen optimized or exclusive games moved out to 2022 and beyond. Meaning even if you can get ahold of a console, there are still relatively few blockbuster titles to actually play on them.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "A year ago, the next generation of console gaming was supposed to have arrived. The Xbox Series X (and Series S) and PlayStation 5 strode boldly onto the scene, with massive chassis and even bigger promises of games with better graphics, shorter loading times, and revolutionary new breakthroughs. But a year in, and that next generation of gaming has yet to arrive. From a report: There are still too few consoles, and more importantly, too few games that truly take advantage of them, leaving the first year of the PS5 and Xbox Series X more of a beta test for the lucky few who have been able to get ahold of one, rather than the proper start of a new era of gaming. \n\nA complicated mess of factors have led to the next-gen bottleneck. The physical consoles themselves are still nigh-impossible to buy, which naturally limits the number of customers who own them and can buy games for them. That in turn means that there's little incentive for developers to aim for exclusive next-gen titles that truly harness the power of the PS5 or Xbox Series X. Why limit yourself (and your sales) to the handful of next-gen console owners when there are millions of Xbox One and PS4 customers to whom you can sell copies of games? Adding to the mess has been the fact that industry-wide delays (many of which are due to similar pandemic-related issues as the broader supply chain problems) have also seen tons of next-gen optimized or exclusive games moved out to 2022 and beyond. Meaning even if you can get ahold of a console, there are still relatively few blockbuster titles to actually play on them.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/l-imam-de-saint-chamond-et-sa-femme-menaces-d-expulsion_6102854_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:32:39 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://games.slashdot.org/story/21/11/22/1447246/the-next-generation-of-gaming-didnt-actually-arrive-with-xbox-series-x-and-ps5?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T14:43:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Joe Biden a transféré ses pouvoirs à Kamala Harris le temps d’une coloscopie", - "description": "L’examen se déroulant sous anesthésie générale, les prérogatives présidentielles ont été confiées à la vice-présidente, comme l’exige la Constitution, pendant une heure et vingt-cinq minutes.", - "content": "L’examen se déroulant sous anesthésie générale, les prérogatives présidentielles ont été confiées à la vice-présidente, comme l’exige la Constitution, pendant une heure et vingt-cinq minutes.", + "title": "The Metaverse, Crypto and EVs Are Among 2021's Big Tech Winners", + "description": "When Americans gather around the Thanksgiving table this week, the blistering rally in technology, electric vehicles and crypto-related stocks is likely to be a part of their conversations. From a report: There's a reason it will dominate the small talk: The tech-heavy Nasdaq 100 is now worth almost half as much as the benchmark S&P 500 -- the highest ever -- and the megacap tech stocks alone represent a third of the S&P 500. Nvidia and Roblox's sprint stood out in a year when the rest of the big tech names jogged to new highs, defying several calls to sell the sector around last year's thanksgiving due to soaring valuations. \n\nChipmaker Nvidia has soared 148% as booming chip demand and a foray into the metaverse made it the best performer on the Nasdaq 100. Applied Materials and Advanced Micro Devices were other winners, each rising about 80% and outperforming many of the megacap tech stocks. Tesla soared to a $1 trillion market value as the electric-carmaker's shares doubled in value, driven by a sustained pickup in sales, even as part shortages were crippling the broader auto industry. EV fever was even more evident with Rivian Automotive, which doubled in value in less than two weeks after going public. Lucid Group was the sector's other hot name. Roblox's tripling of value from its March listing to Facebook's name change to Meta Platforms showed the metaverse was the next big thing in tech. The rush to the space was evident with the Roundhill Ball Metaverse ETF, an exchange traded fund focused on the theme, surpassing $500 million in assets under management on Nov. 17, having doubled in just two weeks. From the digital world to digital money: Bitcoin briefly reclaiming $60,000 and a rally in smaller cryptocurrencies boosted a host of related stocks such as Marathon Digital Holdings, Riot Blockchain and MicroStrategy. Marathon Digital was among the top winners, with its stock jumping ten-fold.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "When Americans gather around the Thanksgiving table this week, the blistering rally in technology, electric vehicles and crypto-related stocks is likely to be a part of their conversations. From a report: There's a reason it will dominate the small talk: The tech-heavy Nasdaq 100 is now worth almost half as much as the benchmark S&P 500 -- the highest ever -- and the megacap tech stocks alone represent a third of the S&P 500. Nvidia and Roblox's sprint stood out in a year when the rest of the big tech names jogged to new highs, defying several calls to sell the sector around last year's thanksgiving due to soaring valuations. \n\nChipmaker Nvidia has soared 148% as booming chip demand and a foray into the metaverse made it the best performer on the Nasdaq 100. Applied Materials and Advanced Micro Devices were other winners, each rising about 80% and outperforming many of the megacap tech stocks. Tesla soared to a $1 trillion market value as the electric-carmaker's shares doubled in value, driven by a sustained pickup in sales, even as part shortages were crippling the broader auto industry. EV fever was even more evident with Rivian Automotive, which doubled in value in less than two weeks after going public. Lucid Group was the sector's other hot name. Roblox's tripling of value from its March listing to Facebook's name change to Meta Platforms showed the metaverse was the next big thing in tech. The rush to the space was evident with the Roundhill Ball Metaverse ETF, an exchange traded fund focused on the theme, surpassing $500 million in assets under management on Nov. 17, having doubled in just two weeks. From the digital world to digital money: Bitcoin briefly reclaiming $60,000 and a rally in smaller cryptocurrencies boosted a host of related stocks such as Marathon Digital Holdings, Riot Blockchain and MicroStrategy. Marathon Digital was among the top winners, with its stock jumping ten-fold.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/joe-biden-va-transferer-ses-pouvoirs-a-kamala-harris-le-temps-d-une-coloscopie_6102852_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:22:21 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/22/1419246/the-metaverse-crypto-and-evs-are-among-2021s-big-tech-winners?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-22T14:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Election présidentielle 2022 : Les Républicains font le plein, Emmanuel Macron face aux maires… le récap’ politique de la semaine", - "description": "Le parti de droite a bouclé, cette semaine, sa campagne d’adhésions en perspective de la nomination de son candidat à l’Elysée. David Lisnard a été élu président de l’AMF et a reçu le président de la République, jeudi, en clotûre du congrès des maires.", - "content": "Le parti de droite a bouclé, cette semaine, sa campagne d’adhésions en perspective de la nomination de son candidat à l’Elysée. David Lisnard a été élu président de l’AMF et a reçu le président de la République, jeudi, en clotûre du congrès des maires.", + "title": "FAA Memo Reveals More New Boeing 787 Manufacturing Defects", + "description": "The Seattle Times reports:\n\nThe litany of manufacturing defects on the 787 Dreamliner is expanding as Boeing engineers take apart planes and discover new or more widespread issues, a Federal Aviation Administration internal memo indicates. The FAA memo, which was circulated internally Monday and reviewed by The Seattle Times, points to new concerns about a previously unreported defect caused by contamination of the carbon fiber composite material during fabrication of the large structures that make up the 787's wing, fuselage and tail. The memo also adds detail about the small out-of-tolerance gaps that have been discovered throughout the airplane structure: at the joins of the large fuselage sections, at a forward pressure bulkhead and in the structure surrounding the passenger and cargo doors. The FAA memo, which lists safety conditions affecting airplanes currently in service worldwide, states that these tiny gap defects are thought to be present in more than 1,000 Dreamliners. \n\nThese are not considered an immediate safety concern but could cause premature aging of the airframe. \n\nBloomberg reports these delays may hamper Boeing's efforts to pay down its $62 billion debt:\n\nBoeing is working to find and repair tiny structural imperfections about the width of a piece of paper in the carbon-fiber aircraft while addressing quality lapses among suppliers and their subcontractors. Both issues came to light as the Chicago-based planemaker did a deep dive in its factories and production system in the wake of two fatal crashes of its 737 Max... A Boeing spokesman wouldn't confirm a Wall Street Journal report Friday that deliveries aren't likely to restart until February or March... For each manufacturing glitch that strays from its design specifications, Boeing has to file a so-called notice of escapement with the FAA that evaluates the problem, recommends a fix and provides an engineering analysis to back up its finding. The company is still working through those notices, along with a broader inspection regimen for the 787, according to people familiar with the situation. \n\nThere are about 20 locations on Dreamliners where potential quality breaches have been identified, said one of the people, who asked not to be identified discussing a confidential matter. At a Boeing fabrication plant in South Carolina, for example, mechanics are inspecting the area surrounding doors at the rear of the aircraft for tiny gaps, one of the people said. Dreamliners continue to roll off the line in North Charleston at a slow rate of two planes a month, the person said. Conducting the inspections can be time consuming and costly since, in some areas of the plane, workers have to tear out passenger cabins to gain access... \n\nThe planemaker had initially requested permission to inspect a handful of planes and, if they passed, use its regimen for the rest of the undelivered aircraft, the people said. The FAA rejected that plan, and company and the regulator haven't yet agreed on an appropriate level of inspections, said one of the people.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The Seattle Times reports:\n\nThe litany of manufacturing defects on the 787 Dreamliner is expanding as Boeing engineers take apart planes and discover new or more widespread issues, a Federal Aviation Administration internal memo indicates. The FAA memo, which was circulated internally Monday and reviewed by The Seattle Times, points to new concerns about a previously unreported defect caused by contamination of the carbon fiber composite material during fabrication of the large structures that make up the 787's wing, fuselage and tail. The memo also adds detail about the small out-of-tolerance gaps that have been discovered throughout the airplane structure: at the joins of the large fuselage sections, at a forward pressure bulkhead and in the structure surrounding the passenger and cargo doors. The FAA memo, which lists safety conditions affecting airplanes currently in service worldwide, states that these tiny gap defects are thought to be present in more than 1,000 Dreamliners. \n\nThese are not considered an immediate safety concern but could cause premature aging of the airframe. \n\nBloomberg reports these delays may hamper Boeing's efforts to pay down its $62 billion debt:\n\nBoeing is working to find and repair tiny structural imperfections about the width of a piece of paper in the carbon-fiber aircraft while addressing quality lapses among suppliers and their subcontractors. Both issues came to light as the Chicago-based planemaker did a deep dive in its factories and production system in the wake of two fatal crashes of its 737 Max... A Boeing spokesman wouldn't confirm a Wall Street Journal report Friday that deliveries aren't likely to restart until February or March... For each manufacturing glitch that strays from its design specifications, Boeing has to file a so-called notice of escapement with the FAA that evaluates the problem, recommends a fix and provides an engineering analysis to back up its finding. The company is still working through those notices, along with a broader inspection regimen for the 787, according to people familiar with the situation. \n\nThere are about 20 locations on Dreamliners where potential quality breaches have been identified, said one of the people, who asked not to be identified discussing a confidential matter. At a Boeing fabrication plant in South Carolina, for example, mechanics are inspecting the area surrounding doors at the rear of the aircraft for tiny gaps, one of the people said. Dreamliners continue to roll off the line in North Charleston at a slow rate of two planes a month, the person said. Conducting the inspections can be time consuming and costly since, in some areas of the plane, workers have to tear out passenger cabins to gain access... \n\nThe planemaker had initially requested permission to inspect a handful of planes and, if they passed, use its regimen for the rest of the undelivered aircraft, the people said. The FAA rejected that plan, and company and the regulator haven't yet agreed on an appropriate level of inspections, said one of the people.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/election-presidentielle-2022-la-droite-fait-le-plein-d-adhesions-les-maires-et-macron-le-recap-politique-de-la-semaine_6102847_6059010.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 17:00:16 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/22/0327234/faa-memo-reveals-more-new-boeing-787-manufacturing-defects?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "EditorDavid", + "pubDate": "2021-11-22T12:34:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le Parlement vote une loi pour mieux piloter les dépenses publiques", - "description": "A partir de 2022, les objectifs de dépenses devront être précisés et un débat sur la dette aura lieu chaque année.", - "content": "A partir de 2022, les objectifs de dépenses devront être précisés et un débat sur la dette aura lieu chaque année.", + "title": "Sci-Hub: Researchers File Intervention Application To Fight ISP Blocking", + "description": "Last December, academic publishers Elsevier, Wiley, and American Chemical Society filed a lawsuit demanding that Indian ISPs block access to Sci-Hub and Libgen for copyright infringement. The ongoing case now includes an intervention application from a group of social science researchers who say that blocking the platforms would result in a great societal loss to the country. TorrentFreak reports: Assisted and represented by the Delhi-based Internet Freedom Foundation (IFF), a group of social science researchers affiliated with universities across Delhi has now filed an intervention application that aims to educate the High Court on the negative implications of ordering local ISPs to block the platforms. \"In the application, they have demonstrated the importance of the LibGen and Sci-Hub in enabling them to continue with research and discharge professional obligations,\" IFF explains. \"They have submitted that they cannot access countless essays/books/articles because of the exorbitant rates the publishers charge for them and that these publishers own more than 50% of the total output in social science research. The only way in which they can access these resources is by relying upon LibGen and Sci-Hub. Moreover, LibGen and Sci-Hub offer access to up-to-date research which is unavailable elsewhere.\"\n \nThe social science researchers also draw attention to the publishers' \"prohibitive pricing\" models that place a serious burden on the publicly-funded academic institutions where they conduct their research. They further note that, to the best of their knowledge, individual users who rely on Sci-Hub and Libgen have not dented the profits of the publishers. \"The profit margins of the [publishers] are much higher than those of enterprises in other industries such as oil, medicines and technology. Thus, the Plaintiffs' plea of blocking [Sci-Hub and Libgen] only serves their self-interest of increasing their coffers without benefitting society,\" their application reads. \"In fact, granting the Plaintiffs' reliefs will have a detrimental impact on the social science research undertaken in India and the careers of the Applicants and those they represent before this Hon'ble Court. The unavailability of the Defendant Websites will also stunt the academic growth of the nation.\"\n \nAfter highlighting the risks to society should the Court authorize blocking, the researchers turn to the legality of doing so. They believe that while the publishers own the copyrights to the articles, the use of those articles is allowed under India's Copyright Act, at least under certain conditions. [...] Finally, the researchers say they are contesting any blocking injunction on the basis that it would be overbroad. They note that the publishers are not seeking the removal of specific infringing content but the blocking of entire websites in perpetuity. They argue that there are less restrictive measures available and these should have been sought first, rather than going directly for complete blocking of Sci-Hub and Libgen. Before issuing any blocking order, they also ask the court to consider Article 19(1) that recognizes the fundamental right to access information.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Last December, academic publishers Elsevier, Wiley, and American Chemical Society filed a lawsuit demanding that Indian ISPs block access to Sci-Hub and Libgen for copyright infringement. The ongoing case now includes an intervention application from a group of social science researchers who say that blocking the platforms would result in a great societal loss to the country. TorrentFreak reports: Assisted and represented by the Delhi-based Internet Freedom Foundation (IFF), a group of social science researchers affiliated with universities across Delhi has now filed an intervention application that aims to educate the High Court on the negative implications of ordering local ISPs to block the platforms. \"In the application, they have demonstrated the importance of the LibGen and Sci-Hub in enabling them to continue with research and discharge professional obligations,\" IFF explains. \"They have submitted that they cannot access countless essays/books/articles because of the exorbitant rates the publishers charge for them and that these publishers own more than 50% of the total output in social science research. The only way in which they can access these resources is by relying upon LibGen and Sci-Hub. Moreover, LibGen and Sci-Hub offer access to up-to-date research which is unavailable elsewhere.\"\n \nThe social science researchers also draw attention to the publishers' \"prohibitive pricing\" models that place a serious burden on the publicly-funded academic institutions where they conduct their research. They further note that, to the best of their knowledge, individual users who rely on Sci-Hub and Libgen have not dented the profits of the publishers. \"The profit margins of the [publishers] are much higher than those of enterprises in other industries such as oil, medicines and technology. Thus, the Plaintiffs' plea of blocking [Sci-Hub and Libgen] only serves their self-interest of increasing their coffers without benefitting society,\" their application reads. \"In fact, granting the Plaintiffs' reliefs will have a detrimental impact on the social science research undertaken in India and the careers of the Applicants and those they represent before this Hon'ble Court. The unavailability of the Defendant Websites will also stunt the academic growth of the nation.\"\n \nAfter highlighting the risks to society should the Court authorize blocking, the researchers turn to the legality of doing so. They believe that while the publishers own the copyrights to the articles, the use of those articles is allowed under India's Copyright Act, at least under certain conditions. [...] Finally, the researchers say they are contesting any blocking injunction on the basis that it would be overbroad. They note that the publishers are not seeking the removal of specific infringing content but the blocking of entire websites in perpetuity. They argue that there are less restrictive measures available and these should have been sought first, rather than going directly for complete blocking of Sci-Hub and Libgen. Before issuing any blocking order, they also ask the court to consider Article 19(1) that recognizes the fundamental right to access information.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/politique/article/2021/11/19/le-parlement-vote-une-loi-pour-mieux-piloter-les-depenses-publiques_6102846_823448.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 16:53:28 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://yro.slashdot.org/story/21/11/19/217244/sci-hub-researchers-file-intervention-application-to-fight-isp-blocking?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-19T22:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Vaccination contre le Covid-19 : aux Etats-Unis, les autorités sanitaires donnent un premier feu vert à une troisième dose pour tous les adultes", - "description": "L’approbation de l’agence américaine des médicaments (FDA) doit être validée par le comité indépendant d’experts en vaccins des Centers for Disease Control and Prevention.", - "content": "L’approbation de l’agence américaine des médicaments (FDA) doit être validée par le comité indépendant d’experts en vaccins des Centers for Disease Control and Prevention.", + "title": "Rockstar Admits GTA Remasters 'Did Not Meet Our Own Standards of Quality'", + "description": "Rockstar has issued an apology for the \"unexpected technical issues\" that marred the release of Grand Theft Auto: The Trilogy - The Definitive Edition last week and led to the quick removal of the PC version from Rockstar's online store. From a report: Last week, Rockstar said that the PC version of the game was being taken down \"as we remove files unintentionally included in these versions.\" That led to reports that the package included copies of original soundtrack songs that had not been re-licensed for the new release. Other reports suggested that the original package accidentally included uncompiled source code and revealed some interesting programmer comments, including references to the infamous \"hot coffee\" scene that caused the game so much controversy back in 2005. Today, though, the developer admitted in a blog post that \"the updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect.\" \n\nWe noted some of the remaster's many issues in our initial impressions, which recommended that you skip the bundle for now. Since then, players have chronicled countless bugs and questionable \"remastering\" decisions. Those range from disturbing textures to eye-searing rainfall to hilariously broken cutscenes to car-inflating wiggles to odd-looking character models and plain old typos that weren't in the original game.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Rockstar has issued an apology for the \"unexpected technical issues\" that marred the release of Grand Theft Auto: The Trilogy - The Definitive Edition last week and led to the quick removal of the PC version from Rockstar's online store. From a report: Last week, Rockstar said that the PC version of the game was being taken down \"as we remove files unintentionally included in these versions.\" That led to reports that the package included copies of original soundtrack songs that had not been re-licensed for the new release. Other reports suggested that the original package accidentally included uncompiled source code and revealed some interesting programmer comments, including references to the infamous \"hot coffee\" scene that caused the game so much controversy back in 2005. Today, though, the developer admitted in a blog post that \"the updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect.\" \n\nWe noted some of the remaster's many issues in our initial impressions, which recommended that you skip the bundle for now. Since then, players have chronicled countless bugs and questionable \"remastering\" decisions. Those range from disturbing textures to eye-searing rainfall to hilariously broken cutscenes to car-inflating wiggles to odd-looking character models and plain old typos that weren't in the original game.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/covid-19-la-fda-autorise-une-troisieme-dose-de-vaccin-pour-tous-les-adultes-americains_6102825_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:31:27 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://it.slashdot.org/story/21/11/19/2117227/rockstar-admits-gta-remasters-did-not-meet-our-own-standards-of-quality?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T21:40:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Mort de Mick Rock, photographe des stars du rock des années 1970", - "description": "Il a été le photographe de l’ère Ziggy Stardust de David Bowie. Il a aussi créé des illustrations pour des albums-clés de Lou Reed, des Stooges, des Ramones ou de Queen.", - "content": "Il a été le photographe de l’ère Ziggy Stardust de David Bowie. Il a aussi créé des illustrations pour des albums-clés de Lou Reed, des Stooges, des Ramones ou de Queen.", + "title": "CDC Panel Unanimously Endorses Pfizer and Moderna Covid Boosters For All US Adults", + "description": "An anonymous reader quotes a report from CNBC: The CDC's independent panel of vaccine scientists unanimously endorsed Pfizer and Moderna's boosters for all adults, one of the final regulatory steps before the U.S. can officially start distributing the doses. The Advisory Committee on Immunization Practices voted to recommend the shots. The Food and Drug Administration authorized both company's vaccine boosters for everyone 18 and over earlier on Friday, and CDC Director Rochelle Walensky is expected to clear the doses soon after. The panel's recommendation would open up eligibility to everyone 18 and over in the U.S., but the group more strongly endorsed shots for older Americans by saying everyone 50 and over should get a booster. It previously said people over 65 and some other high-risk people should get a third shot. Once Walensky signs off, tens of millions of Americans who've received their two initial shots at least six months ago will be eligible to get a third shot as soon as early as this weekend. \"Pfizer said its booster dose was 95% effective at preventing symptomatic infection in people who had no evidence of prior infection in a clinical trial of 10,000 participants 16 years and older,\" notes CNBC. \"Moderna didn't submit its efficacy data for its booster, telling the panel it was still gathering the data.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader quotes a report from CNBC: The CDC's independent panel of vaccine scientists unanimously endorsed Pfizer and Moderna's boosters for all adults, one of the final regulatory steps before the U.S. can officially start distributing the doses. The Advisory Committee on Immunization Practices voted to recommend the shots. The Food and Drug Administration authorized both company's vaccine boosters for everyone 18 and over earlier on Friday, and CDC Director Rochelle Walensky is expected to clear the doses soon after. The panel's recommendation would open up eligibility to everyone 18 and over in the U.S., but the group more strongly endorsed shots for older Americans by saying everyone 50 and over should get a booster. It previously said people over 65 and some other high-risk people should get a third shot. Once Walensky signs off, tens of millions of Americans who've received their two initial shots at least six months ago will be eligible to get a third shot as soon as early as this weekend. \"Pfizer said its booster dose was 95% effective at preventing symptomatic infection in people who had no evidence of prior infection in a clinical trial of 10,000 participants 16 years and older,\" notes CNBC. \"Moderna didn't submit its efficacy data for its booster, telling the panel it was still gathering the data.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/musiques/article/2021/11/19/mort-de-mick-rock-photographe-des-stars-du-rock-des-annees-1970_6102822_1654986.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 15:11:09 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://science.slashdot.org/story/21/11/19/2120205/cdc-panel-unanimously-endorses-pfizer-and-moderna-covid-boosters-for-all-us-adults?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "BeauHD", + "pubDate": "2021-11-19T21:21:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Braquage de Kim Kardashian à Paris : douze personnes seront jugées aux assises", - "description": "Cinq ans après le braquage, à Paris, de la star américaine, douze personnes sont renvoyées pour « vol avec arme commis en bande organisée », « enlèvement et séquestration » ou « association de malfaiteurs criminelle », en récidive le plus souvent.", - "content": "Cinq ans après le braquage, à Paris, de la star américaine, douze personnes sont renvoyées pour « vol avec arme commis en bande organisée », « enlèvement et séquestration » ou « association de malfaiteurs criminelle », en récidive le plus souvent.", + "title": "Citadel CEO Ken Griffin Outbid a Group of Crypto Investors for Copy of US Constitution", + "description": "Chicago hedge-fund billionaire Kenneth Griffin said he won a $43.2 million first-edition copy of the U.S. Constitution at a Sotheby' s auction on Thursday -- and now he intends to lend it to a free Arkansas art museum. From a report: The 53-year old founder and chief executive of Citadel caused a stir Thursday when he outbid a large group of cryptocurrency investors who had crowdfunded more than $40 million earlier in the week in a frenzied attempt to win the document, the last surviving first edition in private hands. \n\nThe group, organized as ConstitutionDAO, pooled funds from more than 17,000 people over a 72-hour period, with the median donation hovering around $206. ConstitutionDAO said it sought to take the Constitution copy and make it accessible to the public. \"The U.S. Constitution is a sacred document that enshrines the rights of every American and all those who aspire to be,\" Mr. Griffin said in a statement issued by Sotheby's. \"That is why I intend to ensure that this copy of our Constitution will be available for all Americans and visitors to view and appreciate.\" \n\nMr. Griffin said he intends to lend the 1787 folio to Crystal Bridges Museum of American Art in Bentonville, Ark., a museum with free admission founded a decade ago by Walmart heiress Alice Walton. The museum is known for owning Charles Willson Peale's portrait of George Washington and other examples by Thomas Eakins and Marsden Hartley. [...] The hedge-fund manager is known for looking askance at cryptocurrency. Last month in a recorded talk at the Economic Club of Chicago, he told the audience that he doesn't trade in cryptocurrency because of its \"regulatory uncertainty,\" adding that he \"wished all this passion and energy that went into crypto was directed toward making the United States stronger.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Chicago hedge-fund billionaire Kenneth Griffin said he won a $43.2 million first-edition copy of the U.S. Constitution at a Sotheby' s auction on Thursday -- and now he intends to lend it to a free Arkansas art museum. From a report: The 53-year old founder and chief executive of Citadel caused a stir Thursday when he outbid a large group of cryptocurrency investors who had crowdfunded more than $40 million earlier in the week in a frenzied attempt to win the document, the last surviving first edition in private hands. \n\nThe group, organized as ConstitutionDAO, pooled funds from more than 17,000 people over a 72-hour period, with the median donation hovering around $206. ConstitutionDAO said it sought to take the Constitution copy and make it accessible to the public. \"The U.S. Constitution is a sacred document that enshrines the rights of every American and all those who aspire to be,\" Mr. Griffin said in a statement issued by Sotheby's. \"That is why I intend to ensure that this copy of our Constitution will be available for all Americans and visitors to view and appreciate.\" \n\nMr. Griffin said he intends to lend the 1787 folio to Crystal Bridges Museum of American Art in Bentonville, Ark., a museum with free admission founded a decade ago by Walmart heiress Alice Walton. The museum is known for owning Charles Willson Peale's portrait of George Washington and other examples by Thomas Eakins and Marsden Hartley. [...] The hedge-fund manager is known for looking askance at cryptocurrency. Last month in a recorded talk at the Economic Club of Chicago, he told the audience that he doesn't trade in cryptocurrency because of its \"regulatory uncertainty,\" adding that he \"wished all this passion and energy that went into crypto was directed toward making the United States stronger.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/braquage-de-kim-kardashian-en-2016-douze-personnes-seront-jugees-aux-assises_6102821_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:53:53 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://slashdot.org/story/21/11/19/211232/citadel-ceo-ken-griffin-outbid-a-group-of-crypto-investors-for-copy-of-us-constitution?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T21:01:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "En Aveyron, nouveau sursis pour la fonderie Sam", - "description": "Le tribunal de commerce de Toulouse a décidé, vendredi 19 novembre, de suspendre l’avenir de la fonderie Sam à la décision de son unique client Renault.", - "content": "Le tribunal de commerce de Toulouse a décidé, vendredi 19 novembre, de suspendre l’avenir de la fonderie Sam à la décision de son unique client Renault.", + "title": "Ask Slashdot: What's a 2021 Movie or TV Show That You Enjoyed Watching?", + "description": "An anonymous reader writes: Haven't seen discussion on movie and TV shows recommendations on Slashdot of late. Could the fellow readers share some movies and TV shows and documentaries from this year that they really liked watching?

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "An anonymous reader writes: Haven't seen discussion on movie and TV shows recommendations on Slashdot of late. Could the fellow readers share some movies and TV shows and documentaries from this year that they really liked watching?

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/en-aveyron-nouveau-sursis-pour-la-fonderie-sam_6102818_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 14:50:08 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://ask.slashdot.org/story/21/11/19/2012259/ask-slashdot-whats-a-2021-movie-or-tv-show-that-you-enjoyed-watching?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T20:40:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Comment le renseignement français a traqué Pegasus après les révélations du « Monde »", - "description": "D’un côté le silence, de l’autre une discrète mobilisation : depuis fin juillet, les services de renseignement français se sont activés. Des traces du logiciel espion ont notamment été détectées sur les téléphones de deux hauts fonctionnaires travaillant sur des dossiers sensibles du conseil de défense.", - "content": "D’un côté le silence, de l’autre une discrète mobilisation : depuis fin juillet, les services de renseignement français se sont activés. Des traces du logiciel espion ont notamment été détectées sur les téléphones de deux hauts fonctionnaires travaillant sur des dossiers sensibles du conseil de défense.", + "title": "Disney Adds Disney+ And ESPN+ To Hulu + Live TV, Raises Bundle Monthly Price By $5", + "description": "Softening the blow of a monthly price hike, Disney is offering subscribers to Hulu's live TV service access to Disney+ and ESPN+ at no extra charge. From a report: Beginning on December 21, the Hulu + Live TV package will cost $5 more each month. It will go up to $70 with the ad-supported tier of Hulu's on-demand service and $76 with the ad-free Hulu. Notifications to subscribers have just gone out this morning. The new bundle builds on success the company has had with its combined offering of Disney+, ESPN+ and on-demand Hulu. That trio was announced in mid-2019, just before the record-setting launch of Disney+ and has helped ESPN+ and Hulu to continue consistent growth.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Softening the blow of a monthly price hike, Disney is offering subscribers to Hulu's live TV service access to Disney+ and ESPN+ at no extra charge. From a report: Beginning on December 21, the Hulu + Live TV package will cost $5 more each month. It will go up to $70 with the ad-supported tier of Hulu's on-demand service and $76 with the ad-free Hulu. Notifications to subscribers have just gone out this morning. The new bundle builds on success the company has had with its combined offering of Disney+, ESPN+ and on-demand Hulu. That trio was announced in mid-2019, just before the record-setting launch of Disney+ and has helped ESPN+ and Hulu to continue consistent growth.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/pixels/article/2021/11/19/comment-le-renseignement-francais-a-traque-pegasus-apres-les-revelations-du-monde_6102638_4408996.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 02:59:45 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://entertainment.slashdot.org/story/21/11/19/206257/disney-adds-disney-and-espn-to-hulu--live-tv-raises-bundle-monthly-price-by-5?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T20:07:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Liz Throssell, une porte-parole du Haut-Commissariat aux droits de l’homme, a déclaré vendredi : « Nous demandons instamment qu’une enquête soit menée en toute transparence sur ces allégations d’agression sexuelle. »", - "description": "Le patron de la WTA, qui gère le circuit professionnel de tennis féminin, a menacé de retirer les compétitions ayant lieu en Chine si Pékin ne tire pas l’affaire au clair.", - "content": "Le patron de la WTA, qui gère le circuit professionnel de tennis féminin, a menacé de retirer les compétitions ayant lieu en Chine si Pékin ne tire pas l’affaire au clair.", + "title": "Facebook Tells LA Police To Stop Spying on Users With Fake Accounts", + "description": "Facebook has written to the Los Angeles Police Department (LAPD), demanding that it stop setting up fake profiles to conduct surveillance on users. From a report: This comes after the Guardian revealed that the US police department had been working with a tech firm, analysing user data to help solve crimes. Facebook expressly prohibits the creation and use of fake accounts. The intent, it said, was to \"create a safe environment where people can trust and hold one another accountable\". \"Not only do LAPD instructional documents use Facebook as an explicit example in advising officers to set up fake social media accounts, but documents also indicate that LAPD policies simply allow officers to create fake accounts for 'online investigative activity',\" wrote Facebook's vice president and deputy general counsel for civil rights Roy Austin in a letter outlining Facebook's policies. \"While the legitimacy of such policies may be up to the LAPD, officers must abide by Facebook's policies when creating accounts on our services. The Police Department should cease all activities on Facebook that involve the use of fake accounts, impersonation of others, and collection of data for surveillance purposes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Facebook has written to the Los Angeles Police Department (LAPD), demanding that it stop setting up fake profiles to conduct surveillance on users. From a report: This comes after the Guardian revealed that the US police department had been working with a tech firm, analysing user data to help solve crimes. Facebook expressly prohibits the creation and use of fake accounts. The intent, it said, was to \"create a safe environment where people can trust and hold one another accountable\". \"Not only do LAPD instructional documents use Facebook as an explicit example in advising officers to set up fake social media accounts, but documents also indicate that LAPD policies simply allow officers to create fake accounts for 'online investigative activity',\" wrote Facebook's vice president and deputy general counsel for civil rights Roy Austin in a letter outlining Facebook's policies. \"While the legitimacy of such policies may be up to the LAPD, officers must abide by Facebook's policies when creating accounts on our services. The Police Department should cease all activities on Facebook that involve the use of fake accounts, impersonation of others, and collection of data for surveillance purposes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/disparition-de-la-joueuse-peng-shuai-le-patron-du-tennis-feminin-menace-de-retirer-la-chine-du-circuit_6102659_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 06:16:01 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://tech.slashdot.org/story/21/11/19/1930212/facebook-tells-la-police-to-stop-spying-on-users-with-fake-accounts?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T19:30:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Covid-19 : Autriche, Allemagne, Belgique, Pays-Bas… visualisez l’ampleur de la vague dans certains pays d’Europe", - "description": "Dans le centre de l’Europe, le nombre de contaminations augmente à un rythme alarmant, contraignant les autorités à prendre des mesures restrictives.", - "content": "Dans le centre de l’Europe, le nombre de contaminations augmente à un rythme alarmant, contraignant les autorités à prendre des mesures restrictives.", + "title": "Pentagon Asks Amazon, Google, Microsoft and Oracle for Bids on New Cloud Contracts", + "description": "The U.S. General Services Administration said Friday that the Defense Department has solicited bids from Amazon, Google, Microsoft and Oracle for cloud contracts. From a report: The outreach comes after the Pentagon set aside a highly contested $10 billion contract that Microsoft had won and Amazon had challenged. The value of the new contracts is not known, but the Defense Department estimates it could run into the multiple billions of dollars. The new effort, known as Joint Warfighting Cloud Capability, or JWCC, appears like it will bolster the top global cloud infrastructure providers, Amazon and Microsoft, although it could also provide more credibility to two smaller entities. \n\n\"The Government anticipates awarding two IDIQ contracts -- one to Amazon Web Services (AWS) and one to Microsoft Corporation (Microsoft) -- but intends to award to all Cloud Service Providers (CSPs) that demonstrate the capability to meet DoD's requirements,\" the GSA said in its announcement. An indefinite delivery, indefinite quantity, or IDIQ, contract includes an indefinite amount of services for a specific period of time.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The U.S. General Services Administration said Friday that the Defense Department has solicited bids from Amazon, Google, Microsoft and Oracle for cloud contracts. From a report: The outreach comes after the Pentagon set aside a highly contested $10 billion contract that Microsoft had won and Amazon had challenged. The value of the new contracts is not known, but the Defense Department estimates it could run into the multiple billions of dollars. The new effort, known as Joint Warfighting Cloud Capability, or JWCC, appears like it will bolster the top global cloud infrastructure providers, Amazon and Microsoft, although it could also provide more credibility to two smaller entities. \n\n\"The Government anticipates awarding two IDIQ contracts -- one to Amazon Web Services (AWS) and one to Microsoft Corporation (Microsoft) -- but intends to award to all Cloud Service Providers (CSPs) that demonstrate the capability to meet DoD's requirements,\" the GSA said in its announcement. An indefinite delivery, indefinite quantity, or IDIQ, contract includes an indefinite amount of services for a specific period of time.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/les-decodeurs/article/2021/11/19/covid-19-autriche-allemagne-pays-bas-visualisez-l-ampleur-de-la-vague-dans-certains-pays-d-europe_6102803_4355770.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 12:53:07 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://yro.slashdot.org/story/21/11/19/1840259/pentagon-asks-amazon-google-microsoft-and-oracle-for-bids-on-new-cloud-contracts?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T18:44:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Covid-19 : « L’hiver s’annonce comme une période difficile mais nous savons comment freiner le virus »", - "description": "Catherine Smallwood, directrice des situations d’urgence pour l’Europe à l’OMS, rappelle que dans les pays où « vaccination et port du masque [...] continuent d’être appliqués », comme l’Espagne, le Portugal, l’Italie et la France, « l’incidence est plus faible qu’ailleurs ».", - "content": "Catherine Smallwood, directrice des situations d’urgence pour l’Europe à l’OMS, rappelle que dans les pays où « vaccination et port du masque [...] continuent d’être appliqués », comme l’Espagne, le Portugal, l’Italie et la France, « l’incidence est plus faible qu’ailleurs ».", + "title": "Adults Who Microdose Psychedelics Report Health-related Motivations and Lower Levels of Anxiety and Depression, Paper Finds", + "description": "Abstract of a paper published on Nature: The use of psychedelic substances at sub-sensorium 'microdoses,' has gained popular academic interest for reported positive effects on wellness and cognition. The present study describes microdosing practices, motivations and mental health among a sample of self-selected microdosers (n = 4050) and non-microdosers (n = 4653) via a mobile application. Psilocybin was the most commonly used microdose substances in our sample (85%) and we identified diverse microdose practices with regard to dosage, frequency, and the practice of stacking which involves combining psilocybin with non-psychedelic substances such as Lion's Mane mushrooms, chocolate, and niacin. Microdosers were generally similar to non-microdosing controls with regard to demographics, but were more likely to report a history of mental health concerns. Among individuals reporting mental health concerns, microdosers exhibited lower levels of depression, anxiety, and stress across gender. Health and wellness-related motives were the most prominent motives across microdosers in general, and were more prominent among females and among individuals who reported mental health concerns. Our results indicate health and wellness motives and perceived mental health benefits among microdosers, and highlight the need for further research into the mental health consequences of microdosing including studies with rigorous longitudinal designs.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Abstract of a paper published on Nature: The use of psychedelic substances at sub-sensorium 'microdoses,' has gained popular academic interest for reported positive effects on wellness and cognition. The present study describes microdosing practices, motivations and mental health among a sample of self-selected microdosers (n = 4050) and non-microdosers (n = 4653) via a mobile application. Psilocybin was the most commonly used microdose substances in our sample (85%) and we identified diverse microdose practices with regard to dosage, frequency, and the practice of stacking which involves combining psilocybin with non-psychedelic substances such as Lion's Mane mushrooms, chocolate, and niacin. Microdosers were generally similar to non-microdosing controls with regard to demographics, but were more likely to report a history of mental health concerns. Among individuals reporting mental health concerns, microdosers exhibited lower levels of depression, anxiety, and stress across gender. Health and wellness-related motives were the most prominent motives across microdosers in general, and were more prominent among females and among individuals who reported mental health concerns. Our results indicate health and wellness motives and perceived mental health benefits among microdosers, and highlight the need for further research into the mental health consequences of microdosing including studies with rigorous longitudinal designs.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/l-hiver-s-annonce-comme-une-periode-difficile-mais-nous-savons-comment-freiner-le-virus_6102785_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 12:20:39 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://science.slashdot.org/story/21/11/19/185230/adults-who-microdose-psychedelics-report-health-related-motivations-and-lower-levels-of-anxiety-and-depression-paper-finds?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T18:05:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Au procès des attentats du 13-Novembre, l’organisation bureaucratique de la barbarie", - "description": "Le procès est entré, jeudi, dans le cœur de l’enquête. Deux témoins ont décortiqué le fonctionnement de la cellule de l’organisation Etat islamique chargée de planifier les attaques et le parcours de certains de ses membres.", - "content": "Le procès est entré, jeudi, dans le cœur de l’enquête. Deux témoins ont décortiqué le fonctionnement de la cellule de l’organisation Etat islamique chargée de planifier les attaques et le parcours de certains de ses membres.", + "title": "The Amazon Lobbyists Who Kill US Consumer Privacy Protections", + "description": "In recent years, Amazon has killed or undermined privacy protections in more than three dozen bills across 25 states, as the e-commerce giant amassed a lucrative trove of personal data on millions of American consumers. From a report: Amazon executives and staffers detail these lobbying victories in confidential documents reviewed by Reuters. In Virginia, the company boosted political donations tenfold over four years before persuading lawmakers this year to pass an industry-friendly privacy bill that Amazon itself drafted. In California, the company stifled proposed restrictions on the industry's collection and sharing of consumer voice recordings gathered by tech devices. And in its home state of Washington, Amazon won so many exemptions and amendments to a bill regulating biometric data, such as voice recordings or facial scans, that the resulting 2017 law had \"little, if any\" impact on its practices, according to an internal Amazon document. \n\nThe architect of this under-the-radar campaign to smother privacy protections has been Jay Carney, who previously served as communications director for Joe Biden, when Biden was vice president, and as press secretary for President Barack Obama. Hired by Amazon in 2015, Carney reported to founder Jeff Bezos and built a lobbying and public-policy juggernaut that has grown from two dozen employees to about 250, according to Amazon documents and two former employees with knowledge of recent staffing. One 2018 document reviewing executives' goals for the prior year listed privacy regulation as a primary target for Carney. One objective: \"Change or block US and EU regulation/legislation that would impede growth for Alexa-powered devices,\" referring to Amazon's popular voice-assistant technology. The mission included defeating restrictions on artificial intelligence and biometric technologies, along with blocking efforts to make companies disclose the data they keep on consumers. \n\nThe document listed Carney as the goal's \"primary owner\" and celebrated killing or amending privacy bills in \"over 20 states.\" This story is based on a Reuters review of hundreds of internal Amazon documents and interviews with more than 70 lobbyists, advocates, policymakers and their staffers involved in legislation Amazon targeted, along with 10 former Amazon public-policy and legal employees. It is the third in a series of reports revealing how the company has pursued business practices that harm small businesses or put its own interests above those of consumers. The previous articles showed how Amazon has circumvented e-commerce regulations meant to protect Indian retailers, and how it copied products and rigged search results to promote its own brands over those of other vendors on its India platform.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "In recent years, Amazon has killed or undermined privacy protections in more than three dozen bills across 25 states, as the e-commerce giant amassed a lucrative trove of personal data on millions of American consumers. From a report: Amazon executives and staffers detail these lobbying victories in confidential documents reviewed by Reuters. In Virginia, the company boosted political donations tenfold over four years before persuading lawmakers this year to pass an industry-friendly privacy bill that Amazon itself drafted. In California, the company stifled proposed restrictions on the industry's collection and sharing of consumer voice recordings gathered by tech devices. And in its home state of Washington, Amazon won so many exemptions and amendments to a bill regulating biometric data, such as voice recordings or facial scans, that the resulting 2017 law had \"little, if any\" impact on its practices, according to an internal Amazon document. \n\nThe architect of this under-the-radar campaign to smother privacy protections has been Jay Carney, who previously served as communications director for Joe Biden, when Biden was vice president, and as press secretary for President Barack Obama. Hired by Amazon in 2015, Carney reported to founder Jeff Bezos and built a lobbying and public-policy juggernaut that has grown from two dozen employees to about 250, according to Amazon documents and two former employees with knowledge of recent staffing. One 2018 document reviewing executives' goals for the prior year listed privacy regulation as a primary target for Carney. One objective: \"Change or block US and EU regulation/legislation that would impede growth for Alexa-powered devices,\" referring to Amazon's popular voice-assistant technology. The mission included defeating restrictions on artificial intelligence and biometric technologies, along with blocking efforts to make companies disclose the data they keep on consumers. \n\nThe document listed Carney as the goal's \"primary owner\" and celebrated killing or amending privacy bills in \"over 20 states.\" This story is based on a Reuters review of hundreds of internal Amazon documents and interviews with more than 70 lobbyists, advocates, policymakers and their staffers involved in legislation Amazon targeted, along with 10 former Amazon public-policy and legal employees. It is the third in a series of reports revealing how the company has pursued business practices that harm small businesses or put its own interests above those of consumers. The previous articles showed how Amazon has circumvented e-commerce regulations meant to protect Indian retailers, and how it copied products and rigged search results to promote its own brands over those of other vendors on its India platform.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/au-proces-des-attentats-du-13-novembre-l-organisation-bureaucratique-de-la-barbarie_6102655_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 06:05:09 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://news.slashdot.org/story/21/11/19/1733221/the-amazon-lobbyists-who-kill-us-consumer-privacy-protections?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T17:22:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Arrêté en Turquie, Omar Souleyman, le « roi de l’électro-folk » syrienne, a été relâché", - "description": "Réfugié en Turquie peu après le déclenchement de la guerre en Syrie, le chanteur était accusé de liens avec le Parti des travailleurs du Kurdistan (PKK) et les Unités de protection du peuple (YPG) kurdes, selon les médias turcs.", - "content": "Réfugié en Turquie peu après le déclenchement de la guerre en Syrie, le chanteur était accusé de liens avec le Parti des travailleurs du Kurdistan (PKK) et les Unités de protection du peuple (YPG) kurdes, selon les médias turcs.", + "title": "Visions of a US Computer Chip Boom Have Cities Hustling", + "description": "Many local governments see a silver lining in the shortage of semiconductor chips that has contributed to a slowdown in the global economy. From a report: The shortage of computer chips has zapped energy from the global economy, punishing industries as varied as automakers and medical device manufacturers and contributing to fears about high inflation. But many states and cities in America are starting to see a silver lining: the possibility that efforts to sharply increase chip production in the United States will lead to a busy chip factory in their backyard. And they are racing to get a piece of the potential boom. One of those towns is Taylor, a Texas city of about 17,000 about a 40-minute drive northeast of Austin. Leaders here are pulling out all the stops to get a $17 billion Samsung plant that the company plans to build in the United States starting early next year. \n\nThe city, its school district and the county plan to offer Samsung hundreds of millions of dollars in financial incentives, including tax rebates. The community also has arranged for water to be piped in from an adjacent county to be used by the plant. But Taylor is not alone. Officials in Arizona and in Genesee County in upstate New York are also trying to woo the company. So, too, are politicians in nearby Travis County, home to Austin, where Samsung already has a plant. Locations in all three states \"offered robust property tax abatement\" and funds to build out infrastructure for the plant, Samsung said in a filing. Congress is considering whether to offer its own subsidies to chip makers that build in the United States. \n\nWhere Samsung's plant will land remains anyone's guess. The company says it is still weighing where to put it. A decision is expected to be announced any day. The federal government has urged companies like Samsung, one of the world's largest makers of the high-tech components, to build new plants in the United States, calling it an economic and national security imperative. Intel broke ground on two plants in Arizona in September and could announce the location for a planned manufacturing campus by the end of the year. This could just be a warm-up act. The Senate passed a bill to provide chip makers $52 billion in subsidies this year, a plan supported by the Biden administration that would be Washington's biggest investment in industrial policy in decades. The House has yet to consider it. Nine governors said in a letter to congressional leaders that the funding would \"provide a new, powerful tool in our states' economic development toolboxes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "Many local governments see a silver lining in the shortage of semiconductor chips that has contributed to a slowdown in the global economy. From a report: The shortage of computer chips has zapped energy from the global economy, punishing industries as varied as automakers and medical device manufacturers and contributing to fears about high inflation. But many states and cities in America are starting to see a silver lining: the possibility that efforts to sharply increase chip production in the United States will lead to a busy chip factory in their backyard. And they are racing to get a piece of the potential boom. One of those towns is Taylor, a Texas city of about 17,000 about a 40-minute drive northeast of Austin. Leaders here are pulling out all the stops to get a $17 billion Samsung plant that the company plans to build in the United States starting early next year. \n\nThe city, its school district and the county plan to offer Samsung hundreds of millions of dollars in financial incentives, including tax rebates. The community also has arranged for water to be piped in from an adjacent county to be used by the plant. But Taylor is not alone. Officials in Arizona and in Genesee County in upstate New York are also trying to woo the company. So, too, are politicians in nearby Travis County, home to Austin, where Samsung already has a plant. Locations in all three states \"offered robust property tax abatement\" and funds to build out infrastructure for the plant, Samsung said in a filing. Congress is considering whether to offer its own subsidies to chip makers that build in the United States. \n\nWhere Samsung's plant will land remains anyone's guess. The company says it is still weighing where to put it. A decision is expected to be announced any day. The federal government has urged companies like Samsung, one of the world's largest makers of the high-tech components, to build new plants in the United States, calling it an economic and national security imperative. Intel broke ground on two plants in Arizona in September and could announce the location for a planned manufacturing campus by the end of the year. This could just be a warm-up act. The Senate passed a bill to provide chip makers $52 billion in subsidies this year, a plan supported by the Biden administration that would be Washington's biggest investment in industrial policy in decades. The House has yet to consider it. Nine governors said in a letter to congressional leaders that the funding would \"provide a new, powerful tool in our states' economic development toolboxes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/musiques/article/2021/11/19/arrete-en-turquie-omar-souleyman-le-roi-de-l-electro-folk-syrienne-a-ete-relache_6102773_1654986.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 12:08:10 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://news.slashdot.org/story/21/11/19/1646250/visions-of-a-us-computer-chip-boom-have-cities-hustling?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T16:46:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pédocriminalité dans l’Eglise : les congrégations religieuses créent une commission de reconnaissance et de réparation", - "description": "Les responsables de la Conférence des religieux et religieuses de France ont voté « à l’unanimité » la création de cette structure distincte de l’Instance nationale indépendante de reconnaissance et de réparation.", - "content": "Les responsables de la Conférence des religieux et religieuses de France ont voté « à l’unanimité » la création de cette structure distincte de l’Instance nationale indépendante de reconnaissance et de réparation.", + "title": "Singapore's Tech-utopia Dream is Turning Into a Surveillance State Nightmare", + "description": "In the \"smart nation,\" robot dogs enforce social distancing and flying taxis are just over the horizon. The reality is very different. From a report: Singapore is often rendered as an aspiring techno-utopia. In World Economic Forum videos, in-flight magazines and its own pliant state-backed media, it offers a soft-focus science fiction backdrop where driverless buses ply routes between beach clubs and tech hubs, where robot dogs enforce social distancing and flying taxis flit between glass-fronted public housing overflowing with lush \"sky gardens.\" It's a place where pilot projects hint at a future -- just over the horizon -- where the intractable problems of today are automated out of existence. Where vertical farms and \"NEWater\" made from treated sewage cut the island's reliance on neighbouring Malaysia for food and water. Where robots care for the elderly and drones service freighters. Where warehouses and construction sites are staffed by machines, obviating the need for the migrant workers who make Singapore function, but make Singaporeans uncomfortable. Technology keeps them safe, fed and independent; secure in a scary world, but connected to it through telecoms and air travel. \n\nThat safety requires constant vigilance. The city must be watched. The smart cameras that are being trialled in Changi are just a part of a nationwide thrust towards treating surveillance as part of everyday life. Ninety-thousand police cameras watch the streets, and by the end of the decade, there will be 200,000. Sensors, including facial recognition cameras and crowd analytics systems, are being positioned across the city. The technology alone isn't unique -- it's used in many countries. But Singapore's ruling party sees dangers everywhere, and seems increasingly willing to peer individually and en masse into people's lives. \"What [technology] will do for people is make our lives a hell of a lot easier, more convenient, more easily able to plug into the good life,\" Monamie Bhadra Haines, an assistant professor at the Technical University of Denmark, who studies the intersection between technology and society. \"But ... the surveillance is what is here, now.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "In the \"smart nation,\" robot dogs enforce social distancing and flying taxis are just over the horizon. The reality is very different. From a report: Singapore is often rendered as an aspiring techno-utopia. In World Economic Forum videos, in-flight magazines and its own pliant state-backed media, it offers a soft-focus science fiction backdrop where driverless buses ply routes between beach clubs and tech hubs, where robot dogs enforce social distancing and flying taxis flit between glass-fronted public housing overflowing with lush \"sky gardens.\" It's a place where pilot projects hint at a future -- just over the horizon -- where the intractable problems of today are automated out of existence. Where vertical farms and \"NEWater\" made from treated sewage cut the island's reliance on neighbouring Malaysia for food and water. Where robots care for the elderly and drones service freighters. Where warehouses and construction sites are staffed by machines, obviating the need for the migrant workers who make Singapore function, but make Singaporeans uncomfortable. Technology keeps them safe, fed and independent; secure in a scary world, but connected to it through telecoms and air travel. \n\nThat safety requires constant vigilance. The city must be watched. The smart cameras that are being trialled in Changi are just a part of a nationwide thrust towards treating surveillance as part of everyday life. Ninety-thousand police cameras watch the streets, and by the end of the decade, there will be 200,000. Sensors, including facial recognition cameras and crowd analytics systems, are being positioned across the city. The technology alone isn't unique -- it's used in many countries. But Singapore's ruling party sees dangers everywhere, and seems increasingly willing to peer individually and en masse into people's lives. \"What [technology] will do for people is make our lives a hell of a lot easier, more convenient, more easily able to plug into the good life,\" Monamie Bhadra Haines, an assistant professor at the Technical University of Denmark, who studies the intersection between technology and society. \"But ... the surveillance is what is here, now.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/pedocriminalite-dans-l-eglise-creation-d-une-commission-de-reconnaissance-et-de-reparation_6102743_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:39:51 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://yro.slashdot.org/story/21/11/19/1614203/singapores-tech-utopia-dream-is-turning-into-a-surveillance-state-nightmare?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T16:12:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le combat des « enfants de l’ASE » pour faire changer le système", - "description": "Manque de moyens, maintien du lien familial, maltraitances… Des voix s’élèvent pour dénoncer les failles de la protection de l’enfance.", - "content": "Manque de moyens, maintien du lien familial, maltraitances… Des voix s’élèvent pour dénoncer les failles de la protection de l’enfance.", + "title": "Tor Project Sees Decline in Server Numbers, Will Offer Rewards for New Bridge Operators", + "description": "The Tor Project said this week that it has seen a drop in the number of Tor relays and bridge servers and is now offering various rewards to users who help bring the number back up. From a report: Rewards include the likes of hoodies, t-shirts, and stickers and are meant to provide some sort of meaningful gift to those who help keep the Tor anonymity network alive and resilient to censorship. More specifically, the rewards will be provided to those who run \"Tor bridges,\" which serve as entry points into the Tor network for users located in countries that block access to Tor servers. \"We currently have approximately 1,200 bridges, 900 of which support the obfs4 obfuscation protocol,\" said Gustavo Gus, Community Team Lead for the Tor Project. \"Unfortunately, these numbers have been decreasing since the beginning of this year. It's not enough to have many bridges: eventually, all of them could find themselves in block lists. We therefore need a constant trickle of new bridges that aren't blocked anywhere yet,\" the Tor Project member said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The Tor Project said this week that it has seen a drop in the number of Tor relays and bridge servers and is now offering various rewards to users who help bring the number back up. From a report: Rewards include the likes of hoodies, t-shirts, and stickers and are meant to provide some sort of meaningful gift to those who help keep the Tor anonymity network alive and resilient to censorship. More specifically, the rewards will be provided to those who run \"Tor bridges,\" which serve as entry points into the Tor network for users located in countries that block access to Tor servers. \"We currently have approximately 1,200 bridges, 900 of which support the obfs4 obfuscation protocol,\" said Gustavo Gus, Community Team Lead for the Tor Project. \"Unfortunately, these numbers have been decreasing since the beginning of this year. It's not enough to have many bridges: eventually, all of them could find themselves in block lists. We therefore need a constant trickle of new bridges that aren't blocked anywhere yet,\" the Tor Project member said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/le-combat-des-enfants-de-l-ase-pour-faire-changer-le-systeme_6102736_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:35:47 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://yro.slashdot.org/story/21/11/19/1529223/tor-project-sees-decline-in-server-numbers-will-offer-rewards-for-new-bridge-operators?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T15:29:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La gestion des effectifs de la police critiquée dans une note de la Cour des comptes", - "description": "Dans une note diffusée jeudi, les magistrats financiers constatent une dérive de la masse salariale et un taux d’élucidation médiocre.", - "content": "Dans une note diffusée jeudi, les magistrats financiers constatent une dérive de la masse salariale et un taux d’élucidation médiocre.", + "title": "Copy of US Constitution Sells for $43.2 Million as Crypto Group DAO Is Outbid", + "description": "The art market wasn't ready for revolution. A rare, first-edition copy of the U.S. Constitution sold for $43.2 million at Sotheby's Thursday, but it appears the winner is a private collector rather than an online group of cryptocurrency investors. From a report: The group, called ConstitutionDAO, caused a stir in art and crypto circles this week by pooling more than $40 million to bid, but an anonymous phone bidder pledged even more and will take home one of the 13 surviving official copies of the Constitution. \n\nSotheby's sale on Thursday transforms the governing document into the priciest six pages in auction history, surpassing Microsoft co-founder Bill Gates's $30.8 million copy of Leonardo da Vinci's scientific notebook known as the Codex Leicester. The Constitution also exceeded the $21.3 million paid for a copy of the 1297 Magna Carta by Carlyle Group co-founder David Rubenstein in 2007. The winner remains anonymous, but the group pledging the second-highest price was ConstitutionDAO, an online organization that its founders say was formed as a lark last week and wound up pooling donations from 17,437 people to try to win the historic artifact. \"What we tried to do was make the Constitution more accessible to the public,\" said core organizer Anisha Sunkerneni of San Francisco. \"Although we might have not completely accomplished doing just that, I think we've raised enough awareness to illustrate that a DAO is another option.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "The art market wasn't ready for revolution. A rare, first-edition copy of the U.S. Constitution sold for $43.2 million at Sotheby's Thursday, but it appears the winner is a private collector rather than an online group of cryptocurrency investors. From a report: The group, called ConstitutionDAO, caused a stir in art and crypto circles this week by pooling more than $40 million to bid, but an anonymous phone bidder pledged even more and will take home one of the 13 surviving official copies of the Constitution. \n\nSotheby's sale on Thursday transforms the governing document into the priciest six pages in auction history, surpassing Microsoft co-founder Bill Gates's $30.8 million copy of Leonardo da Vinci's scientific notebook known as the Codex Leicester. The Constitution also exceeded the $21.3 million paid for a copy of the 1297 Magna Carta by Carlyle Group co-founder David Rubenstein in 2007. The winner remains anonymous, but the group pledging the second-highest price was ConstitutionDAO, an online organization that its founders say was formed as a lark last week and wound up pooling donations from 17,437 people to try to win the historic artifact. \"What we tried to do was make the Constitution more accessible to the public,\" said core organizer Anisha Sunkerneni of San Francisco. \"Although we might have not completely accomplished doing just that, I think we've raised enough awareness to illustrate that a DAO is another option.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/societe/article/2021/11/19/la-gestion-des-effectifs-de-la-police-critiquee-dans-une-note-de-la-cour-des-comptes_6102714_3224.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:10:41 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://news.slashdot.org/story/21/11/19/1442245/copy-of-us-constitution-sells-for-432-million-as-crypto-group-dao-is-outbid?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T14:42:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Face aux maires, Emmanuel Macron défend son bilan et loue leur engagement", - "description": "Le président de la République a mis en garde, jeudi, contre le « débat mortifère » opposant les élus et l’Etat, en réponse aux critiques de David Lisnard, le nouveau président de l’Association des maires de France.", - "content": "Le président de la République a mis en garde, jeudi, contre le « débat mortifère » opposant les élus et l’Etat, en réponse aux critiques de David Lisnard, le nouveau président de l’Association des maires de France.", + "title": "A Look Under the Hood of the Most Successful Streaming Service on the Planet", + "description": "A service's guts, the engineering behind the app itself, are the foundation of any streamer's success, and Netflix has spent the last 10 years building out an expansive server network called Open Connect in order to avoid many modern streaming headaches. From a report: It's the thing that's allowed Netflix to serve up a far more reliable experience than its competitors and not falter when some 111 million users tuned in to Squid Game during its earliest weeks on the service. \"One of the reasons why Netflix is the leader in this market and has the number of subs they do [...] is something that pretty much everybody outside of the technical part of this industry underestimates, and that is Open Connect,\" Dan Rayburn, a media streaming expert and principal analyst with Frost & Sullivan, tells The Verge. \"How many times has Netflix had a problem with their streaming service over the last 10 years?\" \n\nCertainly not as many as HBO Max, that's for sure. Open Connect was created because Netflix \"knew that we needed to build some level of infrastructure technology that would sustain the anticipated traffic that we knew success would look like,\" Gina Haspilaire, Netflix's vice president of Open Connect, tells me. \"We felt we were going to be successful, and we knew that the internet at the time was not built to sustain the level of traffic that would be required globally.\" Nobody wants to sit down to watch a movie only to have their app crash or buffer for an eternity. What Netflix had the foresight to understand was that if it was going to maintain a certain level of quality, it would have to build a distribution system itself. \n\nOpen Connect is Netflix's in-house content distribution network specifically built to deliver its TV shows and movies. Started in 2012, the program involves Netflix giving internet service providers physical appliances that allow them to localize traffic. These appliances store copies of Netflix content to create less strain on networks by eliminating the number of channels that content has to pass through to reach the user trying to play it. Most major streaming services rely on third-party content delivery networks (CDNs) to pass along their videos, which is why Netflix's server network is so unique. Without a system like Open Connect or a third-party CDN in place, a request for content by an ISP has to \"go through a peering point and maybe transit four or five other networks until it gets to the origin, or the place that holds the content,\" Will Law, chief architect of media engineering at Akamai, a major content delivery network, tells The Verge. Not only does that slow down delivery, but it's expensive since ISPs may have to pay to access that content. To avoid the traffic and fees, Netflix ships copies of its content to its own servers ahead of time. That also helps to prevent Netflix traffic from choking network demand during peak hours of streaming.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", + "content": "A service's guts, the engineering behind the app itself, are the foundation of any streamer's success, and Netflix has spent the last 10 years building out an expansive server network called Open Connect in order to avoid many modern streaming headaches. From a report: It's the thing that's allowed Netflix to serve up a far more reliable experience than its competitors and not falter when some 111 million users tuned in to Squid Game during its earliest weeks on the service. \"One of the reasons why Netflix is the leader in this market and has the number of subs they do [...] is something that pretty much everybody outside of the technical part of this industry underestimates, and that is Open Connect,\" Dan Rayburn, a media streaming expert and principal analyst with Frost & Sullivan, tells The Verge. \"How many times has Netflix had a problem with their streaming service over the last 10 years?\" \n\nCertainly not as many as HBO Max, that's for sure. Open Connect was created because Netflix \"knew that we needed to build some level of infrastructure technology that would sustain the anticipated traffic that we knew success would look like,\" Gina Haspilaire, Netflix's vice president of Open Connect, tells me. \"We felt we were going to be successful, and we knew that the internet at the time was not built to sustain the level of traffic that would be required globally.\" Nobody wants to sit down to watch a movie only to have their app crash or buffer for an eternity. What Netflix had the foresight to understand was that if it was going to maintain a certain level of quality, it would have to build a distribution system itself. \n\nOpen Connect is Netflix's in-house content distribution network specifically built to deliver its TV shows and movies. Started in 2012, the program involves Netflix giving internet service providers physical appliances that allow them to localize traffic. These appliances store copies of Netflix content to create less strain on networks by eliminating the number of channels that content has to pass through to reach the user trying to play it. Most major streaming services rely on third-party content delivery networks (CDNs) to pass along their videos, which is why Netflix's server network is so unique. Without a system like Open Connect or a third-party CDN in place, a request for content by an ISP has to \"go through a peering point and maybe transit four or five other networks until it gets to the origin, or the place that holds the content,\" Will Law, chief architect of media engineering at Akamai, a major content delivery network, tells The Verge. Not only does that slow down delivery, but it's expensive since ISPs may have to pay to access that content. To avoid the traffic and fees, Netflix ships copies of its content to its own servers ahead of time. That also helps to prevent Netflix traffic from choking network demand during peak hours of streaming.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", "category": "", - "link": "https://www.lemonde.fr/politique/article/2021/11/19/face-aux-maires-emmanuel-macron-defend-son-bilan-et-loue-leur-engagement_6102709_823448.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:03:22 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "link": "https://entertainment.slashdot.org/story/21/11/19/142205/a-look-under-the-hood-of-the-most-successful-streaming-service-on-the-planet?utm_source=rss1.0mainlinkanon&utm_medium=feed", + "creator": "msmash", + "pubDate": "2021-11-19T14:02:00+00:00", + "folder": "00.03 News/Tech", + "feed": "Slashdot", + "read": false, + "favorite": false, + "created": false, + "tags": [] + } + ], + "folder": "00.03 News/Tech", + "name": "Slashdot" + }, + { + "title": "The Next Web", + "subtitle": "", + "link": "https://thenextweb.com", + "image": null, + "description": "Original and proudly opinionated perspectives for Generation T", + "items": [ + { + "title": "The childhood phones that broke our hearts", + "description": "
    Do you remember the good old days? When people had real values, the streets were safe at night, and America was great? Me neither. But I do recall the joyous phone designs of the past. In the old days, my dear, before every handset was just an enormous screen, phones came in all sorts of shapes and sizes. Most of them were hideous and stupid, but at least they had charm. Many of these cellular gems are in the Mobile Phone Museum. The collection of over 2,000 models has been meticulously transferred to an online exhibition, with photos dripping with…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Do you remember the good old days? When people had real values, the streets were safe at night, and America was great? Me neither. But I do recall the joyous phone designs of the past. In the old days, my dear, before every handset was just an enormous screen, phones came in all sorts of shapes and sizes. Most of them were hideous and stupid, but at least they had charm. Many of these cellular gems are in the Mobile Phone Museum. The collection of over 2,000 models has been meticulously transferred to an online exhibition, with photos dripping with…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/mobile-phone-museum-brings-back-memories-childhood-phones-that-broke-our-hearts", + "creator": "Thomas Macaulay", + "pubDate": "Thu, 25 Nov 2021 18:32:02 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Au Burkina Faso, la colère monte après l’attaque meurtrière du poste d’Inata", - "description": "Le bilan des morts a été revu à la hausse, avec 49 gendarmes et quatre civils tués. Un appel à une grande manifestation a été lancé pour le 27 novembre.", - "content": "Le bilan des morts a été revu à la hausse, avec 49 gendarmes et quatre civils tués. Un appel à une grande manifestation a été lancé pour le 27 novembre.", - "category": "", - "link": "https://www.lemonde.fr/afrique/article/2021/11/19/au-burkina-faso-la-colere-monte-apres-l-attaque-meurtriere-du-poste-d-inata_6102704_3212.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 11:00:09 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Why being a ‘Swiss army knife’ hurts your business", + "description": "
    Boris is the wise ol’ founder of TNW who writes a weekly column on everything about being an entrepreneur in tech — from managing stress to embracing awkwardness. You can get his musings straight to your inbox by signing up for his newsletter! When I bought my first house, I wanted to make some home improvements and needed tools. While I was mostly looking for a drill, I was amazed when I happened upon a great deal at the hardware store. An incredible 3-in-1 machine that would solve all my present and future needs: drilling, sanding, and sawing. It was…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Boris is the wise ol’ founder of TNW who writes a weekly column on everything about being an entrepreneur in tech — from managing stress to embracing awkwardness. You can get his musings straight to your inbox by signing up for his newsletter! When I bought my first house, I wanted to make some home improvements and needed tools. While I was mostly looking for a drill, I was amazed when I happened upon a great deal at the hardware store. An incredible 3-in-1 machine that would solve all my present and future needs: drilling, sanding, and sawing. It was…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/value-of-focus-startup-entrepreneurship", + "creator": "Boris Veldhuijzen van Zanten", + "pubDate": "Thu, 25 Nov 2021 16:45:07 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Covid-19 : l’Autriche décide de confiner l’ensemble de sa population et instaure une obligation vaccinale à partir de février", - "description": "Ce confinement général, annoncé vendredi par le chancelier, Alexander Schallenberg, constitue une première en Europe depuis le printemps. La décision intervient seulement cinq jours après l’entrée en vigueur du confinement des non-vaccinés, qui avait été très critiqué.", - "content": "Ce confinement général, annoncé vendredi par le chancelier, Alexander Schallenberg, constitue une première en Europe depuis le printemps. La décision intervient seulement cinq jours après l’entrée en vigueur du confinement des non-vaccinés, qui avait été très critiqué.", - "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/covid-19-l-autriche-decide-de-confiner-l-ensemble-de-sa-population-et-instaure-une-obligation-vaccinale-a-partir-de-fevrier_6102691_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 10:39:30 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Uber forced to leave Brussels — what happened to the company’s European dream?", + "description": "
    Uber will be forced to halt all operations in Brussels from November 26, following a ruling issued by the city’s Court of Appeal on Wednesday, De Stanaard reports While this blow to the ride-hailing giant’s business might come as a surprise to some, it has been brewing for over six years. Uber entered Brussels in 2014 with UberPop, where private individuals could register to transport people for a fee. But a year later, local taxi company Taxis Vert filed a lawsuit against it and the court ruled that such a service didn’t comply with regulations. Uber reformed its services in Brussels following…

    This story continues at The Next Web

    Or just read more coverage about: Uber
    \n \n
    ", + "content": "
    Uber will be forced to halt all operations in Brussels from November 26, following a ruling issued by the city’s Court of Appeal on Wednesday, De Stanaard reports While this blow to the ride-hailing giant’s business might come as a surprise to some, it has been brewing for over six years. Uber entered Brussels in 2014 with UberPop, where private individuals could register to transport people for a fee. But a year later, local taxi company Taxis Vert filed a lawsuit against it and the court ruled that such a service didn’t comply with regulations. Uber reformed its services in Brussels following…

    This story continues at The Next Web

    Or just read more coverage about: Uber
    \n \n
    ", + "category": "Shift", + "link": "https://thenextweb.com/news/uber-forced-leave-brussels-what-happened-to-european-dream", + "creator": "Ioanna Lykiardopoulou", + "pubDate": "Thu, 25 Nov 2021 16:32:34 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Covid-19 : le nombre de classes fermées en France au plus haut depuis la rentrée de septembre", - "description": "Il s’établit à 4 048, soit 0,8 % des classes du pays, a annoncé le ministère de l’éducation nationale. Mais c’est nettement moins qu’en avril, avant la fermeture des écoles pour plusieurs semaines.", - "content": "Il s’établit à 4 048, soit 0,8 % des classes du pays, a annoncé le ministère de l’éducation nationale. Mais c’est nettement moins qu’en avril, avant la fermeture des écoles pour plusieurs semaines.", - "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/covid-19-le-nombre-de-classes-fermees-au-plus-haut-depuis-la-rentree-de-septembre_6102690_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 10:38:56 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "The weirdest future cars at this month’s auto shows", + "description": "
    With big events like the German Autoshow struggling this year, you might be forgiven to think that COVID-19 has killed the traditional car show. But you’d also be completely wrong. In China and the US, auto shows are back with a vengeance and they’re not taking any prisoners. In the last couple of weeks, we’ve seen a whole host of cool stuff coming out of the massive LA Auto Show and Guangzhou International Auto Show. Now, if you’re looking for some serious breakdown on what the  shows’ new releases mean, you’ve come to the wrong place. Because I’m much more interested in…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    With big events like the German Autoshow struggling this year, you might be forgiven to think that COVID-19 has killed the traditional car show. But you’d also be completely wrong. In China and the US, auto shows are back with a vengeance and they’re not taking any prisoners. In the last couple of weeks, we’ve seen a whole host of cool stuff coming out of the massive LA Auto Show and Guangzhou International Auto Show. Now, if you’re looking for some serious breakdown on what the  shows’ new releases mean, you’ve come to the wrong place. Because I’m much more interested in…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/the-weirdest-future-cars-at-this-months-auto-shows", + "creator": "Cate Lawrence", + "pubDate": "Thu, 25 Nov 2021 14:38:19 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le fiasco du train à grande vitesse britannique", - "description": "Hors de prix, très en retard, l’extension de la branche prévue vers Leeds ne sera pas construite.", - "content": "Hors de prix, très en retard, l’extension de la branche prévue vers Leeds ne sera pas construite.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/le-fiasco-du-train-a-grande-vitesse-britannique_6102688_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 10:28:53 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Your music taste should decide which headphones you buy", + "description": "
    Between music, podcasts, gaming, and the unlimited supply of online content, most people spend hours a week wearing headphones. Perhaps you are considering a new pair for the holidays, but with so many options on the market, it can be hard to know what to choose. I am a professional musician and a professor of music technology who studies acoustics. My work investigates the intersection between the scientific, artistic, and subjective human elements of sound. Choosing the right headphones involves considering all three of those aspects, so what makes for a truly good pair? Sound is simply a series of…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Between music, podcasts, gaming, and the unlimited supply of online content, most people spend hours a week wearing headphones. Perhaps you are considering a new pair for the holidays, but with so many options on the market, it can be hard to know what to choose. I am a professional musician and a professor of music technology who studies acoustics. My work investigates the intersection between the scientific, artistic, and subjective human elements of sound. Choosing the right headphones involves considering all three of those aspects, so what makes for a truly good pair? Sound is simply a series of…

    This story continues at The Next Web
    \n \n
    ", + "category": "Science", + "link": "https://thenextweb.com/news/music-taste-should-decide-which-headphones-you-buy-syndication", + "creator": "The Conversation", + "pubDate": "Thu, 25 Nov 2021 14:03:09 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Licences de pêche post-Brexit : « Nous ne lâcherons pas nos pêcheurs », promet Emmanuel Macron", - "description": "L’annonce, par la ministre de la mer, de possibles indemnisations pour certains pêcheurs ne pouvant plus travailler a été atténuée par le chef de l’Etat, qui a ajouté : « Avant Noël, la France aura pris une position. »", - "content": "L’annonce, par la ministre de la mer, de possibles indemnisations pour certains pêcheurs ne pouvant plus travailler a été atténuée par le chef de l’Etat, qui a ajouté : « Avant Noël, la France aura pris une position. »", - "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/brexit-le-plan-d-indemnisation-evoque-par-le-gouvernement-pour-les-navires-sans-licence-fait-reagir-les-pecheurs_6102687_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 10:27:30 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Get brilliant audio and active noise cancellation with this holiday-friendly earbuds for just $31.99", + "description": "
    TLDR: The xFyro Active Noise Cancelling AI-Powered Wireless Earbuds block out outside noise while providing premium audio reproduction, all on sale now for under $32. Headphones and earbuds of all types have been trumpeting about noise cancellation for years. That often means passive noise cancellation, which is basically the seal created when an earbud fills the ear canal, blocking out many sounds from reaching the eardrum. It’s crude, but often effective. However, blocking your hearing isn’t always practical or safe, which led to active noise cancellation systems that are now often found in more expensive headphones. However, every once in…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: The xFyro Active Noise Cancelling AI-Powered Wireless Earbuds block out outside noise while providing premium audio reproduction, all on sale now for under $32. Headphones and earbuds of all types have been trumpeting about noise cancellation for years. That often means passive noise cancellation, which is basically the seal created when an earbud fills the ear canal, blocking out many sounds from reaching the eardrum. It’s crude, but often effective. However, blocking your hearing isn’t always practical or safe, which led to active noise cancellation systems that are now often found in more expensive headphones. However, every once in…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/get-brilliant-audio-and-active-noise-cancellation-with-this-holiday-friendly-earbuds-for-just-31-99", + "creator": "TNW Deals", + "pubDate": "Thu, 25 Nov 2021 14:00:55 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "« Civilisation », le grand cru d’Orelsan", - "description": "Construit en deux parties et toujours produit musicalement par son complice Skread, le quatrième album du rappeur égrène, entre musique drill et disco, des solutions pour mieux vivre.", - "content": "Construit en deux parties et toujours produit musicalement par son complice Skread, le quatrième album du rappeur égrène, entre musique drill et disco, des solutions pour mieux vivre.", - "category": "", - "link": "https://www.lemonde.fr/culture/article/2021/11/19/civilisation-le-grand-cru-d-orelsan_6102682_3246.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:25:55 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Setapp offers over 200 brilliant productivity apps to supercharge your Mac. And right now, it’s over 50% off", + "description": "
    TLDR: With a 1-year subscription to Setapp, Mac users can download any of more than 200 highly curated apps aimed at supplying your machine with the best of the best efficiency tools. If we’re struggling with getting anything done on a Mac, your first thought is likely that there must be an app to help with this somewhere. And odds are, you’re right. The problem is that you always don’t know where to find that all-important tool or which one is the all-important tool among a dozen apps that all claim to do the same thing. Setapp ($41.40 after code…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: With a 1-year subscription to Setapp, Mac users can download any of more than 200 highly curated apps aimed at supplying your machine with the best of the best efficiency tools. If we’re struggling with getting anything done on a Mac, your first thought is likely that there must be an app to help with this somewhere. And odds are, you’re right. The problem is that you always don’t know where to find that all-important tool or which one is the all-important tool among a dozen apps that all claim to do the same thing. Setapp ($41.40 after code…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/setapp-offers-over-200-brilliant-productivity-apps-to-supercharge-your-mac-and-right-now-its-over-50-off", + "creator": "TNW Deals", + "pubDate": "Thu, 25 Nov 2021 14:00:31 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La politique européenne de la concurrence soumise à des « changements ciblés »", - "description": "La Commission de Bruxelles « pourrait envisager » d’autoriser des aides d’Etat visant à soutenir la production de semi-conducteurs.", - "content": "La Commission de Bruxelles « pourrait envisager » d’autoriser des aides d’Etat visant à soutenir la production de semi-conducteurs.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/la-politique-europeenne-de-la-concurrence-soumise-a-des-changements-cibles_6102681_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:25:39 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "TNW’s favorite games to play with friends online", + "description": "
    Welcome to TNW Basics, a collection of tips, guides, and advice on how to easily get the most out of your gadgets, apps, and other stuff. Whether you’re still social distancing, stuck at home because of bad weather, or just don’t feel like getting out, logging on to a multiplayer game with your friends and family is a great way to enjoy each other’s company. Here are a few games we love and recommend trying with your crew, from the comfort of your own home. Read: How to have a virtual dinner with friends or loved ones Keep in mind, I’m going…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Welcome to TNW Basics, a collection of tips, guides, and advice on how to easily get the most out of your gadgets, apps, and other stuff. Whether you’re still social distancing, stuck at home because of bad weather, or just don’t feel like getting out, logging on to a multiplayer game with your friends and family is a great way to enjoy each other’s company. Here are a few games we love and recommend trying with your crew, from the comfort of your own home. Read: How to have a virtual dinner with friends or loved ones Keep in mind, I’m going…

    This story continues at The Next Web
    \n \n
    ", + "category": "Gaming", + "link": "https://thenextweb.com/news/here-are-games-you-can-play-with-friends-online-while-stuck-at-home", + "creator": "Rachel Kaser", + "pubDate": "Thu, 25 Nov 2021 13:49:42 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Entretien | Jean-Yves Le Drian : « Nos concurrents n’ont ni tabous ni limites »", - "description": "Dans un entretien au « Monde », le ministre des affaires étrangères français met en cause le comportement de la Chine et de la Russie, dans un monde où les rapports de force se durcissent.", - "content": "Dans un entretien au « Monde », le ministre des affaires étrangères français met en cause le comportement de la Chine et de la Russie, dans un monde où les rapports de force se durcissent.", - "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/jean-yves-le-drian-nos-concurrents-n-ont-ni-tabous-ni-limites_6102656_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 06:08:27 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Adam Mosseri vs Congress: Why the Senate believes Instagram is bad for kids", + "description": "
    Instagram is in the crosshairs of Congress. The social app’s chief, Adam Mosseri, is expected to testify before a Senate panel in the week of December 6. Mosseri will appear as part of a series of hearings about online safety for kids, The New York Times reports. The hearing will be led by Senator Richard Blumenthal, who heads the Senate Commerce subcommittee on consumer protection. “After bombshell reports about Instagram’s toxic impacts, we want to hear straight from the company’s leadership why it uses powerful algorithms that push poisonous content to children driving them down rabbit holes to dark places, and what…

    This story continues at The Next Web

    Or just read more coverage about: Instagram
    \n \n
    ", + "content": "
    Instagram is in the crosshairs of Congress. The social app’s chief, Adam Mosseri, is expected to testify before a Senate panel in the week of December 6. Mosseri will appear as part of a series of hearings about online safety for kids, The New York Times reports. The hearing will be led by Senator Richard Blumenthal, who heads the Senate Commerce subcommittee on consumer protection. “After bombshell reports about Instagram’s toxic impacts, we want to hear straight from the company’s leadership why it uses powerful algorithms that push poisonous content to children driving them down rabbit holes to dark places, and what…

    This story continues at The Next Web

    Or just read more coverage about: Instagram
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/why-instagram-head-adam-mosseri-is-testifying-before-congress", + "creator": "Thomas Macaulay", + "pubDate": "Thu, 25 Nov 2021 13:11:06 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les sanctions du régulateur chinois font chuter les profits d’Alibaba", - "description": "Un an après le lancement d’une campagne de régulation des mastodontes chinois du numérique, l’e-commerçant a vu ses profits chuter de 81 %.", - "content": "Un an après le lancement d’une campagne de régulation des mastodontes chinois du numérique, l’e-commerçant a vu ses profits chuter de 81 %.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/les-sanctions-du-regulateur-chinois-font-chuter-les-profits-d-alibaba_6102678_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:05:44 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Our outdated space laws could threaten global peace — the UN aims to change that", + "description": "
    On Nov. 15, 2021, Russia destroyed one of its own old satellites using a missile launched from the surface of the Earth, creating a massive debris cloud that threatens many space assets, including astronauts onboard the International Space Station. This happened only two weeks after the United Nations General Assembly First Committee formally recognized the vital role that space and space assets play in international efforts to better the human experience – and the risks military activities in space pose to those goals. The U.N. First Committee deals with disarmament, global challenges and threats to peace that affect the international…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    On Nov. 15, 2021, Russia destroyed one of its own old satellites using a missile launched from the surface of the Earth, creating a massive debris cloud that threatens many space assets, including astronauts onboard the International Space Station. This happened only two weeks after the United Nations General Assembly First Committee formally recognized the vital role that space and space assets play in international efforts to better the human experience – and the risks military activities in space pose to those goals. The U.N. First Committee deals with disarmament, global challenges and threats to peace that affect the international…

    This story continues at The Next Web
    \n \n
    ", + "category": "Space", + "link": "https://thenextweb.com/news/outdated-space-laws-threaten-global-peace-un-aims-to-change-that-syndication", + "creator": "The Conversation", + "pubDate": "Thu, 25 Nov 2021 12:37:13 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Orelsan : « Le monde n’a pas besoin de plus de cynisme »", - "description": "Le rappeur publie son quatrième album, « Civilisation », plus engagé que ses précédents, sans perdre sa qualité d’écriture. Chronique d’un succès annoncé.", - "content": "Le rappeur publie son quatrième album, « Civilisation », plus engagé que ses précédents, sans perdre sa qualité d’écriture. Chronique d’un succès annoncé.", - "category": "", - "link": "https://www.lemonde.fr/culture/article/2021/11/19/orelsan-le-monde-n-a-pas-besoin-de-plus-de-cynisme_6102677_3246.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 09:02:57 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "The Roborock S7 changed my mind about robot vacuums in tiny apartments", + "description": "
    If you’d told me a year ago that I’d come to love a robot vacuum cleaner, I would’ve laughed at you. And yet that’s exactly what’s happened with the $650 Roborock S7, a combined vacuum cleaner and mop. It is one of the few gadgets I’ve tested lately that I can actually say made my life better. I was a robovac skeptic I don’t know about you, but I find it hard to work when the house is a mess. I’ve been a remote worker since well before the pandemic, which means my office is my home. Living in the…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    If you’d told me a year ago that I’d come to love a robot vacuum cleaner, I would’ve laughed at you. And yet that’s exactly what’s happened with the $650 Roborock S7, a combined vacuum cleaner and mop. It is one of the few gadgets I’ve tested lately that I can actually say made my life better. I was a robovac skeptic I don’t know about you, but I find it hard to work when the house is a mess. I’ve been a remote worker since well before the pandemic, which means my office is my home. Living in the…

    This story continues at The Next Web
    \n \n
    ", + "category": "Plugged", + "link": "https://thenextweb.com/news/roborock-s7-review", + "creator": "Napier Lopez", + "pubDate": "Thu, 25 Nov 2021 05:37:39 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le taux de chômage reste stable en France, à 8,1 % au 3e trimestre, selon l’Insee", - "description": "Sur le trimestre, le taux de chômage augmente pour les 15-24 ans et se stabilise pour les 25-49 ans et les 50 ans et plus, détaille l’Institut national de la statistique.", - "content": "Sur le trimestre, le taux de chômage augmente pour les 15-24 ans et se stabilise pour les 25-49 ans et les 50 ans et plus, détaille l’Institut national de la statistique.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/le-taux-de-chomage-en-france-s-etablit-a-8-1-au-3e-trimestre-selon-l-insee_6102675_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 08:38:34 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Ground-breaking or site-breaking? What devs expect from WordPress 5.9", + "description": "
    WordPress is a notoriously divisive platform. While the CMS powers a whopping 39% of websites, it’s abhorred and adored in equal measure. The next version looks destined for further contrasting reactions. WordPress this week shared new details on what to expect in release 5.9. A block party? Set for release on January 25, WordPress 5.9 will add a range of updates, including: The next generation of themes, including a new default theme called Twenty Twenty-Two More than 30 theme blocks Extra design tools Improvements to List View The most notable change could be deeper integration of the block editor, which…

    This story continues at The Next Web

    Or just read more coverage about: WordPress
    \n \n
    ", + "content": "
    WordPress is a notoriously divisive platform. While the CMS powers a whopping 39% of websites, it’s abhorred and adored in equal measure. The next version looks destined for further contrasting reactions. WordPress this week shared new details on what to expect in release 5.9. A block party? Set for release on January 25, WordPress 5.9 will add a range of updates, including: The next generation of themes, including a new default theme called Twenty Twenty-Two More than 30 theme blocks Extra design tools Improvements to List View The most notable change could be deeper integration of the block editor, which…

    This story continues at The Next Web

    Or just read more coverage about: WordPress
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/what-developers-expect-from-wordpress-5-9", + "creator": "Thomas Macaulay", + "pubDate": "Wed, 24 Nov 2021 20:36:38 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les premières performances en demi-teinte des réseaux 5G en France", - "description": "Le « gendarme » des télécommunications publie, vendredi 19 novembre, une étude sur la qualité des réseaux mobiles en France. A ce stade, la 5G offre encore une plus-value limitée.", - "content": "Le « gendarme » des télécommunications publie, vendredi 19 novembre, une étude sur la qualité des réseaux mobiles en France. A ce stade, la 5G offre encore une plus-value limitée.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/les-premieres-performances-en-demi-teinte-des-reseaux-5g-en-france_6102674_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 08:30:04 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Scientists propose first steps toward creating life on Mars", + "description": "
    The moment humankind stepped out from our caves and gazed upon the night sky with curiosity and wonder, our ancestors set into motion a chain of events that will almost certainly end up with humans walking on Martian soil. And, if you believe the current hype, that day could come in the next couple of decades. NASA has every intention of sending a crewed mission to the red planet sometime in the 2030s. In the meantime, those of us who remain stuck here on Earth are left to wonder what such an accomplishment would ultimately mean for humankind. Is Elon…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    The moment humankind stepped out from our caves and gazed upon the night sky with curiosity and wonder, our ancestors set into motion a chain of events that will almost certainly end up with humans walking on Martian soil. And, if you believe the current hype, that day could come in the next couple of decades. NASA has every intention of sending a crewed mission to the red planet sometime in the 2030s. In the meantime, those of us who remain stuck here on Earth are left to wonder what such an accomplishment would ultimately mean for humankind. Is Elon…

    This story continues at The Next Web
    \n \n
    ", + "category": "Neural", + "link": "https://thenextweb.com/news/scientists-propose-first-steps-toward-creating-life-on-mars", + "creator": "Tristan Greene", + "pubDate": "Wed, 24 Nov 2021 19:00:13 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Face à la colère des paysans, l’Inde décide d’abroger des lois de réforme agricole", - "description": "Nombre de petits exploitants s’estimaient menacés par ces réformes votées en septembre 2020 qui risquaient, selon eux, de les obliger à brader leurs marchandises aux grandes entreprises pour les écouler.", - "content": "Nombre de petits exploitants s’estimaient menacés par ces réformes votées en septembre 2020 qui risquaient, selon eux, de les obliger à brader leurs marchandises aux grandes entreprises pour les écouler.", - "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/face-a-la-colere-des-paysans-l-inde-annonce-l-abrogation-des-lois-de-la-reforme-agricole_6102673_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 08:24:35 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "What I learned from creating a metaverse for my students", + "description": "
    We’ve been hearing a lot recently about the metaverse – a vision for the internet which uses technology like virtual and augmented reality to integrate real and digital worlds. With Facebook changing its name to Meta to focus on this space, and other big tech companies like Microsoft coming on board, there is much discussion about the potential of the metaverse to enhance the way we socialize, work and learn. A key component of the metaverse ecosystem will be the creator economy. The virtual worlds within the metaverse need to be conceived, designed, and built by individuals and organizations. To…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    We’ve been hearing a lot recently about the metaverse – a vision for the internet which uses technology like virtual and augmented reality to integrate real and digital worlds. With Facebook changing its name to Meta to focus on this space, and other big tech companies like Microsoft coming on board, there is much discussion about the potential of the metaverse to enhance the way we socialize, work and learn. A key component of the metaverse ecosystem will be the creator economy. The virtual worlds within the metaverse need to be conceived, designed, and built by individuals and organizations. To…

    This story continues at The Next Web
    \n \n
    ", + "category": "Neural", + "link": "https://thenextweb.com/news/creating-metaverse-for-students-syndication", + "creator": "The Conversation", + "pubDate": "Wed, 24 Nov 2021 17:00:59 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "En un an, la déforestation de l’Amazonie s’est nettement accélérée au Brésil", - "description": "Selon une estimation officielle publiée jeudi 18 novembre, la déforestation s’est étendue sur 13 235 km2 entre août 2020 et juillet 2021, soit près de 22 % d’augmentation – le record des quinze dernières années. Le gouvernement de Jair Bolsonaro, qui fait l’objet de critiques internationales pour avoir affaibli la surveillance des écosystèmes amazoniens, estime que ces données « ne reflètent pas exactement la réalité des derniers mois ».", - "content": "Selon une estimation officielle publiée jeudi 18 novembre, la déforestation s’est étendue sur 13 235 km2 entre août 2020 et juillet 2021, soit près de 22 % d’augmentation – le record des quinze dernières années. Le gouvernement de Jair Bolsonaro, qui fait l’objet de critiques internationales pour avoir affaibli la surveillance des écosystèmes amazoniens, estime que ces données « ne reflètent pas exactement la réalité des derniers mois ».", - "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/la-deforestation-de-l-amazonie-bresilienne-s-accelere_6102660_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 06:24:48 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", - "read": true, + "title": "This AI app turns your words into striking (and less cursed) fan art", + "description": "
    Fan art has flourished in the social media age, but not everyone is blessed with the skills to turn their ideas into spectacular — and disturbing — visual creations. The worst offenders hang in galleries of horrors across Reddit and Twitter. Visit them if you dare, but be warned: these cursed images will be forever imprinted on your brain. Fearful of joining these walls of shame, fan artists are turning to a new AI app for help. Known as Wombo Dream, the software converts text into computer-generated paintings. The app was built by the company behind Wombo AI, the popular deepfake singing…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Fan art has flourished in the social media age, but not everyone is blessed with the skills to turn their ideas into spectacular — and disturbing — visual creations. The worst offenders hang in galleries of horrors across Reddit and Twitter. Visit them if you dare, but be warned: these cursed images will be forever imprinted on your brain. Fearful of joining these walls of shame, fan artists are turning to a new AI app for help. Known as Wombo Dream, the software converts text into computer-generated paintings. The app was built by the company behind Wombo AI, the popular deepfake singing…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/wombo-dream-ai-app-turns-words-into-fan-art", + "creator": "Thomas Macaulay", + "pubDate": "Wed, 24 Nov 2021 16:50:46 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Record aux enchères pour l’un des premiers exemplaires de la Constitution américaine", - "description": "Un collectif d’amateurs de cryptomonnaies, qui rêvait de s’offrir le document historique, n’a pas réussi à s’aligner sur l’offre finale, qui s’élève à plus de 43 millions de dollars.", - "content": "Un collectif d’amateurs de cryptomonnaies, qui rêvait de s’offrir le document historique, n’a pas réussi à s’aligner sur l’offre finale, qui s’élève à plus de 43 millions de dollars.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/une-copie-originale-de-la-constitution-americaine-vendue-aux-encheres-a-un-prix-record_6102669_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 07:01:40 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "The Dragon X5 offers the gaming control smartphone players never get. Right now, it’s under $35", + "description": "
    TLDR: The Dragon X5 Bluetooth Gaming Controller connects easily to most smartphones and tablets, while immediately elevating your gameplay. Mobile gaming is a heck of a lot bigger than Minesweeper and Candy Crush. Last year, games for your phone and other mobile devices brought in revenues totalling over $77 billion. Mobile games even make up about a quarter of all app downloads for both Android and iOS devices. Unfortunately, for all their escalating power and amazing graphics, the size of the phone itself isn’t really getting much bigger. That means those itty-bitty little buttons for actually controlling your gameplay are…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: The Dragon X5 Bluetooth Gaming Controller connects easily to most smartphones and tablets, while immediately elevating your gameplay. Mobile gaming is a heck of a lot bigger than Minesweeper and Candy Crush. Last year, games for your phone and other mobile devices brought in revenues totalling over $77 billion. Mobile games even make up about a quarter of all app downloads for both Android and iOS devices. Unfortunately, for all their escalating power and amazing graphics, the size of the phone itself isn’t really getting much bigger. That means those itty-bitty little buttons for actually controlling your gameplay are…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/the-dragon-x5-offers-the-gaming-control-smartphone-players-never-get-right-now-its-under-35", + "creator": "TNW Deals", + "pubDate": "Wed, 24 Nov 2021 14:00:19 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Des Français moins mécontents de leur banque", - "description": "Les clients font passer la qualité du service ou l’image de la banque avant les tarifs, alors que l’usage du digital s’accélère.", - "content": "Les clients font passer la qualité du service ou l’image de la banque avant les tarifs, alors que l’usage du digital s’accélère.", - "category": "", - "link": "https://www.lemonde.fr/argent/article/2021/11/19/des-francais-moins-mecontents-de-leur-banque_6102650_1657007.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 06:00:25 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Python is now programming’s no. 1 language. This training will help you use it like a pro", + "description": "
    TLDR: The 2022 Premium Python Programming PCEP Certification Prep Bundle offers more than 130 hours of training to become an expert Python coder, all for less than $35. It’s been building up steam for years, but after years of steadily increasing popularity, Python is now the king of the coding language mountain. For the first time in 20 years of tracking the world’s most used coding languages, the Tiobe Index put Python at the top of that list in October, ending two decades of dominance by the only two languages that ever led the index, Java and C. The Python…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: The 2022 Premium Python Programming PCEP Certification Prep Bundle offers more than 130 hours of training to become an expert Python coder, all for less than $35. It’s been building up steam for years, but after years of steadily increasing popularity, Python is now the king of the coding language mountain. For the first time in 20 years of tracking the world’s most used coding languages, the Tiobe Index put Python at the top of that list in October, ending two decades of dominance by the only two languages that ever led the index, Java and C. The Python…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/python-is-now-programmings-no-1-language-this-training-will-help-you-use-it-like-a-pro", + "creator": "TNW Deals", + "pubDate": "Wed, 24 Nov 2021 14:00:00 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "La flambée des prix alimentaires fait craindre une aggravation de la faim dans le monde", - "description": "Selon l’indice de la FAO, les denrées de base ont augmenté de plus 30 % en un an. Combinée aux effets économique de la crise sanitaire, cette inflation menace particulièrement un tiers de la population mondiale, déjà en insécurité alimentaire", - "content": "Selon l’indice de la FAO, les denrées de base ont augmenté de plus 30 % en un an. Combinée aux effets économique de la crise sanitaire, cette inflation menace particulièrement un tiers de la population mondiale, déjà en insécurité alimentaire", - "category": "", - "link": "https://www.lemonde.fr/planete/article/2021/11/19/la-flambee-des-prix-alimentaires-fait-craindre-une-aggravation-de-la-faim-dans-le-monde_6102644_3244.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 05:40:58 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Python sucks in terms of energy efficiency — literally", + "description": "
    Python is one of the most popular programming languages in the world. Dutch software company’s programming language index for 2021 also indicates that. But is it one of the most energy-efficient coding languages out there? Not really. A study from researchers of Universidade do Minho, Portugal (first spotted by hackaday) says that Python is just better than Perl in terms of energy consumed while performing certain tasks. It notes that C tops the chart followed by Rust, C++, and Ada. Researchers used 10 popular algorithms from the Computer Language Benchmarks Game (CLBG), to measure the energy consumption, runtime, and memory…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Python is one of the most popular programming languages in the world. Dutch software company’s programming language index for 2021 also indicates that. But is it one of the most energy-efficient coding languages out there? Not really. A study from researchers of Universidade do Minho, Portugal (first spotted by hackaday) says that Python is just better than Perl in terms of energy consumed while performing certain tasks. It notes that C tops the chart followed by Rust, C++, and Ada. Researchers used 10 popular algorithms from the Computer Language Benchmarks Game (CLBG), to measure the energy consumption, runtime, and memory…

    This story continues at The Next Web
    \n \n
    ", + "category": "Design &amp; Dev", + "link": "https://thenextweb.com/news/python-progamming-language-energy-analysis", + "creator": "Ivan Mehta", + "pubDate": "Wed, 24 Nov 2021 13:29:44 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Des joueuses de football afghanes parviennent à se réfugier au Royaume-Uni grâce à l’aide de Kim Kardashian", - "description": "La star américaine de téléréalité a financé le vol de trente-cinq footballeuses et de leurs familles, qui avaient fui au Pakistan après la prise de pouvoir de Kaboul par les talibans.", - "content": "La star américaine de téléréalité a financé le vol de trente-cinq footballeuses et de leurs familles, qui avaient fui au Pakistan après la prise de pouvoir de Kaboul par les talibans.", - "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/des-joueuses-de-football-afghanes-parviennent-a-se-refugier-au-royaume-uni-grace-a-l-aide-de-kim-kardashian_6102641_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 04:55:08 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Think predictive text makes you faster? You’re a fool", + "description": "
    Typing is one of the most common things we do on our mobile phones. A recent survey suggests that Millennials spend 48 minutes each day texting, while boomers spend 30 minutes. Since the advent of mobile phones, the way we text has changed. We’ve seen the introduction of autocorrect, which corrects errors as we type, and word prediction (often called predictive text), which predicts the next word we want to type and allows us to select it above the keyboard. Functions such as autocorrect and predictive text are designed to make typing faster and more efficient. But research shows this…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Typing is one of the most common things we do on our mobile phones. A recent survey suggests that Millennials spend 48 minutes each day texting, while boomers spend 30 minutes. Since the advent of mobile phones, the way we text has changed. We’ve seen the introduction of autocorrect, which corrects errors as we type, and word prediction (often called predictive text), which predicts the next word we want to type and allows us to select it above the keyboard. Functions such as autocorrect and predictive text are designed to make typing faster and more efficient. But research shows this…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/predictive-text-makes-you-slow-syndication", + "creator": "The Conversation", + "pubDate": "Wed, 24 Nov 2021 13:18:20 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "En Allemagne, un candidat surprise dans la course à la présidence de la CDU", - "description": "Le parti démocrate-chrétien élira mi-décembre son nouveau chef. En lice, le très conservateur Friedrich Merz, le centriste Norbert Röttgen, et un candidat de dernière minute : Helge Braun, l’un des plus proches collaborateurs d’Angela Merkel.", - "content": "Le parti démocrate-chrétien élira mi-décembre son nouveau chef. En lice, le très conservateur Friedrich Merz, le centriste Norbert Röttgen, et un candidat de dernière minute : Helge Braun, l’un des plus proches collaborateurs d’Angela Merkel.", - "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/19/en-allemagne-un-candidat-surprise-dans-la-course-a-la-presidence-de-la-cdu_6102640_3210.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 04:16:18 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "India can’t decide if it loves or hates crypto", + "description": "
    Cryptocurrency investors in India hit the panic button last night as the winter schedule of parliament, starting from November 29, was published. It indicated that a new cryptocurrency bill will be tabled for discussion, which might but a ban on cryptocurrency trading in the country. The description of the bill said that it “seeks to prohibit all private cryptocurrencies in India, however, it allows for certain exceptions to promote the underlying technology of cryptocurrency and its uses.” It also indicated that the Reserve Bank of India, the country’s central bank, might issue an official digital coin in the future. While…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Cryptocurrency investors in India hit the panic button last night as the winter schedule of parliament, starting from November 29, was published. It indicated that a new cryptocurrency bill will be tabled for discussion, which might but a ban on cryptocurrency trading in the country. The description of the bill said that it “seeks to prohibit all private cryptocurrencies in India, however, it allows for certain exceptions to promote the underlying technology of cryptocurrency and its uses.” It also indicated that the Reserve Bank of India, the country’s central bank, might issue an official digital coin in the future. While…

    This story continues at The Next Web
    \n \n
    ", + "category": "Hard Fork", + "link": "https://thenextweb.com/news/india-cant-decide-if-it-loves-or-hates-crypto", + "creator": "Ivan Mehta", + "pubDate": "Wed, 24 Nov 2021 09:16:32 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Présidentielle 2022 : après une percée, la précampagne d’Eric Zemmour s’essouffle", - "description": "Le polémiste d’extrême droite a multiplié les outrances au point de crisper dans son propre camp. Son équipe peine à franchir le cap nécessaire à une candidature.", - "content": "Le polémiste d’extrême droite a multiplié les outrances au point de crisper dans son propre camp. Son équipe peine à franchir le cap nécessaire à une candidature.", - "category": "", - "link": "https://www.lemonde.fr/election-presidentielle-2022/article/2021/11/19/presidentielle-2022-apres-une-percee-la-precampagne-d-eric-zemmour-s-essouffle_6102639_6059010.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 03:35:34 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Vehicle ramming kills pedestrians again. Can tech provide a solution?", + "description": "
    The last few decades have seen the mainstreaming of a very particular kind of crime — vehicle ramming.  According to the US Department of Homeland Security, this is when a perpetrator deliberately aims a motor vehicle at a target with the intent to inflict fatal injuries or cause significant property damage by striking with concussive force. And it’s a problem for cities, law enforcement, and carmakers.  This week, it was front and center in many people’s minds when a man driving a speeding car crashed into a Christmas parade in Milwaukee, killing five people and injuring 48 others.  There’s nothing to…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    The last few decades have seen the mainstreaming of a very particular kind of crime — vehicle ramming.  According to the US Department of Homeland Security, this is when a perpetrator deliberately aims a motor vehicle at a target with the intent to inflict fatal injuries or cause significant property damage by striking with concussive force. And it’s a problem for cities, law enforcement, and carmakers.  This week, it was front and center in many people’s minds when a man driving a speeding car crashed into a Christmas parade in Milwaukee, killing five people and injuring 48 others.  There’s nothing to…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/can-technology-stop-vehicle-ramming", + "creator": "Cate Lawrence", + "pubDate": "Wed, 24 Nov 2021 08:20:29 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ligue des champions féminine : le PSG s’offre une bouffée d’air en se qualifiant pour les quarts de finale", - "description": "Les Parisiennes se sont imposées, jeudi, sur la pelouse du Real Madrid (2-0), dans un contexte difficile en raison de l’agression de Kheira Hamraoui et de la lourde défaite à Lyon en championnat, dimanche.", - "content": "Les Parisiennes se sont imposées, jeudi, sur la pelouse du Real Madrid (2-0), dans un contexte difficile en raison de l’agression de Kheira Hamraoui et de la lourde défaite à Lyon en championnat, dimanche.", - "category": "", - "link": "https://www.lemonde.fr/football/article/2021/11/19/ligue-des-champions-feminine-le-psg-s-offre-une-bouffee-d-air-en-se-qualifiant-pour-les-quarts-de-finale_6102635_1616938.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 02:03:04 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "The Pixel 6 just launched, but Pixel 6a leaks already look great", + "description": "
    The Pixel 6 and Pixel 6 Pro may have just launched — heck even the Pixel 5a only arrived in August — but rumors and leaks about the Pixel 6a are already making the rounds. Based on what we (think we) know so far, the Pixel 6a is shaping up to be a very attractive budget phone. Here’s what we know about it so far. It’ll look a whole lot like the Pixel 6 The Pixel 6 broke away from the design of previous pixels and the Pixel 6a looks to follow the new design language. Renders by leaker OnLeaks…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    The Pixel 6 and Pixel 6 Pro may have just launched — heck even the Pixel 5a only arrived in August — but rumors and leaks about the Pixel 6a are already making the rounds. Based on what we (think we) know so far, the Pixel 6a is shaping up to be a very attractive budget phone. Here’s what we know about it so far. It’ll look a whole lot like the Pixel 6 The Pixel 6 broke away from the design of previous pixels and the Pixel 6a looks to follow the new design language. Renders by leaker OnLeaks…

    This story continues at The Next Web
    \n \n
    ", + "category": "Plugged", + "link": "https://thenextweb.com/news/pixel-6a-everything-we-know", + "creator": "Napier Lopez", + "pubDate": "Wed, 24 Nov 2021 03:26:28 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "A Grigny, l’usine Bergams liquidée sur fond de tensions entre salariés", - "description": "La grève contre un accord collectif appliqué depuis janvier a fortement divisé les 283 employés de l’usine agroalimentaire, diversement touchés par ce dispositif. Le tribunal de commerce d’Evry a décidé la mise en liquidation, mercredi 17 novembre.", - "content": "La grève contre un accord collectif appliqué depuis janvier a fortement divisé les 283 employés de l’usine agroalimentaire, diversement touchés par ce dispositif. Le tribunal de commerce d’Evry a décidé la mise en liquidation, mercredi 17 novembre.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/a-grigny-l-usine-bergams-liquidee-sur-fond-de-tensions-entre-salaries_6102633_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 01:47:22 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "How Einstein, Elon, and Uncle Sam could ruin cryptocurrency by 2050", + "description": "
    The world of cryptocurrency is a bespoke financial wonderland where timing is everything and nothing is certain. The moment you think you’ve got a handle on the market, a billionaire tweets out a meme and you’re thrust toward one margin or another. Fans of rollercoasters and thrill-rides may enjoy the experience, but investors genuinely looking for a way out from underneath the oppression of centralized currency and banking might wish for a less volatile future. Unfortunately, the path forward isn’t simple. On paper, decentralized digital currencies such as Bitcoin and Ethereum make perfect sense. If I own a dollar’s worth…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    The world of cryptocurrency is a bespoke financial wonderland where timing is everything and nothing is certain. The moment you think you’ve got a handle on the market, a billionaire tweets out a meme and you’re thrust toward one margin or another. Fans of rollercoasters and thrill-rides may enjoy the experience, but investors genuinely looking for a way out from underneath the oppression of centralized currency and banking might wish for a less volatile future. Unfortunately, the path forward isn’t simple. On paper, decentralized digital currencies such as Bitcoin and Ethereum make perfect sense. If I own a dollar’s worth…

    This story continues at The Next Web
    \n \n
    ", + "category": "Neural", + "link": "https://thenextweb.com/news/how-einstein-elon-uncle-sam-could-ruin-cryptocurrency-by-2050", + "creator": "Tristan Greene", + "pubDate": "Tue, 23 Nov 2021 21:30:17 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L’usine Ascoval ne délocalisera pas une partie de son activité en Allemagne", - "description": "Le groupe allemand Saarstahl envisageait de transférer 40 % de la production de cette aciérie du Nord, ce qui avait suscité la colère de nombreux élus politiques et mobilisé le gouvernement.", - "content": "Le groupe allemand Saarstahl envisageait de transférer 40 % de la production de cette aciérie du Nord, ce qui avait suscité la colère de nombreux élus politiques et mobilisé le gouvernement.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/19/l-usine-ascoval-ne-delocalisera-pas-une-partie-de-son-activite-en-allemagne_6102629_3234.html", - "creator": "", - "pubDate": "Fri, 19 Nov 2021 00:35:59 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Nvidia’s new text-to-image tool shows how AI could render stock photos obsolete", + "description": "
    Stock photos are the bane of many marketers and designers. The heavyweight image providers are prohibitively pricey, while the affordable ones could lead to a concerned call from HR. At TNW Towers, we smoothly circumvent these barriers by creating custom masterpieces — like these glorious pictures of Mark Zuckerberg: Mark, I promise I had nothing to do with any of this. Credit: The Next Web Sadly, not everyone is blessed with such virtuosity — including yours truly. Just check out the monstrosity I made atop this article. Thankfully, AI could soon conceal our artistic ineptitudes, by enabling photorealistic image generation.…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Stock photos are the bane of many marketers and designers. The heavyweight image providers are prohibitively pricey, while the affordable ones could lead to a concerned call from HR. At TNW Towers, we smoothly circumvent these barriers by creating custom masterpieces — like these glorious pictures of Mark Zuckerberg: Mark, I promise I had nothing to do with any of this. Credit: The Next Web Sadly, not everyone is blessed with such virtuosity — including yours truly. Just check out the monstrosity I made atop this article. Thankfully, AI could soon conceal our artistic ineptitudes, by enabling photorealistic image generation.…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/nvidia-gaugan2-text-to-art-tool-shows-ai-could-replace-stock-photos", + "creator": "Thomas Macaulay", + "pubDate": "Tue, 23 Nov 2021 20:06:47 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le confinement des personnes non vaccinées n’est « pas nécessaire en France », estime Emmanuel Macron", - "description": "Dans un entretien au quotidien régional « La Voix du Nord », le président de la République a également dit attendre l’avis des autorités sanitaires sur une éventuelle dose de rappel du vaccin contre le Covid-19 pour tous.", - "content": "Dans un entretien au quotidien régional « La Voix du Nord », le président de la République a également dit attendre l’avis des autorités sanitaires sur une éventuelle dose de rappel du vaccin contre le Covid-19 pour tous.", - "category": "", - "link": "https://www.lemonde.fr/politique/article/2021/11/18/le-confinement-des-personnes-non-vaccinees-n-est-pas-necessaire-en-france-estime-emmanuel-macron_6102628_823448.html", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 22:54:25 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "Musk and his mom go on anti-Biden Twitter rampage for ignoring Tesla", + "description": "
    President Biden seems to be all about electrifying America and pushing for EV adoption, but there are some people who feel seriously left out: our dear Elon Musk and… his mom. Last Wednesday, the president attended GM’s Factory Zero grand opening in Michigan and even had some fun behind the wheel of a 2022 GMC Hummer EV pickup. During his speech, Biden praised GM CEO Mary Barra for driving the country’s electric future: You electrified the entire automobile industry. You led — and it matters — in drastically improving the climate by reducing hundreds of millions of barrels of oil…

    This story continues at The Next Web

    Or just read more coverage about: Tesla
    \n \n
    ", + "content": "
    President Biden seems to be all about electrifying America and pushing for EV adoption, but there are some people who feel seriously left out: our dear Elon Musk and… his mom. Last Wednesday, the president attended GM’s Factory Zero grand opening in Michigan and even had some fun behind the wheel of a 2022 GMC Hummer EV pickup. During his speech, Biden praised GM CEO Mary Barra for driving the country’s electric future: You electrified the entire automobile industry. You led — and it matters — in drastically improving the climate by reducing hundreds of millions of barrels of oil…

    This story continues at The Next Web

    Or just read more coverage about: Tesla
    \n \n
    ", + "category": "Shift", + "link": "https://thenextweb.com/news/musk-and-his-mom-go-anti-biden-twitter-rampage-for-ignoring-tesla", + "creator": "Ioanna Lykiardopoulou", + "pubDate": "Tue, 23 Nov 2021 16:00:47 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Muhammad Aziz, 83 ans, et Khalil Islam, mort en 2009, ont été disculpés juridiquement plus de cinquante ans après leur condamnation.", - "description": "Il s’agit de Muhammad Aziz, âgé de 83 ans et sorti de prison en 1985, et de Khalil Islam, libéré en 1987 et mort en 2009.", - "content": "Il s’agit de Muhammad Aziz, âgé de 83 ans et sorti de prison en 1985, et de Khalil Islam, libéré en 1987 et mort en 2009.", - "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/17/mort-de-malcolm-x-deux-hommes-condamnes-pour-son-meurtre-vont-etre-innocentes_6102466_3210.html", - "creator": "", - "pubDate": "Wed, 17 Nov 2021 21:14:34 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", + "title": "EVs could one day power your entire house — here’s how", + "description": "
    Electric cars could help to power millions of households in the coming years, simply by harnessing their battery power. The electricity in the vehicle’s battery could be plugged back into the grid, instead of being stored. The technique was pioneered in Japan and our research will help us understand how best to use it in the UK. Many electric vehicles (EVs) are being produced with the ability to use their onboard battery to send power back to the electricity supply they are connected to. Whether that is the owner’s house, or the electricity grid more generally, these technologies have been…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Electric cars could help to power millions of households in the coming years, simply by harnessing their battery power. The electricity in the vehicle’s battery could be plugged back into the grid, instead of being stored. The technique was pioneered in Japan and our research will help us understand how best to use it in the UK. Many electric vehicles (EVs) are being produced with the ability to use their onboard battery to send power back to the electricity supply they are connected to. Whether that is the owner’s house, or the electricity grid more generally, these technologies have been…

    This story continues at The Next Web
    \n \n
    ", + "category": "Shift", + "link": "https://thenextweb.com/news/electric-vehicle-could-power-entire-house-syndication", + "creator": "The Conversation", + "pubDate": "Tue, 23 Nov 2021 14:09:59 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Un nouveau vote a décidé « en grande majorité » de la poursuite du mouvement social pour vingt-quatre heures supplémentaires.", - "description": "Les salariés protestent notamment contre l’organisation de la charge de travail, les méthodes de management considérées comme décourageantes, voire « destructrices », ainsi que le manque de moyens.", - "content": "Les salariés protestent notamment contre l’organisation de la charge de travail, les méthodes de management considérées comme décourageantes, voire « destructrices », ainsi que le manque de moyens.", - "category": "", - "link": "https://www.lemonde.fr/economie/article/2021/11/18/france-24-en-greve_6102525_3234.html", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 09:24:04 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", - "read": true, + "title": "This Adobe Creative Cloud training can get you up to speed on digital creation for under $20", + "description": "
    TLDR: The Epic 2022 Adobe Creative Cloud Training Bundle offers training in using Photoshop, Illustrator, and more of the Adobe Creative Cloud’s most popular apps. 300 billion PDFs accessed. More than 8 billion e-signatures processed. And with the Adobe Creative Cloud suite of apps downloaded nearly 450 million times and a creative community of more than 24 million members, it’s no surprise that Adobe is an acknowledged leader in more than 40 different industry categories, from audio and video editing to content management, customer analytics, digital commerce, and more. And that doesn’t even touch on Photoshop, the image editing platform…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: The Epic 2022 Adobe Creative Cloud Training Bundle offers training in using Photoshop, Illustrator, and more of the Adobe Creative Cloud’s most popular apps. 300 billion PDFs accessed. More than 8 billion e-signatures processed. And with the Adobe Creative Cloud suite of apps downloaded nearly 450 million times and a creative community of more than 24 million members, it’s no surprise that Adobe is an acknowledged leader in more than 40 different industry categories, from audio and video editing to content management, customer analytics, digital commerce, and more. And that doesn’t even touch on Photoshop, the image editing platform…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/this-adobe-creative-cloud-training-can-get-you-up-to-speed-on-digital-creation-for-under-20", + "creator": "TNW Deals", + "pubDate": "Tue, 23 Nov 2021 14:00:30 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Aux Etats-Unis, la peine de mort d’un prisonnier commuée au dernier moment", - "description": "Julius Jones, un Afro-Américain de 41 ans, avait été condamné en 2002 à la peine capitale pour le meurtre d’un homme d’affaires. Sa peine est commuée en prison à vie, sans liberté conditionnelle possible.", - "content": "Julius Jones, un Afro-Américain de 41 ans, avait été condamné en 2002 à la peine capitale pour le meurtre d’un homme d’affaires. Sa peine est commuée en prison à vie, sans liberté conditionnelle possible.", - "category": "", - "link": "https://www.lemonde.fr/international/article/2021/11/18/aux-etats-unis-la-peine-de-mort-d-un-prisonnier-commuee-au-dernier-moment_6102624_3210.html", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 21:35:52 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", - "read": true, + "title": "VectorStyler will make you forget all about Illustrator for your digital design projects", + "description": "
    TLDR: VectorStyler Professional Illustration Software has all the tools for creating brilliant digital design work, including real vector brushes, all for just over $20. Adobe Illustrator has been an industry staple for creating vector graphics and design work for print, web, video and beyond for years. And as an industry leader, you pay for that positioning too, with annual subscription plans that can set you back about $240 a year. But the dirty little secret is there are some stellar vector graphic apps that can handle the same intricate design work that Illustrator can…and cost a whole lot less. VectorStyler…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: VectorStyler Professional Illustration Software has all the tools for creating brilliant digital design work, including real vector brushes, all for just over $20. Adobe Illustrator has been an industry staple for creating vector graphics and design work for print, web, video and beyond for years. And as an industry leader, you pay for that positioning too, with annual subscription plans that can set you back about $240 a year. But the dirty little secret is there are some stellar vector graphic apps that can handle the same intricate design work that Illustrator can…and cost a whole lot less. VectorStyler…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/vectorstyler-will-make-you-forget-all-about-illustrator-for-your-digital-design-projects", + "creator": "TNW Deals", + "pubDate": "Tue, 23 Nov 2021 14:00:27 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Handicap : la première adjointe à la mairie de Lyon choquée par les mots d’une élue LR", - "description": "Audrey Hénocque, première adjointe du maire écologiste Grégory Doucet et elle-même handicapée, a reproché ses propos à la conseillère de droite Françoise Blanc lors d’un débat au conseil municipal sur le handicap.", - "content": "Audrey Hénocque, première adjointe du maire écologiste Grégory Doucet et elle-même handicapée, a reproché ses propos à la conseillère de droite Françoise Blanc lors d’un débat au conseil municipal sur le handicap.", - "category": "", - "link": "https://www.lemonde.fr/politique/article/2021/11/18/handicap-la-premiere-adjointe-a-la-mairie-de-lyon-choquee-par-les-mots-d-une-elue-lr_6102620_823448.html", - "creator": "", - "pubDate": "Thu, 18 Nov 2021 21:28:10 +0100", - "folder": "00.03 News/News - FR", - "feed": "Le Monde", - "read": true, + "title": "Meta won’t roll out end-to-end encryption for its apps until 2023 — but is that so bad?", + "description": "
    It’s been two years since Mark Zuckerberg made a bold statement in 2019 about wanting to integrate all of Facebook, er, Meta’s messaging platforms — Messenger, Instagram, and WhatsApp — with end-to-end encryption protection. But the journey has already taken a long time, and it might not be complete for another two years. Over the weekend, Antigone Davis, Meta‘s global director of safety, said the company is taking its time to “get this right and we don’t plan to finish the global rollout of end-to-end encryption by default across all our messaging services until sometime in 2023.” This drew a…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    It’s been two years since Mark Zuckerberg made a bold statement in 2019 about wanting to integrate all of Facebook, er, Meta’s messaging platforms — Messenger, Instagram, and WhatsApp — with end-to-end encryption protection. But the journey has already taken a long time, and it might not be complete for another two years. Over the weekend, Antigone Davis, Meta‘s global director of safety, said the company is taking its time to “get this right and we don’t plan to finish the global rollout of end-to-end encryption by default across all our messaging services until sometime in 2023.” This drew a…

    This story continues at The Next Web
    \n \n
    ", + "category": "Plugged", + "link": "https://thenextweb.com/news/facebook-meta-encryption-e2ee-2023-analysis", + "creator": "Ivan Mehta", + "pubDate": "Tue, 23 Nov 2021 13:40:37 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - FR", - "name": "Le Monde" - }, - "16": { - "title": "Les Echos - Economie France", - "subtitle": "", - "link": "https://www.lesechos.fr/economie-france/", - "image": null, - "description": "Toute l'info économique, financière et boursière sur la France", - "items": [ + }, { - "title": "Retraites, éducation, emploi : l'OCDE exhorte la France à relancer les réformes", - "description": "Dans un rapport publié ce jeudi, l'organisation internationale appelle l'Hexagone à relancer son programme de réformes engagé en 2017 pour assurer une reprise pérenne. Parmi ses recommandations : la retraite à 64 ans à partir de 2025. Elle a aussi relevé sa prévision de croissance pour la France à 6,8% cette année et à 4,2% l'an prochain.", - "content": "Dans un rapport publié ce jeudi, l'organisation internationale appelle l'Hexagone à relancer son programme de réformes engagé en 2017 pour assurer une reprise pérenne. Parmi ses recommandations : la retraite à 64 ans à partir de 2025. Elle a aussi relevé sa prévision de croissance pour la France à 6,8% cette année et à 4,2% l'an prochain.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700350674254-locde-fixe-sa-feuille-de-route-a-la-france-pour-le-prochain-quinquennat-2442034.php#xtor=RSS-71", - "creator": "Nathalie Silbert", - "pubDate": "Thu, 18 Nov 2021 11:45:17 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", - "read": true, + "title": "Why NASA is going full Michael Bay and attacking an asteroid?", + "description": "
    In a move clearly inspired by the hyperrealistic movie Armageddon, NASA has decided to attack an asteroid. The space agency, however, has recklessly overlooked Michael Bay’s ingenious idea of training oil drillers to become astronauts. Nor will the NASA nerds follow the director’s advice of blasting the rock with a nuclear bomb. Instead, they want to smack it with a spacecraft. Life disregarding art Smaller asteroids frequently strike the Earth, but most burn up in the atmosphere before they reach the planet’s surface. That doesn’t mean we have nothing to fear, however. Just try telling the dinosaurs that space rocks…

    This story continues at The Next Web

    Or just read more coverage about: NASA
    \n \n
    ", + "content": "
    In a move clearly inspired by the hyperrealistic movie Armageddon, NASA has decided to attack an asteroid. The space agency, however, has recklessly overlooked Michael Bay’s ingenious idea of training oil drillers to become astronauts. Nor will the NASA nerds follow the director’s advice of blasting the rock with a nuclear bomb. Instead, they want to smack it with a spacecraft. Life disregarding art Smaller asteroids frequently strike the Earth, but most burn up in the atmosphere before they reach the planet’s surface. That doesn’t mean we have nothing to fear, however. Just try telling the dinosaurs that space rocks…

    This story continues at The Next Web

    Or just read more coverage about: NASA
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/why-is-nasa-slamming-dart-spacecraft-into-asteroid", + "creator": "Thomas Macaulay", + "pubDate": "Tue, 23 Nov 2021 12:59:24 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les baisses d'impôts devraient soutenir la croissance française", - "description": "Le PIB par tête devrait augmenter de 1,35 % par an entre 2017 et 2025, contre 1,2 % en moyenne entre 2009 et 2017, selon une étude réalisée par le Cepremap et l'IPP. Cette accélération serait notamment la résultante des allégements fiscaux consentis sur le quinquennat.", - "content": "Le PIB par tête devrait augmenter de 1,35 % par an entre 2017 et 2025, contre 1,2 % en moyenne entre 2009 et 2017, selon une étude réalisée par le Cepremap et l'IPP. Cette accélération serait notamment la résultante des allégements fiscaux consentis sur le quinquennat.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700340019617-les-baisses-dimpots-devraient-soutenir-la-croissance-francaise-2441559.php#xtor=RSS-71", - "creator": "Nathalie Silbert", - "pubDate": "Tue, 16 Nov 2021 17:16:10 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "Compulsory EV chargers give retailers a chance to win back UK shoppers", + "description": "
    We reported in September that the UK was making the installation of EV chargers a prerequisite for newly built homes and offices. But now it’s official, with British Prime Minister Boris Johnson formally announcing the initiative at the CBI annual conference. From 2022, new homes and buildings such as supermarkets, shopping malls, and workplaces will be required to install electric vehicle charging points.  Specifically, new office blocks will need to install a charge point for every five parking spaces, and the regulations also apply to large scale renovations with over ten parking spaces.    If you’re just getting going, here’s 4…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    We reported in September that the UK was making the installation of EV chargers a prerequisite for newly built homes and offices. But now it’s official, with British Prime Minister Boris Johnson formally announcing the initiative at the CBI annual conference. From 2022, new homes and buildings such as supermarkets, shopping malls, and workplaces will be required to install electric vehicle charging points.  Specifically, new office blocks will need to install a charge point for every five parking spaces, and the regulations also apply to large scale renovations with over ten parking spaces.    If you’re just getting going, here’s 4…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/ev-chargers-have-the-potential-to-transform-uk-retail-spaces", + "creator": "Cate Lawrence", + "pubDate": "Tue, 23 Nov 2021 12:07:03 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le Covid, une chance pour le Made in France ?", - "description": "Episode 1 - Pour « La Story », le podcast d'actualité des « Echos », Pierrick Fay et ses invités reviennent sur la façon dont la crise sanitaire a réveillé l'attrait pour les produits fabriqués en France, sur fond de regain de souveraineté européenne. Encore faut-il ne pas rater la marche…", - "content": "Episode 1 - Pour « La Story », le podcast d'actualité des « Echos », Pierrick Fay et ses invités reviennent sur la façon dont la crise sanitaire a réveillé l'attrait pour les produits fabriqués en France, sur fond de regain de souveraineté européenne. Encore faut-il ne pas rater la marche…", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700293848003-le-covid-une-chance-pour-le-made-in-france-2441060.php#xtor=RSS-71", - "creator": "Les Echos", - "pubDate": "Fri, 12 Nov 2021 17:00:50 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "5 reasons to stop neglecting your email signature", + "description": "
    Time and again, I see too many businesses overlooking their email signatures when communicating with customers. You might think that this small detail at the end of every email you send is insignificant. But just think about it — it’s at the end of every email you send. And with 310 billion emails expected to be sent and received every day in 2021, you want your emails to stand out from the crowd and make a lasting impression. That’s why I’m going to convince you that your email signature is the handiest tool you have for boosting customer satisfaction. #1…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Time and again, I see too many businesses overlooking their email signatures when communicating with customers. You might think that this small detail at the end of every email you send is insignificant. But just think about it — it’s at the end of every email you send. And with 310 billion emails expected to be sent and received every day in 2021, you want your emails to stand out from the crowd and make a lasting impression. That’s why I’m going to convince you that your email signature is the handiest tool you have for boosting customer satisfaction. #1…

    This story continues at The Next Web
    \n \n
    ", + "category": "Growth Quarters", + "link": "https://thenextweb.com/news/5-reasons-stop-neglecting-email-signature", + "creator": "Maria Dahlqvist Canton", + "pubDate": "Tue, 23 Nov 2021 10:12:34 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Les exportateurs français moins à la peine que leurs voisins allemands", - "description": "Les exportations allemandes ont baissé en septembre, pour le deuxième mois consécutif, alors que celles de la France sont bien orientées depuis le début de l'été. Pour autant, les exportations allemandes sont plus proches de leur niveau d'avant crise que celles de la France.", - "content": "Les exportations allemandes ont baissé en septembre, pour le deuxième mois consécutif, alors que celles de la France sont bien orientées depuis le début de l'été. Pour autant, les exportations allemandes sont plus proches de leur niveau d'avant crise que celles de la France.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700291457874-les-exportateurs-francais-moins-a-la-peine-que-leurs-voisins-allemands-2440450.php#xtor=RSS-71", - "creator": "Claude Fouquet", - "pubDate": "Tue, 09 Nov 2021 12:04:53 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "Forget the Apple car, I want an Apple iBike", + "description": "
    Apple is making a car. Maybe. Supposedly. Probably? Rumors about the mythical Apple Car, codenamed ‘Project Titan,‘ have been making the rounds for a good 6+ years now, with the project reportedly stagnating and pivoting multiple times. Now the latest batch of rumors suggests the project is back on again, this time focusing on a shared autonomous vehicle that may not even have a proper steering wheel (although a driveable version may be in the works too). Apple is reportedly aiming for a 2025 launch. I’ll admit it, an Apple car would be cool, and I’m mighty curious to see…

    This story continues at The Next Web

    Or just read more coverage about: Apple
    \n \n
    ", + "content": "
    Apple is making a car. Maybe. Supposedly. Probably? Rumors about the mythical Apple Car, codenamed ‘Project Titan,‘ have been making the rounds for a good 6+ years now, with the project reportedly stagnating and pivoting multiple times. Now the latest batch of rumors suggests the project is back on again, this time focusing on a shared autonomous vehicle that may not even have a proper steering wheel (although a driveable version may be in the works too). Apple is reportedly aiming for a 2025 launch. I’ll admit it, an Apple car would be cool, and I’m mighty curious to see…

    This story continues at The Next Web

    Or just read more coverage about: Apple
    \n \n
    ", + "category": "Plugged", + "link": "https://thenextweb.com/news/apple-car-boo-apple-ebike-woo", + "creator": "Napier Lopez", + "pubDate": "Tue, 23 Nov 2021 02:53:11 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L'industrie reprend, à son tour, de la vigueur en France", - "description": "Selon la note de conjoncture publiée lundi par la Banque de France, le PIB « dépasserait d'environ un demi-point » son niveau pré-crise en octobre et « de trois-quarts de point » en novembre. Les perspectives d'activité s'améliorent dans tous les secteurs.", - "content": "Selon la note de conjoncture publiée lundi par la Banque de France, le PIB « dépasserait d'environ un demi-point » son niveau pré-crise en octobre et « de trois-quarts de point » en novembre. Les perspectives d'activité s'améliorent dans tous les secteurs.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700284786318-lindustrie-reprend-a-son-tour-de-la-vigueur-en-france-2440403.php#xtor=RSS-71", - "creator": "Nathalie Silbert", - "pubDate": "Tue, 09 Nov 2021 06:15:18 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "Study: Girls show more interest in STEM when they’re not fed harmful stereotypes", + "description": "
    Researchers at the University of Houston and the University of Washington today published new research indicating gender stereotypes play a huge role in whether children choose to pursue an eventual career in computer science or engineering. Up front: The researchers conducted a series of studies and experiments involving more than 2,200 children. The team’s goal was to determine how gender stereotypes affected school-aged children in order to glean insights into the ongoing diversity problem in STEM. The scope of the study was apparently limited to measuring the interest of “boys” and “girls,” with no apparent mention of non-binary students. Background:…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Researchers at the University of Houston and the University of Washington today published new research indicating gender stereotypes play a huge role in whether children choose to pursue an eventual career in computer science or engineering. Up front: The researchers conducted a series of studies and experiments involving more than 2,200 children. The team’s goal was to determine how gender stereotypes affected school-aged children in order to glean insights into the ongoing diversity problem in STEM. The scope of the study was apparently limited to measuring the interest of “boys” and “girls,” with no apparent mention of non-binary students. Background:…

    This story continues at The Next Web
    \n \n
    ", + "category": "Science", + "link": "https://thenextweb.com/news/study-girls-show-more-interest-stem-when-theyre-not-fed-harmful-stereotypes", + "creator": "Tristan Greene", + "pubDate": "Mon, 22 Nov 2021 22:04:09 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Présidentielle : ce que demande le monde de l'industrie pour améliorer la compétitivité", - "description": "Toujours perturbée par les difficultés d'approvisionnement, la production manufacturière française reste en deçà de son niveau d'avant-crise. A quelques mois des élections présidentielles, la poursuite de la baisse des impôts de production revient dans le débat.", - "content": "Toujours perturbée par les difficultés d'approvisionnement, la production manufacturière française reste en deçà de son niveau d'avant-crise. A quelques mois des élections présidentielles, la poursuite de la baisse des impôts de production revient dans le débat.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700266186636-presidentielle-ce-que-demande-le-monde-de-lindustrie-pour-ameliorer-la-competitivite-2440185.php#xtor=RSS-71", - "creator": "Nathalie Silbert", - "pubDate": "Mon, 08 Nov 2021 07:00:41 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "NYC bill to rein in AI hiring tools looks like it was meant to backfire", + "description": "
    New York recently passed a bill providing guidelines for the operation of automated hiring software in the city. Allegedly, city council’s aim with this legislation was to protect New Yorkers from biased AI. But, from where we’re sitting, it looks like it’s going to do the exact opposite. Up front: The bill, dubbed int 1894-2020, was meant to address the issue of bias in AI software. Companies such as HireVue claim their algorithms can actually remove hiring bias – the schtick here is that computers can’t be bigots. But the reality is that there’s no magic way to remove bias…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    New York recently passed a bill providing guidelines for the operation of automated hiring software in the city. Allegedly, city council’s aim with this legislation was to protect New Yorkers from biased AI. But, from where we’re sitting, it looks like it’s going to do the exact opposite. Up front: The bill, dubbed int 1894-2020, was meant to address the issue of bias in AI software. Companies such as HireVue claim their algorithms can actually remove hiring bias – the schtick here is that computers can’t be bigots. But the reality is that there’s no magic way to remove bias…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/nyc-bill-rein-in-ai-hiring-tools-looks-like-was-meant-to-backfire", + "creator": "Tristan Greene", + "pubDate": "Mon, 22 Nov 2021 19:23:21 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Portée par le dynamisme de la consommation, la France s'affirme en locomotive de la zone euro", - "description": "Tirée par le fort rebond des dépenses de consommation, notamment dans les restaurants, l'économie française a retrouvé son niveau d'avant-crise au troisième trimestre. L'Hexagone confirme ainsi son statut de meilleur élève parmi les grands pays de la zone euro. La vigueur de la croissance des prochains mois dépendra encore du comportement des ménages.", - "content": "Tirée par le fort rebond des dépenses de consommation, notamment dans les restaurants, l'économie française a retrouvé son niveau d'avant-crise au troisième trimestre. L'Hexagone confirme ainsi son statut de meilleur élève parmi les grands pays de la zone euro. La vigueur de la croissance des prochains mois dépendra encore du comportement des ménages.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700222439969-portee-par-le-dynamisme-de-la-consommation-la-france-saffirme-en-locomotive-de-la-zone-euro-2439167.php#xtor=RSS-71", - "creator": "Nathalie Silbert", - "pubDate": "Tue, 02 Nov 2021 08:00:46 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "Crypto bonds! Volcanoes! What we know about the first ‘Bitcoin City’", + "description": "
    Crypto bros could soon have a new dream destination. At a conference on Saturday, the president of El Salvador unveiled plans to build the world’s first “Bitcoin City.” Dressed in all white and donning a backward baseball cap, President Nayib Bukele looked more like a pop star than a politician as he described an ecological metropolis funded by Bitcoin-backed bonds. He compared his strategy to that of Alexander the Great founding cities that he humbly named after himself: The idea behind it was that these Alexandrias be the beacons of hope for the rest of the world; that all of…

    This story continues at The Next Web

    Or just read more coverage about: Bitcoin
    \n \n
    ", + "content": "
    Crypto bros could soon have a new dream destination. At a conference on Saturday, the president of El Salvador unveiled plans to build the world’s first “Bitcoin City.” Dressed in all white and donning a backward baseball cap, President Nayib Bukele looked more like a pop star than a politician as he described an ecological metropolis funded by Bitcoin-backed bonds. He compared his strategy to that of Alexander the Great founding cities that he humbly named after himself: The idea behind it was that these Alexandrias be the beacons of hope for the rest of the world; that all of…

    This story continues at The Next Web

    Or just read more coverage about: Bitcoin
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/how-el-salvador-plans-build-worlds-first-bitcoin-city", + "creator": "Thomas Macaulay", + "pubDate": "Mon, 22 Nov 2021 16:41:25 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Comment le Covid a bouleversé les cycles économiques", - "description": "Selon les experts de l'Association française de science économique, le cycle économique du Covid est le plus court depuis les années 1970 en France, mais aussi le plus ample. La reprise est toutefois très hétérogène en Europe.", - "content": "Selon les experts de l'Association française de science économique, le cycle économique du Covid est le plus court depuis les années 1970 en France, mais aussi le plus ample. La reprise est toutefois très hétérogène en Europe.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700223292111-comment-le-covid-a-bouleverse-les-cycles-economiques-2439163.php#xtor=RSS-71", - "creator": "Guillaume de Calignon", - "pubDate": "Tue, 02 Nov 2021 08:00:38 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "Tesla’s app outage exposes the bigger problem of IoT", + "description": "
    Is there ever a week without some kind of fuck up at Tesla? If it was a lesser brand, I’d think it was a ploy for publicity, but the latest app bug was way too severe for that. Last Friday, the BBC wrote that about 500 users reported an error on the Tesla app at around 4:40 ET (10:40 CET) that left car owners unable to unlock the doors or start their cars. Since the company has no PR team (Elon sacked them), it was Elon Musk to the rescue. So he went on Twitter to keep stranded drivers updated.…

    This story continues at The Next Web

    Or just read more coverage about: Tesla
    \n \n
    ", + "content": "
    Is there ever a week without some kind of fuck up at Tesla? If it was a lesser brand, I’d think it was a ploy for publicity, but the latest app bug was way too severe for that. Last Friday, the BBC wrote that about 500 users reported an error on the Tesla app at around 4:40 ET (10:40 CET) that left car owners unable to unlock the doors or start their cars. Since the company has no PR team (Elon sacked them), it was Elon Musk to the rescue. So he went on Twitter to keep stranded drivers updated.…

    This story continues at The Next Web

    Or just read more coverage about: Tesla
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/teslas-app-outage-exposes-the-bigger-problem-of-iot", + "creator": "Cate Lawrence", + "pubDate": "Mon, 22 Nov 2021 15:54:49 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L'inflation, une menace sur la reprise", - "description": "En octobre, les prix à la consommation ont augmenté de 2,6 % sur un an en France selon l'Insee. Ce regain d'inflation, parti pour durer de longs mois encore, fait planer un risque sur la consommation des ménages mais aussi sur les entreprises.", - "content": "En octobre, les prix à la consommation ont augmenté de 2,6 % sur un an en France selon l'Insee. Ce regain d'inflation, parti pour durer de longs mois encore, fait planer un risque sur la consommation des ménages mais aussi sur les entreprises.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700223745873-linflation-une-menace-sur-la-reprise-2439153.php#xtor=RSS-71", - "creator": "Nathalie Silbert", - "pubDate": "Tue, 02 Nov 2021 07:00:31 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", + "title": "Here are the most common passwords of 2021, is yours on the list?", + "description": "
    If you use “123456”, “password” or “qwerty” as a password, you’re probably aware that you’re leaving yourself vulnerable to hackers. But you’re also not alone – these are three of the top ten most common passwords around the world, according to a new report. In partnership with independent researchers, password management service NordPass compiled millions of passwords into a dataset to determine the 200 most commonly used passwords around the world in 2021. They analyzed the data and presented results across 50 countries, looking at how popular various choices were in different parts of the world. They also looked at…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    If you use “123456”, “password” or “qwerty” as a password, you’re probably aware that you’re leaving yourself vulnerable to hackers. But you’re also not alone – these are three of the top ten most common passwords around the world, according to a new report. In partnership with independent researchers, password management service NordPass compiled millions of passwords into a dataset to determine the 200 most commonly used passwords around the world in 2021. They analyzed the data and presented results across 50 countries, looking at how popular various choices were in different parts of the world. They also looked at…

    This story continues at The Next Web
    \n \n
    ", + "category": "insights", + "link": "https://thenextweb.com/news/most-common-passwords-2021-is-yours-on-the-list-syndication", + "creator": "The Conversation", + "pubDate": "Mon, 22 Nov 2021 15:11:26 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "L'inflation bondit à 2,6 % en octobre en France", - "description": "La hausse des prix à la consommation a grimpé de 0,4 point ce mois-ci par rapport à septembre, en raison de l'envolée des cours de l'énergie notamment, selon les données publiées par l'Insee ce vendredi.", - "content": "La hausse des prix à la consommation a grimpé de 0,4 point ce mois-ci par rapport à septembre, en raison de l'envolée des cours de l'énergie notamment, selon les données publiées par l'Insee ce vendredi.", - "category": "Économie France", - "link": "https://www.lesechos.fr/economie-france/conjoncture/0700221388233-linflation-bondit-a-26-en-octobre-en-france-2438876.php#xtor=RSS-71", - "creator": "Nathalie Silbert", - "pubDate": "Fri, 29 Oct 2021 09:50:45 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos", - "read": true, + "title": "It’s the limited edition Mac Bundle, 12 apps gathered into our coolest Mac package this year", + "description": "
    TLDR: The Complete Limited Edition Mac Bundle is our best Mac package of the year, 12 killer apps on sale for an obscenely low price while it lasts. Every year, it’s one of TNW Deals’ most popular holiday season items, so it’s no surprise Mac users who have been good all year are now asking for the latest edition of The Complete Limited Edition Mac Bundle ($16.22 with code MACBUNDLE40).  Yep, it’s this year’s collection of 12 of the greatest and coolest Mac apps, all gathered up into one tidy package and topped off with an incredibly attractive price as…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: The Complete Limited Edition Mac Bundle is our best Mac package of the year, 12 killer apps on sale for an obscenely low price while it lasts. Every year, it’s one of TNW Deals’ most popular holiday season items, so it’s no surprise Mac users who have been good all year are now asking for the latest edition of The Complete Limited Edition Mac Bundle ($16.22 with code MACBUNDLE40).  Yep, it’s this year’s collection of 12 of the greatest and coolest Mac apps, all gathered up into one tidy package and topped off with an incredibly attractive price as…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/its-the-limited-edition-mac-bundle-12-apps-gathered-into-our-coolest-mac-package-this-year", + "creator": "TNW Deals", + "pubDate": "Mon, 22 Nov 2021 14:00:26 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - FR", - "name": "Les Echos" - }, - "17": { - "title": "Les Echos - Politique", - "subtitle": "", - "link": "https://www.lesechos.fr/politique-societe/", - "image": null, - "description": "Toute l'info politique en France et à l'étranger", - "items": [ + }, { - "title": "David Lisnard : LR par l'autre porte", - "description": "Avènement d'un ambitieux. Le maire de Cannes avait hésité à se présenter à la primaire LR avant de partir à la conquête de l'Association des maires de France, tribune et réseau de poids pour qui rêve de réconcilier la droite et les idées.", - "content": "Avènement d'un ambitieux. Le maire de Cannes avait hésité à se présenter à la primaire LR avant de partir à la conquête de l'Association des maires de France, tribune et réseau de poids pour qui rêve de réconcilier la droite et les idées.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700350565216-david-lisnard-lr-par-lautre-porte-2442003.php#xtor=RSS-70", - "creator": "Cecile Cornudet", - "pubDate": "Thu, 18 Nov 2021 08:30:17 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", - "read": true, + "title": "JavaScript isn’t so mysterious. This training bundle explains it all at a pre-Black Friday sale price under $26", + "description": "
    TLDR: The 2022 Javascript Developer Bootcamp Certification Bundle features over 120 hours of intensive JavaScript training to turn any learner into an expert fast. Johnny-come-latelys to the coding scene can gush about their Pythons or their Ruby on Rails all they want. But when it’s all said and done, JavaScript still rules the programming roost. The venerable language has been the core of the web and web development for 25 years, with no real signs that its dominance will come to a close anytime soon. That means any coder who really wants to work in web production better be fluent…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: The 2022 Javascript Developer Bootcamp Certification Bundle features over 120 hours of intensive JavaScript training to turn any learner into an expert fast. Johnny-come-latelys to the coding scene can gush about their Pythons or their Ruby on Rails all they want. But when it’s all said and done, JavaScript still rules the programming roost. The venerable language has been the core of the web and web development for 25 years, with no real signs that its dominance will come to a close anytime soon. That means any coder who really wants to work in web production better be fluent…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/javascript-isnt-so-mysterious-this-training-bundle-explains-it-all-at-a-pre-black-friday-sale-price-under-26", + "creator": "TNW Deals", + "pubDate": "Mon, 22 Nov 2021 14:00:06 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Procès des emplois fictifs : François Fillon exprime « des regrets »", - "description": "Au deuxième jour de son procès en appel, l'ancien Premier ministre a tenu ce mardi à faire une déclaration liminaire « pour dire la vérité ».", - "content": "Au deuxième jour de son procès en appel, l'ancien Premier ministre a tenu ce mardi à faire une déclaration liminaire « pour dire la vérité ».", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700343076692-proces-des-emplois-fictifs-francois-fillon-exprime-des-regrets-2441570.php#xtor=RSS-70", - "creator": "Valerie de Senneville", - "pubDate": "Tue, 16 Nov 2021 18:07:34 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "4 reasons why museums aren’t getting into the NFT game", + "description": "
    The eye-popping sale price of US$69 million on March 11, 2021, for a non-fungible token created by the digital artist Beeple sent shock waves through the art world. More multimillion-dollar sales of these digital assets that exist on a blockchain and are maintained on networked computers soon followed. At the same time, art museums have faced substantial financial shortfalls accelerated by a decline in visitors and donations induced by the COVID-19 pandemic. Many have considered taking drastic measures, such as selling treasured artworks, to plug budget gaps. Can NFTs generate the revenue many museums sorely need? Some are issuing their…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    The eye-popping sale price of US$69 million on March 11, 2021, for a non-fungible token created by the digital artist Beeple sent shock waves through the art world. More multimillion-dollar sales of these digital assets that exist on a blockchain and are maintained on networked computers soon followed. At the same time, art museums have faced substantial financial shortfalls accelerated by a decline in visitors and donations induced by the COVID-19 pandemic. Many have considered taking drastic measures, such as selling treasured artworks, to plug budget gaps. Can NFTs generate the revenue many museums sorely need? Some are issuing their…

    This story continues at The Next Web
    \n \n
    ", + "category": "Hard Fork", + "link": "https://thenextweb.com/news/4-reasons-museums-arent-getting-nft-syndication", + "creator": "The Conversation", + "pubDate": "Mon, 22 Nov 2021 12:55:32 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Présidentielle 2022 : cinq questions sur le Parti animaliste et sa candidate, Hélène Thouy", - "description": "Un sondage Ifop pour le Parti animaliste donne Hélène Thouy à 2 % des intentions de vote, devant Arnaud Montebourg et de nombreux autres « petits candidats ». Si ce score peut paraître négligeable, il témoigne toutefois d'une inscription du Parti animaliste dans le paysage politique français.", - "content": "Un sondage Ifop pour le Parti animaliste donne Hélène Thouy à 2 % des intentions de vote, devant Arnaud Montebourg et de nombreux autres « petits candidats ». Si ce score peut paraître négligeable, il témoigne toutefois d'une inscription du Parti animaliste dans le paysage politique français.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700340194132-presidentielle-2022-cinq-questions-sur-le-parti-animaliste-et-sa-candidate-helene-thouy-2441539.php#xtor=RSS-70", - "creator": "Les Echos", - "pubDate": "Tue, 16 Nov 2021 15:56:28 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "‘Greenhushing’ is the new greenwashing in the EV industry", + "description": "
    We’ve been all-in from the get-go. Committed to total transparency about electric vehicles’ climate impact, and our progress towards a sustainable mobility. When we published our first Polestar 2 Life Cycle Assessment in 2020, including its full methodology, we encouraged other car makers to become more transparent about their products’ climate impact. Instead, several well-known brands released their own report that attempted to contradict ours. The Astongate scandal, as it became known, now has its own Wikipedia page, where you can read about how their greenwashing campaign quickly fell to pieces. We recently doubled down on our commitment to transparency…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    We’ve been all-in from the get-go. Committed to total transparency about electric vehicles’ climate impact, and our progress towards a sustainable mobility. When we published our first Polestar 2 Life Cycle Assessment in 2020, including its full methodology, we encouraged other car makers to become more transparent about their products’ climate impact. Instead, several well-known brands released their own report that attempted to contradict ours. The Astongate scandal, as it became known, now has its own Wikipedia page, where you can read about how their greenwashing campaign quickly fell to pieces. We recently doubled down on our commitment to transparency…

    This story continues at The Next Web
    \n \n
    ", + "category": "Shift", + "link": "https://thenextweb.com/news/greenhushing-the-new-greenwashing-ev-industry", + "creator": "Polestar", + "pubDate": "Mon, 22 Nov 2021 11:08:22 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "EXCLUSIF - Secret des avocats : Eric Dupond-Moretti maintient le texte contesté", - "description": "Le garde des Sceaux n'a pas accédé à la demande du Conseil national des barreaux, qui voulait le retrait de l'article sur le secret de l'avocat du projet de loi de confiance dans la justice. Il a choisi d'amender à la marge le texte des parlementaires.", - "content": "Le garde des Sceaux n'a pas accédé à la demande du Conseil national des barreaux, qui voulait le retrait de l'article sur le secret de l'avocat du projet de loi de confiance dans la justice. Il a choisi d'amender à la marge le texte des parlementaires.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700339930711-exclusif-secret-des-avocats-eric-dupond-moretti-maintient-le-texte-conteste-2441517.php#xtor=RSS-70", - "creator": "Laurence Boisseau et Isabelle Couet", - "pubDate": "Tue, 16 Nov 2021 13:06:03 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "Are phones designed to slow down over time? Let’s review the evidence", + "description": "
    It’s usually around this time of year you hear people complain about their phones slowing down. Apple and Google release new versions of their operating systems (OS) and suddenly there’s a slew of people claiming their old devices have started to lag – conveniently just before Christmas. But do manufacturers really slow down our phones on purpose to nudge us towards shiny new ones, as has been claimed? The answer to this, as usual, is complicated. Let’s take a look at the evidence. The ol’ operating system shuffle Every year, usually around May and June, tech companies announce their new…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    It’s usually around this time of year you hear people complain about their phones slowing down. Apple and Google release new versions of their operating systems (OS) and suddenly there’s a slew of people claiming their old devices have started to lag – conveniently just before Christmas. But do manufacturers really slow down our phones on purpose to nudge us towards shiny new ones, as has been claimed? The answer to this, as usual, is complicated. Let’s take a look at the evidence. The ol’ operating system shuffle Every year, usually around May and June, tech companies announce their new…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/are-phones-designed-to-slow-down-over-time", + "creator": "The Conversation", + "pubDate": "Sun, 21 Nov 2021 14:09:03 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Qui sont les maires de France ?", - "description": "Les maires français sont appelés à voter pour désigner le successeur de François Baroin à la tête de la puissante Association des maires de France. Mais qui sont les élus à la tête de nos mairies en 2020 ? Le point sur les professions, classes d'âge et prénoms les plus représentés.", - "content": "Les maires français sont appelés à voter pour désigner le successeur de François Baroin à la tête de la puissante Association des maires de France. Mais qui sont les élus à la tête de nos mairies en 2020 ? Le point sur les professions, classes d'âge et prénoms les plus représentés.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700332512926-qui-sont-les-maires-de-france-2441503.php#xtor=RSS-70", - "creator": "Samir Touzani", - "pubDate": "Tue, 16 Nov 2021 12:00:10 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "AI can’t tell if you’re lying – anyone who says otherwise is selling something", + "description": "
    Another day, another problematic AI study. Today’s snake oil special comes via Tel Aviv University where a team of researchers have unveiled a so-called “lie-detection system.” Let’s be really clear right up front: AI can’t do anything a person, given an equivalent amount of time to work on the problem, couldn’t do themselves. And no human can tell if any given human is lying. Full stop. The simple fact of the matter is that some of us can tell when some people are lying some of the time. Nobody can tell when anybody is lying all of the time. The university…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Another day, another problematic AI study. Today’s snake oil special comes via Tel Aviv University where a team of researchers have unveiled a so-called “lie-detection system.” Let’s be really clear right up front: AI can’t do anything a person, given an equivalent amount of time to work on the problem, couldn’t do themselves. And no human can tell if any given human is lying. Full stop. The simple fact of the matter is that some of us can tell when some people are lying some of the time. Nobody can tell when anybody is lying all of the time. The university…

    This story continues at The Next Web
    \n \n
    ", + "category": "Neural", + "link": "https://thenextweb.com/news/ai-cant-tell-youre-lying-anyone-who-says-otherwise-selling-something", + "creator": "Tristan Greene", + "pubDate": "Fri, 19 Nov 2021 22:36:52 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "SONDAGE EXCLUSIF - Climat : une majorité de Français doutent de la portée de la COP26", - "description": "Selon un sondage OpinionWay- Square pour « Les Echos », 76 % des Français font de la question climatique un enjeu politique prioritaire. Une large majorité doute des engagements pris à la COP de Glasgow et considère qu'il faut sanctionner les Etats récalcitrants.  ", - "content": "Selon un sondage OpinionWay- Square pour « Les Echos », 76 % des Français font de la question climatique un enjeu politique prioritaire. Une large majorité doute des engagements pris à la COP de Glasgow et considère qu'il faut sanctionner les Etats récalcitrants.  ", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700332933159-sondage-exclusif-climat-une-majorite-de-francais-sceptiques-sur-la-portee-de-la-cop-26-2441281.php#xtor=RSS-70", - "creator": "Joel Cossardeaux", - "pubDate": "Mon, 15 Nov 2021 13:40:31 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "MIT research shows sad reason why deepfakes pose little threat to US politics", + "description": "
    MIT researchers working with funding from Google’s Jigsaw group recently conducted a pair of studies to determine what, if any, potential impact deepfake AI technology political ads could have on US voters. In total, more than 7,500 people in the US participated in the paired studies – as far as we’re able to determine, that makes this the largest set of experiments on the subject. Participants were split into three groups; one group watch a deepfake video, the second read a text transcript of the video, and the third acted as a control group so they received no media prompts.…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    MIT researchers working with funding from Google’s Jigsaw group recently conducted a pair of studies to determine what, if any, potential impact deepfake AI technology political ads could have on US voters. In total, more than 7,500 people in the US participated in the paired studies – as far as we’re able to determine, that makes this the largest set of experiments on the subject. Participants were split into three groups; one group watch a deepfake video, the second read a text transcript of the video, and the third acted as a control group so they received no media prompts.…

    This story continues at The Next Web
    \n \n
    ", + "category": "Neural", + "link": "https://thenextweb.com/news/mit-research-shows-sad-reason-why-deepfakes-pose-little-threat-us-politics", + "creator": "Tristan Greene", + "pubDate": "Fri, 19 Nov 2021 14:40:44 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Emplois fictifs : François Fillon à nouveau devant les juges", - "description": "La Cour d'appel de Paris se penche à partir de lundi sur les délits de détournement de fonds publics, complicité et recel d'abus de biens sociaux reprochés à l'ancien Premier ministre et à son épouse, Penelope. Le couple avait été lourdement condamné en première instance.", - "content": "La Cour d'appel de Paris se penche à partir de lundi sur les délits de détournement de fonds publics, complicité et recel d'abus de biens sociaux reprochés à l'ancien Premier ministre et à son épouse, Penelope. Le couple avait été lourdement condamné en première instance.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700309485877-emplois-fictifs-francois-fillon-a-nouveau-devant-les-juges-2441100.php#xtor=RSS-70", - "creator": "Valerie de Senneville", - "pubDate": "Sun, 14 Nov 2021 11:37:19 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "Want to kick off 2022 as a coding expert? This package can show you how for under $45", + "description": "
    TLDR: The 2022 All-in-One Learn to Code Certification Bundle features over 230 hours of intensive training to learn all the top lessons to know about programming for the web. Hard skills can include learning how to do things like typing, or bookkeeping, or learning a trade. However, when you talk about hard skills these days, that usually means understanding computers and technology. And while you can delve deep into learning disciplines like SEO or graphic design, almost all of those talents lead back to one central ability nearly any tech-savvy 21st century professional needs. You need to learn how to…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    TLDR: The 2022 All-in-One Learn to Code Certification Bundle features over 230 hours of intensive training to learn all the top lessons to know about programming for the web. Hard skills can include learning how to do things like typing, or bookkeeping, or learning a trade. However, when you talk about hard skills these days, that usually means understanding computers and technology. And while you can delve deep into learning disciplines like SEO or graphic design, almost all of those talents lead back to one central ability nearly any tech-savvy 21st century professional needs. You need to learn how to…

    This story continues at The Next Web
    \n \n
    ", + "category": "Offers", + "link": "https://thenextweb.com/news/want-to-kick-off-2022-as-a-coding-expert-this-package-can-show-you-how-for-under-45", + "creator": "TNW Deals", + "pubDate": "Fri, 19 Nov 2021 14:00:52 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Nouvelle-Calédonie : le référendum aura bien lieu le 12 décembre", - "description": "La date, qui faisait l'objet de débats, a été confirmée par le Haut-commissaire de la République en Nouvelle-Calédonie, Patrice Faure. Plusieurs demandes de report avaient été faites par les indépendantistes en raison de l'épidémie de Covid. Ces derniers appellent au boycott du scrutin.", - "content": "La date, qui faisait l'objet de débats, a été confirmée par le Haut-commissaire de la République en Nouvelle-Calédonie, Patrice Faure. Plusieurs demandes de report avaient été faites par les indépendantistes en raison de l'épidémie de Covid. Ces derniers appellent au boycott du scrutin.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700315614481-nouvelle-caledonie-le-referendum-aura-bien-lieu-le-12-decembre-2441026.php#xtor=RSS-70", - "creator": "Les Echos", - "pubDate": "Fri, 12 Nov 2021 10:51:33 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "Party-pooping AI nerds wanna ruin your future drug binges", + "description": "
    The next generation of legal highs could be discovered by AI. Scientists in Canada have developed a model that identifies future designer drugs before they even hit the market. But don’t get too excited: the researchers aren’t planning to provide your next buzz. Instead, they want the cops to find it first. High times It wasn’t easy introducing AI to the drug game. First, the neural network needed a crash course in pharmacology. Instead of a traditional education in a meth lab, the neural network was trained on a database of known psychoactive substances. After diligently studying the structures of…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    The next generation of legal highs could be discovered by AI. Scientists in Canada have developed a model that identifies future designer drugs before they even hit the market. But don’t get too excited: the researchers aren’t planning to provide your next buzz. Instead, they want the cops to find it first. High times It wasn’t easy introducing AI to the drug game. First, the neural network needed a crash course in pharmacology. Instead of a traditional education in a meth lab, the neural network was trained on a database of known psychoactive substances. After diligently studying the structures of…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/ai-discovers-future-designer-drugs-before-they-hit-market", + "creator": "Thomas Macaulay", + "pubDate": "Fri, 19 Nov 2021 13:52:30 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "We asked an expert what canceling the HS2 Leeds branch means for UK high speed rail", + "description": "
    Following leaked reports that the UK government would be scrapping plans for the UK’s long-awaited high-speed rail to extend to Leeds, transport secretary Grant Shapps has announced in the House of Commons that the eastern leg of HS2 will now reach only from Birmingham to the East Midlands, and that an additional high-speed line between Leeds and Manchester would no longer be built. Instead, the newly published Integrated Rail Plan for the North and the Midlands, sets out proposals to upgrade existing lines to reduce journey times between the cities sooner (although not by as much). This contrasts with previous…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Following leaked reports that the UK government would be scrapping plans for the UK’s long-awaited high-speed rail to extend to Leeds, transport secretary Grant Shapps has announced in the House of Commons that the eastern leg of HS2 will now reach only from Birmingham to the East Midlands, and that an additional high-speed line between Leeds and Manchester would no longer be built. Instead, the newly published Integrated Rail Plan for the North and the Midlands, sets out proposals to upgrade existing lines to reduce journey times between the cities sooner (although not by as much). This contrasts with previous…

    This story continues at The Next Web
    \n \n
    ", + "category": "Shift", + "link": "https://thenextweb.com/news/we-asked-an-expert-what-canceling-the-hs2-leeds-branch-means-for-uk-high-speed-rail", + "creator": "The Conversation", + "pubDate": "Fri, 19 Nov 2021 13:51:00 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Le « ni-ni » de Gérard Larcher : ni Emmanuel Macron ni Eric Zemmour", - "description": "La course à l'investiture entre dans sa dernière ligne droite chez LR. A la veille du premier débat entre les cinq candidats, le président du Sénat Gérard Larcher croit au rassemblement de son parti. Il marque aussi ses différences avec Eric Zemmour et Emmanuel Macron.", - "content": "La course à l'investiture entre dans sa dernière ligne droite chez LR. A la veille du premier débat entre les cinq candidats, le président du Sénat Gérard Larcher croit au rassemblement de son parti. Il marque aussi ses différences avec Eric Zemmour et Emmanuel Macron.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700278565007-le-ni-ni-de-gerard-larcher-ni-emmanuel-macron-ni-eric-zemmour-2440067.php#xtor=RSS-70", - "creator": "Yves Vilaginés", - "pubDate": "Sun, 07 Nov 2021 13:47:43 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "Barbie’s gone electric! The doll’s life-size EV is marketing Mattel’s sustainability", + "description": "
    Among the various EVs currently on display at the LA Auto Show, there’s one that definitely steals the show. It’s glittery af and has a bubblegum pink interior. It’s the life-size Barbie Extra Car. Yep, that’s a Barbie car all the way. Credit: Mattel And, boy, is it extravagant! It has winged doors, an all-pink interior with fluffy headrests, star-shaped head and taillights, and rainbow-painted five-spoke wheels.  Credit: Mattel Credit: Mattel And wrap your head around this: the Barbie Car at the Auto Show is actually drivable, because it’s a modified Fiat 500e convertible. As such, it has an electric…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Among the various EVs currently on display at the LA Auto Show, there’s one that definitely steals the show. It’s glittery af and has a bubblegum pink interior. It’s the life-size Barbie Extra Car. Yep, that’s a Barbie car all the way. Credit: Mattel And, boy, is it extravagant! It has winged doors, an all-pink interior with fluffy headrests, star-shaped head and taillights, and rainbow-painted five-spoke wheels.  Credit: Mattel Credit: Mattel And wrap your head around this: the Barbie Car at the Auto Show is actually drivable, because it’s a modified Fiat 500e convertible. As such, it has an electric…

    This story continues at The Next Web
    \n \n
    ", + "category": "Shift", + "link": "https://thenextweb.com/news/barbies-gone-electric-doll-life-size-ev-is-marketing-mattels-sustainability", + "creator": "Ioanna Lykiardopoulou", + "pubDate": "Fri, 19 Nov 2021 12:34:29 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Alexandre Benalla condamné à trois ans de prison dont un ferme", - "description": "L'ancien proche collaborateur d'Emmanuel Macron a été condamné à trois ans de prison, dont deux avec sursis, pour les violences dont il était accusé en marge des manifestations du 1 er  mai 2018 à Paris. Au total, l'homme était poursuivi pour 12 infractions.", - "content": "L'ancien proche collaborateur d'Emmanuel Macron a été condamné à trois ans de prison, dont deux avec sursis, pour les violences dont il était accusé en marge des manifestations du 1 er  mai 2018 à Paris. Au total, l'homme était poursuivi pour 12 infractions.", - "category": "Politique - Société", - "link": "https://www.lesechos.fr/politique-societe/politique/0700268140661-alexandre-benalla-condamne-a-trois-ans-de-prison-dont-un-ferme-2439994.php#xtor=RSS-70", - "creator": "Les Echos", - "pubDate": "Fri, 05 Nov 2021 15:46:31 +0200", - "folder": "00.03 News/News - FR", - "feed": "Les Echos - Monde", + "title": "It’s 2021 and Twitter still can’t tell the difference between cats and dogs", + "description": "
    Twitter launched its topics feature almost two years ago to group tweets under different interest categories. It’s nice to see tweets or news on topics that I care about on my timeline. However, sometimes the social network’s tagging goes horribly wrong. The funniest example I’ve seen is of the algorithm tagging cat pictures under dog topic (and vice versa). Here are some examples: I do so hate the Twitter algorithm suggestions, but this one takes the prize for perfect stupidity in highlighting that it's wrong: a picture of a cat in the Twitter feed of the cat, with cat in…

    This story continues at The Next Web

    Or just read more coverage about: Twitter
    \n \n
    ", + "content": "
    Twitter launched its topics feature almost two years ago to group tweets under different interest categories. It’s nice to see tweets or news on topics that I care about on my timeline. However, sometimes the social network’s tagging goes horribly wrong. The funniest example I’ve seen is of the algorithm tagging cat pictures under dog topic (and vice versa). Here are some examples: I do so hate the Twitter algorithm suggestions, but this one takes the prize for perfect stupidity in highlighting that it's wrong: a picture of a cat in the Twitter feed of the cat, with cat in…

    This story continues at The Next Web

    Or just read more coverage about: Twitter
    \n \n
    ", + "category": "Plugged", + "link": "https://thenextweb.com/news/twitter-dogs-cats-algorithm-analysis", + "creator": "Ivan Mehta", + "pubDate": "Fri, 19 Nov 2021 11:16:19 +0000", + "folder": "00.03 News/Tech", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/News - FR", - "name": "Les Echos - Monde" - }, - "18": { - "title": "Engadget is a web magazine with obsessive daily coverage of everything new in gadgets and consumer electronics", - "subtitle": "", - "link": "https://www.engadget.com/", - "image": null, - "description": "Engadget is a web magazine with obsessive daily coverage of everything new in gadgets and consumer electronics", - "items": [ + }, { - "title": "SpaceX and NASA plan to crash a satellite into an asteroid next week", - "description": "

    Since 2017, NASA has been in the process of testing to see whether crashing a satellite into an asteroid can change its course, enlisting the help of SpaceX on this endeavor in 2019. Today, the rocket company shared that it has completed a static fire test and is targeting November 21st as the launch date of the Double Asteroid Redirection Test (DART). 

    At 10:21pm PT that day, NASA will "intentionally crash the DART spacecraft into an asteroid to see if that is an effective way to change its course, should an Earth-threatening asteroid be discovered in the future," SpaceX said in a tweet.

    A static fire test is one of several steps in getting a launch vehicle ready to deploy, and it checks engine startup performance, measuring things like pressure and temperature. With this stage complete, SpaceX and NASA look set to go ahead next week.

    DART is targeting a binary asteroid with two bodies called Didymos (the Greek word for "twin"). Didymos B is 160 meters (about 174 yards) large, and orbits the larger Didymos A, which is 780 meters in size. The binary asteroid would have passed Earth safely in 2022 and again in 2024 — they weren't on track to make contact with our planet. 

    But NASA has already identified at least 23 objects that could potentially collide with us over the next 100 years. Coming up with a defense strategy is key to protecting humanity should Armageddon ever be on the horizon. 

    ", - "content": "

    Since 2017, NASA has been in the process of testing to see whether crashing a satellite into an asteroid can change its course, enlisting the help of SpaceX on this endeavor in 2019. Today, the rocket company shared that it has completed a static fire test and is targeting November 21st as the launch date of the Double Asteroid Redirection Test (DART). 

    At 10:21pm PT that day, NASA will "intentionally crash the DART spacecraft into an asteroid to see if that is an effective way to change its course, should an Earth-threatening asteroid be discovered in the future," SpaceX said in a tweet.

    A static fire test is one of several steps in getting a launch vehicle ready to deploy, and it checks engine startup performance, measuring things like pressure and temperature. With this stage complete, SpaceX and NASA look set to go ahead next week.

    DART is targeting a binary asteroid with two bodies called Didymos (the Greek word for "twin"). Didymos B is 160 meters (about 174 yards) large, and orbits the larger Didymos A, which is 780 meters in size. The binary asteroid would have passed Earth safely in 2022 and again in 2024 — they weren't on track to make contact with our planet. 

    But NASA has already identified at least 23 objects that could potentially collide with us over the next 100 years. Coming up with a defense strategy is key to protecting humanity should Armageddon ever be on the horizon. 

    ", - "category": "Science", - "link": "https://www.engadget.com/space-x-nasa-dart-static-fire-test-date-nov-21-223815055.html?src=rss", - "creator": "Cherlynn Low", - "pubDate": "Fri, 19 Nov 2021 22:38:15 +0000", + "title": "What really happened during Russia’s anti-satellite missile test?", + "description": "
    On Nov. 15, 2021, U.S. officials announced that they had detected a dangerous new debris field in orbit near Earth. Later in the day, it was confirmed that Russia had destroyed one of its old satellites in a test of an anti-satellite weapon. Wendy Whitman Cobb is a space security researcher. She explains what these weapons are and why the debris they create is a problem now – and in the future. What do we know? Anti-satellite weapons, commonly referred to as ASATs, are any weapon that can temporarily impair or permanently destroy an orbiting satellite. The one that Russia…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    On Nov. 15, 2021, U.S. officials announced that they had detected a dangerous new debris field in orbit near Earth. Later in the day, it was confirmed that Russia had destroyed one of its old satellites in a test of an anti-satellite weapon. Wendy Whitman Cobb is a space security researcher. She explains what these weapons are and why the debris they create is a problem now – and in the future. What do we know? Anti-satellite weapons, commonly referred to as ASATs, are any weapon that can temporarily impair or permanently destroy an orbiting satellite. The one that Russia…

    This story continues at The Next Web
    \n \n
    ", + "category": "Space", + "link": "https://thenextweb.com/news/what-happened-during-russias-anti-satellite-missile-test-syndication", + "creator": "The Conversation", + "pubDate": "Fri, 19 Nov 2021 10:12:08 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", - "read": true, + "feed": "The Next Web", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ford and Rivian cancel plan to jointly develop an EV", - "description": "

    Ford and Rivian have abandoned a plan they had to jointly develop an EV together. In an interview with Automotive News, Ford CEO Jim Farley said the automaker will go it alone as it aims to produce 600,000 vehicles per year by the end of 2023.

    When the company invested $500 million in Rivian in 2019, the two said they would work together to produce a Ford-branded EV featuring the startup's "skateboard" powertrain. In early 2020, the two, citing the pandemic, canceled a Lincoln-branded EV. At the time, they said they still planned to go forward with an "alternative vehicle" based on Rivian's technology. Now, that project won't go forward either.

    "Right now, we have growing confidence in our ability to win in the electric space," Farley told Automotive News. "When you compare today with when we originally made that investment, so much has changed: about our ability, about the brand's direction in both cases, and now it's more certain to us what we have to do."

    According to Farley, part of the reason Ford and Rivian decided not to move forward with the project is the complexities of marrying their hardware and software together. The companies say the decision has not affected their relationship.

    "As Ford has scaled its own EV strategy and demand for Rivian vehicles has grown, we've mutually decided to focus on our own projects and deliveries," a spokesperson for Rivian told Engadget. "Our relationship with Ford is an important part of our journey, and Ford remains an investor and ally on our shared path to an electrified future."

    ", - "content": "

    Ford and Rivian have abandoned a plan they had to jointly develop an EV together. In an interview with Automotive News, Ford CEO Jim Farley said the automaker will go it alone as it aims to produce 600,000 vehicles per year by the end of 2023.

    When the company invested $500 million in Rivian in 2019, the two said they would work together to produce a Ford-branded EV featuring the startup's "skateboard" powertrain. In early 2020, the two, citing the pandemic, canceled a Lincoln-branded EV. At the time, they said they still planned to go forward with an "alternative vehicle" based on Rivian's technology. Now, that project won't go forward either.

    "Right now, we have growing confidence in our ability to win in the electric space," Farley told Automotive News. "When you compare today with when we originally made that investment, so much has changed: about our ability, about the brand's direction in both cases, and now it's more certain to us what we have to do."

    According to Farley, part of the reason Ford and Rivian decided not to move forward with the project is the complexities of marrying their hardware and software together. The companies say the decision has not affected their relationship.

    "As Ford has scaled its own EV strategy and demand for Rivian vehicles has grown, we've mutually decided to focus on our own projects and deliveries," a spokesperson for Rivian told Engadget. "Our relationship with Ford is an important part of our journey, and Ford remains an investor and ally on our shared path to an electrified future."

    ", - "category": "Automotive Industry", - "link": "https://www.engadget.com/ford-rivian-cancel-joint-ev-214303423.html?src=rss", - "creator": "Igor Bonifacic", - "pubDate": "Fri, 19 Nov 2021 21:43:03 +0000", + "title": "A brief guide to marketing data attribution models", + "description": "
    It’s one thing to know how you’re doing against your metrics. But even if you’re knocking it out of the park, if you don’t know why you’re doing well, you won’t be able to replicate your success. That’s why, at Zapier, we use attribution to understand how customer actions result in certain business outcomes. Attribution is a way for us to see how much each of our activities — across marketing, product, support, and more — is influencing the customer journey. It gives us a holistic view of how each touchpoint — from a blog post to an email to…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    It’s one thing to know how you’re doing against your metrics. But even if you’re knocking it out of the park, if you don’t know why you’re doing well, you won’t be able to replicate your success. That’s why, at Zapier, we use attribution to understand how customer actions result in certain business outcomes. Attribution is a way for us to see how much each of our activities — across marketing, product, support, and more — is influencing the customer journey. It gives us a holistic view of how each touchpoint — from a blog post to an email to…

    This story continues at The Next Web
    \n \n
    ", + "category": "Growth Quarters", + "link": "https://thenextweb.com/news/guide-marketing-data-attribution-models", + "creator": "Lukas Toma", + "pubDate": "Fri, 19 Nov 2021 07:30:57 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "'Call of Duty: Warzone' Pacific update delayed to December 8th", - "description": "

    Activision has delayed the release of Call of Duty Vanguard’s season one update and Warzone Pacific by about a week. The publisher now plans to make both available on December 8th, instead of December 2nd and December 3rd as previously planned. Activision did not provide a reason for the delay. However, it has been mired in controversy this week following an explosive report from The Wall Street Journal on CEO Bobby Kotick and the role he may have played in creating the toxic “frat boy” culture that has seen the company in the news frequently in recent months.

    Update: Season 1 of #Vanguard and Warzone Pacific will now release Dec. 8.

    Vanguard owners will have 24-hour exclusive first play access to the Caldera map. Open access begins on Dec. 9. pic.twitter.com/GnnYCp6g75

    — Call of Duty (@CallofDuty) November 19, 2021

    According to a tweet from the official Call of Duty Twitter account, Vanguard’s first seasonal update includes new maps and modes, an update to the game’s Zombies mode and the addition of new gear and weapons for players to earn. Warzone Pacific, meanwhile, adds a map called Caldera to Activision’s popular battle royale. If you own a copy of Vanguard, you’ll get the chance to play the new battleground 24 hours before everyone else.

    ", - "content": "

    Activision has delayed the release of Call of Duty Vanguard’s season one update and Warzone Pacific by about a week. The publisher now plans to make both available on December 8th, instead of December 2nd and December 3rd as previously planned. Activision did not provide a reason for the delay. However, it has been mired in controversy this week following an explosive report from The Wall Street Journal on CEO Bobby Kotick and the role he may have played in creating the toxic “frat boy” culture that has seen the company in the news frequently in recent months.

    Update: Season 1 of #Vanguard and Warzone Pacific will now release Dec. 8.

    Vanguard owners will have 24-hour exclusive first play access to the Caldera map. Open access begins on Dec. 9. pic.twitter.com/GnnYCp6g75

    — Call of Duty (@CallofDuty) November 19, 2021

    According to a tweet from the official Call of Duty Twitter account, Vanguard’s first seasonal update includes new maps and modes, an update to the game’s Zombies mode and the addition of new gear and weapons for players to earn. Warzone Pacific, meanwhile, adds a map called Caldera to Activision’s popular battle royale. If you own a copy of Vanguard, you’ll get the chance to play the new battleground 24 hours before everyone else.

    ", - "category": "Media", - "link": "https://www.engadget.com/call-of-duty-warzone-pacific-vanguard-season-one-delayed-205110303.html?src=rss", - "creator": "Igor Bonifacic", - "pubDate": "Fri, 19 Nov 2021 20:51:10 +0000", + "title": "Electric Bike Company Model Y review: A luxury cruiser ebike", + "description": "
    Most of the ebikes we’ve tested at TNW have futuristic designs, ample smart features, or minimalist aesthetics. But sometimes you just want something a little more classic, and for that, the Electric Bike Company’s Model Y exactly fits the bill. Made in the USA Electric Bike Company is a relatively rare breed of an ebike brand in that its bikes are actually designed and built in the USA. Pretty much all of the company’s bikes are some variety of beach cruiser, and though some components are sourced from outside the US, the company builds frames to order in California. This…

    This story continues at The Next Web
    \n \n
    ", + "content": "
    Most of the ebikes we’ve tested at TNW have futuristic designs, ample smart features, or minimalist aesthetics. But sometimes you just want something a little more classic, and for that, the Electric Bike Company’s Model Y exactly fits the bill. Made in the USA Electric Bike Company is a relatively rare breed of an ebike brand in that its bikes are actually designed and built in the USA. Pretty much all of the company’s bikes are some variety of beach cruiser, and though some components are sourced from outside the US, the company builds frames to order in California. This…

    This story continues at The Next Web
    \n \n
    ", + "category": "Insider", + "link": "https://thenextweb.com/news/electric-bike-company-model-y-review", + "creator": "Napier Lopez", + "pubDate": "Thu, 18 Nov 2021 20:40:18 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "The Next Web", "read": false, "favorite": false, "created": false, "tags": [] - }, + } + ], + "folder": "00.03 News/Tech", + "name": "The Next Web" + }, + { + "title": "Feed: All Latest", + "subtitle": "", + "link": "https://www.wired.com/latest", + "image": null, + "description": "Channel Description", + "items": [ { - "title": "Hulu's live TV plans will soon be $5 more per month", - "description": "

    If you’re a Hulu + Live TV customer, Disney plans to add Disney+ and ESPN+ to your subscription, and you have no choice in the matter. On Friday, the company sent an email to current subscribers informing them of the impending change. Starting on December 21st, all Hulu + Live subscriptions will include access to Disney’s two other streaming platforms. Previously, you could get Hulu + Live TV on its own.

    And with the change, the price of Hulu + Live TV plans is increasing by $5 per month for both current and new customers. Come the 21st, the ad-supported tier will cost $69.99 per month, while the “no ads” package will cost $75.99 every 30 days. If you’re a Hulu + Live TV customer with an existing Disney+ and or ESPN+ subscription, those will roll into the new plan.

    Disney previously increased the price of its live TV packages in 2020 when they went up by $10 per month. People never like paying more for a service, but the way in which the company is handling this latest price hike may irk some customers. Disney’s latest earnings report may provide some insight into the company’s motivations. In Q4, the company added 2.1 million Disney+ subscribers, far fewer than the 9.4 million Wall Street had expected it to attract. It’s possible Disney anticipates whatever Hulu subscribers it loses will be worth an increase to its Disney+ customer base.

    ", - "content": "

    If you’re a Hulu + Live TV customer, Disney plans to add Disney+ and ESPN+ to your subscription, and you have no choice in the matter. On Friday, the company sent an email to current subscribers informing them of the impending change. Starting on December 21st, all Hulu + Live subscriptions will include access to Disney’s two other streaming platforms. Previously, you could get Hulu + Live TV on its own.

    And with the change, the price of Hulu + Live TV plans is increasing by $5 per month for both current and new customers. Come the 21st, the ad-supported tier will cost $69.99 per month, while the “no ads” package will cost $75.99 every 30 days. If you’re a Hulu + Live TV customer with an existing Disney+ and or ESPN+ subscription, those will roll into the new plan.

    Disney previously increased the price of its live TV packages in 2020 when they went up by $10 per month. People never like paying more for a service, but the way in which the company is handling this latest price hike may irk some customers. Disney’s latest earnings report may provide some insight into the company’s motivations. In Q4, the company added 2.1 million Disney+ subscribers, far fewer than the 9.4 million Wall Street had expected it to attract. It’s possible Disney anticipates whatever Hulu subscribers it loses will be worth an increase to its Disney+ customer base.

    ", - "category": "Professional Services", - "link": "https://www.engadget.com/hulu-live-tv-disney-plus-bundle-price-hike-202004930.html?src=rss", - "creator": "Igor Bonifacic", - "pubDate": "Fri, 19 Nov 2021 20:20:04 +0000", + "title": "The Best Black Friday TV and Soundbar Deals", + "description": "From gorgeous flatscreens to earth-shaking surround sound, here are the best discounts to upgrade your home theater.", + "content": "From gorgeous flatscreens to earth-shaking surround sound, here are the best discounts to upgrade your home theater.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-tv-deals-2021", + "creator": "Parker Hall, Gear Team", + "pubDate": "Thu, 25 Nov 2021 23:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rockstar apologizes for broken GTA remasters and pledges to fix bugs", - "description": "

    Rockstar Games has apologized for the shoddy quality of Grand Theft Auto: The Trilogy - Definitive Edition. It plans to fix "the unexpected technical issues" and improve the three games in the collection.

    "We want to sincerely apologize to everyone who has encountered issues playing these games," the publisher said. "The updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect." The first update is scheduled to arrive in the coming days and it will "address a number of issues."

    An update regarding the unexpected technical issues with Grand Theft Auto: The Trilogy – The Definitive Edition. https://t.co/YP4pkOLQmGpic.twitter.com/AsfYPuMI0d

    — Rockstar Games (@RockstarGames) November 19, 2021

    It didn't take long for players to start sharing clips of bugs and glitches on social media after the remastered collection of GTA III, GTA: Vice City and GTA: San Andreas arrived last week. Digital Foundry took a deep dive into GTA III and found there were "issues that are so blatant and jarring and ridiculous, it's hard to understand how the game made its way through quality control."

    What's more, Rockstar pulled the PC version of the bundle soon after launch to "remove some data files that were unintentionally included in the new versions of these games" (those are believed to include files related to the infamous San Andreas "Hot Coffee" mod). The collection was available to buy again a few days later. Rockstar Launcher services were unavailable for over a day too, making the collection and the PC versions of Grand Theft Auto Online and Red Dead Online unplayable during that time.

    Soon after Rockstar announced the release date for the trilogy in October, it removed the original versions the games from digital storefronts. Now, the classic versions of GTA III, Vice City and San Andreas are returning to PC as a bundle on the Rockstar Store. Players who buy the remastered trilogy on PC by June 30th will receive the originals at no extra cost.

    Meanwhile, Rockstar has asked everyone to refrain from attacking developers on social media. "We would kindly ask our community to please maintain a respectful and civil discourse around this release as we work through these issues," it said. Grove Street Games, which is behind ports of several other Rockstar titles, worked on these remasters.

    ", - "content": "

    Rockstar Games has apologized for the shoddy quality of Grand Theft Auto: The Trilogy - Definitive Edition. It plans to fix "the unexpected technical issues" and improve the three games in the collection.

    "We want to sincerely apologize to everyone who has encountered issues playing these games," the publisher said. "The updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect." The first update is scheduled to arrive in the coming days and it will "address a number of issues."

    An update regarding the unexpected technical issues with Grand Theft Auto: The Trilogy – The Definitive Edition. https://t.co/YP4pkOLQmGpic.twitter.com/AsfYPuMI0d

    — Rockstar Games (@RockstarGames) November 19, 2021

    It didn't take long for players to start sharing clips of bugs and glitches on social media after the remastered collection of GTA III, GTA: Vice City and GTA: San Andreas arrived last week. Digital Foundry took a deep dive into GTA III and found there were "issues that are so blatant and jarring and ridiculous, it's hard to understand how the game made its way through quality control."

    What's more, Rockstar pulled the PC version of the bundle soon after launch to "remove some data files that were unintentionally included in the new versions of these games" (those are believed to include files related to the infamous San Andreas "Hot Coffee" mod). The collection was available to buy again a few days later. Rockstar Launcher services were unavailable for over a day too, making the collection and the PC versions of Grand Theft Auto Online and Red Dead Online unplayable during that time.

    Soon after Rockstar announced the release date for the trilogy in October, it removed the original versions the games from digital storefronts. Now, the classic versions of GTA III, Vice City and San Andreas are returning to PC as a bundle on the Rockstar Store. Players who buy the remastered trilogy on PC by June 30th will receive the originals at no extra cost.

    Meanwhile, Rockstar has asked everyone to refrain from attacking developers on social media. "We would kindly ask our community to please maintain a respectful and civil discourse around this release as we work through these issues," it said. Grove Street Games, which is behind ports of several other Rockstar titles, worked on these remasters.

    ", - "category": "Automotive Industry", - "link": "https://www.engadget.com/gta-trilogy-patch-remaster-rockstar-games-195157534.html?src=rss", - "creator": "Kris Holt", - "pubDate": "Fri, 19 Nov 2021 19:51:57 +0000", + "title": "24 Best Black Friday Deals on Smart Home Gear and Furniture", + "description": "Revamp an office or refresh a living room with discounted LED bulbs, smart displays, and more.", + "content": "Revamp an office or refresh a living room with discounted LED bulbs, smart displays, and more.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-home-furniture-deals-2021", + "creator": "Louryn Strampe, Gear Team", + "pubDate": "Thu, 25 Nov 2021 17:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Tesla factory employee alleges 'rampant sexual harassment' in lawsuit", - "description": "

    Female employees at Tesla’s Fremont factory in California face “rampant sexual harassment,” according to a lawsuit filed on Thursday. In a complaint with the state’s Superior Court in Alameda County, Jessica Barraza, a production associate with Tesla, said she was subjected to “nightmarish” working conditions over the past three years. Barraza’s lawsuit describes a factory floor that looks more like “a crude, archaic construction site or frat house” than the site of advanced EV production.

    Barraza’s allegations against Tesla are numerous. In one incident, the suit alleges a male co-worker stuck his leg between her thighs when she went to punch in after a lunch break. Amid the harassment, Barraza says her complaints fell on deaf ears. In one instance, she says a supervisor did nothing when she complained of a co-worker staring at her breasts. “Maybe you shouldn’t wear shirts that draw attention to your chest,” her supervisor told her, according to the suit. Barraza told the man she was “wearing a work shirt provided by Tesla.”

    “After almost three years of experiencing all the harassment, it robs your sense of security — it almost dehumanizes you,” Barraza said in an interview with The Washington Post, which was the first outlet to report on the suit. We’ve reached out to Tesla for comment. The company does not typically respond to media requests. 

    The suit comes one month after Tesla was ordered by a federal court to pay $137 million to a Black employee who said they were subjected to daily racist abuse at its Fremont factory. “We continue to grow and improve in how we address employee concerns,” the company said at the time. “Occasionally, we’ll get it wrong, and when that happens we should be held accountable.” Tesla is appealing the award.

    Tesla also isn’t the only EV-maker accused of fostering a toxic workplace for women. Just days before its IPO, Rivian was sued by Laura Schwab, one of its former executives. In her lawsuit, Schwab alleges the automaker fired her after she complained of a “toxic ‘bro culture’” that saw her excluded from meetings and more. “The culture at Rivian was actually the worst I’ve experienced in over 20 years in the automotive industry,” Schwab said at the time.

    ", - "content": "

    Female employees at Tesla’s Fremont factory in California face “rampant sexual harassment,” according to a lawsuit filed on Thursday. In a complaint with the state’s Superior Court in Alameda County, Jessica Barraza, a production associate with Tesla, said she was subjected to “nightmarish” working conditions over the past three years. Barraza’s lawsuit describes a factory floor that looks more like “a crude, archaic construction site or frat house” than the site of advanced EV production.

    Barraza’s allegations against Tesla are numerous. In one incident, the suit alleges a male co-worker stuck his leg between her thighs when she went to punch in after a lunch break. Amid the harassment, Barraza says her complaints fell on deaf ears. In one instance, she says a supervisor did nothing when she complained of a co-worker staring at her breasts. “Maybe you shouldn’t wear shirts that draw attention to your chest,” her supervisor told her, according to the suit. Barraza told the man she was “wearing a work shirt provided by Tesla.”

    “After almost three years of experiencing all the harassment, it robs your sense of security — it almost dehumanizes you,” Barraza said in an interview with The Washington Post, which was the first outlet to report on the suit. We’ve reached out to Tesla for comment. The company does not typically respond to media requests. 

    The suit comes one month after Tesla was ordered by a federal court to pay $137 million to a Black employee who said they were subjected to daily racist abuse at its Fremont factory. “We continue to grow and improve in how we address employee concerns,” the company said at the time. “Occasionally, we’ll get it wrong, and when that happens we should be held accountable.” Tesla is appealing the award.

    Tesla also isn’t the only EV-maker accused of fostering a toxic workplace for women. Just days before its IPO, Rivian was sued by Laura Schwab, one of its former executives. In her lawsuit, Schwab alleges the automaker fired her after she complained of a “toxic ‘bro culture’” that saw her excluded from meetings and more. “The culture at Rivian was actually the worst I’ve experienced in over 20 years in the automotive industry,” Schwab said at the time.

    ", - "category": "Business", - "link": "https://www.engadget.com/tesla-fremont-sexual-harassment-suit-185934119.html?src=rss", - "creator": "Igor Bonifacic", - "pubDate": "Fri, 19 Nov 2021 18:59:34 +0000", + "title": "Our Favorite Smartwatches Do Much More Than Just Tell Time", + "description": "These little wearables reduce your reliance on a phone while keeping you connected.", + "content": "These little wearables reduce your reliance on a phone while keeping you connected.", + "category": "Gear", + "link": "https://www.wired.com/gallery/best-smartwatches", + "creator": "Julian Chokkattu", + "pubDate": "Thu, 25 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Halo Infinite's campaign co-op and Forge modes have been delayed again", - "description": "

    The first previews for the Halo Infinite campaign have arrived and it's looking like an exciting step forward for the series. Unfortunately, players will have to wait even longer than expected to play the mode with their friends.

    Developer 343 Industries announced in August that Halo Infinite won't have campaign co-op (a stalwart mode in the Halo series) or Forge custom games when it arrives on December 8th. It plans to add campaign co-op when season two starts, which was initially supposed to happen three months after launch, with Forge to follow in season three.

    However, 343 Industries revealed this week that season one will run until May. The studio's head of creative, Joseph Staten, confirmed to Eurogamer that means campaign co-op won't arrive until May at the earliest, and Forge will arrive even later.

    That'll likely come as a disappointment to fans, but 343 Industries' decision to focus on the campaign and multiplayer might have been the right one. It already delayed Halo Infinite by a year, so getting the two core modes right was critical.

    Fortunately, the free-to-play multiplayer component, which 343 Industries surprise launched three weeks early on Monday, is a blast. It's evidently a hit already, too. The mode quickly hit 272,000 concurrent players on Steam, and that's before you include those playing on console, through the PC Xbox app and on cloud gaming. 

    ", - "content": "

    The first previews for the Halo Infinite campaign have arrived and it's looking like an exciting step forward for the series. Unfortunately, players will have to wait even longer than expected to play the mode with their friends.

    Developer 343 Industries announced in August that Halo Infinite won't have campaign co-op (a stalwart mode in the Halo series) or Forge custom games when it arrives on December 8th. It plans to add campaign co-op when season two starts, which was initially supposed to happen three months after launch, with Forge to follow in season three.

    However, 343 Industries revealed this week that season one will run until May. The studio's head of creative, Joseph Staten, confirmed to Eurogamer that means campaign co-op won't arrive until May at the earliest, and Forge will arrive even later.

    That'll likely come as a disappointment to fans, but 343 Industries' decision to focus on the campaign and multiplayer might have been the right one. It already delayed Halo Infinite by a year, so getting the two core modes right was critical.

    Fortunately, the free-to-play multiplayer component, which 343 Industries surprise launched three weeks early on Monday, is a blast. It's evidently a hit already, too. The mode quickly hit 272,000 concurrent players on Steam, and that's before you include those playing on console, through the PC Xbox app and on cloud gaming. 

    ", - "category": "site|engadget", - "link": "https://www.engadget.com/halo-infinite-campaign-co-op-forge-delayed-183757524.html?src=rss", - "creator": "Kris Holt", - "pubDate": "Fri, 19 Nov 2021 18:37:57 +0000", + "title": "The 15 Best Holiday Movies to Stream This Season", + "description": "Need help navigating all the services to find something good? Here's what to watch to pass the time—and get into the spirit.", + "content": "Need help navigating all the services to find something good? Here's what to watch to pass the time—and get into the spirit.", + "category": "Culture", + "link": "https://www.wired.com/story/holiday-movie-streaming-guide", + "creator": "Jennifer M. Wood", + "pubDate": "Thu, 25 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Amazon opens pre-orders for its Halo View fitness band", - "description": "

    Amazon announced a new version of its Halo fitness band at its September hardware event, and now you can lock in a pre-order. Halo View, Amazon's first wearable with a display, is $50 during the pre-order period. It'll typically cost $80.

    Pre-order Halo View at Amazon - $50

    The device, which will ship sometime in December, comes with a year-long Halo membership. The plan includes workouts and nutrition guidance, and it typically costs $4 per month.

    Halo View has a similar design to Fitbit's Charge bands. The AMOLED color screen displays details about your live workouts, activity history, blood oxygen and sleep scores, among other things (some of those features are exclusive to the Halo subscription). You can view text notifications too.

    The swim-proof device contains a skin temperature sensor, heart rate monitor and an accelerometer. Amazon claims the battery runs for up to seven days on a single charge, and that it will fully recharge in two hours.

    Although Halo View doesn't have a built-in microphone, there is integration with Alexa. If you connect to the voice assistant through the Halo app settings, you can ask an Alexa-enabled device to tell you about your health summary, sleep quality and other information.

    Amazon says privacy was a key consideration in how it designed Halo. "There are multiple layers of protections in place to keep data safe and in your control," the company claims. It also pledged not to sell health data that's linked directly to you. You'll have the option to download your health data or delete it from the Halo app at any time too.

    ", - "content": "

    Amazon announced a new version of its Halo fitness band at its September hardware event, and now you can lock in a pre-order. Halo View, Amazon's first wearable with a display, is $50 during the pre-order period. It'll typically cost $80.

    Pre-order Halo View at Amazon - $50

    The device, which will ship sometime in December, comes with a year-long Halo membership. The plan includes workouts and nutrition guidance, and it typically costs $4 per month.

    Halo View has a similar design to Fitbit's Charge bands. The AMOLED color screen displays details about your live workouts, activity history, blood oxygen and sleep scores, among other things (some of those features are exclusive to the Halo subscription). You can view text notifications too.

    The swim-proof device contains a skin temperature sensor, heart rate monitor and an accelerometer. Amazon claims the battery runs for up to seven days on a single charge, and that it will fully recharge in two hours.

    Although Halo View doesn't have a built-in microphone, there is integration with Alexa. If you connect to the voice assistant through the Halo app settings, you can ask an Alexa-enabled device to tell you about your health summary, sleep quality and other information.

    Amazon says privacy was a key consideration in how it designed Halo. "There are multiple layers of protections in place to keep data safe and in your control," the company claims. It also pledged not to sell health data that's linked directly to you. You'll have the option to download your health data or delete it from the Halo app at any time too.

    ", - "category": "Technology & Electronics", - "link": "https://www.engadget.com/amazon-halo-view-fitness-band-pre-order-174406400.html?src=rss", - "creator": "Kris Holt", - "pubDate": "Fri, 19 Nov 2021 17:44:06 +0000", + "title": "The 15 Best Black Friday Deals on Coffee and Espresso Gear", + "description": "Coffee gear can be expensive, but we've found quite a few great Black Friday deals on brewing supplies and accessories.", + "content": "Coffee gear can be expensive, but we've found quite a few great Black Friday deals on brewing supplies and accessories.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-coffee-deals-2021", + "creator": "Jess Grey, Gear Team", + "pubDate": "Thu, 25 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Why Apple changed its mind on Right to Repair", - "description": "

    Apple does not have a good track record in terms of letting customers repair their hardware. The last decade-plus has seen Apple’s computers become essentially impossible for users to service or upgrade, and the iPhone has always been a locked box. Adventurous owners might follow guides from iFixit to try and do repairs themselves, but it’s a dangerous proposition. Remember, it was just earlier this year, when we discovered that replacing the display on an iPhone 13 would disable Face ID. (Apple later backpedaled on this.)

    So Apple’s announcement earlier this week that it would start selling parts and tools directly to consumers and offer repair guides was a huge surprise, and a move immediately hailed as a victory by right-to-repair activists. “One of the most visible opponents to repair access is reversing course,” said Nathan Proctor, a senior Right to Repair campaign director at Public Interest Research Groups (PIRG). “Apple’s move shows that what repair advocates have been asking for was always possible.” iFixit was similarly pleased, saying that the move is “exactly the right thing for Apple to be doing.”

    Both groups caveated their statements by noting a few catches. PIRG says that Apple’s plans weren’t as comprehensive as the right-to-repair legislation being discussed in more than two dozen states, while iFixit wants to “analyze the legal terms and test the program” before it can say just how much credit Apple deserves. But regardless, it’s still a major about-face. So what led Apple to this move?

    Proctor told Engadget in an email exchange that he thinks “combined pressure from consumers, regulators and shareholders has shifted Apple's thinking.” But he was also quick to point out that there was pressure coming from inside Apple itself. “We saw from some leaked emails from 2019 that many inside Apple never wanted to be hostile to repair in the ways that Apple has been at times,” he said. You probably saw that [Apple co-founder Steve] Wozniak called [out] the practices, but leaked emails show internal concern they were doing the wrong thing.”

    Apple has made some other movies recently that show that potential government scrutiny and oversight could be driving change at the company. In 2020, Apple finally let users set different browser and email apps as default on the iPhone and iPad, and Siri has gotten smarter about learning your preferences for different music apps when you ask it to play tunes.

    While it’s likely that Apple is thinking about government pressure, this change might also simply be part of the company listening to its users and correcting some mistakes it made over the last five years or so. Take the new MacBook Pro, perhaps the biggest “mea culpa” Apple has ever offered: The company reversed its trend of pursuing thin and light design at all costs and instead actually made the both the 14- and 16-inch MacBook Pros thicker and heavier than their predecessors. The company also added back ports it had previously removed, killed the unpopular Touch Bar, and generally made a laptop that made it seem like they were listening to consumer feedback. The same could be said for its new home repair program.

    \"A
    Regis Duvignau / Reuters

    Apple’s move this week can also be seen as an extension of a program the company launched last year, when it started providing parts and training to third-party repair shops that met Apple’s qualifications. Obviously, this isn’t the same as making it easy for anyone to do repairs, but opening up access means the repair landscape for Apple products has changed significantly in the last few years.

    However big of a change this new plan is, though, Proctor and PIRG see this as a first step, something Apple will need to keep up and expand to really deliver what right-to-repair activists think consumers deserve. “I think Right to Repair knows what it wants, and it will be really hard to convince us to settle for anything less than an open market for repair,” Proctor said. “If they had done this step years ago, maybe we would have to settle, but we have the momentum, and we are going to empower repair as much as we can. I think most legislators agree: This is just one company and a limited program. The floor got raised, but we aren't near the ceiling yet.”

    iFixit has a similar view on the situation. “[Apple] pioneered glued-in batteries and proprietary screws, and now they are taking the first steps on a path back to long-lasting, repairable products. iFixit believes that a sustainable, repairable world of technology is possible, and hope that Apple follows up on this commitment to improve their repairability.”

    As for what’s to come, it sounds like Apple is committed to making this just a first step. The company said that repair options would initially focus on commonly-repaired modules in the iPhone 12 and 13, like the screen, battery and cameras, but it says that more options will come in the following year. We don’t know if Apple will ever give right-to-repair activists everything they want. It seems unlikely that Apple will make an iPhone where you can just pop it open and drop a new battery in, like the phones of old.

    Apple can often be a bellwether for the rest of the industry — just look how quickly other phone-makers dropped their headphone jacks. So, it’s possible we’ll see some other big consumer electronics companies make similar moves. “I think other companies will follow,” Proctor said. He also noted that Google had just released software that lets a replacement display on the Pixel 6 be properly calibrated to work with the in-screen fingerprint sensor.” We see a lot of changes in the works, and we are hopeful we can set a new baseline [for] access to repair.” If that happens, we’ll likely remember Apple’s about-face as a catalyst for these changes — assuming the company follows through with its new stance and makes it easier for owners to repair a wider variety of its products.

    ", - "content": "

    Apple does not have a good track record in terms of letting customers repair their hardware. The last decade-plus has seen Apple’s computers become essentially impossible for users to service or upgrade, and the iPhone has always been a locked box. Adventurous owners might follow guides from iFixit to try and do repairs themselves, but it’s a dangerous proposition. Remember, it was just earlier this year, when we discovered that replacing the display on an iPhone 13 would disable Face ID. (Apple later backpedaled on this.)

    So Apple’s announcement earlier this week that it would start selling parts and tools directly to consumers and offer repair guides was a huge surprise, and a move immediately hailed as a victory by right-to-repair activists. “One of the most visible opponents to repair access is reversing course,” said Nathan Proctor, a senior Right to Repair campaign director at Public Interest Research Groups (PIRG). “Apple’s move shows that what repair advocates have been asking for was always possible.” iFixit was similarly pleased, saying that the move is “exactly the right thing for Apple to be doing.”

    Both groups caveated their statements by noting a few catches. PIRG says that Apple’s plans weren’t as comprehensive as the right-to-repair legislation being discussed in more than two dozen states, while iFixit wants to “analyze the legal terms and test the program” before it can say just how much credit Apple deserves. But regardless, it’s still a major about-face. So what led Apple to this move?

    Proctor told Engadget in an email exchange that he thinks “combined pressure from consumers, regulators and shareholders has shifted Apple's thinking.” But he was also quick to point out that there was pressure coming from inside Apple itself. “We saw from some leaked emails from 2019 that many inside Apple never wanted to be hostile to repair in the ways that Apple has been at times,” he said. You probably saw that [Apple co-founder Steve] Wozniak called [out] the practices, but leaked emails show internal concern they were doing the wrong thing.”

    Apple has made some other movies recently that show that potential government scrutiny and oversight could be driving change at the company. In 2020, Apple finally let users set different browser and email apps as default on the iPhone and iPad, and Siri has gotten smarter about learning your preferences for different music apps when you ask it to play tunes.

    While it’s likely that Apple is thinking about government pressure, this change might also simply be part of the company listening to its users and correcting some mistakes it made over the last five years or so. Take the new MacBook Pro, perhaps the biggest “mea culpa” Apple has ever offered: The company reversed its trend of pursuing thin and light design at all costs and instead actually made the both the 14- and 16-inch MacBook Pros thicker and heavier than their predecessors. The company also added back ports it had previously removed, killed the unpopular Touch Bar, and generally made a laptop that made it seem like they were listening to consumer feedback. The same could be said for its new home repair program.

    \"A
    Regis Duvignau / Reuters

    Apple’s move this week can also be seen as an extension of a program the company launched last year, when it started providing parts and training to third-party repair shops that met Apple’s qualifications. Obviously, this isn’t the same as making it easy for anyone to do repairs, but opening up access means the repair landscape for Apple products has changed significantly in the last few years.

    However big of a change this new plan is, though, Proctor and PIRG see this as a first step, something Apple will need to keep up and expand to really deliver what right-to-repair activists think consumers deserve. “I think Right to Repair knows what it wants, and it will be really hard to convince us to settle for anything less than an open market for repair,” Proctor said. “If they had done this step years ago, maybe we would have to settle, but we have the momentum, and we are going to empower repair as much as we can. I think most legislators agree: This is just one company and a limited program. The floor got raised, but we aren't near the ceiling yet.”

    iFixit has a similar view on the situation. “[Apple] pioneered glued-in batteries and proprietary screws, and now they are taking the first steps on a path back to long-lasting, repairable products. iFixit believes that a sustainable, repairable world of technology is possible, and hope that Apple follows up on this commitment to improve their repairability.”

    As for what’s to come, it sounds like Apple is committed to making this just a first step. The company said that repair options would initially focus on commonly-repaired modules in the iPhone 12 and 13, like the screen, battery and cameras, but it says that more options will come in the following year. We don’t know if Apple will ever give right-to-repair activists everything they want. It seems unlikely that Apple will make an iPhone where you can just pop it open and drop a new battery in, like the phones of old.

    Apple can often be a bellwether for the rest of the industry — just look how quickly other phone-makers dropped their headphone jacks. So, it’s possible we’ll see some other big consumer electronics companies make similar moves. “I think other companies will follow,” Proctor said. He also noted that Google had just released software that lets a replacement display on the Pixel 6 be properly calibrated to work with the in-screen fingerprint sensor.” We see a lot of changes in the works, and we are hopeful we can set a new baseline [for] access to repair.” If that happens, we’ll likely remember Apple’s about-face as a catalyst for these changes — assuming the company follows through with its new stance and makes it easier for owners to repair a wider variety of its products.

    ", - "category": "Personal Finance - Lifestyle", - "link": "https://www.engadget.com/apple-user-iphone-repair-policy-change-173047862.html?src=rss", - "creator": "Nathan Ingraham", - "pubDate": "Fri, 19 Nov 2021 17:30:47 +0000", + "title": "The UK Government Wants to Sequence Your Baby’s Genome", + "description": "Genomics England plans to test out a program that will offer whole genome sequencing to newborns—opening up a Pandora’s box of ethical concerns.", + "content": "Genomics England plans to test out a program that will offer whole genome sequencing to newborns—opening up a Pandora’s box of ethical concerns.", + "category": "Science", + "link": "https://www.wired.com/story/whole-genome-sequencing-newborn-screening", + "creator": "Grace Browne", + "pubDate": "Thu, 25 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The OnePlus 9 Pro is $270 off right now", - "description": "

    If you're looking for an alternative smartphone to an iPhone, Samsung handset or Pixel, you can't go far wrong with the OnePlus 9 Pro. It has many of the bells and whistles you'd expect from a premium smartphone. Just before Black Friday, you can pick up the OnePlus 9 Pro from the OnePlus website, Amazon or Best Buy for $799, $270 less than the regular price.

    Buy OnePlus 9 Pro at OnePlus - $799Buy OnePlus 9 Pro at Amazon - $799Buy OnePlus 9 Pro at Best Buy - $799

    We gave the OnePlus Pro 9 a score of 88 in our review, calling it the best OnePlus phone to date. The IP68-rated device has a 6.7-inch, 3,216 x 1,440 screen with brightness of up to 1,300 nits and a 120Hz maximum refresh rate. It includes dual speakers, a microSIM slot and a USB-C port that's compatible with the OnePlus Warp Charge adaptor.

    The OnePlus 9 Pro features Hasselblad lenses on the rear, including a 48MP main camera, 50MP ultra-wide camera and 8MP telephoto camera. The array can shoot 8K video at 30fps, but we had reservations about the telephoto lens, which sometimes overexposed images in scenarios with a lot of light.

    The device is powered by a Snapdragon 888 processor, which is plenty capable. It comes with 12GB of RAM and 256GB of storage. The dual 4,500mAh battery cells should get you a full day of use on a single charge.

    The standard OnePlus 9 is on sale too. You can pick it up for $599 at Amazon and Best Buy — $130 off the regular price. It has a slightly smaller 6.5-inch, Full HD display and also runs on a Snapdragon 888 with the same RAM and storage as its larger sibling. Although it too has Hasselblad cameras, the OnePlus 9 has an older 48-megapixel sensor to reduce the cost.

    Buy OnePlus 9 at Amazon - $599Buy OnePlus 9 at Best Buy - $599

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    If you're looking for an alternative smartphone to an iPhone, Samsung handset or Pixel, you can't go far wrong with the OnePlus 9 Pro. It has many of the bells and whistles you'd expect from a premium smartphone. Just before Black Friday, you can pick up the OnePlus 9 Pro from the OnePlus website, Amazon or Best Buy for $799, $270 less than the regular price.

    Buy OnePlus 9 Pro at OnePlus - $799Buy OnePlus 9 Pro at Amazon - $799Buy OnePlus 9 Pro at Best Buy - $799

    We gave the OnePlus Pro 9 a score of 88 in our review, calling it the best OnePlus phone to date. The IP68-rated device has a 6.7-inch, 3,216 x 1,440 screen with brightness of up to 1,300 nits and a 120Hz maximum refresh rate. It includes dual speakers, a microSIM slot and a USB-C port that's compatible with the OnePlus Warp Charge adaptor.

    The OnePlus 9 Pro features Hasselblad lenses on the rear, including a 48MP main camera, 50MP ultra-wide camera and 8MP telephoto camera. The array can shoot 8K video at 30fps, but we had reservations about the telephoto lens, which sometimes overexposed images in scenarios with a lot of light.

    The device is powered by a Snapdragon 888 processor, which is plenty capable. It comes with 12GB of RAM and 256GB of storage. The dual 4,500mAh battery cells should get you a full day of use on a single charge.

    The standard OnePlus 9 is on sale too. You can pick it up for $599 at Amazon and Best Buy — $130 off the regular price. It has a slightly smaller 6.5-inch, Full HD display and also runs on a Snapdragon 888 with the same RAM and storage as its larger sibling. Although it too has Hasselblad cameras, the OnePlus 9 has an older 48-megapixel sensor to reduce the cost.

    Buy OnePlus 9 at Amazon - $599Buy OnePlus 9 at Best Buy - $599

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Shopping", - "link": "https://www.engadget.com/oneplus-9-pro-black-friday-good-deal-170202094.html?src=rss", - "creator": "Kris Holt", - "pubDate": "Fri, 19 Nov 2021 17:17:02 +0000", + "title": "How Early Warning Systems Help Us Deal With Extreme Weather", + "description": "As climate-related disasters increase, projects are being put in place to alert local communities to impending danger.", + "content": "As climate-related disasters increase, projects are being put in place to alert local communities to impending danger.", + "category": "Science", + "link": "https://www.wired.com/story/early-warning-extreme-weather", + "creator": "Jocelyn Timperley", + "pubDate": "Thu, 25 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Miami votes to end electric scooter pilot program", - "description": "

    Once home to most electric scooters in the US, Miami is turning its back on the micromobility vehicles. Per the Miami Herald, city commissioners voted on Thursday to end a multi-year pilot that had allowed companies like Bird and Lime to operate shared scooter rentals within the city’s core. Those companies now have until 5PM on Friday, November 19th, to collect their electric scooters. If they don’t comply in time, the city will impound the vehicles.

    “We’re shutting it down,” Commissioner Alex Díaz de la Portilla told the outlet. “That’s it.” Like in many other cities across the US and other parts of the world, electric scooters were a source of controversy in Miami. Supporters claimed they were an effective solution for last-mile travel, while detractors said they made city sidewalks unsafe. It’s that latter point of view that swayed the commission’s vote.

    “On Biscayne Boulevard, at whatever hour of the day, you see kids on these scooters,” said Commissioner Díaz de la Portilla. “This is an accident waiting to happen.” Ken Russell, the lone commissioner who voted against ending the program, pointed out it had been a revenue generator for the city. Miami had earned approximately $2.4 million through the pilot program, and it had used that money to fund new bike lanes.

    The vote caught the scooter companies off guard. “We’re extremely disappointed in the Commission’s hasty and short-sighted action to end the scooter program, taking away a safe and popular transportation option used by thousands of Miami residents daily and putting dozens of workers out of a job the week before Thanksgiving,” said Caroline Samponaro, vice president of transit, bike and scooter policy at Lyft, in a statement shared with Engadget.

    As the Miami Herald points out, there is a chance scooters could return to Miami. City staff are drafting rules that would allow rental companies to bid for a contract to operate in the city as part of a permanent program. But based on the fact the Miami City Commission would need to vote to authorize such a program, it’s not clear if there’s enough support.

    ", - "content": "

    Once home to most electric scooters in the US, Miami is turning its back on the micromobility vehicles. Per the Miami Herald, city commissioners voted on Thursday to end a multi-year pilot that had allowed companies like Bird and Lime to operate shared scooter rentals within the city’s core. Those companies now have until 5PM on Friday, November 19th, to collect their electric scooters. If they don’t comply in time, the city will impound the vehicles.

    “We’re shutting it down,” Commissioner Alex Díaz de la Portilla told the outlet. “That’s it.” Like in many other cities across the US and other parts of the world, electric scooters were a source of controversy in Miami. Supporters claimed they were an effective solution for last-mile travel, while detractors said they made city sidewalks unsafe. It’s that latter point of view that swayed the commission’s vote.

    “On Biscayne Boulevard, at whatever hour of the day, you see kids on these scooters,” said Commissioner Díaz de la Portilla. “This is an accident waiting to happen.” Ken Russell, the lone commissioner who voted against ending the program, pointed out it had been a revenue generator for the city. Miami had earned approximately $2.4 million through the pilot program, and it had used that money to fund new bike lanes.

    The vote caught the scooter companies off guard. “We’re extremely disappointed in the Commission’s hasty and short-sighted action to end the scooter program, taking away a safe and popular transportation option used by thousands of Miami residents daily and putting dozens of workers out of a job the week before Thanksgiving,” said Caroline Samponaro, vice president of transit, bike and scooter policy at Lyft, in a statement shared with Engadget.

    As the Miami Herald points out, there is a chance scooters could return to Miami. City staff are drafting rules that would allow rental companies to bid for a contract to operate in the city as part of a permanent program. But based on the fact the Miami City Commission would need to vote to authorize such a program, it’s not clear if there’s enough support.

    ", - "category": "Automotive Industry", - "link": "https://www.engadget.com/miami-ends-electric-scooter-pilot-program-165747077.html?src=rss", - "creator": "Igor Bonifacic", - "pubDate": "Fri, 19 Nov 2021 17:02:48 +0000", + "title": "What Is the Metaverse, Exactly?", + "description": "Everything you never wanted to know about the future of talking about the future.", + "content": "Everything you never wanted to know about the future of talking about the future.", + "category": "Culture", + "link": "https://www.wired.com/story/what-is-the-metaverse", + "creator": "Eric Ravenscraft", + "pubDate": "Thu, 25 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Bose's QuietComfort 45 headphones drop to $279, plus the rest of the week's best tech deals", - "description": "

    We're officially one week out from Black Friday and it seems most retailers have launched at least a portion of their deals and sales already. You can find the exhaustive list on our deals homepage, but we've gathered the highlights here. Bose's new QuietComfort 45 headphones remain on sale for $279, while the Mac Mini M1 is still $100 off. A bunch of Amazon and Google devices have been discounted, and you can still get the second-generation Apple Pencil for $100. Here are the best early Black Friday tech deals that you can still get today.

    Bose QuietComfort 45

    \"With
    Billy Steele/Engadget

    Bose's new QuietComfort 45 headphones are on sale for $279 right now, or $50 off their normal price. We gave them a score of 86 for their clear, balanced audio, improved ANC and long battery life.

    Buy QuietComfort 45 at Amazon - $279

    Mac Mini M1

    \"Apple
    Engadget

    Apple's Mac Mini M1 is on sale for $600 thanks to an automatically applied coupon at Amazon. It was already the most affordable M1 machine you could get, but these deal makes it even cheaper. It's the best option if you need a compact desktop that runs macOS and has a newer, more powerful processor.

    Buy Mac Mini M1 at Amazon - $600

    HomePod Mini

    \"Apple
    Apple

    The new colors of the HomePod mini are $5 cheaper right now at B&H Photo, bringing them down to $95 each. It's not a huge discount, but we rarely see these smart speakers drop below $85 - $90 a piece. We gave the HomePod mini a score of 84 for its solid audio quality, cute and compact design and improved Siri smarts.

    Buy HomePod mini at B&H - $95

    Apple Pencil (2nd-gen)

    \"Apple
    Valentina Palladino / Engadget

    The second-generation Apple Pencil is on sale for $100 right now, which is an all-time-low price. It works with all iPads except for the latest 10.2-inch entry-level model, which still supports the first-gen stylus. It's a must-have if you plan on taking notes or creating artwork with your iPad.

    Buy Apple Pencil (2nd gen) at Amazon - $100

    Samsung foldables

    \"The
    David Imel for Engadget

    Samsung's latest foldables are on sale for Black Friday, and you can get a free pair of Galaxy Buds 2 when you buy. The Z Flip 3 is down to $850 while the Z Fold 3 is on sale for $1,500 — if you buy through Amazon, you just have to apply the free-earbuds promotional offer on the product page before checking out.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Google deals

    \"Google
    Engadget

    A number of Google gadgets have been discounted ahead of Black Friday. Key among them are the Pixel 6 smartphone for up to $100 off, the Nest Hub for half off and the Nest Audio for only $60.

    Buy Pixel 6 at Best Buy - $499Buy Nest Hub at Best Buy - $50Buy Nest Audio at Best Buy - $60

    Sony WH-1000XM4

    \"Sony
    Billy Steele / Engadget

    Sony's WH-1000XM4 headphones are on sale for $248, which is a record-low price. These are our current favorite ANC cans and we gave them a score of 94 for their excellent sound quality, good ANC and multi-device connectivity.

    Buy WH-1000XM4 at Amazon - $248

    Sony WF-1000XM4

    \"Sony
    Billy Steele/Engadget

    Sony's excellent WF-1000XM4 earbuds are still down to $248. We gave them a score of 86 for their great sound quality, powerful ANC and improved battery life.

    Buy WF-1000XM4 at Amazon - $248

    Jabra Elite 75t

    \"Jabra
    Billy Steele / Engadget

    Jabra's Elite 75 earbuds are on sale for $80, which is $70 off and a record low. While not the latest earbuds from Jabra, they remain some of our favorites thanks to their solid audio quality, comfortable design and new ANC abilities that came through a recent software update.

    Buy Elite 75t at Amazon - $80

    August WiFi smart lock

    \"August
    Engadget

    The 4th-generation August WiFi smart lock is on sale for $179 right now. We gave the smart home gadget a score of 80 for its minimalist design, easy installation process and mandatory two-factor authentication.

    Buy August WiFi smart lock at Amazon - $179Buy August WiFi smart lock at Wellbots - $179

    Samsung T7 SSD

    \"Samsung
    Samsung

    Samsung's T7 portable SSD in 1TB has dropped to a record low of $130. You can also grab the 2TB model on sale for $250 right now, too. We like these compact drives for their durable yet sleek design, speedy performance and optional password protection.

    Buy Samsung T7 (1TB) at Amazon - $130Buy Samsung T7 (2TB) at Amazon - $250

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    Roku's Streambar is on sale for $80 right now, or $50 off its normal price. That's the best price we've seen on the compact soundbar. It earned a score of 86 from us for its solid audio quality, Dolby Atmos support and built-in 4K streaming technology.

    Buy Streambar at Amazon - $80Buy Streambar at Roku - $80

    Amazon Echo devices

    \"Amazon
    Nathan Ingraham / Engadget

    Amazon's slashed the prices of most of its Echo devices ahead of Black Friday. Of note are the Echo smart speaker for $60 and the latest Echo Show 5 for $45. The sale includes other items like the Echo Buds and the Echo Frames, and we recommend grabbing Echo devices now while they're at all-time-low prices and before shipping times get too long.

    Buy Echo at Amazon - $60Buy Echo Show 5 at Amazon - $45

    Amazon Fire tablets

    \"Amazon
    Valentina Palladino / Engadget

    A number of regular and kids edition Fire tablets have been discounted ahead of Black Friday. Notably, the Fire HD 8 and HD 10 are half off, while all Fire Kids Pro devices are at record-low prices. 

    Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Amazon Fire TV Stick 4K Max

    \"Amazon
    Amazon

    The new Fire TV Stick 4K Max is on sale for $35, or $20 off its normal price. It has all of the same features as the standard 4K streaming stick that Amazon sells, but it also supports WiFi 6 and picture-in-picture live view.

    Buy Fire TV Stick 4K Max at Amazon - $35

    Kindle

    \"Amazon
    Engadget

    The basic Kindle is on sale for $50, which is a record-low price. While it doesn't have all the bells and whistles of the Paperwhite, it remains a solid e-reader thanks to its front-lit display, sleek design and improved contrast display.

    Buy Kindle at Amazon - $50

    Blink cameras

    \"Blink
    Amazon / Blink

    Most Blink security cameras have been discounted ahead of Black Friday: a one-pack of the Outdoor cam is on sale for $60, the same configuration for the Indoor camera is down to $50 and the tiny, wired Blink Mini is on sale for $20.

    Buy Blink Outdoor at Amazon - $60Buy Blink Indoor at Amazon - $50Buy Blink Mini at Amazon - $20

    Solo Stove

    \"Solo
    Engadget

    Solo Stove's early Black Friday sale knocks up to $200 off its fire pits. The midrange Bonfire is on sale for $225, which is $125 off its normal price. These stainless steel fire pits have made it into some of our outdoor-focused guides, and we like them for their attractive designs and their ability to create a cozy fire that doesn't emit tons of smoke.

    Shop Solo Stove Black Friday sale

    Adobe All Apps plan

    \"Over
    gorodenkoff via Getty Images

    New Adobe subscribers can get the All Apps plan for only $30 per month, which is 40 percent off its normal price. That gets you Photoshop, Illustrator, InDesign, Premiere Pro and Acrobat, which are most of Adobe's most popular programs. Students can save even more: the discount is $16 per month for them, or 70 percent off the normal rate.

    Buy All Apps plan at Adobe - $30/month

    Arturia sale

    \"Arturia
    Arturia

    Arturia's early Black Friday sale knocks 50 percent off software through December 8th. That includes the FX Collection 2 vintage plugin set, which is now $199, the V Collection 8 synth keyboard pack for $299 and the Pigments soft synth with the Spectrum sound pack for $99.

    Shop Arturia Black Friday sale

    New early Black Friday tech deals

    Jabra 85h

    Jabra's 85h wireless headphones are back down to their lowest price yet, only $150. We gave them a score of 84 when they first came out in 2019 for their custom EQ and ANC modes, solid onboard controls and insane battery life.

    Buy Jabra 85h at Amazon - $150

    NordVPN

    NordVPN has a promotion going on right now that gets you two years of the service for $89. That's 68 percent off its normal price. We like NordVPN for its speed, its no-logs policy, the thousands of servers it has to choose from and that one account supports up to six connected devices.

    Buy NordVPN (2 years) - $89

    Segway Kickscooter Max

    Wellbots has the Segway Kickscooter Max for $150 off, bringing it down to $799 when you use the code ENGADGET150 at checkout. This model has the longest driving range of all Ninebot scooters, pneumatic inflatable tires, 6-hour fast charging and more.

    Buy Kickscooter Max at Wellbots - $799

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    We're officially one week out from Black Friday and it seems most retailers have launched at least a portion of their deals and sales already. You can find the exhaustive list on our deals homepage, but we've gathered the highlights here. Bose's new QuietComfort 45 headphones remain on sale for $279, while the Mac Mini M1 is still $100 off. A bunch of Amazon and Google devices have been discounted, and you can still get the second-generation Apple Pencil for $100. Here are the best early Black Friday tech deals that you can still get today.

    Bose QuietComfort 45

    \"With
    Billy Steele/Engadget

    Bose's new QuietComfort 45 headphones are on sale for $279 right now, or $50 off their normal price. We gave them a score of 86 for their clear, balanced audio, improved ANC and long battery life.

    Buy QuietComfort 45 at Amazon - $279

    Mac Mini M1

    \"Apple
    Engadget

    Apple's Mac Mini M1 is on sale for $600 thanks to an automatically applied coupon at Amazon. It was already the most affordable M1 machine you could get, but these deal makes it even cheaper. It's the best option if you need a compact desktop that runs macOS and has a newer, more powerful processor.

    Buy Mac Mini M1 at Amazon - $600

    HomePod Mini

    \"Apple
    Apple

    The new colors of the HomePod mini are $5 cheaper right now at B&H Photo, bringing them down to $95 each. It's not a huge discount, but we rarely see these smart speakers drop below $85 - $90 a piece. We gave the HomePod mini a score of 84 for its solid audio quality, cute and compact design and improved Siri smarts.

    Buy HomePod mini at B&H - $95

    Apple Pencil (2nd-gen)

    \"Apple
    Valentina Palladino / Engadget

    The second-generation Apple Pencil is on sale for $100 right now, which is an all-time-low price. It works with all iPads except for the latest 10.2-inch entry-level model, which still supports the first-gen stylus. It's a must-have if you plan on taking notes or creating artwork with your iPad.

    Buy Apple Pencil (2nd gen) at Amazon - $100

    Samsung foldables

    \"The
    David Imel for Engadget

    Samsung's latest foldables are on sale for Black Friday, and you can get a free pair of Galaxy Buds 2 when you buy. The Z Flip 3 is down to $850 while the Z Fold 3 is on sale for $1,500 — if you buy through Amazon, you just have to apply the free-earbuds promotional offer on the product page before checking out.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Google deals

    \"Google
    Engadget

    A number of Google gadgets have been discounted ahead of Black Friday. Key among them are the Pixel 6 smartphone for up to $100 off, the Nest Hub for half off and the Nest Audio for only $60.

    Buy Pixel 6 at Best Buy - $499Buy Nest Hub at Best Buy - $50Buy Nest Audio at Best Buy - $60

    Sony WH-1000XM4

    \"Sony
    Billy Steele / Engadget

    Sony's WH-1000XM4 headphones are on sale for $248, which is a record-low price. These are our current favorite ANC cans and we gave them a score of 94 for their excellent sound quality, good ANC and multi-device connectivity.

    Buy WH-1000XM4 at Amazon - $248

    Sony WF-1000XM4

    \"Sony
    Billy Steele/Engadget

    Sony's excellent WF-1000XM4 earbuds are still down to $248. We gave them a score of 86 for their great sound quality, powerful ANC and improved battery life.

    Buy WF-1000XM4 at Amazon - $248

    Jabra Elite 75t

    \"Jabra
    Billy Steele / Engadget

    Jabra's Elite 75 earbuds are on sale for $80, which is $70 off and a record low. While not the latest earbuds from Jabra, they remain some of our favorites thanks to their solid audio quality, comfortable design and new ANC abilities that came through a recent software update.

    Buy Elite 75t at Amazon - $80

    August WiFi smart lock

    \"August
    Engadget

    The 4th-generation August WiFi smart lock is on sale for $179 right now. We gave the smart home gadget a score of 80 for its minimalist design, easy installation process and mandatory two-factor authentication.

    Buy August WiFi smart lock at Amazon - $179Buy August WiFi smart lock at Wellbots - $179

    Samsung T7 SSD

    \"Samsung
    Samsung

    Samsung's T7 portable SSD in 1TB has dropped to a record low of $130. You can also grab the 2TB model on sale for $250 right now, too. We like these compact drives for their durable yet sleek design, speedy performance and optional password protection.

    Buy Samsung T7 (1TB) at Amazon - $130Buy Samsung T7 (2TB) at Amazon - $250

    Roku Streambar

    \"Roku
    Valentina Palladino / Engadget

    Roku's Streambar is on sale for $80 right now, or $50 off its normal price. That's the best price we've seen on the compact soundbar. It earned a score of 86 from us for its solid audio quality, Dolby Atmos support and built-in 4K streaming technology.

    Buy Streambar at Amazon - $80Buy Streambar at Roku - $80

    Amazon Echo devices

    \"Amazon
    Nathan Ingraham / Engadget

    Amazon's slashed the prices of most of its Echo devices ahead of Black Friday. Of note are the Echo smart speaker for $60 and the latest Echo Show 5 for $45. The sale includes other items like the Echo Buds and the Echo Frames, and we recommend grabbing Echo devices now while they're at all-time-low prices and before shipping times get too long.

    Buy Echo at Amazon - $60Buy Echo Show 5 at Amazon - $45

    Amazon Fire tablets

    \"Amazon
    Valentina Palladino / Engadget

    A number of regular and kids edition Fire tablets have been discounted ahead of Black Friday. Notably, the Fire HD 8 and HD 10 are half off, while all Fire Kids Pro devices are at record-low prices. 

    Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Amazon Fire TV Stick 4K Max

    \"Amazon
    Amazon

    The new Fire TV Stick 4K Max is on sale for $35, or $20 off its normal price. It has all of the same features as the standard 4K streaming stick that Amazon sells, but it also supports WiFi 6 and picture-in-picture live view.

    Buy Fire TV Stick 4K Max at Amazon - $35

    Kindle

    \"Amazon
    Engadget

    The basic Kindle is on sale for $50, which is a record-low price. While it doesn't have all the bells and whistles of the Paperwhite, it remains a solid e-reader thanks to its front-lit display, sleek design and improved contrast display.

    Buy Kindle at Amazon - $50

    Blink cameras

    \"Blink
    Amazon / Blink

    Most Blink security cameras have been discounted ahead of Black Friday: a one-pack of the Outdoor cam is on sale for $60, the same configuration for the Indoor camera is down to $50 and the tiny, wired Blink Mini is on sale for $20.

    Buy Blink Outdoor at Amazon - $60Buy Blink Indoor at Amazon - $50Buy Blink Mini at Amazon - $20

    Solo Stove

    \"Solo
    Engadget

    Solo Stove's early Black Friday sale knocks up to $200 off its fire pits. The midrange Bonfire is on sale for $225, which is $125 off its normal price. These stainless steel fire pits have made it into some of our outdoor-focused guides, and we like them for their attractive designs and their ability to create a cozy fire that doesn't emit tons of smoke.

    Shop Solo Stove Black Friday sale

    Adobe All Apps plan

    \"Over
    gorodenkoff via Getty Images

    New Adobe subscribers can get the All Apps plan for only $30 per month, which is 40 percent off its normal price. That gets you Photoshop, Illustrator, InDesign, Premiere Pro and Acrobat, which are most of Adobe's most popular programs. Students can save even more: the discount is $16 per month for them, or 70 percent off the normal rate.

    Buy All Apps plan at Adobe - $30/month

    Arturia sale

    \"Arturia
    Arturia

    Arturia's early Black Friday sale knocks 50 percent off software through December 8th. That includes the FX Collection 2 vintage plugin set, which is now $199, the V Collection 8 synth keyboard pack for $299 and the Pigments soft synth with the Spectrum sound pack for $99.

    Shop Arturia Black Friday sale

    New early Black Friday tech deals

    Jabra 85h

    Jabra's 85h wireless headphones are back down to their lowest price yet, only $150. We gave them a score of 84 when they first came out in 2019 for their custom EQ and ANC modes, solid onboard controls and insane battery life.

    Buy Jabra 85h at Amazon - $150

    NordVPN

    NordVPN has a promotion going on right now that gets you two years of the service for $89. That's 68 percent off its normal price. We like NordVPN for its speed, its no-logs policy, the thousands of servers it has to choose from and that one account supports up to six connected devices.

    Buy NordVPN (2 years) - $89

    Segway Kickscooter Max

    Wellbots has the Segway Kickscooter Max for $150 off, bringing it down to $799 when you use the code ENGADGET150 at checkout. This model has the longest driving range of all Ninebot scooters, pneumatic inflatable tires, 6-hour fast charging and more.

    Buy Kickscooter Max at Wellbots - $799

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Shopping", - "link": "https://www.engadget.com/boses-quietcomfort-45-headphones-drop-to-279-best-tech-deals-this-week-164510659.html?src=rss", - "creator": "Engadget", - "pubDate": "Fri, 19 Nov 2021 16:45:10 +0000", + "title": "The Best Black Friday Deals on Laptops and Home Office Gear", + "description": "We scoured the web to find the best discounts on notebooks, Chromebooks, external monitors, keyboards, and other peripherals.", + "content": "We scoured the web to find the best discounts on notebooks, Chromebooks, external monitors, keyboards, and other peripherals.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-laptop-deals-2021", + "creator": "Scott Gilbertson, Gear Team", + "pubDate": "Thu, 25 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Early Black Friday gaming deals include one year of PS Plus for $40", - "description": "

    Just ahead of Black Friday, some solid gaming deals are popping up. A 12-month subscription to PlayStation Plus is currently $40 on Amazon. It typically costs $60 and it's a digital code, so you won't have to wait for delivery. If you’re already a PS Plus member, it’s still worth checking out this deal, since you can stack additional subscriptions.

    Buy PS Plus (1 year) at Amazon - $40

    You'll need a PS Plus membership to play most multiplayer games on PlayStation 4 and PlayStation 5. There are exceptions for some free-to-play games, including Fortnite. In addition, members often get discounts on digital purchases through the PlayStation Store, as well as cloud storage and backups for game save files.

    One of the major value adds of PS Plus is that players receive a mystery bag of a few games each month across PS4 and PS5. There are three extra PS VR games this month to mark the headset’s fifth anniversary. You’ll retain access to claimed PS Plus games as long as you maintain your subscription.

    PS5 owners can take advantage of the PS Plus Collection too. It’s a selection of first-party and third-party PS4 games, some of which have been patched for better performance on PS5. The lineup includes God of War, Monster Hunter: World, Final Fantasy XV, Uncharted 4: A Thief's End, Ratchet & Clank, Days Gone, Battlefield 1, Batman: Arkham Knight, The Last Guardian, The Last of Us Remastered, Persona 5 and Resident Evil 7. The same rule applies: if your PS Plus subscription lapses, you won’t be able to play games you claimed through the collection.

    Of course, given that this is the biggest shopping season of the year, there are discounts on games as well, and many of the better deals are for physical editions. You can find savings on PlayStation console exclusives like Deathloop ($25 at GameStop if you click 'New' and $30 at Amazon, usually $60), the director's cut of Ghost of Tsushima on PS5 (down from $70 to $50), Demon's Souls (also reduced by $30 to $40) and, in one of the bigger discounts, Returnal, which has dropped from $70 to $30.

    There are good deals on multi-platform titles too, such as Eidos-Montreal's surprisingly wonderful Marvel's Guardians of the Galaxy, which is half off at $30 on all platforms. Hitman 3 and Resident Evil: Village are both less than half price at the minute at $20. Hades, which is widely regarded as one of the best games of 2020, is also $20 on all platforms.

    Far Cry 6 is a third off at $40, and you can save on FIFA 22 as well. The latest edition of EA's famed soccer series is $40 on PS5 and Xbox Series X/S (it's a digital code for the latter consoles), and $28 on PS4 and Xbox One.

    The PS5 digital edition and Xbox Series X don't have disc drives, so deals on physical games won't mean much to owners of those consoles. However, it's worth checking out the PlayStation and Xbox digital stores for Black Friday deals there too.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    Just ahead of Black Friday, some solid gaming deals are popping up. A 12-month subscription to PlayStation Plus is currently $40 on Amazon. It typically costs $60 and it's a digital code, so you won't have to wait for delivery. If you’re already a PS Plus member, it’s still worth checking out this deal, since you can stack additional subscriptions.

    Buy PS Plus (1 year) at Amazon - $40

    You'll need a PS Plus membership to play most multiplayer games on PlayStation 4 and PlayStation 5. There are exceptions for some free-to-play games, including Fortnite. In addition, members often get discounts on digital purchases through the PlayStation Store, as well as cloud storage and backups for game save files.

    One of the major value adds of PS Plus is that players receive a mystery bag of a few games each month across PS4 and PS5. There are three extra PS VR games this month to mark the headset’s fifth anniversary. You’ll retain access to claimed PS Plus games as long as you maintain your subscription.

    PS5 owners can take advantage of the PS Plus Collection too. It’s a selection of first-party and third-party PS4 games, some of which have been patched for better performance on PS5. The lineup includes God of War, Monster Hunter: World, Final Fantasy XV, Uncharted 4: A Thief's End, Ratchet & Clank, Days Gone, Battlefield 1, Batman: Arkham Knight, The Last Guardian, The Last of Us Remastered, Persona 5 and Resident Evil 7. The same rule applies: if your PS Plus subscription lapses, you won’t be able to play games you claimed through the collection.

    Of course, given that this is the biggest shopping season of the year, there are discounts on games as well, and many of the better deals are for physical editions. You can find savings on PlayStation console exclusives like Deathloop ($25 at GameStop if you click 'New' and $30 at Amazon, usually $60), the director's cut of Ghost of Tsushima on PS5 (down from $70 to $50), Demon's Souls (also reduced by $30 to $40) and, in one of the bigger discounts, Returnal, which has dropped from $70 to $30.

    There are good deals on multi-platform titles too, such as Eidos-Montreal's surprisingly wonderful Marvel's Guardians of the Galaxy, which is half off at $30 on all platforms. Hitman 3 and Resident Evil: Village are both less than half price at the minute at $20. Hades, which is widely regarded as one of the best games of 2020, is also $20 on all platforms.

    Far Cry 6 is a third off at $40, and you can save on FIFA 22 as well. The latest edition of EA's famed soccer series is $40 on PS5 and Xbox Series X/S (it's a digital code for the latter consoles), and $28 on PS4 and Xbox One.

    The PS5 digital edition and Xbox Series X don't have disc drives, so deals on physical games won't mean much to owners of those consoles. However, it's worth checking out the PlayStation and Xbox digital stores for Black Friday deals there too.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Shopping", - "link": "https://www.engadget.com/black-friday-gaming-deals-ps-plus-ps4-ps5-xbox-154250418.html?src=rss", - "creator": "Kris Holt", - "pubDate": "Fri, 19 Nov 2021 15:42:50 +0000", + "title": "The Real-Life Quest to Cook All 74 Stardew Valley Recipes", + "description": "Meet the TikTok creator who’s re-creating all of the in-game recipes and dishes from this cozy RPG sim.", + "content": "Meet the TikTok creator who’s re-creating all of the in-game recipes and dishes from this cozy RPG sim.", + "category": "Culture", + "link": "https://www.wired.com/story/stardew-valley-cooking-recipes", + "creator": "Michelle Delgado", + "pubDate": "Thu, 25 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Sony's excellent WH-1000XM4 headphones are back down to $248", - "description": "

    Sony made the best even better with this year's WH-1000XM4 wireless headphones and they're back on sale ahead of Black Friday. You can grab the cans for $248 right now, or more than $100 off their normal price. If you prefer earbuds, the WF-1000XM4 have been discounted for a bit and remain down to $248 as well.

    Buy WH-1000XM4 at Amazon - $248Buy WH-1000XM4 at Best Buy - $248Buy WF-1000XM4 earbuds at Amazon - $248Buy WF-1000XM4 earbuds at Best Buy - $248

    All of the key (and stellar) features of the previous WH-1000XM3 are in the latest headphones, but the new model has a few upgrades, too. The design is slightly sleeker and more comfortable, and you'll get about 30 hours on a single charge so you can wear them for long stretches of time. Sound quality is great with punchy bass, and Sony's 360 Reality Audio provides an immersive experience similar to that of Dolby Atmos. Active noise cancellation is also solid and, with Adaptive Sound Control enabled, the headphones will automatically adjust the level of noise cancellation based on your environment.

    We also appreciate the addition of two new features: multi-device connectivity and Speak to Chat. The former allows you to connect the XM4 to a couple of devices at once, switching between them at will. The latter will automatically pause audio coming from the headphones when it detects you speaking. Most people will likely use the former feature more on a regular basis, but the latter is nice to have, too.

    For those who prefer earbuds, you'll get many similar features in the WF-1000XM4. These earned a score of 86 from us for their excellent sound quality and ANC, improved battery life and wireless charging case. They also have the same Speak-to-Chat feature that the headphones have, even if it can be a bit finicky sometimes. The ANC on these buds is noticeably better than that of their predecessors, and they also support 360 Reality Audio.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    Sony made the best even better with this year's WH-1000XM4 wireless headphones and they're back on sale ahead of Black Friday. You can grab the cans for $248 right now, or more than $100 off their normal price. If you prefer earbuds, the WF-1000XM4 have been discounted for a bit and remain down to $248 as well.

    Buy WH-1000XM4 at Amazon - $248Buy WH-1000XM4 at Best Buy - $248Buy WF-1000XM4 earbuds at Amazon - $248Buy WF-1000XM4 earbuds at Best Buy - $248

    All of the key (and stellar) features of the previous WH-1000XM3 are in the latest headphones, but the new model has a few upgrades, too. The design is slightly sleeker and more comfortable, and you'll get about 30 hours on a single charge so you can wear them for long stretches of time. Sound quality is great with punchy bass, and Sony's 360 Reality Audio provides an immersive experience similar to that of Dolby Atmos. Active noise cancellation is also solid and, with Adaptive Sound Control enabled, the headphones will automatically adjust the level of noise cancellation based on your environment.

    We also appreciate the addition of two new features: multi-device connectivity and Speak to Chat. The former allows you to connect the XM4 to a couple of devices at once, switching between them at will. The latter will automatically pause audio coming from the headphones when it detects you speaking. Most people will likely use the former feature more on a regular basis, but the latter is nice to have, too.

    For those who prefer earbuds, you'll get many similar features in the WF-1000XM4. These earned a score of 86 from us for their excellent sound quality and ANC, improved battery life and wireless charging case. They also have the same Speak-to-Chat feature that the headphones have, even if it can be a bit finicky sometimes. The ANC on these buds is noticeably better than that of their predecessors, and they also support 360 Reality Audio.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Audio Technology", - "link": "https://www.engadget.com/sonys-excellent-wh1000xm4-headphones-are-back-down-to-248-151142901.html?src=rss", - "creator": "Valentina Palladino", - "pubDate": "Fri, 19 Nov 2021 15:11:42 +0000", + "title": "The Best Black Friday Deals for Your Kitchen", + "description": "Need a cast-iron skillet, thermometer, or professional-grade blender? Now is the time to restock your culinary tools.", + "content": "Need a cast-iron skillet, thermometer, or professional-grade blender? Now is the time to restock your culinary tools.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-kitchen-deals-2021", + "creator": "Scott Gilbertson, Gear Team", + "pubDate": "Thu, 25 Nov 2021 01:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Samsung’s Black Friday sale knocks up to $300 off foldables and includes free earbuds", - "description": "

    Samsung's latest family of foldables is its best yet, but also its most expensive. Their high price tags can make it hard to be an early adopter without emptying your bank account. But Black Friday sales have come in clutch for the Galaxy Z Flip 3 and the Galaxy Z Fold 3 — both are on sale for record-low prices at Amazon right now. The Z Flip 3 is $150 off and down to $850 while the Z Fold 3 is $300 off and down to $1,500. Both also come with a free pair of Galaxy Buds 2 if you apply the promotional offer on the product page before checking out. If you'd rather order directly from Samsung, you can get the same deal on the Z Fold 3 there, but the Z Flip 3 costs an extra $50.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Out of the two, the Z Flip 3 impressed us more, in part because Samsung fixed many of the problems found in its predecessor. While you'll still notice a crease in its 6.7-inch AMOLED display, it's not as noticeable as before, and the screen and the device overall seems more durable this time around. The handset doesn't scratch as easily anymore and it's IPX8 water resistant, too.

    The main screen runs at 2,640 x 1,080 resolution and is lovely to use, and it supports up to 120Hz refresh rates. When folded, the 1.9-inch external screen displays short bits of information like the weather and calendar events, and it can be used to quickly access certain features like Samsung Pay. We also appreciate the new software features that Samsung built in that are foldable specific such as Flex Mode, which will show things like a a YouTube video on the top half of the display when the device is partially folded and the comments section on the bottom.

    While the Z Flip 3 is both impressive and fairly practical, we found the Z Fold 3 to be remarkable but much less useful. It's larger and heavier for one, and when closed, it's narrower than most smartphones, which makes it a bit awkward. Its 7.6-inch AMOLED interior display provides an immersive experience and is more flexible than previous iterations, and we appreciate the S Pen support. But overall, it's not the best smartphone nor the best small tablet. However, that might not matter to those who are super excited about owning a foldable — and these Black Friday sales make that reality a bit more accessible.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    Samsung's latest family of foldables is its best yet, but also its most expensive. Their high price tags can make it hard to be an early adopter without emptying your bank account. But Black Friday sales have come in clutch for the Galaxy Z Flip 3 and the Galaxy Z Fold 3 — both are on sale for record-low prices at Amazon right now. The Z Flip 3 is $150 off and down to $850 while the Z Fold 3 is $300 off and down to $1,500. Both also come with a free pair of Galaxy Buds 2 if you apply the promotional offer on the product page before checking out. If you'd rather order directly from Samsung, you can get the same deal on the Z Fold 3 there, but the Z Flip 3 costs an extra $50.

    Buy Z Flip 3 at Amazon - $850Buy Z Flip 3 at Samsung - $900Buy Z Fold 3 at Amazon - $1,500Buy Z Fold 3 at Samsung - $1,500

    Out of the two, the Z Flip 3 impressed us more, in part because Samsung fixed many of the problems found in its predecessor. While you'll still notice a crease in its 6.7-inch AMOLED display, it's not as noticeable as before, and the screen and the device overall seems more durable this time around. The handset doesn't scratch as easily anymore and it's IPX8 water resistant, too.

    The main screen runs at 2,640 x 1,080 resolution and is lovely to use, and it supports up to 120Hz refresh rates. When folded, the 1.9-inch external screen displays short bits of information like the weather and calendar events, and it can be used to quickly access certain features like Samsung Pay. We also appreciate the new software features that Samsung built in that are foldable specific such as Flex Mode, which will show things like a a YouTube video on the top half of the display when the device is partially folded and the comments section on the bottom.

    While the Z Flip 3 is both impressive and fairly practical, we found the Z Fold 3 to be remarkable but much less useful. It's larger and heavier for one, and when closed, it's narrower than most smartphones, which makes it a bit awkward. Its 7.6-inch AMOLED interior display provides an immersive experience and is more flexible than previous iterations, and we appreciate the S Pen support. But overall, it's not the best smartphone nor the best small tablet. However, that might not matter to those who are super excited about owning a foldable — and these Black Friday sales make that reality a bit more accessible.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Personal Finance - Lifestyle", - "link": "https://www.engadget.com/samsungs-black-friday-sale-knocks-up-to-300-off-foldables-and-includes-free-earbuds-135545170.html?src=rss", - "creator": "Valentina Palladino", - "pubDate": "Fri, 19 Nov 2021 13:55:45 +0000", + "title": "32 Best Black Friday Video Game and Accessory Deals", + "description": "We found some great gear and games on sale for PlayStation, Xbox, Switch, VR, and PC.", + "content": "We found some great gear and games on sale for PlayStation, Xbox, Switch, VR, and PC.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-video-game-deals-2021", + "creator": "Eric Ravenscraft, Gear Team", + "pubDate": "Wed, 24 Nov 2021 23:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Engadget Podcast: The storm around Activision Blizzard’s CEO", - "description": "

    This week, Cherlynn and Devindra are joined by Engadget’s Jessica Conditt to dive into the latest controversy around Activision Blizzard CEO Bobby Kotick. According to a recent Wall Street Journal report, he was well aware of sexual misconduct allegations at the company, and he deliberately kept Activision's board in the dark. Also, we chat about what Apple’s self service program means for you, as well as a new accessibility gadget that brings eye tracking to the iPad.

    Listen below, or subscribe on your podcast app of choice. If you've got suggestions or topics you'd like covered on the show, be sure to email us or drop a note in the comments! And be sure to check out our other podcasts, the Morning After and Engadget News!


    Subscribe!


    Topics


    Video livestream

    Credits
    Hosts: Cherlynn Low and Devindra Hardawar
    Guest: Jessica Conditt
    Producer: Ben Ellman
    Livestream producers: Julio Barrientos,Luke Brooks
    Graphics artists: Luke Brooks, Kyle Maack
    Music: Dale North and Terrence O'Brien

    ", - "content": "

    This week, Cherlynn and Devindra are joined by Engadget’s Jessica Conditt to dive into the latest controversy around Activision Blizzard CEO Bobby Kotick. According to a recent Wall Street Journal report, he was well aware of sexual misconduct allegations at the company, and he deliberately kept Activision's board in the dark. Also, we chat about what Apple’s self service program means for you, as well as a new accessibility gadget that brings eye tracking to the iPad.

    Listen below, or subscribe on your podcast app of choice. If you've got suggestions or topics you'd like covered on the show, be sure to email us or drop a note in the comments! And be sure to check out our other podcasts, the Morning After and Engadget News!


    Subscribe!


    Topics


    Video livestream

    Credits
    Hosts: Cherlynn Low and Devindra Hardawar
    Guest: Jessica Conditt
    Producer: Ben Ellman
    Livestream producers: Julio Barrientos,Luke Brooks
    Graphics artists: Luke Brooks, Kyle Maack
    Music: Dale North and Terrence O'Brien

    ", - "category": "Media", - "link": "https://www.engadget.com/engadget-podcast-activision-blizzard-bobby-kotick-133022102.html?src=rss", - "creator": "Devindra Hardawar", - "pubDate": "Fri, 19 Nov 2021 13:30:22 +0000", + "title": "How to Pick the Right Roku for Your TV", + "description": "The company has a dizzying array of streaming sticks, boxes, and soundbars to choose from, but don’t worry—these are the ones to buy.", + "content": "The company has a dizzying array of streaming sticks, boxes, and soundbars to choose from, but don’t worry—these are the ones to buy.", + "category": "Gear", + "link": "https://www.wired.com/gallery/how-to-pick-the-right-roku", + "creator": "Medea Giordano, Jeffrey Van Camp", + "pubDate": "Wed, 24 Nov 2021 14:00:00 +0000", + "folder": "00.03 News/Tech", + "feed": "Wired", + "read": false, + "favorite": false, + "created": false, + "tags": [] + }, + { + "title": "Now Isn’t the Time to Give Users Control of Their Data", + "description": "Until the collection of data is regulated, having power over your own information is more of a nightmarish responsibility than an appealing right.", + "content": "Until the collection of data is regulated, having power over your own information is more of a nightmarish responsibility than an appealing right.", + "category": "Ideas", + "link": "https://www.wired.com/story/dont-give-users-control-over-data", + "creator": "Sandra Matz", + "pubDate": "Wed, 24 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "UK to ban any handheld use of a mobile phone behind the wheel", - "description": "

    The UK government is strengthening its existing laws against the use of mobile phones while driving. It's already illegal to text and make calls behind the wheel unless it's an emergency. Starting next year, though, any use of mobile phone while driving will be deemed illegal — that includes using phones to take photos or videos, to play games or to scroll through playlists and other content. 

    Drivers can't do any of those even while their vehicle isn't moving. The government will revise The Highway Code to explain that being stationary on the road, such as at traffic lights or in the middle of traffic jams, still count as driving. Anybody caught using their phones in those circumstances will still be fined £200 (US$269) and will get six penalty points on their license, which means new drivers could get their licenses revoked

    The only exception is if they're using their phone to make payments at a card reader, say at a drive-through window or a road toll. Paying for online shopping purchases isn't an acceptable reason to get out of being penalized if they're caught. To note, drivers can continue using their devices hands-free, such as for navigation purposes, so long as they're secured in a cradle.

    The UK has long been planning to close the legal loophole allowing drivers to use their mobile devices, so long as they're not texting or calling. Authorities consulted the public about expanding its existing laws, and 81 percent of responders apparently supported their proposals.

    Transport Secretary Grant Shapps said in a statement:

    "Too many deaths and injuries occur while mobile phones are being held. By making it easier to prosecute people illegally using their phone at the wheel, we are ensuring the law is brought into the 21st century while further protecting all road users."

    ", - "content": "

    The UK government is strengthening its existing laws against the use of mobile phones while driving. It's already illegal to text and make calls behind the wheel unless it's an emergency. Starting next year, though, any use of mobile phone while driving will be deemed illegal — that includes using phones to take photos or videos, to play games or to scroll through playlists and other content. 

    Drivers can't do any of those even while their vehicle isn't moving. The government will revise The Highway Code to explain that being stationary on the road, such as at traffic lights or in the middle of traffic jams, still count as driving. Anybody caught using their phones in those circumstances will still be fined £200 (US$269) and will get six penalty points on their license, which means new drivers could get their licenses revoked

    The only exception is if they're using their phone to make payments at a card reader, say at a drive-through window or a road toll. Paying for online shopping purchases isn't an acceptable reason to get out of being penalized if they're caught. To note, drivers can continue using their devices hands-free, such as for navigation purposes, so long as they're secured in a cradle.

    The UK has long been planning to close the legal loophole allowing drivers to use their mobile devices, so long as they're not texting or calling. Authorities consulted the public about expanding its existing laws, and 81 percent of responders apparently supported their proposals.

    Transport Secretary Grant Shapps said in a statement:

    "Too many deaths and injuries occur while mobile phones are being held. By making it easier to prosecute people illegally using their phone at the wheel, we are ensuring the law is brought into the 21st century while further protecting all road users."

    ", - "category": "Transportation", - "link": "https://www.engadget.com/uk-ban-any-handheld-use-mobile-phone-driving-125038275.html?src=rss", - "creator": "Mariella Moon", - "pubDate": "Fri, 19 Nov 2021 12:50:38 +0000", + "title": "Apps to Help Manage Meals for Different Dietary Needs", + "description": "Cooking and dining out don't have to be difficult, whether your children have allergies or guests have food restrictions.", + "content": "Cooking and dining out don't have to be difficult, whether your children have allergies or guests have food restrictions.", + "category": "Gear", + "link": "https://www.wired.com/story/apps-manage-meals-different-dietary-needs", + "creator": "Debi Lewis", + "pubDate": "Wed, 24 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Morning After: Pressure on Activision Blizzard CEO to resign grows", - "description": "

    We reported on employees calling for Activision Blizzard boss Bobby Kotick’s resignation earlier this week in TMA, but pressure continues to mount. Alongside more than 800 Activision Blizzard employees and contractors that have signed a petition calling for CEO Bobby Kotick to be removed, there have been responses from both the head of PlayStation, Jim Ryan, and Microsoft’s Phil Spencer.

    In a memo obtained by Bloomberg, Spencer reportedly said he and other leaders at Xbox are “disturbed and deeply troubled by the horrific events and actions” that reportedly took place at Activision Blizzard and that Microsoft was “evaluating all aspects” of their relationship with the game publisher.

    -Mat Smith

    Apple’s fully self-driving car ambitions reportedly still exist

    The company may be narrowing its focus.

    Bloomberg sources claim Apple is now shifting its attention to a fully self-driving car, not just a more conventional vehicle with semi-autonomous features. New project leader Kevin Lynch wants the very first model to drive itself, according to sources.

    The company is reportedly speeding up its plans, too. Instead of a targeted launch in five to seven years, the sources said it was now aiming for 2025 — that’s just four years away.

    Continue reading.

     

    Canadian police arrest teen for stealing $36.5 million in cryptocurrency

    It's one of the biggest crypto thefts involving a single person.

    Police in Canada say they recently arrested a teen who allegedly stole $46 million CAD (approximately $36.5 million) worth of cryptocurrency from a single individual in the US.

    The owner of the currency was the victim of a SIM swap attack. Their cellphone number was hijacked and used to intercept two-factor authentication requests, thereby allowing access to their protected accounts. Some of the stolen money was used to purchase a “rare” online gaming username, which eventually allowed the Hamilton Police Service, as well as FBI and US Secret Service Electronic Crimes Task Force, to identify the account holder. Police seized approximately $7 million CAD ($5.5 million) in stolen cryptocurrency when they arrested the teen.

    Continue reading.

    Nike is building its metaverse inside of 'Roblox'

    Yes, there’s a product showroom.

    \"The
    Roblox

    Nike announced a partnership with Roblox to offer a free virtual playspace called Nikeland. In its current iteration, Nikeland includes minigames such as tag, dodgeball and the floor is lava that players can check out with their friends. Mobile integration allows you to use your phone to translate real-life movement into the game. In that way, you can do things like long jumps and fast sprints.

    Why did Nike team-up with Roblox? Because it’s huge. With more than 200 million estimated monthly active users, it’s one of the most popular games among kids and teenagers.

    Continue reading.

    Google's second-gen Pixel Stand is available for pre-order

    It has a fan?

    \"The
    Google

    The new Pixel Stand is both bigger and more powerful than its predecessor — even if it didn’t make it in time for the Pixel 6 launch. It can charge the Pixel 6 Pro at up to 23W (21W for the regular Pixel 6) and has a fan to keep everything cool, but also presumably make noise while you charge. And while it will charge many Qi-compatible devices at up to 15W, Google phone owners receive some extra perks. You can use the Pixel 3 and newer models as makeshift Google Assistant smart speakers, display personal data like calendars while unlocked or turn your phone into a photo frame.

    Continue reading. 

    The biggest news stories you might have missed

    Latest iOS update for iPhones 12 and 13 fixes dropped call issue

    Engadget Deals: Google's Pixel 6 is up to $100 off right now

    Engadget Deals: Apple's new 16-inch MacBook Pro is discounted by $100 at Amazon

    The employee behind the #AppleToo protest is leaving the company

    Subaru's Solterra EV has a 220-mile range and 360-degree safety camera

    Cricut's Explore 3 is the perfect cutting machine for obsessive crafters

    ", - "content": "

    We reported on employees calling for Activision Blizzard boss Bobby Kotick’s resignation earlier this week in TMA, but pressure continues to mount. Alongside more than 800 Activision Blizzard employees and contractors that have signed a petition calling for CEO Bobby Kotick to be removed, there have been responses from both the head of PlayStation, Jim Ryan, and Microsoft’s Phil Spencer.

    In a memo obtained by Bloomberg, Spencer reportedly said he and other leaders at Xbox are “disturbed and deeply troubled by the horrific events and actions” that reportedly took place at Activision Blizzard and that Microsoft was “evaluating all aspects” of their relationship with the game publisher.

    -Mat Smith

    Apple’s fully self-driving car ambitions reportedly still exist

    The company may be narrowing its focus.

    Bloomberg sources claim Apple is now shifting its attention to a fully self-driving car, not just a more conventional vehicle with semi-autonomous features. New project leader Kevin Lynch wants the very first model to drive itself, according to sources.

    The company is reportedly speeding up its plans, too. Instead of a targeted launch in five to seven years, the sources said it was now aiming for 2025 — that’s just four years away.

    Continue reading.

     

    Canadian police arrest teen for stealing $36.5 million in cryptocurrency

    It's one of the biggest crypto thefts involving a single person.

    Police in Canada say they recently arrested a teen who allegedly stole $46 million CAD (approximately $36.5 million) worth of cryptocurrency from a single individual in the US.

    The owner of the currency was the victim of a SIM swap attack. Their cellphone number was hijacked and used to intercept two-factor authentication requests, thereby allowing access to their protected accounts. Some of the stolen money was used to purchase a “rare” online gaming username, which eventually allowed the Hamilton Police Service, as well as FBI and US Secret Service Electronic Crimes Task Force, to identify the account holder. Police seized approximately $7 million CAD ($5.5 million) in stolen cryptocurrency when they arrested the teen.

    Continue reading.

    Nike is building its metaverse inside of 'Roblox'

    Yes, there’s a product showroom.

    \"The
    Roblox

    Nike announced a partnership with Roblox to offer a free virtual playspace called Nikeland. In its current iteration, Nikeland includes minigames such as tag, dodgeball and the floor is lava that players can check out with their friends. Mobile integration allows you to use your phone to translate real-life movement into the game. In that way, you can do things like long jumps and fast sprints.

    Why did Nike team-up with Roblox? Because it’s huge. With more than 200 million estimated monthly active users, it’s one of the most popular games among kids and teenagers.

    Continue reading.

    Google's second-gen Pixel Stand is available for pre-order

    It has a fan?

    \"The
    Google

    The new Pixel Stand is both bigger and more powerful than its predecessor — even if it didn’t make it in time for the Pixel 6 launch. It can charge the Pixel 6 Pro at up to 23W (21W for the regular Pixel 6) and has a fan to keep everything cool, but also presumably make noise while you charge. And while it will charge many Qi-compatible devices at up to 15W, Google phone owners receive some extra perks. You can use the Pixel 3 and newer models as makeshift Google Assistant smart speakers, display personal data like calendars while unlocked or turn your phone into a photo frame.

    Continue reading. 

    The biggest news stories you might have missed

    Latest iOS update for iPhones 12 and 13 fixes dropped call issue

    Engadget Deals: Google's Pixel 6 is up to $100 off right now

    Engadget Deals: Apple's new 16-inch MacBook Pro is discounted by $100 at Amazon

    The employee behind the #AppleToo protest is leaving the company

    Subaru's Solterra EV has a 220-mile range and 360-degree safety camera

    Cricut's Explore 3 is the perfect cutting machine for obsessive crafters

    ", - "category": "Society & Culture", - "link": "https://www.engadget.com/the-morning-after-pressure-on-activision-blizzard-ceo-to-resign-121555249.html?src=rss", - "creator": "Mat Smith", - "pubDate": "Fri, 19 Nov 2021 12:15:55 +0000", + "title": "The Best Black Friday Deals on Fitness and Outdoor Gear", + "description": "Gear up for next year's adventures or plunge into a winter wonderland with these deals on ebikes, outdoor clothing, and fitness trackers.", + "content": "Gear up for next year's adventures or plunge into a winter wonderland with these deals on ebikes, outdoor clothing, and fitness trackers.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-fitness-deals-outdoors-2021", + "creator": "Matt Jancer", + "pubDate": "Wed, 24 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Twitch increases the number of custom emotes affiliate streamers can offer", - "description": "

    Emotes are a great way to add character and distinctiveness to a Twitch community — they can also get casual viewers to pay for subscriptions. A Twitch affiliate who's just starting out, however, used to only have a single custom emote slot. Now, the livestreaming website has upped the initial number of emote slots to five, based on affiliates' feedback. That means streamers can offer five custom emotes from the get-go, simply by meeting the bare requirements needed to become part of the affiliate program. In all, affiliates can earn nine slots for custom emotes by reaching certain subscription milestones. 

    Twitch is also carrying the change over to its partner program, increasing the slots available for them, as well. To be able to apply for partner status, an affiliate must reach a certain number of streaming hours, views and subscribers. Even then, they might not get in. That's why giving potential subscribers more incentive in the form of emotes could help beginners reach their goal sooner and earn more money.

    The website has also given affiliates the capability offer animated emotes to their community. They'll start with one slot and can unlock up to five as their audience grows. Those who can't afford to pay an artist to create animated emotes for them can use the website's Easy Animate feature to quickly convert static emotes into animated versions for free. These updates have started rolling out to Twitch streamers and will be reaching everyone in the coming weeks. 

    ", - "content": "

    Emotes are a great way to add character and distinctiveness to a Twitch community — they can also get casual viewers to pay for subscriptions. A Twitch affiliate who's just starting out, however, used to only have a single custom emote slot. Now, the livestreaming website has upped the initial number of emote slots to five, based on affiliates' feedback. That means streamers can offer five custom emotes from the get-go, simply by meeting the bare requirements needed to become part of the affiliate program. In all, affiliates can earn nine slots for custom emotes by reaching certain subscription milestones. 

    Twitch is also carrying the change over to its partner program, increasing the slots available for them, as well. To be able to apply for partner status, an affiliate must reach a certain number of streaming hours, views and subscribers. Even then, they might not get in. That's why giving potential subscribers more incentive in the form of emotes could help beginners reach their goal sooner and earn more money.

    The website has also given affiliates the capability offer animated emotes to their community. They'll start with one slot and can unlock up to five as their audience grows. Those who can't afford to pay an artist to create animated emotes for them can use the website's Easy Animate feature to quickly convert static emotes into animated versions for free. These updates have started rolling out to Twitch streamers and will be reaching everyone in the coming weeks. 

    ", - "category": "Financials Industry", - "link": "https://www.engadget.com/twitch-increases-custom-emotes-affiliates-115056303.html?src=rss", - "creator": "Mariella Moon", - "pubDate": "Fri, 19 Nov 2021 11:50:56 +0000", + "title": "To Help People With Long Covid, Scientists Need to Define It", + "description": "Patients with the perplexing syndrome have reported 200 different symptoms. Researchers will have to decide which to study—and rule out.", + "content": "Patients with the perplexing syndrome have reported 200 different symptoms. Researchers will have to decide which to study—and rule out.", + "category": "Science", + "link": "https://www.wired.com/story/to-help-people-with-long-covid-scientists-need-to-define-it", + "creator": "Maryn McKenna", + "pubDate": "Wed, 24 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Earthworm Jim is set to return in a new TV series", - "description": "

    The cult classic '90s game Earthworm Jim is coming back to TV as a new series, according to Variety and a tweet from Interplay Entertainment. Interplay holds the rights to Earthworm Jim games and recently announced it was bringing the franchise back as an Intellivision Amico exclusive. 

    The project will be headed be Interplay's newly formed TV and film studio division, working with the animation studio Passion Pictures. "There’s so much potential in this story universe: a galaxy full of animals battling for power," project lead Michel K. Parandi told Variety. "Jim is an earthworm in a universe where Earth is nothing more than a myth. His struggle to find meaning is surreal and comical, but it’s also relatable."

    The first Earthworm Jim game came out on Sega Genesis and Super Nintendo in 1994, with the last released in 1999. There's still no word on when the new game will arrive. There was also a Warner Bros. cartoon series based on the game that ran for two season in 1995, with the lead character played by none other than Dan Castellaneta, best known as the voice of Homer Simpson. 

    In a follow-up tweet, Interplay said that the original creator of the game, presumably Doug TenNapel, "is not involved at all." TenNapel was originally brought in as a creative consultant on the game, but his participation was called into question after he made a number of racist and homophobic comments on a podcast. 

    ", - "content": "

    The cult classic '90s game Earthworm Jim is coming back to TV as a new series, according to Variety and a tweet from Interplay Entertainment. Interplay holds the rights to Earthworm Jim games and recently announced it was bringing the franchise back as an Intellivision Amico exclusive. 

    The project will be headed be Interplay's newly formed TV and film studio division, working with the animation studio Passion Pictures. "There’s so much potential in this story universe: a galaxy full of animals battling for power," project lead Michel K. Parandi told Variety. "Jim is an earthworm in a universe where Earth is nothing more than a myth. His struggle to find meaning is surreal and comical, but it’s also relatable."

    The first Earthworm Jim game came out on Sega Genesis and Super Nintendo in 1994, with the last released in 1999. There's still no word on when the new game will arrive. There was also a Warner Bros. cartoon series based on the game that ran for two season in 1995, with the lead character played by none other than Dan Castellaneta, best known as the voice of Homer Simpson. 

    In a follow-up tweet, Interplay said that the original creator of the game, presumably Doug TenNapel, "is not involved at all." TenNapel was originally brought in as a creative consultant on the game, but his participation was called into question after he made a number of racist and homophobic comments on a podcast. 

    ", - "category": "Consumer Discretionary", - "link": "https://www.engadget.com/earthworm-jim-is-set-to-return-in-a-new-tv-series-111519345.html?src=rss", - "creator": "Steve Dent", - "pubDate": "Fri, 19 Nov 2021 11:15:19 +0000", + "title": "Good Luck Trying to Fix the Supply Chain Crisis", + "description": "The system of getting things from A to B is broken. Fixing it will involve rethinking how pretty much everything moves.", + "content": "The system of getting things from A to B is broken. Fixing it will involve rethinking how pretty much everything moves.", + "category": "Business", + "link": "https://www.wired.com/story/supply-chain-crisis-future", + "creator": "Chris Stokel-Walker", + "pubDate": "Wed, 24 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Amazon's early Black Friday sale knocks Blink cameras down to as low as $20", - "description": "

    Blink's security cameras have the benefits of being small, wireless and relatively affordable, and you can grab most of them for less during Amazon's Black Friday sale. Both Indoor and Outdoor models have been discounted so you can grab a one-camera kit of either for $50 and $60, respectively. Most packs are on sale, too, so you can grab enough to outfit a good portion of your home and save a decent amount of money while doing so. Also, the wired Blink Mini is down to $20 in this sale, which is a record-low price.

    Buy Blink Indoor at Amazon - $50Buy Blink Outdoor at Amazon - $60Buy Blink Mini at Amazon - $20

    You only have to decide if you want to put Blink cameras inside or outside your home before you buy them. Aside from the weather resistance on the Outdoor models, the cams are basically the same. Both record 1080p video, have infrared night vision, support two-way audio and send motion alerts to your phone. Two-way audio lets you chat with whomever (or whatever) is on the other end of the camera while motion alerts will keep you posted about any movement the camera's detect, be it a deliveryman or a rogue bird. Plus, these cameras support Alexa voice commands, so if you have an Echo Show device, you can ask it to show you the video feeds from any of your Blink cameras.

    If you're unsure about going all-in on these cameras, the Blink Mini is a cheap way to try them out first. It's not wireless like the standard cams, but it has most of the same features and is even more compact. It'll record in 1080p and it supports two-way audio, motion alerts and Alexa — you'll just have to make sure you place it close to an outlet in your home.

    Amazon also knocked down the prices of its Eero 6 routers for Black Friday. The Eero 6 is down to $77 whi;e the Eero Pro 6 is on sale for $171. While both support WiFi 6, the Eero Pro 6 can cover up to 2,000 square feet with just one router while the Eero 6 has a more modest 1,500 square feet of coverage. Also, the Pro 6 is a tri-band router and will be better for speeds up to a gigabit, whereas the dual-band Eero 6 supports speeds up to 900 Mbps.

    Buy Eero 6 at Amazon - $77Buy Eero Pro 6 at Amazon - $171

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    Blink's security cameras have the benefits of being small, wireless and relatively affordable, and you can grab most of them for less during Amazon's Black Friday sale. Both Indoor and Outdoor models have been discounted so you can grab a one-camera kit of either for $50 and $60, respectively. Most packs are on sale, too, so you can grab enough to outfit a good portion of your home and save a decent amount of money while doing so. Also, the wired Blink Mini is down to $20 in this sale, which is a record-low price.

    Buy Blink Indoor at Amazon - $50Buy Blink Outdoor at Amazon - $60Buy Blink Mini at Amazon - $20

    You only have to decide if you want to put Blink cameras inside or outside your home before you buy them. Aside from the weather resistance on the Outdoor models, the cams are basically the same. Both record 1080p video, have infrared night vision, support two-way audio and send motion alerts to your phone. Two-way audio lets you chat with whomever (or whatever) is on the other end of the camera while motion alerts will keep you posted about any movement the camera's detect, be it a deliveryman or a rogue bird. Plus, these cameras support Alexa voice commands, so if you have an Echo Show device, you can ask it to show you the video feeds from any of your Blink cameras.

    If you're unsure about going all-in on these cameras, the Blink Mini is a cheap way to try them out first. It's not wireless like the standard cams, but it has most of the same features and is even more compact. It'll record in 1080p and it supports two-way audio, motion alerts and Alexa — you'll just have to make sure you place it close to an outlet in your home.

    Amazon also knocked down the prices of its Eero 6 routers for Black Friday. The Eero 6 is down to $77 whi;e the Eero Pro 6 is on sale for $171. While both support WiFi 6, the Eero Pro 6 can cover up to 2,000 square feet with just one router while the Eero 6 has a more modest 1,500 square feet of coverage. Also, the Pro 6 is a tri-band router and will be better for speeds up to a gigabit, whereas the dual-band Eero 6 supports speeds up to 900 Mbps.

    Buy Eero 6 at Amazon - $77Buy Eero Pro 6 at Amazon - $171

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Technology & Electronics", - "link": "https://www.engadget.com/amazons-early-black-friday-knocks-blink-cameras-down-to-as-low-as-20-103044165.html?src=rss", - "creator": "Valentina Palladino", - "pubDate": "Fri, 19 Nov 2021 10:30:44 +0000", + "title": "Great Resignation? Tech Workers Try a Great Reconsideration", + "description": "More Americans are quitting their jobs than ever before. Some engineers are finding new workplaces to prioritize their own wellbeing.", + "content": "More Americans are quitting their jobs than ever before. Some engineers are finding new workplaces to prioritize their own wellbeing.", + "category": "Business", + "link": "https://www.wired.com/story/great-resignation-tech-workers-great-reconsideration", + "creator": "Arielle Pardes", + "pubDate": "Wed, 24 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Twitter brings its in-app tipping feature to Android", - "description": "

    After introducing its "tip jar" feature to all iOS users over 18, Twitter has brought the feature to Android as well. The idea is that if you see a particularly entertaining or informative tweet, you can send money to the creator's Cash App, Patreon, Paypal, Bandcamp and Venmo from directly within the app. 

    Tips is now on Android!

    You can get set up to receive tips from your profile –– tap the “Edit profile” button then tap “Tips” to start.

    — Twitter Support (@TwitterSupport) November 18, 2021

    Twitter first introduced tip jars in May, then rolled it out widely to iOS users in September. A similar feature is available inside Twitter's Clubhouse-like "Spaces" feature, letting creators charge for "tickets" to its live access features. Twitter also recently opened "super follows" to select creators, allowing them to monetize tweets and provide exclusive content, along with a subscription service that could eliminate publications’ paywalls on the platform.

    On top of using regular money via payment services, Twitter may soon let you tip others using Bitcoin. According to a leak, Twitter is planning to use the Lightning Network to enable Bitcoin payments with high speed and relatively low fees.

    ", - "content": "

    After introducing its "tip jar" feature to all iOS users over 18, Twitter has brought the feature to Android as well. The idea is that if you see a particularly entertaining or informative tweet, you can send money to the creator's Cash App, Patreon, Paypal, Bandcamp and Venmo from directly within the app. 

    Tips is now on Android!

    You can get set up to receive tips from your profile –– tap the “Edit profile” button then tap “Tips” to start.

    — Twitter Support (@TwitterSupport) November 18, 2021

    Twitter first introduced tip jars in May, then rolled it out widely to iOS users in September. A similar feature is available inside Twitter's Clubhouse-like "Spaces" feature, letting creators charge for "tickets" to its live access features. Twitter also recently opened "super follows" to select creators, allowing them to monetize tweets and provide exclusive content, along with a subscription service that could eliminate publications’ paywalls on the platform.

    On top of using regular money via payment services, Twitter may soon let you tip others using Bitcoin. According to a leak, Twitter is planning to use the Lightning Network to enable Bitcoin payments with high speed and relatively low fees.

    ", - "category": "Media", - "link": "https://www.engadget.com/twitter-finally-brings-in-app-tipping-to-android-users-095508562.html?src=rss", - "creator": "Steve Dent", - "pubDate": "Fri, 19 Nov 2021 09:55:08 +0000", + "title": "Black Friday Deals on Sex Toys, Vibrators, and Harnesses", + "description": "The weather outside is frightful, so spend some time in bed this holiday season with some of our favorite sex tech.", + "content": "The weather outside is frightful, so spend some time in bed this holiday season with some of our favorite sex tech.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-sex-toy-deals-2021", + "creator": "Jess Grey", + "pubDate": "Wed, 24 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Amazon Fire tablets are down to record-low prices right now", - "description": "

    Amazon's Fire tablets make great portable, secondary devices, or primary devices for the kids in your life. They're already pretty affordable — that's one of the best things about them — but Black Friday has knocked their prices down even more. Most Fire tablets are on sale right now, including the primary three in the lineup: the Fire 7 is down to $35, while the Fire HD 8 and HD 10 are on sale for $45 and $75, respectively. These deals are all the same or better than those we saw during Prime Day back in June — but now you don't have to be a Prime subscriber to get the discounts.

    Buy Fire 7 at Amazon - $35Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Out of the three, the Fire HD 8 will suit most people well. We gave it a score of 81 due in part to its refined design, long battery life and new USB-C charging port. It runs on a quad-core 2.0GHz processor and has up to 64GB of onboard storage, but you can expand it to up to 1TB with a microSD card. It's a handy device to use on the couch or on the go when you want a larger screen to online shop, check email and even video chat with friends and family. It also may be a better option than a Kindle if you read a lot of graphic novels and manga since it has a full-color 1,280 x 800 display.

    If you're willing to spend a bit more, the Fire HD 10 gives you a number of extra perks. Key among them are a larger, 1,920 x 1,200 display, an octa-core 2.0GHz processor, an extra gigabyte of RAM and an improved rear camera. Those planning on primarily streaming TV shows and movies with the tablet should opt for the bigger HD 10, along with those who don't want to sacrifice speed and performance even when getting an affordable slab.

    Fire tablets make good kids devices since they have a bunch of parental controls and they cost significantly less than that expensive slab you may have just bought for yourself. You could opt to simply buy one of the above devices for your child, or you can get one of Amazon's Kids Edition bundles which pair the tablets with a kid-friendly case, a two-year warranty and a one-year subscription to Amazon Kids+. All of the Kids devices are on sale right now, too: the Fire 7 Kids Pro is down to $60 while the Fire HD 8 Kids Pro has been discounted to $70 and the Fire HD 10 Kids Pro is on sale for $120.

    Buy Fire 7 Kids Pro at Amazon - $60Buy Fire HD 8 Kids Pro at Amazon - $70Buy Fire HD 10 Kids Pro at Amazon - $120

    Amazon Kids+ is one of the key benefits to these bundles. The service gives your child access to over 20,000 apps, games, books, audiobooks and more that are age appropriate directly on the tablet. It's essentially a whole ton of content that parents don't have to screen beforehand to know if it's kid-friendly. Just make sure to keep an eye on your subscription because it will renew for the full $3-per-month price after one year. Also, the Kids Pro tablets come with a special digital store in which kids can request apps to download with parental approval. Overall, they're good, affordable options if your child has been bugging you for a tablet and you'd rather get one that you have a bit of extra control over.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    Amazon's Fire tablets make great portable, secondary devices, or primary devices for the kids in your life. They're already pretty affordable — that's one of the best things about them — but Black Friday has knocked their prices down even more. Most Fire tablets are on sale right now, including the primary three in the lineup: the Fire 7 is down to $35, while the Fire HD 8 and HD 10 are on sale for $45 and $75, respectively. These deals are all the same or better than those we saw during Prime Day back in June — but now you don't have to be a Prime subscriber to get the discounts.

    Buy Fire 7 at Amazon - $35Buy Fire HD 8 at Amazon - $45Buy Fire HD 10 at Amazon - $75

    Out of the three, the Fire HD 8 will suit most people well. We gave it a score of 81 due in part to its refined design, long battery life and new USB-C charging port. It runs on a quad-core 2.0GHz processor and has up to 64GB of onboard storage, but you can expand it to up to 1TB with a microSD card. It's a handy device to use on the couch or on the go when you want a larger screen to online shop, check email and even video chat with friends and family. It also may be a better option than a Kindle if you read a lot of graphic novels and manga since it has a full-color 1,280 x 800 display.

    If you're willing to spend a bit more, the Fire HD 10 gives you a number of extra perks. Key among them are a larger, 1,920 x 1,200 display, an octa-core 2.0GHz processor, an extra gigabyte of RAM and an improved rear camera. Those planning on primarily streaming TV shows and movies with the tablet should opt for the bigger HD 10, along with those who don't want to sacrifice speed and performance even when getting an affordable slab.

    Fire tablets make good kids devices since they have a bunch of parental controls and they cost significantly less than that expensive slab you may have just bought for yourself. You could opt to simply buy one of the above devices for your child, or you can get one of Amazon's Kids Edition bundles which pair the tablets with a kid-friendly case, a two-year warranty and a one-year subscription to Amazon Kids+. All of the Kids devices are on sale right now, too: the Fire 7 Kids Pro is down to $60 while the Fire HD 8 Kids Pro has been discounted to $70 and the Fire HD 10 Kids Pro is on sale for $120.

    Buy Fire 7 Kids Pro at Amazon - $60Buy Fire HD 8 Kids Pro at Amazon - $70Buy Fire HD 10 Kids Pro at Amazon - $120

    Amazon Kids+ is one of the key benefits to these bundles. The service gives your child access to over 20,000 apps, games, books, audiobooks and more that are age appropriate directly on the tablet. It's essentially a whole ton of content that parents don't have to screen beforehand to know if it's kid-friendly. Just make sure to keep an eye on your subscription because it will renew for the full $3-per-month price after one year. Also, the Kids Pro tablets come with a special digital store in which kids can request apps to download with parental approval. Overall, they're good, affordable options if your child has been bugging you for a tablet and you'd rather get one that you have a bit of extra control over.

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Personal Finance - Lifestyle", - "link": "https://www.engadget.com/most-amazon-fire-tablets-are-down-to-record-low-prices-right-now-093003172.html?src=rss", - "creator": "Valentina Palladino", - "pubDate": "Fri, 19 Nov 2021 09:30:03 +0000", + "title": "How to Deal With Difficult Family During the Holidays", + "description": "If you have strained relationships with your family, you're not alone. These resources can help.", + "content": "If you have strained relationships with your family, you're not alone. These resources can help.", + "category": "Gear", + "link": "https://www.wired.com/story/how-to-deal-with-difficult-family-holidays", + "creator": "Christina Wyman", + "pubDate": "Wed, 24 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Amazon's Kindle drops to an all-time low of $50 ahead of Black Friday", - "description": "

    As ever, Amazon is discounting many of its products for the Black Friday shopping period. Like many other companies, Amazon is getting out of the gate a little early with deals on Kindles. The standard Kindle is down from $90 to $50, which is the lowest price we've seen for the e-reader. Back in the summer, it dropped to $55 for Amazon Prime Day.

    Buy Kindle at Amazon - $50

    This is the ad-supported version of the tenth-generation Kindle, which has a 167 ppi glare-free display with a built-in front light. It comes with 8GB of storage, which is enough to store thousands of books. You can also pair it with Bluetooth headphones or speakers to listen to audiobooks.

    Elsewhere, two Kindles for kids are on sale. Kindle Kids is down to $60 (usually $110) and Kindle Paperwhite Kids, which usually costs $160, has dropped to $115, only a couple of months after Amazon announced it. Both come with a year of access to Amazon Kids+, a kid-friendly cover and a two-year worry-free guarantee — Amazon will replace the device if it breaks during that period.

    Buy Kindle Kids at Amazon - $60Buy Kindle Paperwhite Kids at Amazon - $115

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    As ever, Amazon is discounting many of its products for the Black Friday shopping period. Like many other companies, Amazon is getting out of the gate a little early with deals on Kindles. The standard Kindle is down from $90 to $50, which is the lowest price we've seen for the e-reader. Back in the summer, it dropped to $55 for Amazon Prime Day.

    Buy Kindle at Amazon - $50

    This is the ad-supported version of the tenth-generation Kindle, which has a 167 ppi glare-free display with a built-in front light. It comes with 8GB of storage, which is enough to store thousands of books. You can also pair it with Bluetooth headphones or speakers to listen to audiobooks.

    Elsewhere, two Kindles for kids are on sale. Kindle Kids is down to $60 (usually $110) and Kindle Paperwhite Kids, which usually costs $160, has dropped to $115, only a couple of months after Amazon announced it. Both come with a year of access to Amazon Kids+, a kid-friendly cover and a two-year worry-free guarantee — Amazon will replace the device if it breaks during that period.

    Buy Kindle Kids at Amazon - $60Buy Kindle Paperwhite Kids at Amazon - $115

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "Personal Finance - Lifestyle", - "link": "https://www.engadget.com/amazon-kindle-kids-paperwhite-black-friday-good-deal-090022162.html?src=rss", - "creator": "Kris Holt", - "pubDate": "Fri, 19 Nov 2021 09:00:22 +0000", + "title": "Austria’s Covid Surge Is a Warning to the World", + "description": "As the nation locks down and plans a vaccine mandate, a bleak second pandemic winter risks overwhelming Europe and beyond.", + "content": "As the nation locks down and plans a vaccine mandate, a bleak second pandemic winter risks overwhelming Europe and beyond.", + "category": "Science", + "link": "https://www.wired.com/story/lockdown-austria-covid-19", + "creator": "David Cox", + "pubDate": "Wed, 24 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "A bunch of Amazon Echo devices are already on sale for Black Friday", - "description": "

    Black Friday for Echo and Fire TV devices has already started — Amazon knocked down the prices of many of its Echo gadgets today. Most of the sale prices are the same as we saw during Amazon Prime Day in June, or even better. Discounts of note are the Echo for $60 and the second-generation Echo Show 5 for $45. While the latest Echo Show 8 isn't on sale yet, the first-gen device bundled with a Blink Mini security camera is $80 off as well, bringing it down to $65.

    Buy Echo at Amazon - $60Buy Echo Show 5 (2nd gen) at Amazon - $45Buy Echo Show 8 (1st gen) bundle at Amazon - $65

    You probably already know the deal with Echo devices, but we'll recap here. The Echo and the Echo Dot are the big and little versions of Amazon's smart speaker. The Echo is actually one of our favorites thanks to its solid sound quality, even better sound with in stereo mode and attractive design.

    Those who have less space to play with should consider the Echo Show 5, especially now that it's nearly half off. The latest version of the tiny smart display has a slightly better camera for video calls, but otherwise it's the same as last year's model. The five-inch screen is just the right size for a bedside smart alarm clock, and we liked its surprisingly good sound quality, physical camera shutter and sunrise alarm feature. The Echo Show 8 is a good alternative if you want a slightly larger display, which will make it better in a kitchen, living room or entryway setting. The bundle currently on sale that includes a Blink Mini camera is a solid deal, especially since you can ask Alexa to show you the camera's video feed directly on the Show 8's screen.

    \"Amazon’s
    Billy Steele/Engadget

    A couple of other Echo devices are on sale, including the Echo Buds and the Echo Frames. The former earned a score of 80 from us for their improved sound quality, good ANC and smaller size. Wireless charging is optional, but thankfully both models have been discounted and both come in at less than $100. The Echo Frames are Amazon's version of smart glasses, and we gave them a score of 76 for their lightweight design, hands-free Alexa access and compatibility with prescription lenses.

    Buy Echo Buds (2nd gen) at Amazon - $70Buy Echo Frames at Amazon - $155

    On top of all the Echo discounts, most Fire TV devices are cheaper than usual, too. Many of these went on sale starting last weekend, but they're worth another mention. The new Fire TV Stick 4K Max, which supports WiFi 6 and picture-in-picture live view, is down to $35, while the Fire TV Stick Lite and the Fire TV Stick are on sale for $18 and $20, respectively.

    Amazon's most powerful streaming device has also been discounted — the Fire TV Cube is down to a record low of $80, and it's the device to get if you want to stream 4K, Dolby Vision and HDR content, and want hands-free TV controls with Alexa. And if you're on the market for an over-the-air DVR, the Fire TV Recast is $100 off right now, bringing it down to $130.

    Buy Fire TV Stick 4K Max at Amazon - $35Buy Fire TV Stick Lite at Amazon - $18Buy Fire TV Stick at Amazon - $20Buy Fire TV Cube at Amazon - $80Buy Fire TV Recast at Amazon - $130

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "content": "

    Black Friday for Echo and Fire TV devices has already started — Amazon knocked down the prices of many of its Echo gadgets today. Most of the sale prices are the same as we saw during Amazon Prime Day in June, or even better. Discounts of note are the Echo for $60 and the second-generation Echo Show 5 for $45. While the latest Echo Show 8 isn't on sale yet, the first-gen device bundled with a Blink Mini security camera is $80 off as well, bringing it down to $65.

    Buy Echo at Amazon - $60Buy Echo Show 5 (2nd gen) at Amazon - $45Buy Echo Show 8 (1st gen) bundle at Amazon - $65

    You probably already know the deal with Echo devices, but we'll recap here. The Echo and the Echo Dot are the big and little versions of Amazon's smart speaker. The Echo is actually one of our favorites thanks to its solid sound quality, even better sound with in stereo mode and attractive design.

    Those who have less space to play with should consider the Echo Show 5, especially now that it's nearly half off. The latest version of the tiny smart display has a slightly better camera for video calls, but otherwise it's the same as last year's model. The five-inch screen is just the right size for a bedside smart alarm clock, and we liked its surprisingly good sound quality, physical camera shutter and sunrise alarm feature. The Echo Show 8 is a good alternative if you want a slightly larger display, which will make it better in a kitchen, living room or entryway setting. The bundle currently on sale that includes a Blink Mini camera is a solid deal, especially since you can ask Alexa to show you the camera's video feed directly on the Show 8's screen.

    \"Amazon’s
    Billy Steele/Engadget

    A couple of other Echo devices are on sale, including the Echo Buds and the Echo Frames. The former earned a score of 80 from us for their improved sound quality, good ANC and smaller size. Wireless charging is optional, but thankfully both models have been discounted and both come in at less than $100. The Echo Frames are Amazon's version of smart glasses, and we gave them a score of 76 for their lightweight design, hands-free Alexa access and compatibility with prescription lenses.

    Buy Echo Buds (2nd gen) at Amazon - $70Buy Echo Frames at Amazon - $155

    On top of all the Echo discounts, most Fire TV devices are cheaper than usual, too. Many of these went on sale starting last weekend, but they're worth another mention. The new Fire TV Stick 4K Max, which supports WiFi 6 and picture-in-picture live view, is down to $35, while the Fire TV Stick Lite and the Fire TV Stick are on sale for $18 and $20, respectively.

    Amazon's most powerful streaming device has also been discounted — the Fire TV Cube is down to a record low of $80, and it's the device to get if you want to stream 4K, Dolby Vision and HDR content, and want hands-free TV controls with Alexa. And if you're on the market for an over-the-air DVR, the Fire TV Recast is $100 off right now, bringing it down to $130.

    Buy Fire TV Stick 4K Max at Amazon - $35Buy Fire TV Stick Lite at Amazon - $18Buy Fire TV Stick at Amazon - $20Buy Fire TV Cube at Amazon - $80Buy Fire TV Recast at Amazon - $130

    Get the latest Black Friday and Cyber Monday offers by visiting our deals homepage and following @EngadgetDeals on Twitter.

    All products recommended by Engadget are selected by our editorial team, independent of our parent company. Some of our stories include affiliate links. If you buy something through one of these links, we may earn an affiliate commission.

    ", - "category": "site|engadget", - "link": "https://www.engadget.com/a-bunch-of-amazon-echo-devices-are-already-on-sale-for-black-friday-083029077.html?src=rss", - "creator": "Valentina Palladino", - "pubDate": "Fri, 19 Nov 2021 08:30:29 +0000", + "title": "Can a Digital Reality Be Jacked Directly Into Your Brain?", + "description": "The idea of a synthetic experience uploaded to the mind has been a sci-fi fantasy forever. New brain-computer interfaces are making it nonfiction—very slowly.", + "content": "The idea of a synthetic experience uploaded to the mind has been a sci-fi fantasy forever. New brain-computer interfaces are making it nonfiction—very slowly.", + "category": "Backchannel", + "link": "https://www.wired.com/story/brain-computer-interfaces-digital-reality", + "creator": "Adam Rogers", + "pubDate": "Wed, 24 Nov 2021 11:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "EndGadget", - "read": true, + "feed": "Wired", + "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Tech", - "name": "EndGadget" - }, - "19": { - "title": "Naked Security", - "subtitle": "", - "link": "https://nakedsecurity.sophos.com", - "image": "https://nakedsecurity.sophos.com/wp-content/uploads/sites/2/2020/03/cropped-sophos.png?w=32", - "description": "Computer Security News, Advice and Research", - "items": [ + }, { - "title": "Github cookie leakage – thousands of Firefox cookie files uploaded by mistake", - "description": "Be aware before you share! That's a good rule for developers and techies, just as much as it is for social media addicts.", - "content": "Be aware before you share! That's a good rule for developers and techies, just as much as it is for social media addicts.", - "category": "Data loss", - "link": "https://nakedsecurity.sophos.com/2021/11/18/github-cookie-leakage-thousands-of-firefox-cookie-files-uploaded-by-mistake/", - "creator": "Paul Ducklin", - "pubDate": "Thu, 18 Nov 2021 22:20:26 +0000", + "title": "The 34 Best Black Friday Deals at Best Buy", + "description": "The retailer's holiday sale event is in full swing, with discounts on smart speakers, watches, headphones, Chromebooks, and more.", + "content": "The retailer's holiday sale event is in full swing, with discounts on smart speakers, watches, headphones, Chromebooks, and more.", + "category": "Gear", + "link": "https://www.wired.com/story/best-best-buy-black-friday-deals-2021", + "creator": "Medea Giordano, Gear Team", + "pubDate": "Wed, 24 Nov 2021 00:57:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", - "read": true, + "feed": "Wired", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "S3 Ep59: Emotet, an FBI hoax, Samba bugs, and a hijackable suitcase [Podcast]", - "description": "Latest episode - listen now!", - "content": "Latest episode - listen now!", - "category": "Apple", - "link": "https://nakedsecurity.sophos.com/2021/11/18/s3-ep59-emotet-an-fbi-hoax-samba-bugs-and-a-hijackable-suitcase-podcast/", - "creator": "Paul Ducklin", - "pubDate": "Thu, 18 Nov 2021 19:00:14 +0000", + "title": "Elizabeth Holmes Speaks for Herself", + "description": "The infamous entrepreneur at the center of the Theranos case took the stand this week.", + "content": "The infamous entrepreneur at the center of the Theranos case took the stand this week.", + "category": "Business", + "link": "https://www.wired.com/story/theranos-trial-elizabeth-holmes-speaks", + "creator": "Arielle Pardes", + "pubDate": "Wed, 24 Nov 2021 00:24:08 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Apple’s Mail Privacy Protection feature – watch out if you have a Watch!", - "description": "Apple's \"Protect Mail Activity\" is a handy privacy enhancement for your messaging habits. As long as you know its limitations...", - "content": "Apple's \"Protect Mail Activity\" is a handy privacy enhancement for your messaging habits. As long as you know its limitations...", - "category": "Apple", - "link": "https://nakedsecurity.sophos.com/2021/11/17/apples-privacy-protection-feature-watch-out-if-you-have-a-watch/", - "creator": "Paul Ducklin", - "pubDate": "Wed, 17 Nov 2021 19:55:38 +0000", + "title": "The 43 Best Early Black Friday Deals You Can Snag Now", + "description": "Beat the holiday rush with truly good discounts on our favorite WIRED-Recommended gear.", + "content": "Beat the holiday rush with truly good discounts on our favorite WIRED-Recommended gear.", + "category": "Gear", + "link": "https://www.wired.com/story/early-black-friday-deals-2021-3", + "creator": "Louryn Strampe", + "pubDate": "Tue, 23 Nov 2021 22:12:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", - "read": true, + "feed": "Wired", + "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The self-driving smart suitcase… that the person behind you can hijack!", - "description": "Apparently, we need a self-driving IoT Bluetooth robot suitcase. Who knew?", - "content": "Apparently, we need a self-driving IoT Bluetooth robot suitcase. Who knew?", - "category": "IoT", - "link": "https://nakedsecurity.sophos.com/2021/11/16/the-self-driving-smart-suitcase-that-the-person-behind-you-can-hijack/", - "creator": "Paul Ducklin", - "pubDate": "Tue, 16 Nov 2021 21:09:17 +0000", + "title": "The McDonald’s Ice Cream Machine Hacking Saga Has a New Twist", + "description": "The cold war between a startup and a soft-serve machine manufacturer is heating up, thanks to a newly released trove of internal emails.", + "content": "The cold war between a startup and a soft-serve machine manufacturer is heating up, thanks to a newly released trove of internal emails.", + "category": "Security", + "link": "https://www.wired.com/story/mcdonalds-ice-cream-machine-hacking-kytch-taylor-internal-emails", + "creator": "Andy Greenberg", + "pubDate": "Tue, 23 Nov 2021 20:13:23 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Emotet malware: “The report of my death was an exaggeration”", - "description": "\"Old malware rarely dies.\" The best way to predict the future is to look at the past... if it worked before, it will probably work again.", - "content": "\"Old malware rarely dies.\" The best way to predict the future is to look at the past... if it worked before, it will probably work again.", - "category": "Botnet", - "link": "https://nakedsecurity.sophos.com/2021/11/16/emotet-malware-the-report-of-my-death-was-an-exaggeration/", - "creator": "Paul Ducklin", - "pubDate": "Tue, 16 Nov 2021 19:13:19 +0000", + "title": "SPOILER ALERT: Spoiler Alerts Are Making Us All Stupid", + "description": "If you think they’re protecting the experience of experiencing art, you’re more deluded than you know.", + "content": "If you think they’re protecting the experience of experiencing art, you’re more deluded than you know.", + "category": "Culture", + "link": "https://www.wired.com/story/spoiler-alerts-are-making-us-all-stupid", + "creator": "Jason Kehe", + "pubDate": "Tue, 23 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "FBI email hack spreads fake security alerts. Here’s what to do…", - "description": "Fake warnings and false accusations - it's a \"call to distraction\"", - "content": "Fake warnings and false accusations - it's a \"call to distraction\"", - "category": "Law & order", - "link": "https://nakedsecurity.sophos.com/2021/11/13/dhs-warning-about-hackers-in-your-network-dont-panic/", - "creator": "Naked Security writer", - "pubDate": "Sat, 13 Nov 2021 20:50:13 +0000", + "title": "Fungi Could Be the Downfall of Humanity", + "description": "Climate change could threaten humans' protection from fungal infections. It's time to fear the fungi.", + "content": "Climate change could threaten humans' protection from fungal infections. It's time to fear the fungi.", + "category": "Ideas", + "link": "https://www.wired.com/story/fungi-climate-change-medicine-health", + "creator": "Rose Eveleth", + "pubDate": "Tue, 23 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Samba update patches plaintext password plundering problem", - "description": "When Microsoft itself says STOP USING X, where X is one of its own protocols... we think you should listen.", - "content": "When Microsoft itself says STOP USING X, where X is one of its own protocols... we think you should listen.", - "category": "Cryptography", - "link": "https://nakedsecurity.sophos.com/2021/11/12/samba-update-patches-plaintext-passwork-plundering-problem/", - "creator": "Paul Ducklin", - "pubDate": "Fri, 12 Nov 2021 19:59:11 +0000", + "title": "17 Bags, Backpacks, Cubes, and Straps to Protect Your Camera", + "description": "There are dozens of ways to tote around your photo and video gear. We’ve tested a bunch of solutions and rounded up our favorites.", + "content": "There are dozens of ways to tote around your photo and video gear. We’ve tested a bunch of solutions and rounded up our favorites.", + "category": "Gear", + "link": "https://www.wired.com/gallery/best-camera-bags-backpacks-straps-inserts", + "creator": "Julian Chokkattu, Gear Team", + "pubDate": "Tue, 23 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "S3 Ep58: Faces on Facebook, scams that pose as complaints, and a Kaseya bust [Podcast]", - "description": "Latest epsiode - listen now!", - "content": "Latest epsiode - listen now!", - "category": "Facebook", - "link": "https://nakedsecurity.sophos.com/2021/11/11/s3-ep58-faces-on-facebook-scams-that-pose-as-complaints-and-a-kaseya-bust-podcast/", - "creator": "Paul Ducklin", - "pubDate": "Thu, 11 Nov 2021 19:41:49 +0000", + "title": "The Tamagotchi Was Tiny, but Its Impact Was Huge", + "description": "It’s been 25 years since the little device first hit store shelves, but its simple brilliance lives on in today’s most popular games.", + "content": "It’s been 25 years since the little device first hit store shelves, but its simple brilliance lives on in today’s most popular games.", + "category": "Culture", + "link": "https://www.wired.com/story/tamagotchi-25-year-anniversary-impact", + "creator": "Sebastian Skov Andersen", + "pubDate": "Tue, 23 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Patch Tuesday updates the Win 7 updater… for at most 1 more year of updates", - "description": "The clock stopped long ago on Windows 7, except for those who paid for overtime. But there won't be any double overtime!", - "content": "The clock stopped long ago on Windows 7, except for those who paid for overtime. But there won't be any double overtime!", - "category": "Microsoft", - "link": "https://nakedsecurity.sophos.com/2021/11/10/patch-tuesday-updates-the-win-7-updater-for-at-most-1-more-year-of-updates/", - "creator": "Paul Ducklin", - "pubDate": "Wed, 10 Nov 2021 19:45:09 +0000", + "title": "What Are You Going to Tweet After You Die?", + "description": "The artful death announcements of Chadwick Boseman and MF DOOM show us how the way we die online can help the living grieve.", + "content": "The artful death announcements of Chadwick Boseman and MF DOOM show us how the way we die online can help the living grieve.", + "category": "Ideas", + "link": "https://www.wired.com/story/what-are-you-going-to-tweet-after-you-die", + "creator": "C. Brandon Ogbunu", + "pubDate": "Tue, 23 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Sophos 2022 Threat Report: Malware, Mobile, Machine learning and more!", - "description": "The crooks have shown that they're willing to learn and adapt their attacks, so we need to make sure we learn and adapt, too.", - "content": "The crooks have shown that they're willing to learn and adapt their attacks, so we need to make sure we learn and adapt, too.", - "category": "Machine Learning", - "link": "https://nakedsecurity.sophos.com/2021/11/09/2022-threat-report/", - "creator": "Paul Ducklin", - "pubDate": "Tue, 09 Nov 2021 19:31:14 +0000", + "title": "Grand Theft Auto: The Trilogy Is a Wasted Opportunity", + "description": "This “definitive edition” is a buggy and broken trip down memory lane. You might want to stay at home.", + "content": "This “definitive edition” is a buggy and broken trip down memory lane. You might want to stay at home.", + "category": "Gear", + "link": "https://www.wired.com/review/grand-theft-auto-the-trilogy-the-definitive-edition", + "creator": "Simon Hill", + "pubDate": "Tue, 23 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Naked Security", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Tech", - "name": "Naked Security" - }, - "20": { - "title": "Slashdot", - "subtitle": "", - "link": "https://slashdot.org/", - "image": null, - "description": "News for nerds, stuff that matters", - "items": [ + }, { - "title": "Sci-Hub: Researchers File Intervention Application To Fight ISP Blocking", - "description": "Last December, academic publishers Elsevier, Wiley, and American Chemical Society filed a lawsuit demanding that Indian ISPs block access to Sci-Hub and Libgen for copyright infringement. The ongoing case now includes an intervention application from a group of social science researchers who say that blocking the platforms would result in a great societal loss to the country. TorrentFreak reports: Assisted and represented by the Delhi-based Internet Freedom Foundation (IFF), a group of social science researchers affiliated with universities across Delhi has now filed an intervention application that aims to educate the High Court on the negative implications of ordering local ISPs to block the platforms. \"In the application, they have demonstrated the importance of the LibGen and Sci-Hub in enabling them to continue with research and discharge professional obligations,\" IFF explains. \"They have submitted that they cannot access countless essays/books/articles because of the exorbitant rates the publishers charge for them and that these publishers own more than 50% of the total output in social science research. The only way in which they can access these resources is by relying upon LibGen and Sci-Hub. Moreover, LibGen and Sci-Hub offer access to up-to-date research which is unavailable elsewhere.\"\n \nThe social science researchers also draw attention to the publishers' \"prohibitive pricing\" models that place a serious burden on the publicly-funded academic institutions where they conduct their research. They further note that, to the best of their knowledge, individual users who rely on Sci-Hub and Libgen have not dented the profits of the publishers. \"The profit margins of the [publishers] are much higher than those of enterprises in other industries such as oil, medicines and technology. Thus, the Plaintiffs' plea of blocking [Sci-Hub and Libgen] only serves their self-interest of increasing their coffers without benefitting society,\" their application reads. \"In fact, granting the Plaintiffs' reliefs will have a detrimental impact on the social science research undertaken in India and the careers of the Applicants and those they represent before this Hon'ble Court. The unavailability of the Defendant Websites will also stunt the academic growth of the nation.\"\n \nAfter highlighting the risks to society should the Court authorize blocking, the researchers turn to the legality of doing so. They believe that while the publishers own the copyrights to the articles, the use of those articles is allowed under India's Copyright Act, at least under certain conditions. [...] Finally, the researchers say they are contesting any blocking injunction on the basis that it would be overbroad. They note that the publishers are not seeking the removal of specific infringing content but the blocking of entire websites in perpetuity. They argue that there are less restrictive measures available and these should have been sought first, rather than going directly for complete blocking of Sci-Hub and Libgen. Before issuing any blocking order, they also ask the court to consider Article 19(1) that recognizes the fundamental right to access information.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "Last December, academic publishers Elsevier, Wiley, and American Chemical Society filed a lawsuit demanding that Indian ISPs block access to Sci-Hub and Libgen for copyright infringement. The ongoing case now includes an intervention application from a group of social science researchers who say that blocking the platforms would result in a great societal loss to the country. TorrentFreak reports: Assisted and represented by the Delhi-based Internet Freedom Foundation (IFF), a group of social science researchers affiliated with universities across Delhi has now filed an intervention application that aims to educate the High Court on the negative implications of ordering local ISPs to block the platforms. \"In the application, they have demonstrated the importance of the LibGen and Sci-Hub in enabling them to continue with research and discharge professional obligations,\" IFF explains. \"They have submitted that they cannot access countless essays/books/articles because of the exorbitant rates the publishers charge for them and that these publishers own more than 50% of the total output in social science research. The only way in which they can access these resources is by relying upon LibGen and Sci-Hub. Moreover, LibGen and Sci-Hub offer access to up-to-date research which is unavailable elsewhere.\"\n \nThe social science researchers also draw attention to the publishers' \"prohibitive pricing\" models that place a serious burden on the publicly-funded academic institutions where they conduct their research. They further note that, to the best of their knowledge, individual users who rely on Sci-Hub and Libgen have not dented the profits of the publishers. \"The profit margins of the [publishers] are much higher than those of enterprises in other industries such as oil, medicines and technology. Thus, the Plaintiffs' plea of blocking [Sci-Hub and Libgen] only serves their self-interest of increasing their coffers without benefitting society,\" their application reads. \"In fact, granting the Plaintiffs' reliefs will have a detrimental impact on the social science research undertaken in India and the careers of the Applicants and those they represent before this Hon'ble Court. The unavailability of the Defendant Websites will also stunt the academic growth of the nation.\"\n \nAfter highlighting the risks to society should the Court authorize blocking, the researchers turn to the legality of doing so. They believe that while the publishers own the copyrights to the articles, the use of those articles is allowed under India's Copyright Act, at least under certain conditions. [...] Finally, the researchers say they are contesting any blocking injunction on the basis that it would be overbroad. They note that the publishers are not seeking the removal of specific infringing content but the blocking of entire websites in perpetuity. They argue that there are less restrictive measures available and these should have been sought first, rather than going directly for complete blocking of Sci-Hub and Libgen. Before issuing any blocking order, they also ask the court to consider Article 19(1) that recognizes the fundamental right to access information.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://yro.slashdot.org/story/21/11/19/217244/sci-hub-researchers-file-intervention-application-to-fight-isp-blocking?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "BeauHD", - "pubDate": "2021-11-19T22:02:00+00:00", + "title": "NASA Really Wants Its Spacecraft to Slam Into an Asteroid", + "description": "The DART mission is scheduled to launch early Wednesday. It will crash into an asteroid to see if it's possible to deflect one.", + "content": "The DART mission is scheduled to launch early Wednesday. It will crash into an asteroid to see if it's possible to deflect one.", + "category": "Science", + "link": "https://www.wired.com/story/nasa-really-really-wants-its-spacecraft-to-slam-into-an-asteroid", + "creator": "Ramin Skibba", + "pubDate": "Tue, 23 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Rockstar Admits GTA Remasters 'Did Not Meet Our Own Standards of Quality'", - "description": "Rockstar has issued an apology for the \"unexpected technical issues\" that marred the release of Grand Theft Auto: The Trilogy - The Definitive Edition last week and led to the quick removal of the PC version from Rockstar's online store. From a report: Last week, Rockstar said that the PC version of the game was being taken down \"as we remove files unintentionally included in these versions.\" That led to reports that the package included copies of original soundtrack songs that had not been re-licensed for the new release. Other reports suggested that the original package accidentally included uncompiled source code and revealed some interesting programmer comments, including references to the infamous \"hot coffee\" scene that caused the game so much controversy back in 2005. Today, though, the developer admitted in a blog post that \"the updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect.\" \n\nWe noted some of the remaster's many issues in our initial impressions, which recommended that you skip the bundle for now. Since then, players have chronicled countless bugs and questionable \"remastering\" decisions. Those range from disturbing textures to eye-searing rainfall to hilariously broken cutscenes to car-inflating wiggles to odd-looking character models and plain old typos that weren't in the original game.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "Rockstar has issued an apology for the \"unexpected technical issues\" that marred the release of Grand Theft Auto: The Trilogy - The Definitive Edition last week and led to the quick removal of the PC version from Rockstar's online store. From a report: Last week, Rockstar said that the PC version of the game was being taken down \"as we remove files unintentionally included in these versions.\" That led to reports that the package included copies of original soundtrack songs that had not been re-licensed for the new release. Other reports suggested that the original package accidentally included uncompiled source code and revealed some interesting programmer comments, including references to the infamous \"hot coffee\" scene that caused the game so much controversy back in 2005. Today, though, the developer admitted in a blog post that \"the updated versions of these classic games did not launch in a state that meets our own standards of quality, or the standards our fans have come to expect.\" \n\nWe noted some of the remaster's many issues in our initial impressions, which recommended that you skip the bundle for now. Since then, players have chronicled countless bugs and questionable \"remastering\" decisions. Those range from disturbing textures to eye-searing rainfall to hilariously broken cutscenes to car-inflating wiggles to odd-looking character models and plain old typos that weren't in the original game.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://it.slashdot.org/story/21/11/19/2117227/rockstar-admits-gta-remasters-did-not-meet-our-own-standards-of-quality?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T21:40:00+00:00", + "title": "Humans Have Broken a Fundamental Law of the Ocean", + "description": "The size of undersea creatures seemed to follow a strange but stable pattern—until industrial fishing came along.", + "content": "The size of undersea creatures seemed to follow a strange but stable pattern—until industrial fishing came along.", + "category": "Science", + "link": "https://www.wired.com/story/humans-broken-fundamental-law-ocean", + "creator": "Matt Reynolds", + "pubDate": "Tue, 23 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "CDC Panel Unanimously Endorses Pfizer and Moderna Covid Boosters For All US Adults", - "description": "An anonymous reader quotes a report from CNBC: The CDC's independent panel of vaccine scientists unanimously endorsed Pfizer and Moderna's boosters for all adults, one of the final regulatory steps before the U.S. can officially start distributing the doses. The Advisory Committee on Immunization Practices voted to recommend the shots. The Food and Drug Administration authorized both company's vaccine boosters for everyone 18 and over earlier on Friday, and CDC Director Rochelle Walensky is expected to clear the doses soon after. The panel's recommendation would open up eligibility to everyone 18 and over in the U.S., but the group more strongly endorsed shots for older Americans by saying everyone 50 and over should get a booster. It previously said people over 65 and some other high-risk people should get a third shot. Once Walensky signs off, tens of millions of Americans who've received their two initial shots at least six months ago will be eligible to get a third shot as soon as early as this weekend. \"Pfizer said its booster dose was 95% effective at preventing symptomatic infection in people who had no evidence of prior infection in a clinical trial of 10,000 participants 16 years and older,\" notes CNBC. \"Moderna didn't submit its efficacy data for its booster, telling the panel it was still gathering the data.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "An anonymous reader quotes a report from CNBC: The CDC's independent panel of vaccine scientists unanimously endorsed Pfizer and Moderna's boosters for all adults, one of the final regulatory steps before the U.S. can officially start distributing the doses. The Advisory Committee on Immunization Practices voted to recommend the shots. The Food and Drug Administration authorized both company's vaccine boosters for everyone 18 and over earlier on Friday, and CDC Director Rochelle Walensky is expected to clear the doses soon after. The panel's recommendation would open up eligibility to everyone 18 and over in the U.S., but the group more strongly endorsed shots for older Americans by saying everyone 50 and over should get a booster. It previously said people over 65 and some other high-risk people should get a third shot. Once Walensky signs off, tens of millions of Americans who've received their two initial shots at least six months ago will be eligible to get a third shot as soon as early as this weekend. \"Pfizer said its booster dose was 95% effective at preventing symptomatic infection in people who had no evidence of prior infection in a clinical trial of 10,000 participants 16 years and older,\" notes CNBC. \"Moderna didn't submit its efficacy data for its booster, telling the panel it was still gathering the data.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://science.slashdot.org/story/21/11/19/2120205/cdc-panel-unanimously-endorses-pfizer-and-moderna-covid-boosters-for-all-us-adults?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "BeauHD", - "pubDate": "2021-11-19T21:21:00+00:00", + "title": "How to Preserve and Share Grandma's Recipes", + "description": "Going digital can save time and money and keep family traditions alive.", + "content": "Going digital can save time and money and keep family traditions alive.", + "category": "Gear", + "link": "https://www.wired.com/story/how-to-preserve-share-old-recipes", + "creator": "Ashley Memory", + "pubDate": "Tue, 23 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Citadel CEO Ken Griffin Outbid a Group of Crypto Investors for Copy of US Constitution", - "description": "Chicago hedge-fund billionaire Kenneth Griffin said he won a $43.2 million first-edition copy of the U.S. Constitution at a Sotheby' s auction on Thursday -- and now he intends to lend it to a free Arkansas art museum. From a report: The 53-year old founder and chief executive of Citadel caused a stir Thursday when he outbid a large group of cryptocurrency investors who had crowdfunded more than $40 million earlier in the week in a frenzied attempt to win the document, the last surviving first edition in private hands. \n\nThe group, organized as ConstitutionDAO, pooled funds from more than 17,000 people over a 72-hour period, with the median donation hovering around $206. ConstitutionDAO said it sought to take the Constitution copy and make it accessible to the public. \"The U.S. Constitution is a sacred document that enshrines the rights of every American and all those who aspire to be,\" Mr. Griffin said in a statement issued by Sotheby's. \"That is why I intend to ensure that this copy of our Constitution will be available for all Americans and visitors to view and appreciate.\" \n\nMr. Griffin said he intends to lend the 1787 folio to Crystal Bridges Museum of American Art in Bentonville, Ark., a museum with free admission founded a decade ago by Walmart heiress Alice Walton. The museum is known for owning Charles Willson Peale's portrait of George Washington and other examples by Thomas Eakins and Marsden Hartley. [...] The hedge-fund manager is known for looking askance at cryptocurrency. Last month in a recorded talk at the Economic Club of Chicago, he told the audience that he doesn't trade in cryptocurrency because of its \"regulatory uncertainty,\" adding that he \"wished all this passion and energy that went into crypto was directed toward making the United States stronger.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "Chicago hedge-fund billionaire Kenneth Griffin said he won a $43.2 million first-edition copy of the U.S. Constitution at a Sotheby' s auction on Thursday -- and now he intends to lend it to a free Arkansas art museum. From a report: The 53-year old founder and chief executive of Citadel caused a stir Thursday when he outbid a large group of cryptocurrency investors who had crowdfunded more than $40 million earlier in the week in a frenzied attempt to win the document, the last surviving first edition in private hands. \n\nThe group, organized as ConstitutionDAO, pooled funds from more than 17,000 people over a 72-hour period, with the median donation hovering around $206. ConstitutionDAO said it sought to take the Constitution copy and make it accessible to the public. \"The U.S. Constitution is a sacred document that enshrines the rights of every American and all those who aspire to be,\" Mr. Griffin said in a statement issued by Sotheby's. \"That is why I intend to ensure that this copy of our Constitution will be available for all Americans and visitors to view and appreciate.\" \n\nMr. Griffin said he intends to lend the 1787 folio to Crystal Bridges Museum of American Art in Bentonville, Ark., a museum with free admission founded a decade ago by Walmart heiress Alice Walton. The museum is known for owning Charles Willson Peale's portrait of George Washington and other examples by Thomas Eakins and Marsden Hartley. [...] The hedge-fund manager is known for looking askance at cryptocurrency. Last month in a recorded talk at the Economic Club of Chicago, he told the audience that he doesn't trade in cryptocurrency because of its \"regulatory uncertainty,\" adding that he \"wished all this passion and energy that went into crypto was directed toward making the United States stronger.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://slashdot.org/story/21/11/19/211232/citadel-ceo-ken-griffin-outbid-a-group-of-crypto-investors-for-copy-of-us-constitution?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T21:01:00+00:00", + "title": "Our Favorite Mattress Deals for Black Friday (So Far)", + "description": "Trouble sleeping? A bunch of our favorite WIRED-Reviewed hybrid, organic, and foam mattresses are on sale right now.", + "content": "Trouble sleeping? A bunch of our favorite WIRED-Reviewed hybrid, organic, and foam mattresses are on sale right now.", + "category": "Gear", + "link": "https://www.wired.com/story/best-black-friday-mattress-deals-2021", + "creator": "Medea Giordano, Gear Team", + "pubDate": "Tue, 23 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Ask Slashdot: What's a 2021 Movie or TV Show That You Enjoyed Watching?", - "description": "An anonymous reader writes: Haven't seen discussion on movie and TV shows recommendations on Slashdot of late. Could the fellow readers share some movies and TV shows and documentaries from this year that they really liked watching?

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "An anonymous reader writes: Haven't seen discussion on movie and TV shows recommendations on Slashdot of late. Could the fellow readers share some movies and TV shows and documentaries from this year that they really liked watching?

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://ask.slashdot.org/story/21/11/19/2012259/ask-slashdot-whats-a-2021-movie-or-tv-show-that-you-enjoyed-watching?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T20:40:00+00:00", + "title": "Devious ‘Tardigrade’ Malware Hits Biomanufacturing Facilities", + "description": "The surprisingly sophisticated attack is “actively spreading” throughout the industry.", + "content": "The surprisingly sophisticated attack is “actively spreading” throughout the industry.", + "category": "Security", + "link": "https://www.wired.com/story/tardigrade-malware-biomanufacturing", + "creator": "Lily Hay Newman", + "pubDate": "Mon, 22 Nov 2021 16:59:22 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", - "read": false, + "feed": "Wired", + "read": true, "favorite": false, "created": false, "tags": [] }, { - "title": "Disney Adds Disney+ And ESPN+ To Hulu + Live TV, Raises Bundle Monthly Price By $5", - "description": "Softening the blow of a monthly price hike, Disney is offering subscribers to Hulu's live TV service access to Disney+ and ESPN+ at no extra charge. From a report: Beginning on December 21, the Hulu + Live TV package will cost $5 more each month. It will go up to $70 with the ad-supported tier of Hulu's on-demand service and $76 with the ad-free Hulu. Notifications to subscribers have just gone out this morning. The new bundle builds on success the company has had with its combined offering of Disney+, ESPN+ and on-demand Hulu. That trio was announced in mid-2019, just before the record-setting launch of Disney+ and has helped ESPN+ and Hulu to continue consistent growth.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "Softening the blow of a monthly price hike, Disney is offering subscribers to Hulu's live TV service access to Disney+ and ESPN+ at no extra charge. From a report: Beginning on December 21, the Hulu + Live TV package will cost $5 more each month. It will go up to $70 with the ad-supported tier of Hulu's on-demand service and $76 with the ad-free Hulu. Notifications to subscribers have just gone out this morning. The new bundle builds on success the company has had with its combined offering of Disney+, ESPN+ and on-demand Hulu. That trio was announced in mid-2019, just before the record-setting launch of Disney+ and has helped ESPN+ and Hulu to continue consistent growth.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://entertainment.slashdot.org/story/21/11/19/206257/disney-adds-disney-and-espn-to-hulu--live-tv-raises-bundle-monthly-price-by-5?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T20:07:00+00:00", + "title": "Too Many Game Subscription Services? Here’s How to Choose", + "description": "PlayStation Plus or PlayStation Now? Xbox Live Gold or Game Pass Ultimate? It’s confusing, so we break them all down.", + "content": "PlayStation Plus or PlayStation Now? Xbox Live Gold or Game Pass Ultimate? It’s confusing, so we break them all down.", + "category": "Gear", + "link": "https://www.wired.com/story/best-game-subscriptions", + "creator": "Whitson Gordon, Simon Hill", + "pubDate": "Mon, 22 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Facebook Tells LA Police To Stop Spying on Users With Fake Accounts", - "description": "Facebook has written to the Los Angeles Police Department (LAPD), demanding that it stop setting up fake profiles to conduct surveillance on users. From a report: This comes after the Guardian revealed that the US police department had been working with a tech firm, analysing user data to help solve crimes. Facebook expressly prohibits the creation and use of fake accounts. The intent, it said, was to \"create a safe environment where people can trust and hold one another accountable\". \"Not only do LAPD instructional documents use Facebook as an explicit example in advising officers to set up fake social media accounts, but documents also indicate that LAPD policies simply allow officers to create fake accounts for 'online investigative activity',\" wrote Facebook's vice president and deputy general counsel for civil rights Roy Austin in a letter outlining Facebook's policies. \"While the legitimacy of such policies may be up to the LAPD, officers must abide by Facebook's policies when creating accounts on our services. The Police Department should cease all activities on Facebook that involve the use of fake accounts, impersonation of others, and collection of data for surveillance purposes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "Facebook has written to the Los Angeles Police Department (LAPD), demanding that it stop setting up fake profiles to conduct surveillance on users. From a report: This comes after the Guardian revealed that the US police department had been working with a tech firm, analysing user data to help solve crimes. Facebook expressly prohibits the creation and use of fake accounts. The intent, it said, was to \"create a safe environment where people can trust and hold one another accountable\". \"Not only do LAPD instructional documents use Facebook as an explicit example in advising officers to set up fake social media accounts, but documents also indicate that LAPD policies simply allow officers to create fake accounts for 'online investigative activity',\" wrote Facebook's vice president and deputy general counsel for civil rights Roy Austin in a letter outlining Facebook's policies. \"While the legitimacy of such policies may be up to the LAPD, officers must abide by Facebook's policies when creating accounts on our services. The Police Department should cease all activities on Facebook that involve the use of fake accounts, impersonation of others, and collection of data for surveillance purposes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://tech.slashdot.org/story/21/11/19/1930212/facebook-tells-la-police-to-stop-spying-on-users-with-fake-accounts?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T19:30:00+00:00", + "title": "Which Streaming Services Are Best For You?", + "description": "Whether you're a hardcore cord-cutter or an animation fan, there's a platform for you. Here are the best we've tried.", + "content": "Whether you're a hardcore cord-cutter or an animation fan, there's a platform for you. Here are the best we've tried.", + "category": "Gear", + "link": "https://www.wired.com/gallery/best-streaming-services", + "creator": "Simon Hill", + "pubDate": "Mon, 22 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Pentagon Asks Amazon, Google, Microsoft and Oracle for Bids on New Cloud Contracts", - "description": "The U.S. General Services Administration said Friday that the Defense Department has solicited bids from Amazon, Google, Microsoft and Oracle for cloud contracts. From a report: The outreach comes after the Pentagon set aside a highly contested $10 billion contract that Microsoft had won and Amazon had challenged. The value of the new contracts is not known, but the Defense Department estimates it could run into the multiple billions of dollars. The new effort, known as Joint Warfighting Cloud Capability, or JWCC, appears like it will bolster the top global cloud infrastructure providers, Amazon and Microsoft, although it could also provide more credibility to two smaller entities. \n\n\"The Government anticipates awarding two IDIQ contracts -- one to Amazon Web Services (AWS) and one to Microsoft Corporation (Microsoft) -- but intends to award to all Cloud Service Providers (CSPs) that demonstrate the capability to meet DoD's requirements,\" the GSA said in its announcement. An indefinite delivery, indefinite quantity, or IDIQ, contract includes an indefinite amount of services for a specific period of time.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "The U.S. General Services Administration said Friday that the Defense Department has solicited bids from Amazon, Google, Microsoft and Oracle for cloud contracts. From a report: The outreach comes after the Pentagon set aside a highly contested $10 billion contract that Microsoft had won and Amazon had challenged. The value of the new contracts is not known, but the Defense Department estimates it could run into the multiple billions of dollars. The new effort, known as Joint Warfighting Cloud Capability, or JWCC, appears like it will bolster the top global cloud infrastructure providers, Amazon and Microsoft, although it could also provide more credibility to two smaller entities. \n\n\"The Government anticipates awarding two IDIQ contracts -- one to Amazon Web Services (AWS) and one to Microsoft Corporation (Microsoft) -- but intends to award to all Cloud Service Providers (CSPs) that demonstrate the capability to meet DoD's requirements,\" the GSA said in its announcement. An indefinite delivery, indefinite quantity, or IDIQ, contract includes an indefinite amount of services for a specific period of time.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://yro.slashdot.org/story/21/11/19/1840259/pentagon-asks-amazon-google-microsoft-and-oracle-for-bids-on-new-cloud-contracts?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T18:44:00+00:00", + "title": "30 Stimulating Gifts for All the Best People in Your Life", + "description": "Turbocharge the holidays with a speedy electric scooter, the smartest robot vacuum, and presents that are just plain fun.", + "content": "Turbocharge the holidays with a speedy electric scooter, the smartest robot vacuum, and presents that are just plain fun.", + "category": "Gear", + "link": "https://www.wired.com/gallery/wish-list-2021-30-stimulating-gifts", + "creator": "Gear Team", + "pubDate": "Mon, 22 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Adults Who Microdose Psychedelics Report Health-related Motivations and Lower Levels of Anxiety and Depression, Paper Finds", - "description": "Abstract of a paper published on Nature: The use of psychedelic substances at sub-sensorium 'microdoses,' has gained popular academic interest for reported positive effects on wellness and cognition. The present study describes microdosing practices, motivations and mental health among a sample of self-selected microdosers (n = 4050) and non-microdosers (n = 4653) via a mobile application. Psilocybin was the most commonly used microdose substances in our sample (85%) and we identified diverse microdose practices with regard to dosage, frequency, and the practice of stacking which involves combining psilocybin with non-psychedelic substances such as Lion's Mane mushrooms, chocolate, and niacin. Microdosers were generally similar to non-microdosing controls with regard to demographics, but were more likely to report a history of mental health concerns. Among individuals reporting mental health concerns, microdosers exhibited lower levels of depression, anxiety, and stress across gender. Health and wellness-related motives were the most prominent motives across microdosers in general, and were more prominent among females and among individuals who reported mental health concerns. Our results indicate health and wellness motives and perceived mental health benefits among microdosers, and highlight the need for further research into the mental health consequences of microdosing including studies with rigorous longitudinal designs.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "Abstract of a paper published on Nature: The use of psychedelic substances at sub-sensorium 'microdoses,' has gained popular academic interest for reported positive effects on wellness and cognition. The present study describes microdosing practices, motivations and mental health among a sample of self-selected microdosers (n = 4050) and non-microdosers (n = 4653) via a mobile application. Psilocybin was the most commonly used microdose substances in our sample (85%) and we identified diverse microdose practices with regard to dosage, frequency, and the practice of stacking which involves combining psilocybin with non-psychedelic substances such as Lion's Mane mushrooms, chocolate, and niacin. Microdosers were generally similar to non-microdosing controls with regard to demographics, but were more likely to report a history of mental health concerns. Among individuals reporting mental health concerns, microdosers exhibited lower levels of depression, anxiety, and stress across gender. Health and wellness-related motives were the most prominent motives across microdosers in general, and were more prominent among females and among individuals who reported mental health concerns. Our results indicate health and wellness motives and perceived mental health benefits among microdosers, and highlight the need for further research into the mental health consequences of microdosing including studies with rigorous longitudinal designs.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://science.slashdot.org/story/21/11/19/185230/adults-who-microdose-psychedelics-report-health-related-motivations-and-lower-levels-of-anxiety-and-depression-paper-finds?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T18:05:00+00:00", + "title": "31 Stimulating Gifts for All the Best People in Your Life", + "description": "Turbocharge the holidays with a speedy electric scooter, the smartest robot vacuum, and presents that are just plain fun.", + "content": "Turbocharge the holidays with a speedy electric scooter, the smartest robot vacuum, and presents that are just plain fun.", + "category": "Gear", + "link": "https://www.wired.com/gallery/wish-list-2021-stimulating-gifts", + "creator": "Gear Team", + "pubDate": "Mon, 22 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "The Amazon Lobbyists Who Kill US Consumer Privacy Protections", - "description": "In recent years, Amazon has killed or undermined privacy protections in more than three dozen bills across 25 states, as the e-commerce giant amassed a lucrative trove of personal data on millions of American consumers. From a report: Amazon executives and staffers detail these lobbying victories in confidential documents reviewed by Reuters. In Virginia, the company boosted political donations tenfold over four years before persuading lawmakers this year to pass an industry-friendly privacy bill that Amazon itself drafted. In California, the company stifled proposed restrictions on the industry's collection and sharing of consumer voice recordings gathered by tech devices. And in its home state of Washington, Amazon won so many exemptions and amendments to a bill regulating biometric data, such as voice recordings or facial scans, that the resulting 2017 law had \"little, if any\" impact on its practices, according to an internal Amazon document. \n\nThe architect of this under-the-radar campaign to smother privacy protections has been Jay Carney, who previously served as communications director for Joe Biden, when Biden was vice president, and as press secretary for President Barack Obama. Hired by Amazon in 2015, Carney reported to founder Jeff Bezos and built a lobbying and public-policy juggernaut that has grown from two dozen employees to about 250, according to Amazon documents and two former employees with knowledge of recent staffing. One 2018 document reviewing executives' goals for the prior year listed privacy regulation as a primary target for Carney. One objective: \"Change or block US and EU regulation/legislation that would impede growth for Alexa-powered devices,\" referring to Amazon's popular voice-assistant technology. The mission included defeating restrictions on artificial intelligence and biometric technologies, along with blocking efforts to make companies disclose the data they keep on consumers. \n\nThe document listed Carney as the goal's \"primary owner\" and celebrated killing or amending privacy bills in \"over 20 states.\" This story is based on a Reuters review of hundreds of internal Amazon documents and interviews with more than 70 lobbyists, advocates, policymakers and their staffers involved in legislation Amazon targeted, along with 10 former Amazon public-policy and legal employees. It is the third in a series of reports revealing how the company has pursued business practices that harm small businesses or put its own interests above those of consumers. The previous articles showed how Amazon has circumvented e-commerce regulations meant to protect Indian retailers, and how it copied products and rigged search results to promote its own brands over those of other vendors on its India platform.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "In recent years, Amazon has killed or undermined privacy protections in more than three dozen bills across 25 states, as the e-commerce giant amassed a lucrative trove of personal data on millions of American consumers. From a report: Amazon executives and staffers detail these lobbying victories in confidential documents reviewed by Reuters. In Virginia, the company boosted political donations tenfold over four years before persuading lawmakers this year to pass an industry-friendly privacy bill that Amazon itself drafted. In California, the company stifled proposed restrictions on the industry's collection and sharing of consumer voice recordings gathered by tech devices. And in its home state of Washington, Amazon won so many exemptions and amendments to a bill regulating biometric data, such as voice recordings or facial scans, that the resulting 2017 law had \"little, if any\" impact on its practices, according to an internal Amazon document. \n\nThe architect of this under-the-radar campaign to smother privacy protections has been Jay Carney, who previously served as communications director for Joe Biden, when Biden was vice president, and as press secretary for President Barack Obama. Hired by Amazon in 2015, Carney reported to founder Jeff Bezos and built a lobbying and public-policy juggernaut that has grown from two dozen employees to about 250, according to Amazon documents and two former employees with knowledge of recent staffing. One 2018 document reviewing executives' goals for the prior year listed privacy regulation as a primary target for Carney. One objective: \"Change or block US and EU regulation/legislation that would impede growth for Alexa-powered devices,\" referring to Amazon's popular voice-assistant technology. The mission included defeating restrictions on artificial intelligence and biometric technologies, along with blocking efforts to make companies disclose the data they keep on consumers. \n\nThe document listed Carney as the goal's \"primary owner\" and celebrated killing or amending privacy bills in \"over 20 states.\" This story is based on a Reuters review of hundreds of internal Amazon documents and interviews with more than 70 lobbyists, advocates, policymakers and their staffers involved in legislation Amazon targeted, along with 10 former Amazon public-policy and legal employees. It is the third in a series of reports revealing how the company has pursued business practices that harm small businesses or put its own interests above those of consumers. The previous articles showed how Amazon has circumvented e-commerce regulations meant to protect Indian retailers, and how it copied products and rigged search results to promote its own brands over those of other vendors on its India platform.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://news.slashdot.org/story/21/11/19/1733221/the-amazon-lobbyists-who-kill-us-consumer-privacy-protections?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T17:22:00+00:00", + "title": "Researchers Want to Restore ‘Good Noise’ in Older Brains", + "description": "Aging people lose variation in brain oxygen levels—a sign of declining cognitive flexibility. A new drug study probes whether that loss can be reversed.", + "content": "Aging people lose variation in brain oxygen levels—a sign of declining cognitive flexibility. A new drug study probes whether that loss can be reversed.", + "category": "Science", + "link": "https://www.wired.com/story/researchers-want-to-restore-good-noise-in-older-brains", + "creator": "Max G. Levy", + "pubDate": "Mon, 22 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Visions of a US Computer Chip Boom Have Cities Hustling", - "description": "Many local governments see a silver lining in the shortage of semiconductor chips that has contributed to a slowdown in the global economy. From a report: The shortage of computer chips has zapped energy from the global economy, punishing industries as varied as automakers and medical device manufacturers and contributing to fears about high inflation. But many states and cities in America are starting to see a silver lining: the possibility that efforts to sharply increase chip production in the United States will lead to a busy chip factory in their backyard. And they are racing to get a piece of the potential boom. One of those towns is Taylor, a Texas city of about 17,000 about a 40-minute drive northeast of Austin. Leaders here are pulling out all the stops to get a $17 billion Samsung plant that the company plans to build in the United States starting early next year. \n\nThe city, its school district and the county plan to offer Samsung hundreds of millions of dollars in financial incentives, including tax rebates. The community also has arranged for water to be piped in from an adjacent county to be used by the plant. But Taylor is not alone. Officials in Arizona and in Genesee County in upstate New York are also trying to woo the company. So, too, are politicians in nearby Travis County, home to Austin, where Samsung already has a plant. Locations in all three states \"offered robust property tax abatement\" and funds to build out infrastructure for the plant, Samsung said in a filing. Congress is considering whether to offer its own subsidies to chip makers that build in the United States. \n\nWhere Samsung's plant will land remains anyone's guess. The company says it is still weighing where to put it. A decision is expected to be announced any day. The federal government has urged companies like Samsung, one of the world's largest makers of the high-tech components, to build new plants in the United States, calling it an economic and national security imperative. Intel broke ground on two plants in Arizona in September and could announce the location for a planned manufacturing campus by the end of the year. This could just be a warm-up act. The Senate passed a bill to provide chip makers $52 billion in subsidies this year, a plan supported by the Biden administration that would be Washington's biggest investment in industrial policy in decades. The House has yet to consider it. Nine governors said in a letter to congressional leaders that the funding would \"provide a new, powerful tool in our states' economic development toolboxes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "Many local governments see a silver lining in the shortage of semiconductor chips that has contributed to a slowdown in the global economy. From a report: The shortage of computer chips has zapped energy from the global economy, punishing industries as varied as automakers and medical device manufacturers and contributing to fears about high inflation. But many states and cities in America are starting to see a silver lining: the possibility that efforts to sharply increase chip production in the United States will lead to a busy chip factory in their backyard. And they are racing to get a piece of the potential boom. One of those towns is Taylor, a Texas city of about 17,000 about a 40-minute drive northeast of Austin. Leaders here are pulling out all the stops to get a $17 billion Samsung plant that the company plans to build in the United States starting early next year. \n\nThe city, its school district and the county plan to offer Samsung hundreds of millions of dollars in financial incentives, including tax rebates. The community also has arranged for water to be piped in from an adjacent county to be used by the plant. But Taylor is not alone. Officials in Arizona and in Genesee County in upstate New York are also trying to woo the company. So, too, are politicians in nearby Travis County, home to Austin, where Samsung already has a plant. Locations in all three states \"offered robust property tax abatement\" and funds to build out infrastructure for the plant, Samsung said in a filing. Congress is considering whether to offer its own subsidies to chip makers that build in the United States. \n\nWhere Samsung's plant will land remains anyone's guess. The company says it is still weighing where to put it. A decision is expected to be announced any day. The federal government has urged companies like Samsung, one of the world's largest makers of the high-tech components, to build new plants in the United States, calling it an economic and national security imperative. Intel broke ground on two plants in Arizona in September and could announce the location for a planned manufacturing campus by the end of the year. This could just be a warm-up act. The Senate passed a bill to provide chip makers $52 billion in subsidies this year, a plan supported by the Biden administration that would be Washington's biggest investment in industrial policy in decades. The House has yet to consider it. Nine governors said in a letter to congressional leaders that the funding would \"provide a new, powerful tool in our states' economic development toolboxes.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://news.slashdot.org/story/21/11/19/1646250/visions-of-a-us-computer-chip-boom-have-cities-hustling?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T16:46:00+00:00", + "title": "Why Bosses Are Inflexible About Flexible Work Arrangements", + "description": "Since lockdown, employees have adopted new work habits, but many execs want a return to the old normal.", + "content": "Since lockdown, employees have adopted new work habits, but many execs want a return to the old normal.", + "category": "Business", + "link": "https://www.wired.com/story/employers-flexible-working-post-pandemic", + "creator": "Nicole Kobie", + "pubDate": "Mon, 22 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Singapore's Tech-utopia Dream is Turning Into a Surveillance State Nightmare", - "description": "In the \"smart nation,\" robot dogs enforce social distancing and flying taxis are just over the horizon. The reality is very different. From a report: Singapore is often rendered as an aspiring techno-utopia. In World Economic Forum videos, in-flight magazines and its own pliant state-backed media, it offers a soft-focus science fiction backdrop where driverless buses ply routes between beach clubs and tech hubs, where robot dogs enforce social distancing and flying taxis flit between glass-fronted public housing overflowing with lush \"sky gardens.\" It's a place where pilot projects hint at a future -- just over the horizon -- where the intractable problems of today are automated out of existence. Where vertical farms and \"NEWater\" made from treated sewage cut the island's reliance on neighbouring Malaysia for food and water. Where robots care for the elderly and drones service freighters. Where warehouses and construction sites are staffed by machines, obviating the need for the migrant workers who make Singapore function, but make Singaporeans uncomfortable. Technology keeps them safe, fed and independent; secure in a scary world, but connected to it through telecoms and air travel. \n\nThat safety requires constant vigilance. The city must be watched. The smart cameras that are being trialled in Changi are just a part of a nationwide thrust towards treating surveillance as part of everyday life. Ninety-thousand police cameras watch the streets, and by the end of the decade, there will be 200,000. Sensors, including facial recognition cameras and crowd analytics systems, are being positioned across the city. The technology alone isn't unique -- it's used in many countries. But Singapore's ruling party sees dangers everywhere, and seems increasingly willing to peer individually and en masse into people's lives. \"What [technology] will do for people is make our lives a hell of a lot easier, more convenient, more easily able to plug into the good life,\" Monamie Bhadra Haines, an assistant professor at the Technical University of Denmark, who studies the intersection between technology and society. \"But ... the surveillance is what is here, now.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "In the \"smart nation,\" robot dogs enforce social distancing and flying taxis are just over the horizon. The reality is very different. From a report: Singapore is often rendered as an aspiring techno-utopia. In World Economic Forum videos, in-flight magazines and its own pliant state-backed media, it offers a soft-focus science fiction backdrop where driverless buses ply routes between beach clubs and tech hubs, where robot dogs enforce social distancing and flying taxis flit between glass-fronted public housing overflowing with lush \"sky gardens.\" It's a place where pilot projects hint at a future -- just over the horizon -- where the intractable problems of today are automated out of existence. Where vertical farms and \"NEWater\" made from treated sewage cut the island's reliance on neighbouring Malaysia for food and water. Where robots care for the elderly and drones service freighters. Where warehouses and construction sites are staffed by machines, obviating the need for the migrant workers who make Singapore function, but make Singaporeans uncomfortable. Technology keeps them safe, fed and independent; secure in a scary world, but connected to it through telecoms and air travel. \n\nThat safety requires constant vigilance. The city must be watched. The smart cameras that are being trialled in Changi are just a part of a nationwide thrust towards treating surveillance as part of everyday life. Ninety-thousand police cameras watch the streets, and by the end of the decade, there will be 200,000. Sensors, including facial recognition cameras and crowd analytics systems, are being positioned across the city. The technology alone isn't unique -- it's used in many countries. But Singapore's ruling party sees dangers everywhere, and seems increasingly willing to peer individually and en masse into people's lives. \"What [technology] will do for people is make our lives a hell of a lot easier, more convenient, more easily able to plug into the good life,\" Monamie Bhadra Haines, an assistant professor at the Technical University of Denmark, who studies the intersection between technology and society. \"But ... the surveillance is what is here, now.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://yro.slashdot.org/story/21/11/19/1614203/singapores-tech-utopia-dream-is-turning-into-a-surveillance-state-nightmare?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T16:12:00+00:00", + "title": "TikTok’s Next Big Move? To Become Facebook", + "description": "ByteDance, the Chinese company behind TikTok and Douyin, has global ambitions to challenge Meta’s universe.", + "content": "ByteDance, the Chinese company behind TikTok and Douyin, has global ambitions to challenge Meta’s universe.", + "category": "Business", + "link": "https://www.wired.com/story/tiktok-future-facebook", + "creator": "Chris Stokel-Walker", + "pubDate": "Mon, 22 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Tor Project Sees Decline in Server Numbers, Will Offer Rewards for New Bridge Operators", - "description": "The Tor Project said this week that it has seen a drop in the number of Tor relays and bridge servers and is now offering various rewards to users who help bring the number back up. From a report: Rewards include the likes of hoodies, t-shirts, and stickers and are meant to provide some sort of meaningful gift to those who help keep the Tor anonymity network alive and resilient to censorship. More specifically, the rewards will be provided to those who run \"Tor bridges,\" which serve as entry points into the Tor network for users located in countries that block access to Tor servers. \"We currently have approximately 1,200 bridges, 900 of which support the obfs4 obfuscation protocol,\" said Gustavo Gus, Community Team Lead for the Tor Project. \"Unfortunately, these numbers have been decreasing since the beginning of this year. It's not enough to have many bridges: eventually, all of them could find themselves in block lists. We therefore need a constant trickle of new bridges that aren't blocked anywhere yet,\" the Tor Project member said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "The Tor Project said this week that it has seen a drop in the number of Tor relays and bridge servers and is now offering various rewards to users who help bring the number back up. From a report: Rewards include the likes of hoodies, t-shirts, and stickers and are meant to provide some sort of meaningful gift to those who help keep the Tor anonymity network alive and resilient to censorship. More specifically, the rewards will be provided to those who run \"Tor bridges,\" which serve as entry points into the Tor network for users located in countries that block access to Tor servers. \"We currently have approximately 1,200 bridges, 900 of which support the obfs4 obfuscation protocol,\" said Gustavo Gus, Community Team Lead for the Tor Project. \"Unfortunately, these numbers have been decreasing since the beginning of this year. It's not enough to have many bridges: eventually, all of them could find themselves in block lists. We therefore need a constant trickle of new bridges that aren't blocked anywhere yet,\" the Tor Project member said.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://yro.slashdot.org/story/21/11/19/1529223/tor-project-sees-decline-in-server-numbers-will-offer-rewards-for-new-bridge-operators?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T15:29:00+00:00", + "title": "This Rolex Is Made Using Eye-Surgery Lasers", + "description": "The 2021 Rolex Datejust 36's unique dial pattern is etched into the surface using femtosecond laser technology.", + "content": "The 2021 Rolex Datejust 36's unique dial pattern is etched into the surface using femtosecond laser technology.", + "category": "Gear", + "link": "https://www.wired.com/story/2021-rolex-datejust-36", + "creator": "Tim Barber", + "pubDate": "Mon, 22 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Copy of US Constitution Sells for $43.2 Million as Crypto Group DAO Is Outbid", - "description": "The art market wasn't ready for revolution. A rare, first-edition copy of the U.S. Constitution sold for $43.2 million at Sotheby's Thursday, but it appears the winner is a private collector rather than an online group of cryptocurrency investors. From a report: The group, called ConstitutionDAO, caused a stir in art and crypto circles this week by pooling more than $40 million to bid, but an anonymous phone bidder pledged even more and will take home one of the 13 surviving official copies of the Constitution. \n\nSotheby's sale on Thursday transforms the governing document into the priciest six pages in auction history, surpassing Microsoft co-founder Bill Gates's $30.8 million copy of Leonardo da Vinci's scientific notebook known as the Codex Leicester. The Constitution also exceeded the $21.3 million paid for a copy of the 1297 Magna Carta by Carlyle Group co-founder David Rubenstein in 2007. The winner remains anonymous, but the group pledging the second-highest price was ConstitutionDAO, an online organization that its founders say was formed as a lark last week and wound up pooling donations from 17,437 people to try to win the historic artifact. \"What we tried to do was make the Constitution more accessible to the public,\" said core organizer Anisha Sunkerneni of San Francisco. \"Although we might have not completely accomplished doing just that, I think we've raised enough awareness to illustrate that a DAO is another option.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "The art market wasn't ready for revolution. A rare, first-edition copy of the U.S. Constitution sold for $43.2 million at Sotheby's Thursday, but it appears the winner is a private collector rather than an online group of cryptocurrency investors. From a report: The group, called ConstitutionDAO, caused a stir in art and crypto circles this week by pooling more than $40 million to bid, but an anonymous phone bidder pledged even more and will take home one of the 13 surviving official copies of the Constitution. \n\nSotheby's sale on Thursday transforms the governing document into the priciest six pages in auction history, surpassing Microsoft co-founder Bill Gates's $30.8 million copy of Leonardo da Vinci's scientific notebook known as the Codex Leicester. The Constitution also exceeded the $21.3 million paid for a copy of the 1297 Magna Carta by Carlyle Group co-founder David Rubenstein in 2007. The winner remains anonymous, but the group pledging the second-highest price was ConstitutionDAO, an online organization that its founders say was formed as a lark last week and wound up pooling donations from 17,437 people to try to win the historic artifact. \"What we tried to do was make the Constitution more accessible to the public,\" said core organizer Anisha Sunkerneni of San Francisco. \"Although we might have not completely accomplished doing just that, I think we've raised enough awareness to illustrate that a DAO is another option.\"

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://news.slashdot.org/story/21/11/19/1442245/copy-of-us-constitution-sells-for-432-million-as-crypto-group-dao-is-outbid?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T14:42:00+00:00", + "title": "The Best Early Black Friday Deals on Laptops, TVs, and More", + "description": "Beat the holiday rush with truly good discounts on our favorite gear.", + "content": "Beat the holiday rush with truly good discounts on our favorite gear.", + "category": "Gear", + "link": "https://www.wired.com/story/early-black-friday-deals-2021-2", + "creator": "Louryn Strampe", + "pubDate": "Sun, 21 Nov 2021 19:58:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "A Look Under the Hood of the Most Successful Streaming Service on the Planet", - "description": "A service's guts, the engineering behind the app itself, are the foundation of any streamer's success, and Netflix has spent the last 10 years building out an expansive server network called Open Connect in order to avoid many modern streaming headaches. From a report: It's the thing that's allowed Netflix to serve up a far more reliable experience than its competitors and not falter when some 111 million users tuned in to Squid Game during its earliest weeks on the service. \"One of the reasons why Netflix is the leader in this market and has the number of subs they do [...] is something that pretty much everybody outside of the technical part of this industry underestimates, and that is Open Connect,\" Dan Rayburn, a media streaming expert and principal analyst with Frost & Sullivan, tells The Verge. \"How many times has Netflix had a problem with their streaming service over the last 10 years?\" \n\nCertainly not as many as HBO Max, that's for sure. Open Connect was created because Netflix \"knew that we needed to build some level of infrastructure technology that would sustain the anticipated traffic that we knew success would look like,\" Gina Haspilaire, Netflix's vice president of Open Connect, tells me. \"We felt we were going to be successful, and we knew that the internet at the time was not built to sustain the level of traffic that would be required globally.\" Nobody wants to sit down to watch a movie only to have their app crash or buffer for an eternity. What Netflix had the foresight to understand was that if it was going to maintain a certain level of quality, it would have to build a distribution system itself. \n\nOpen Connect is Netflix's in-house content distribution network specifically built to deliver its TV shows and movies. Started in 2012, the program involves Netflix giving internet service providers physical appliances that allow them to localize traffic. These appliances store copies of Netflix content to create less strain on networks by eliminating the number of channels that content has to pass through to reach the user trying to play it. Most major streaming services rely on third-party content delivery networks (CDNs) to pass along their videos, which is why Netflix's server network is so unique. Without a system like Open Connect or a third-party CDN in place, a request for content by an ISP has to \"go through a peering point and maybe transit four or five other networks until it gets to the origin, or the place that holds the content,\" Will Law, chief architect of media engineering at Akamai, a major content delivery network, tells The Verge. Not only does that slow down delivery, but it's expensive since ISPs may have to pay to access that content. To avoid the traffic and fees, Netflix ships copies of its content to its own servers ahead of time. That also helps to prevent Netflix traffic from choking network demand during peak hours of streaming.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "content": "A service's guts, the engineering behind the app itself, are the foundation of any streamer's success, and Netflix has spent the last 10 years building out an expansive server network called Open Connect in order to avoid many modern streaming headaches. From a report: It's the thing that's allowed Netflix to serve up a far more reliable experience than its competitors and not falter when some 111 million users tuned in to Squid Game during its earliest weeks on the service. \"One of the reasons why Netflix is the leader in this market and has the number of subs they do [...] is something that pretty much everybody outside of the technical part of this industry underestimates, and that is Open Connect,\" Dan Rayburn, a media streaming expert and principal analyst with Frost & Sullivan, tells The Verge. \"How many times has Netflix had a problem with their streaming service over the last 10 years?\" \n\nCertainly not as many as HBO Max, that's for sure. Open Connect was created because Netflix \"knew that we needed to build some level of infrastructure technology that would sustain the anticipated traffic that we knew success would look like,\" Gina Haspilaire, Netflix's vice president of Open Connect, tells me. \"We felt we were going to be successful, and we knew that the internet at the time was not built to sustain the level of traffic that would be required globally.\" Nobody wants to sit down to watch a movie only to have their app crash or buffer for an eternity. What Netflix had the foresight to understand was that if it was going to maintain a certain level of quality, it would have to build a distribution system itself. \n\nOpen Connect is Netflix's in-house content distribution network specifically built to deliver its TV shows and movies. Started in 2012, the program involves Netflix giving internet service providers physical appliances that allow them to localize traffic. These appliances store copies of Netflix content to create less strain on networks by eliminating the number of channels that content has to pass through to reach the user trying to play it. Most major streaming services rely on third-party content delivery networks (CDNs) to pass along their videos, which is why Netflix's server network is so unique. Without a system like Open Connect or a third-party CDN in place, a request for content by an ISP has to \"go through a peering point and maybe transit four or five other networks until it gets to the origin, or the place that holds the content,\" Will Law, chief architect of media engineering at Akamai, a major content delivery network, tells The Verge. Not only does that slow down delivery, but it's expensive since ISPs may have to pay to access that content. To avoid the traffic and fees, Netflix ships copies of its content to its own servers ahead of time. That also helps to prevent Netflix traffic from choking network demand during peak hours of streaming.

    \n\n\n\n\n\n

    Read more of this story at Slashdot.

    ", - "category": "", - "link": "https://entertainment.slashdot.org/story/21/11/19/142205/a-look-under-the-hood-of-the-most-successful-streaming-service-on-the-planet?utm_source=rss1.0mainlinkanon&utm_medium=feed", - "creator": "msmash", - "pubDate": "2021-11-19T14:02:00+00:00", + "title": "How to Keep Work Notifications From Taking Over Your Life", + "description": "Teach your devices to respect your boundaries.", + "content": "Teach your devices to respect your boundaries.", + "category": "Gear", + "link": "https://www.wired.com/story/how-to-keep-work-notifications-from-taking-over-your-life", + "creator": "David Nield", + "pubDate": "Sun, 21 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "Slashdot", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Tech", - "name": "Slashdot" - }, - "21": { - "title": "The Next Web", - "subtitle": "", - "link": "https://thenextweb.com", - "image": null, - "description": "Original and proudly opinionated perspectives for Generation T", - "items": [ + }, { - "title": "AI can’t tell if you’re lying – anyone who says otherwise is selling something", - "description": "
    Another day, another problematic AI study. Today’s snake oil special comes via Tel Aviv University where a team of researchers have unveiled a so-called “lie-detection system.” Let’s be really clear right up front: AI can’t do anything a person, given an equivalent amount of time to work on the problem, couldn’t do themselves. And no human can tell if any given human is lying. Full stop. The simple fact of the matter is that some of us can tell when some people are lying some of the time. Nobody can tell when anybody is lying all of the time. The university…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    Another day, another problematic AI study. Today’s snake oil special comes via Tel Aviv University where a team of researchers have unveiled a so-called “lie-detection system.” Let’s be really clear right up front: AI can’t do anything a person, given an equivalent amount of time to work on the problem, couldn’t do themselves. And no human can tell if any given human is lying. Full stop. The simple fact of the matter is that some of us can tell when some people are lying some of the time. Nobody can tell when anybody is lying all of the time. The university…

    This story continues at The Next Web
    \n \n
    ", - "category": "Neural", - "link": "https://thenextweb.com/news/ai-cant-tell-youre-lying-anyone-who-says-otherwise-selling-something", - "creator": "Tristan Greene", - "pubDate": "Fri, 19 Nov 2021 22:36:52 +0000", + "title": "12 Laptops We’ve Tested and Love", + "description": "These are our favorite Windows notebooks, MacBooks, and Chromebooks.", + "content": "These are our favorite Windows notebooks, MacBooks, and Chromebooks.", + "category": "Gear", + "link": "https://www.wired.com/gallery/best-laptops", + "creator": "Scott Gilbertson", + "pubDate": "Sun, 21 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "MIT research shows sad reason why deepfakes pose little threat to US politics", - "description": "
    MIT researchers working with funding from Google’s Jigsaw group recently conducted a pair of studies to determine what, if any, potential impact deepfake AI technology political ads could have on US voters. In total, more than 7,500 people in the US participated in the paired studies – as far as we’re able to determine, that makes this the largest set of experiments on the subject. Participants were split into three groups; one group watch a deepfake video, the second read a text transcript of the video, and the third acted as a control group so they received no media prompts.…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    MIT researchers working with funding from Google’s Jigsaw group recently conducted a pair of studies to determine what, if any, potential impact deepfake AI technology political ads could have on US voters. In total, more than 7,500 people in the US participated in the paired studies – as far as we’re able to determine, that makes this the largest set of experiments on the subject. Participants were split into three groups; one group watch a deepfake video, the second read a text transcript of the video, and the third acted as a control group so they received no media prompts.…

    This story continues at The Next Web
    \n \n
    ", - "category": "Neural", - "link": "https://thenextweb.com/news/mit-research-shows-sad-reason-why-deepfakes-pose-little-threat-us-politics", - "creator": "Tristan Greene", - "pubDate": "Fri, 19 Nov 2021 14:40:44 +0000", + "title": "The Future of Digital Assistants Is Queer", + "description": "AI assistants continue to reinforce sexist stereotypes, but queering these devices could help reimagine their relationship to gender altogether.", + "content": "AI assistants continue to reinforce sexist stereotypes, but queering these devices could help reimagine their relationship to gender altogether.", + "category": "Ideas", + "link": "https://www.wired.com/story/digital-assistant-smart-device-gender-identity", + "creator": "Salomé Gómez-Upegui", + "pubDate": "Sun, 21 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Want to kick off 2022 as a coding expert? This package can show you how for under $45", - "description": "
    TLDR: The 2022 All-in-One Learn to Code Certification Bundle features over 230 hours of intensive training to learn all the top lessons to know about programming for the web. Hard skills can include learning how to do things like typing, or bookkeeping, or learning a trade. However, when you talk about hard skills these days, that usually means understanding computers and technology. And while you can delve deep into learning disciplines like SEO or graphic design, almost all of those talents lead back to one central ability nearly any tech-savvy 21st century professional needs. You need to learn how to…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    TLDR: The 2022 All-in-One Learn to Code Certification Bundle features over 230 hours of intensive training to learn all the top lessons to know about programming for the web. Hard skills can include learning how to do things like typing, or bookkeeping, or learning a trade. However, when you talk about hard skills these days, that usually means understanding computers and technology. And while you can delve deep into learning disciplines like SEO or graphic design, almost all of those talents lead back to one central ability nearly any tech-savvy 21st century professional needs. You need to learn how to…

    This story continues at The Next Web
    \n \n
    ", - "category": "Offers", - "link": "https://thenextweb.com/news/want-to-kick-off-2022-as-a-coding-expert-this-package-can-show-you-how-for-under-45", - "creator": "TNW Deals", - "pubDate": "Fri, 19 Nov 2021 14:00:52 +0000", + "title": "A New Theory for Systems That Defy Newton’s Third Law", + "description": "In nonreciprocal systems, “exceptional points” are helping researchers understand phase transitions and possibly other phenomena.", + "content": "In nonreciprocal systems, “exceptional points” are helping researchers understand phase transitions and possibly other phenomena.", + "category": "Science", + "link": "https://www.wired.com/story/a-new-theory-for-systems-that-defy-newtons-third-law", + "creator": "Stephen Ornes", + "pubDate": "Sun, 21 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Party-pooping AI nerds wanna ruin your future drug binges", - "description": "
    The next generation of legal highs could be discovered by AI. Scientists in Canada have developed a model that identifies future designer drugs before they even hit the market. But don’t get too excited: the researchers aren’t planning to provide your next buzz. Instead, they want the cops to find it first. High times It wasn’t easy introducing AI to the drug game. First, the neural network needed a crash course in pharmacology. Instead of a traditional education in a meth lab, the neural network was trained on a database of known psychoactive substances. After diligently studying the structures of…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    The next generation of legal highs could be discovered by AI. Scientists in Canada have developed a model that identifies future designer drugs before they even hit the market. But don’t get too excited: the researchers aren’t planning to provide your next buzz. Instead, they want the cops to find it first. High times It wasn’t easy introducing AI to the drug game. First, the neural network needed a crash course in pharmacology. Instead of a traditional education in a meth lab, the neural network was trained on a database of known psychoactive substances. After diligently studying the structures of…

    This story continues at The Next Web
    \n \n
    ", - "category": "Insider", - "link": "https://thenextweb.com/news/ai-discovers-future-designer-drugs-before-they-hit-market", - "creator": "Thomas Macaulay", - "pubDate": "Fri, 19 Nov 2021 13:52:30 +0000", + "title": "The Best Deals and Cases for Every Galaxy S21", + "description": "We break down the differences between Samsung’s three Galaxy phones—and our favorite accessories and discounts.", + "content": "We break down the differences between Samsung’s three Galaxy phones—and our favorite accessories and discounts.", + "category": "Gear", + "link": "https://www.wired.com/story/samsung-galaxy-s21-deals", + "creator": "Julian Chokkattu", + "pubDate": "Sun, 21 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "We asked an expert what canceling the HS2 Leeds branch means for UK high speed rail", - "description": "
    Following leaked reports that the UK government would be scrapping plans for the UK’s long-awaited high-speed rail to extend to Leeds, transport secretary Grant Shapps has announced in the House of Commons that the eastern leg of HS2 will now reach only from Birmingham to the East Midlands, and that an additional high-speed line between Leeds and Manchester would no longer be built. Instead, the newly published Integrated Rail Plan for the North and the Midlands, sets out proposals to upgrade existing lines to reduce journey times between the cities sooner (although not by as much). This contrasts with previous…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    Following leaked reports that the UK government would be scrapping plans for the UK’s long-awaited high-speed rail to extend to Leeds, transport secretary Grant Shapps has announced in the House of Commons that the eastern leg of HS2 will now reach only from Birmingham to the East Midlands, and that an additional high-speed line between Leeds and Manchester would no longer be built. Instead, the newly published Integrated Rail Plan for the North and the Midlands, sets out proposals to upgrade existing lines to reduce journey times between the cities sooner (although not by as much). This contrasts with previous…

    This story continues at The Next Web
    \n \n
    ", - "category": "Shift", - "link": "https://thenextweb.com/news/we-asked-an-expert-what-canceling-the-hs2-leeds-branch-means-for-uk-high-speed-rail", - "creator": "The Conversation", - "pubDate": "Fri, 19 Nov 2021 13:51:00 +0000", + "title": "Body Language Pseudoscience Is Flourishing on YouTube", + "description": "In celebrity interviews and homicide cases, video sleuths are searching for the truth—but what if the signals are all wrong?", + "content": "In celebrity interviews and homicide cases, video sleuths are searching for the truth—but what if the signals are all wrong?", + "category": "Culture", + "link": "https://www.wired.com/story/youtube-body-language", + "creator": "Amelia Tait", + "pubDate": "Sun, 21 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Barbie’s gone electric! The doll’s life-size EV is marketing Mattel’s sustainability", - "description": "
    Among the various EVs currently on display at the LA Auto Show, there’s one that definitely steals the show. It’s glittery af and has a bubblegum pink interior. It’s the life-size Barbie Extra Car. Yep, that’s a Barbie car all the way. Credit: Mattel And, boy, is it extravagant! It has winged doors, an all-pink interior with fluffy headrests, star-shaped head and taillights, and rainbow-painted five-spoke wheels.  Credit: Mattel Credit: Mattel And wrap your head around this: the Barbie Car at the Auto Show is actually drivable, because it’s a modified Fiat 500e convertible. As such, it has an electric…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    Among the various EVs currently on display at the LA Auto Show, there’s one that definitely steals the show. It’s glittery af and has a bubblegum pink interior. It’s the life-size Barbie Extra Car. Yep, that’s a Barbie car all the way. Credit: Mattel And, boy, is it extravagant! It has winged doors, an all-pink interior with fluffy headrests, star-shaped head and taillights, and rainbow-painted five-spoke wheels.  Credit: Mattel Credit: Mattel And wrap your head around this: the Barbie Car at the Auto Show is actually drivable, because it’s a modified Fiat 500e convertible. As such, it has an electric…

    This story continues at The Next Web
    \n \n
    ", - "category": "Shift", - "link": "https://thenextweb.com/news/barbies-gone-electric-doll-life-size-ev-is-marketing-mattels-sustainability", - "creator": "Ioanna Lykiardopoulou", - "pubDate": "Fri, 19 Nov 2021 12:34:29 +0000", + "title": "Capture Your Daring Feats With Our Favorite Action Cameras", + "description": "Gearing up to shred the slopes or dive into the seas? These cameras are made for danger.", + "content": "Gearing up to shred the slopes or dive into the seas? These cameras are made for danger.", + "category": "Gear", + "link": "https://www.wired.com/gallery/best-action-cameras", + "creator": "Scott Gilbertson", + "pubDate": "Sat, 20 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "It’s 2021 and Twitter still can’t tell the difference between cats and dogs", - "description": "
    Twitter launched its topics feature almost two years ago to group tweets under different interest categories. It’s nice to see tweets or news on topics that I care about on my timeline. However, sometimes the social network’s tagging goes horribly wrong. The funniest example I’ve seen is of the algorithm tagging cat pictures under dog topic (and vice versa). Here are some examples: I do so hate the Twitter algorithm suggestions, but this one takes the prize for perfect stupidity in highlighting that it's wrong: a picture of a cat in the Twitter feed of the cat, with cat in…

    This story continues at The Next Web

    Or just read more coverage about: Twitter
    \n \n
    ", - "content": "
    Twitter launched its topics feature almost two years ago to group tweets under different interest categories. It’s nice to see tweets or news on topics that I care about on my timeline. However, sometimes the social network’s tagging goes horribly wrong. The funniest example I’ve seen is of the algorithm tagging cat pictures under dog topic (and vice versa). Here are some examples: I do so hate the Twitter algorithm suggestions, but this one takes the prize for perfect stupidity in highlighting that it's wrong: a picture of a cat in the Twitter feed of the cat, with cat in…

    This story continues at The Next Web

    Or just read more coverage about: Twitter
    \n \n
    ", - "category": "Plugged", - "link": "https://thenextweb.com/news/twitter-dogs-cats-algorithm-analysis", - "creator": "Ivan Mehta", - "pubDate": "Fri, 19 Nov 2021 11:16:19 +0000", + "title": "A Canadian Teen Was Arrested in a $36.5M SIM-Swap Heist", + "description": "Plus: An FBI email hack, a cam site data leak, and more of the week's top security news.", + "content": "Plus: An FBI email hack, a cam site data leak, and more of the week's top security news.", + "category": "Security", + "link": "https://www.wired.com/story/teen-sim-swap-theft-fbi-email-hack-stripchat-leak-security-news", + "creator": "Brian Barrett", + "pubDate": "Sat, 20 Nov 2021 14:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "What really happened during Russia’s anti-satellite missile test?", - "description": "
    On Nov. 15, 2021, U.S. officials announced that they had detected a dangerous new debris field in orbit near Earth. Later in the day, it was confirmed that Russia had destroyed one of its old satellites in a test of an anti-satellite weapon. Wendy Whitman Cobb is a space security researcher. She explains what these weapons are and why the debris they create is a problem now – and in the future. What do we know? Anti-satellite weapons, commonly referred to as ASATs, are any weapon that can temporarily impair or permanently destroy an orbiting satellite. The one that Russia…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    On Nov. 15, 2021, U.S. officials announced that they had detected a dangerous new debris field in orbit near Earth. Later in the day, it was confirmed that Russia had destroyed one of its old satellites in a test of an anti-satellite weapon. Wendy Whitman Cobb is a space security researcher. She explains what these weapons are and why the debris they create is a problem now – and in the future. What do we know? Anti-satellite weapons, commonly referred to as ASATs, are any weapon that can temporarily impair or permanently destroy an orbiting satellite. The one that Russia…

    This story continues at The Next Web
    \n \n
    ", - "category": "Space", - "link": "https://thenextweb.com/news/what-happened-during-russias-anti-satellite-missile-test-syndication", - "creator": "The Conversation", - "pubDate": "Fri, 19 Nov 2021 10:12:08 +0000", + "title": "The North Carolina Town Besieged by Armadillos", + "description": "Thanks to climate change, the armored animals are making their way up north. And there’s no sign of them stopping their relentless march.", + "content": "Thanks to climate change, the armored animals are making their way up north. And there’s no sign of them stopping their relentless march.", + "category": "Science", + "link": "https://www.wired.com/story/the-north-carolina-town-besieged-by-armadillos", + "creator": "Oliver Milman", + "pubDate": "Sat, 20 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "A brief guide to marketing data attribution models", - "description": "
    It’s one thing to know how you’re doing against your metrics. But even if you’re knocking it out of the park, if you don’t know why you’re doing well, you won’t be able to replicate your success. That’s why, at Zapier, we use attribution to understand how customer actions result in certain business outcomes. Attribution is a way for us to see how much each of our activities — across marketing, product, support, and more — is influencing the customer journey. It gives us a holistic view of how each touchpoint — from a blog post to an email to…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    It’s one thing to know how you’re doing against your metrics. But even if you’re knocking it out of the park, if you don’t know why you’re doing well, you won’t be able to replicate your success. That’s why, at Zapier, we use attribution to understand how customer actions result in certain business outcomes. Attribution is a way for us to see how much each of our activities — across marketing, product, support, and more — is influencing the customer journey. It gives us a holistic view of how each touchpoint — from a blog post to an email to…

    This story continues at The Next Web
    \n \n
    ", - "category": "Growth Quarters", - "link": "https://thenextweb.com/news/guide-marketing-data-attribution-models", - "creator": "Lukas Toma", - "pubDate": "Fri, 19 Nov 2021 07:30:57 +0000", + "title": "Why You Gravitate to Puzzles When You’re Depressed", + "description": "Puzzle games keep our minds occupied, even in our darkest moments. Here’s why they make you feel better, more capable, and more optimistic about life.", + "content": "Puzzle games keep our minds occupied, even in our darkest moments. Here’s why they make you feel better, more capable, and more optimistic about life.", + "category": "Culture", + "link": "https://www.wired.com/story/puzzle-games-mental-health", + "creator": "Zoë Hannah", + "pubDate": "Sat, 20 Nov 2021 13:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] }, { - "title": "Electric Bike Company Model Y review: A luxury cruiser ebike", - "description": "
    Most of the ebikes we’ve tested at TNW have futuristic designs, ample smart features, or minimalist aesthetics. But sometimes you just want something a little more classic, and for that, the Electric Bike Company’s Model Y exactly fits the bill. Made in the USA Electric Bike Company is a relatively rare breed of an ebike brand in that its bikes are actually designed and built in the USA. Pretty much all of the company’s bikes are some variety of beach cruiser, and though some components are sourced from outside the US, the company builds frames to order in California. This…

    This story continues at The Next Web
    \n \n
    ", - "content": "
    Most of the ebikes we’ve tested at TNW have futuristic designs, ample smart features, or minimalist aesthetics. But sometimes you just want something a little more classic, and for that, the Electric Bike Company’s Model Y exactly fits the bill. Made in the USA Electric Bike Company is a relatively rare breed of an ebike brand in that its bikes are actually designed and built in the USA. Pretty much all of the company’s bikes are some variety of beach cruiser, and though some components are sourced from outside the US, the company builds frames to order in California. This…

    This story continues at The Next Web
    \n \n
    ", - "category": "Insider", - "link": "https://thenextweb.com/news/electric-bike-company-model-y-review", - "creator": "Napier Lopez", - "pubDate": "Thu, 18 Nov 2021 20:40:18 +0000", + "title": "AirTags Are the Best Thing to Happen to Tile", + "description": "With increased sales and products things have never looked better for Tile. So why is its CEO so mad at Apple?", + "content": "With increased sales and products things have never looked better for Tile. So why is its CEO so mad at Apple?", + "category": "Gear", + "link": "https://www.wired.com/story/tile-trackers-apple-airtags", + "creator": "Adam Speight", + "pubDate": "Sat, 20 Nov 2021 12:00:00 +0000", "folder": "00.03 News/Tech", - "feed": "The Next Web", + "feed": "Wired", "read": false, "favorite": false, "created": false, "tags": [] - } - ], - "folder": "00.03 News/Tech", - "name": "The Next Web" - }, - "22": { - "title": "Feed: All Latest", - "subtitle": "", - "link": "https://www.wired.com/latest", - "image": null, - "description": "Channel Description", - "items": [ + }, { "title": "13 Great Black Friday Deals on Google Devices We Like", "description": "The brand-new Pixel phones are $50 off, and there are discounts on Nest security cameras and smart speakers.", @@ -10581,9 +38541,19 @@ "folder": "00.03 News/Tech", "name": "Wired" } - }, + ], "dateFormat": "YYYY-MM-DDTHH:MM:SS", "template": "---\nlink: {{link}}\nauthor: {{author}}\npublished: {{published}}\ntags: [{{tags:,}}]\n---\n{{title}}\n{{content}}", "pasteTemplate": "## {{title}}\n{{content}}", - "askForFilename": true + "askForFilename": true, + "autoSync": false, + "hotkeys": { + "create": "n", + "paste": "v", + "copy": "c", + "favorite": "f", + "read": "r", + "tags": "t", + "open": "o" + } } \ No newline at end of file diff --git a/.obsidian/plugins/rss-reader/main.js b/.obsidian/plugins/rss-reader/main.js index 0dfd709c..77ad6973 100644 --- a/.obsidian/plugins/rss-reader/main.js +++ b/.obsidian/plugins/rss-reader/main.js @@ -33,10528 +33,18196 @@ function __awaiter(thisArg, _arguments, P, generator) { }); } -/** - * : to get namespaced element - * . to get nested element - * @param element - * @param name - */ -function getElementByName(element, name) { - let value; - if (typeof element.getElementsByTagName !== 'function') { - return; - } - if (name.contains(":")) { - const [namespace, tag] = name.split(":"); - const namespaceUri = element.lookupNamespaceURI(namespace); - if (element.getElementsByTagNameNS(namespaceUri, tag).length > 0) { - value = element.getElementsByTagNameNS(namespaceUri, tag)[0].childNodes[0]; - } - } - else if (name.contains(".")) { - const [prefix, tag] = name.split("."); - if (element.getElementsByTagName(prefix).length > 0) { - const nodes = Array.from(element.getElementsByTagName(prefix)[0].childNodes); - nodes.forEach((node) => { - if (node.nodeName == tag) { - value = node; - } - }); - } - } - else { - if (element.getElementsByTagName(name).length > 0) { - if (element.getElementsByTagName(name)[0].childNodes.length == 0) { - value = element.getElementsByTagName(name)[0]; - } - else { - const node = element.getElementsByTagName(name)[0].childNodes[0]; - if (node !== undefined) - value = node; - } - } - } - return value; +var top = 'top'; +var bottom = 'bottom'; +var right = 'right'; +var left = 'left'; +var auto = 'auto'; +var basePlacements = [top, bottom, right, left]; +var start = 'start'; +var end = 'end'; +var clippingParents = 'clippingParents'; +var viewport = 'viewport'; +var popper = 'popper'; +var reference = 'reference'; +var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); +}, []); +var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); +}, []); // modifiers that need to read the DOM + +var beforeRead = 'beforeRead'; +var read = 'read'; +var afterRead = 'afterRead'; // pure-logic modifiers + +var beforeMain = 'beforeMain'; +var main = 'main'; +var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + +var beforeWrite = 'beforeWrite'; +var write = 'write'; +var afterWrite = 'afterWrite'; +var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + +function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; } -/** - * # to get attribute - * @param element - * @param names possible names - */ -function getContent(element, names) { - let value; - names.forEach((name) => { - if (name.contains("#")) { - const [elementName, attr] = name.split("#"); - const data = getElementByName(element, elementName); - if (data) { - if (data.nodeName == elementName) { - //@ts-ignore - value = data.getAttr(attr); - } - } - } - const data = getElementByName(element, name); - if (data) { - //@ts-ignore - if (data.nodeValue) { - value = data.nodeValue; - } - //@ts-ignore - if (data.innerHTML) { - //@ts-ignore - value = data.innerHTML; - } - } - }); - if (value === undefined) { - return ""; - } - return value; + +function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; } -function buildItem(element) { - return { - title: getContent(element, ["title"]), - description: getContent(element, ["description"]), - content: getContent(element, ["description", "content", "content:encoded", "summary"]), - category: getContent(element, ["category"]), - link: getContent(element, ["link", "link#href"]), - creator: getContent(element, ["creator", "dc:creator", "author", "author.name"]), - pubDate: getContent(element, ["pubDate", "published", "updated", "dc:date"]), - folder: null, - feed: null, - read: null, - favorite: null, - created: null, - tags: [], - }; + +function isElement(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; } -function getAllItems(doc) { - const items = []; - if (doc.getElementsByTagName("item")) { - for (const elementsByTagNameKey in doc.getElementsByTagName("item")) { - const entry = doc.getElementsByTagName("item")[elementsByTagNameKey]; - items.push(entry); - } - } - if (doc.getElementsByTagName("entry")) { - for (const elementsByTagNameKey in doc.getElementsByTagName("entry")) { - const entry = doc.getElementsByTagName("entry")[elementsByTagNameKey]; - items.push(entry); - } - } - return items; + +function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; } -function getFeedItems(feed) { - return __awaiter(this, void 0, void 0, function* () { - const rawData = yield obsidian.request({ url: feed.url }); - const data = new window.DOMParser().parseFromString(rawData, "text/xml"); - const items = []; - const rawItems = getAllItems(data); - rawItems.forEach((rawItem) => { - const item = buildItem(rawItem); - if (item.title !== undefined && item.title.length !== 0) { - item.folder = feed.folder; - item.feed = feed.name; - item.read = false; - item.favorite = false; - item.created = false; - items.push(item); - } - }); - const image = getContent(data, ["image", "image.url", "icon"]); - const content = { - title: getContent(data, ["title"]), - subtitle: getContent(data, ["subtitle"]), - link: getContent(data, ["link"]), - //we don't want any leading or trailing slashes in image urls(i.e. reddit does that) - image: image ? image.replace(/^\/|\/$/g, '') : null, - description: getContent(data, ["description"]), - items: items, - folder: feed.folder, - name: feed.name - }; - return Promise.resolve(content); - }); + +function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; } -const VIEW_ID = "RSS_FEED"; -const FILE_NAME_REGEX = /["\/<>:|?]/gm; -const TAG_REGEX = /([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/u; -const NUMBER_REGEX = /^[0-9]*$/gm; -//TODO: remove once api definition has been updated -/** - * taken from @licat(https://discord.com/channels/686053708261228577/840286264964022302/899037833552093184) - * @param html - */ -function sanitizeHTMLToDom(html) { - // @ts-ignore - return window.DOMPurify.sanitize(html, { - ALLOW_UNKNOWN_PROTOCOLS: true, - RETURN_DOM_FRAGMENT: true, - RETURN_DOM_IMPORT: true, - FORBID_TAGS: ['style'], - ADD_TAGS: ['iframe'], - ADD_ATTR: ['frameborder', 'allowfullscreen', 'allow', 'aria-label-position'], +// and applies them to the HTMLElements such as popper and arrow + +function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } }); -} -//taken from: https://stackoverflow.com/a/43467144/5589264 -function isValidHttpUrl(string) { - let url; - try { - url = new URL(string); - } - catch (_) { - return false; - } - return url.protocol === "http:" || url.protocol === "https:"; + }); } -class BaseModal extends obsidian.Modal { - //taken from github.com/valentine195/obsidian-admonition - setValidationError(textInput, message) { - textInput.inputEl.addClass("is-invalid"); - if (message) { - textInput.inputEl.parentElement.addClasses([ - "has-invalid-message", - "unset-align-items" - ]); - textInput.inputEl.parentElement.parentElement.addClass(".unset-align-items"); - let mDiv = textInput.inputEl.parentElement.querySelector(".invalid-feedback"); - if (!mDiv) { - mDiv = createDiv({ cls: "invalid-feedback" }); - } - mDiv.innerText = message; - mDiv.insertAfter(textInput.inputEl); - } - } - removeValidationError(textInput) { - textInput.inputEl.removeClass("is-invalid"); - textInput.inputEl.parentElement.removeClasses([ - "has-invalid-message", - "unset-align-items" - ]); - textInput.inputEl.parentElement.parentElement.removeClass(".unset-align-items"); - if (textInput.inputEl.parentElement.querySelector(".invalid-feedback")) { - textInput.inputEl.parentElement.removeChild(textInput.inputEl.parentElement.querySelector(".invalid-feedback")); - } - } -} +function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; -class FeedModal extends BaseModal { - constructor(plugin, feed) { - super(plugin.app); - this.saved = false; - if (feed) { - this.name = feed.name; - this.url = feed.url; - this.folder = feed.folder; - } - } - display() { - return __awaiter(this, void 0, void 0, function* () { - const { contentEl } = this; - contentEl.empty(); - let nameText; - const name = new obsidian.Setting(contentEl) - .setName("Name") - .setDesc("Name of feed") - .addText((text) => { - nameText = text; - text.setValue(this.name) - .onChange((value) => { - this.removeValidationError(text); - this.name = value; - }); - }); - name.controlEl.addClass("rss-setting-input"); - let urlText; - const url = new obsidian.Setting(contentEl) - .setName("url") - .setDesc("url of feed") - .addText((text) => { - urlText = text; - text.setValue(this.url) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.removeValidationError(text); - this.url = value; - })); - }); - url.controlEl.addClass("rss-setting-input"); - new obsidian.Setting(contentEl) - .setName("Folder") - .addText((text) => { - text.setValue(this.folder) - .onChange((value) => { - this.folder = value; - }); - }); - const footerEl = contentEl.createDiv(); - const footerButtons = new obsidian.Setting(footerEl); - footerButtons.addButton((b) => { - b.setTooltip("Save") - .setIcon("checkmark") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - let error = false; - if (!nameText.getValue().length) { - this.setValidationError(nameText, "you need to specify a name"); - error = true; - } - if (!urlText.getValue().length) { - this.setValidationError(urlText, "you need to specify a url"); - error = true; - } - if (!isValidHttpUrl(urlText.getValue())) { - this.setValidationError(urlText, "This url is not valid"); - error = true; - } - else { - const items = yield getFeedItems({ name: "test", url: urlText.getValue(), folder: "" }); - if (items.items.length == 0) { - this.setValidationError(urlText, "this feed does not have any entries"); - error = true; - } - } - if (error) { - new obsidian.Notice("please fix errors before saving."); - return; - } - this.saved = true; - this.close(); - })); - return b; - }); - footerButtons.addExtraButton((b) => { - b.setIcon("cross") - .setTooltip("Cancel") - .onClick(() => { - this.saved = false; - this.close(); - }); - return b; - }); - }); - } - onOpen() { - return __awaiter(this, void 0, void 0, function* () { - yield this.display(); - }); - } -} + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them -function createCommonjsModule(fn) { - var module = { exports: {} }; - return fn(module, module.exports), module.exports; -} + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } -var lodash_groupby = createCommonjsModule(function (module, exports) { -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; +} // eslint-disable-next-line import/no-unused-modules -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; +var applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] +}; -/** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; +function getBasePlacement(placement) { + return placement.split('-')[0]; +} -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991; +// import { isHTMLElement } from './instanceOf'; +function getBoundingClientRect(element, // eslint-disable-next-line unused-imports/no-unused-vars +includeScale) { -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - weakMapTag = '[object WeakMap]'; + var rect = element.getBoundingClientRect(); + var scaleX = 1; + var scaleY = 1; // FIXME: + // `offsetWidth` returns an integer while `getBoundingClientRect` + // returns a float. This results in `scaleX` or `scaleY` being + // non-1 when it should be for elements that aren't a full pixel in + // width or height. + // if (isHTMLElement(element) && includeScale) { + // const offsetHeight = element.offsetHeight; + // const offsetWidth = element.offsetWidth; + // // Do not attempt to divide by 0, otherwise we get `Infinity` as scale + // // Fallback to 1 in case both values are `0` + // if (offsetWidth > 0) { + // scaleX = rect.width / offsetWidth || 1; + // } + // if (offsetHeight > 0) { + // scaleY = rect.height / offsetHeight || 1; + // } + // } -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; + return { + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY + }; +} -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; +// means it doesn't take into account transforms. -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; + var width = element.offsetWidth; + var height = element.offsetHeight; -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; +} -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; +function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... -/** Detect free variable `exports`. */ -var freeExports = exports && !exports.nodeType && exports; -/** Detect free variable `module`. */ -var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && freeGlobal.process; + return false; +} -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - return freeProcess && freeProcess.binding('util'); - } catch (e) {} -}()); +function getComputedStyle(element) { + return getWindow(element).getComputedStyle(element); +} -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; +function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; +} -/** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ -function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array ? array.length : 0; +function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; +} - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); +function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; } - return accumulator; + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback + + ); } -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array ? array.length : 0; +function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle(element).position === 'fixed') { + return null; + } - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; + return element.offsetParent; +} // `.offsetParent` reports `null` for fixed elements, while absolute elements +// return the containing block + + +function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; + var isIE = navigator.userAgent.indexOf('Trident') !== -1; + + if (isIE && isHTMLElement(element)) { + // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport + var elementCss = getComputedStyle(element); + + if (elementCss.position === 'fixed') { + return null; } } - return false; -} -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} + var currentNode = getParentNode(element); -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - while (++index < n) { - result[index] = iteratee(index); + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } } - return result; -} -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} + return null; +} // Gets the closest ancestor positioned element. Handles some edge cases, +// such as table ancestors and cross browser bugs. -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; + +function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; } -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; +function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; } -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); +var max = Math.max; +var min = Math.min; +var round = Math.round; - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; +function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); } -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); +function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 }; } -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); +function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); +} - set.forEach(function(value) { - result[++index] = value; - }); - return result; +function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); } -/** Used for built-in method references. */ -var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; +var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); +}; -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; +function arrow(_ref) { + var _state$modifiersData$; -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; + if (!arrowElement || !popperOffsets) { + return; + } -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); // Prevents breaking syntax highlighting... -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); +} -/** Built-in value references. */ -var Symbol = root.Symbol, - Uint8Array = root.Uint8Array, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice; +function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); + if (arrowElement == null) { + return; + } // CSS selector -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'), - Map = getNative(root, 'Map'), - Promise = getNative(root, 'Promise'), - Set = getNative(root, 'Set'), - WeakMap = getNative(root, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; + if (!arrowElement) { + return; + } + } -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; + if (process.env.NODE_ENV !== "production") { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); + } + } - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + if (!contains(state.elements.popper, arrowElement)) { + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); + } + + return; } -} -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; -} + state.elements.arrow = arrowElement; +} // eslint-disable-next-line import/no-unused-modules -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; -} -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} +var arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] +}; -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +function getVariation(placement) { + return placement.split('-')[1]; } -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; +var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' +}; // Round the offsets to the nearest suitable subpixel based on the DPR. +// Zooming can change the DPR, but it seems to report a value that will +// cleanly divide the values into the appropriate subpixels. + +function roundOffsetsByDPR(_ref) { + var x = _ref.x, + y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(round(x * dpr) / dpr) || 0, + y: round(round(y * dpr) / dpr) || 0 + }; } -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; +function mapToStyles(_ref2) { + var _Object$assign2; -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + variation = _ref2.variation, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets, + _ref3$x = _ref3.x, + x = _ref3$x === void 0 ? 0 : _ref3$x, + _ref3$y = _ref3.y, + y = _ref3$y === void 0 ? 0 : _ref3$y; -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; -} + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; -} + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); + if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it - return index < 0 ? undefined : data[index][1]; -} -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} + offsetParent = offsetParent; -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; // $FlowFixMe[prop-missing] - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; + y -= offsetParent[heightProp] - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; // $FlowFixMe[prop-missing] + + x -= offsetParent[widthProp] - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } } - return this; -} -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; + if (gpuAcceleration) { + var _Object$assign; - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } -} -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); } -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); -} +function computeStyles(_ref4) { + var state = _ref4.state, + options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} + if (process.env.NODE_ENV !== "production") { + var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ''; -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} + if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); + } + } -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; -} + var commonStyles = { + placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration + }; -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values ? values.length : 0; + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +var computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} +}; + +var passive = { + passive: true +}; + +function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); } -} -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} + if (resize) { + window.addEventListener('resize', instance.update, passive); + } -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; +} // eslint-disable-next-line import/no-unused-modules -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - this.__data__ = new ListCache(entries); -} -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; -} +var eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} +}; -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - return this.__data__['delete'](key); +var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' +}; +function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); } -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); +var hash = { + start: 'end', + end: 'start' +}; +function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); } -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); +function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; } -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var cache = this.__data__; - if (cache instanceof ListCache) { - var pairs = cache.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - return this; - } - cache = this.__data__ = new MapCache(pairs); - } - cache.set(key, value); - return this; +function getWindowScrollBarX(element) { + // If has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } -// Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; +function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper + // can be obscured underneath it. + // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even + // if it isn't open, so if this isn't available, the popper will be detected + // to overflow the bottom of the screen too early. - var length = result.length, - skipIndexes = !!length; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) + // In Chrome, it returns a value very close to 0 (+/-) but contains rounding + // errors due to floating point numbers, so we need to check precision. + // Safari returns a number <= 0, usually < -1 when pinch-zoomed + // Feature detection fails in mobile emulation mode in Chrome. + // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < + // 0.001 + // Fallback here: "Not Safari" userAgent - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { - result.push(key); + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; } } - return result; + + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; } -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } +// of the `` and `` rect bounds if horizontally scrollable + +function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + + if (getComputedStyle(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; } - return -1; + + return { + width: width, + height: height, + x: x, + y: y + }; } -/** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ -function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; +function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = getComputedStyle(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } -/** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEach = createBaseEach(baseForOwn); +function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); + return getScrollParent(getParentNode(node)); } -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = isKey(path, object) ? [path] : castPath(path); +/* +given a DOM element, return the list of all scroll parents, up the list of ancesors +until we get to the top window object. This list is what we attach scroll listeners +to, because if any of these parent elements scroll, we'll need to re-calculate the +reference element's position. +*/ - var index = 0, - length = path.length; +function listScrollParents(element, list) { + var _element$ownerDocumen; - while (object != null && index < length) { - object = object[toKey(path[index++])]; + if (list === void 0) { + list = []; } - return (index && index == length) ? object : undefined; + + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))); } -/** - * The base implementation of `getTag`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - return objectToString.call(value); +function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); } -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); +function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; } -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @param {boolean} [bitmask] The bitmask of comparison flags. - * The bitmask may be composed of the following flags: - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, customizer, bitmask, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); -} +function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); +} // A "clipping parent" is an overflowable container with the characteristic of +// clipping (or hiding) overflowing elements with a position different from +// `initial` -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = arrayTag, - othTag = arrayTag; - if (!objIsArr) { - objTag = getTag(object); - objTag = objTag == argsTag ? objectTag : objTag; - } - if (!othIsArr) { - othTag = getTag(other); - othTag = othTag == argsTag ? objectTag : othTag; - } - var objIsObj = objTag == objectTag && !isHostObject(object), - othIsObj = othTag == objectTag && !isHostObject(other), - isSameTag = objTag == othTag; +function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) - : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); - } - if (!(bitmask & PARTIAL_COMPARE_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + if (!isElement(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, equalFunc, customizer, bitmask, stack); + return clippingParents.filter(function (clippingParent) { + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); +} // Gets the maximum area that the element is visible in due to any number of +// clipping parents + + +function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; } -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; +function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) - : result - )) { - return false; - } + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; } } - return true; -} -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); + return offsets; } -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; -} +function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); -} - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(state.elements.reference); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right }; -} + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); - }; -} -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; + return overflowOffsets; } -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; +function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value) { - return isArray(value) ? value : stringToPath(value); -} -/** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ -function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); - return func(collection, setter, baseIteratee(iteratee), accumulator); - }; -} + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; -/** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); } -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; +function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; } -/** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - arrLength = array.length, - othLength = other.length; +function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; + if (state.modifiersData[name]._skip) { + return; } - var index = -1, - result = true, - seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; - stack.set(array, other); - stack.set(other, array); + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); + var _basePlacement = getBasePlacement(placement); + + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; + + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!seen.has(othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { - return seen.add(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, customizer, bitmask, stack) - )) { - result = false; + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; break; } + + checksMap.set(placement, checks); } - stack['delete'](array); - stack['delete'](other); - return result; -} -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); - case errorTag: - return object.name == other.name && object.message == other.message; + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); - case mapTag: - var convert = mapToArray; + if (_ret === "break") break; + } + } - case setTag: - var isPartial = bitmask & PARTIAL_COMPARE_FLAG; - convert || (convert = setToArray); + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } +} // eslint-disable-next-line import/no-unused-modules - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= UNORDERED_COMPARE_FLAG; - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); - stack['delete'](object); - return result; +var flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } +}; - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } +function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; } - return false; + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; } -/** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; +function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); +} - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); +function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); +} // eslint-disable-next-line import/no-unused-modules - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; +var hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide +}; - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; -} +function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys(object), - length = result.length; + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; +} - while (length--) { - var key = result[length], - value = object[key]; +function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; - result[length] = [key, value, isStrictComparable(value)]; + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; } - return result; -} - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules -// Fallback for data views, maps, sets, and weak maps in IE 11, -// for data views in Edge < 14, and promises in Node.js. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = objectToString.call(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : undefined; - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; -} +var offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset +}; -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = isKey(path, object) ? [path] : castPath(path); +function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); +} // eslint-disable-next-line import/no-unused-modules - var result, - index = -1, - length = path.length; - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result) { - return result; - } - var length = object ? object.length : 0; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); -} +var popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} +}; -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && - (typeof value == 'number' || reIsUint.test(value)) && - (value > -1 && value % 1 == 0 && value < length); +function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; } -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; +function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} + if (checkMainAxis || checkAltAxis) { + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; + var max$1 = popperOffsets[mainAxis] - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; + var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; + var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; - return value === proto; -} + if (checkMainAxis) { + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject(value); -} + if (checkAltAxis) { + var _mainSide = mainAxis === 'x' ? top : left; -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} + var _altSide = mainAxis === 'x' ? bottom : right; -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoize(function(string) { - string = toString(string); + var _offset = popperOffsets[altAxis]; - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); + var _min = _offset + overflow[_mainSide]; -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} + var _max = _offset - overflow[_altSide]; -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} + var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } } - return ''; -} -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ -var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +var preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] +}; + +function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; +} + +function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); } else { - result[key] = [value]; + return getHTMLElementScroll(node); } -}); +} -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); +function isElementScaled(element) { + var rect = element.getBoundingClientRect(); + var scaleX = rect.width / element.offsetWidth || 1; + var scaleY = rect.height / element.offsetHeight || 1; + return scaleX !== 1 || scaleY !== 1; +} // Returns the composite rect of an element relative to its offsetParent. +// Composite means it takes into account transforms as well as layout. + + +function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - if (cache.has(key)) { - return cache.get(key); + var isOffsetParentAnElement = isHTMLElement(offsetParent); + isHTMLElement(offsetParent) && isElementScaled(offsetParent); + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; + + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; } -// Assign cache to `_.memoize`. -memoize.Cache = MapCache; +function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; } -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase + + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); } -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; +function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); + return pending; + }; } -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} +function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; + return [].concat(args).reduce(function (p, c) { + return p.replace(/%s/, c); + }, str); } -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} +var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; +var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; +var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; +function validateModifiers(modifiers) { + modifiers.forEach(function (modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` + .filter(function (value, index, self) { + return self.indexOf(value) === index; + }).forEach(function (key) { + switch (key) { + case 'name': + if (typeof modifier.name !== 'string') { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); + } -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} + break; -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} + case 'enabled': + if (typeof modifier.enabled !== 'boolean') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); + } -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} + break; -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + case 'phase': + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); + } -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} + break; -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} + case 'fn': + if (typeof modifier.fn !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); + } -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); -} + break; -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} + case 'effect': + if (modifier.effect != null && typeof modifier.effect !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); + } -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} + break; -/** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ -function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); -} + case 'requires': + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); + } -module.exports = groupBy; -}); + break; -var top = 'top'; -var bottom = 'bottom'; -var right = 'right'; -var left = 'left'; -var auto = 'auto'; -var basePlacements = [top, bottom, right, left]; -var start = 'start'; -var end = 'end'; -var clippingParents = 'clippingParents'; -var viewport = 'viewport'; -var popper = 'popper'; -var reference = 'reference'; -var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); -}, []); -var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); -}, []); // modifiers that need to read the DOM + case 'requiresIfExists': + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); + } -var beforeRead = 'beforeRead'; -var read = 'read'; -var afterRead = 'afterRead'; // pure-logic modifiers + break; -var beforeMain = 'beforeMain'; -var main = 'main'; -var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + case 'options': + case 'data': + break; -var beforeWrite = 'beforeWrite'; -var write = 'write'; -var afterWrite = 'afterWrite'; -var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + default: + console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { + return "\"" + s + "\""; + }).join(', ') + "; but \"" + key + "\" was provided."); + } -function getNodeName(element) { - return element ? (element.nodeName || '').toLowerCase() : null; + modifier.requires && modifier.requires.forEach(function (requirement) { + if (modifiers.find(function (mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); } -function getWindow(node) { - if (node == null) { - return window; - } - - if (node.toString() !== '[object Window]') { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; - } +function uniqueBy(arr, fn) { + var identifiers = new Set(); + return arr.filter(function (item) { + var identifier = fn(item); - return node; + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); } -function isElement(node) { - var OwnElement = getWindow(node).Element; - return node instanceof OwnElement || node instanceof Element; -} +function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values -function isHTMLElement(node) { - var OwnElement = getWindow(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; + return Object.keys(merged).map(function (key) { + return merged[key]; + }); } -function isShadowRoot(node) { - // IE 11 has no ShadowRoot - if (typeof ShadowRoot === 'undefined') { - return false; +var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; +var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; +var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' +}; + +function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } - var OwnElement = getWindow(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); } -// and applies them to the HTMLElements such as popper and arrow +function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } -function applyStyles(_ref) { - var state = _ref.state; - Object.keys(state.elements).forEach(function (name) { - var style = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; // arrow is optional + virtual elements + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } // Flow doesn't support to extend this property, but it's the most - // effective way to apply styles to an HTMLElement - // $FlowFixMe[cannot-write] + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (name) { - var value = attributes[name]; + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); // Validate the provided modifiers so that the consumer will get warned + // if one of the modifiers is invalid for any reason - if (value === false) { - element.removeAttribute(name); - } else { - element.setAttribute(name, value === true ? '' : value); - } - }); - }); -} + if (process.env.NODE_ENV !== "production") { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); -function effect$2(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: '0', - top: '0', - margin: '0' - }, - arrow: { - position: 'absolute' - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - state.styles = initialStyles; + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function (_ref2) { + var name = _ref2.name; + return name === 'flip'; + }); - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); + } + } - return function () { - Object.keys(state.elements).forEach(function (name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + var _getComputedStyle = getComputedStyle(popper), + marginTop = _getComputedStyle.marginTop, + marginRight = _getComputedStyle.marginRight, + marginBottom = _getComputedStyle.marginBottom, + marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can + // cause bugs with positioning, so we'll warn the consumer - var style = styleProperties.reduce(function (style, property) { - style[property] = ''; - return style; - }, {}); // arrow is optional + virtual elements - if (!isHTMLElement(element) || !getNodeName(element)) { - return; - } + if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); + } + } - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (attribute) { - element.removeAttribute(attribute); - }); - }); - }; -} // eslint-disable-next-line import/no-unused-modules + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore -var applyStyles$1 = { - name: 'applyStyles', - enabled: true, - phase: 'write', - fn: applyStyles, - effect: effect$2, - requires: ['computeStyles'] -}; + if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } -function getBasePlacement(placement) { - return placement.split('-')[0]; -} + return; + } // Store the reference and popper rects to be read by modifiers -// import { isHTMLElement } from './instanceOf'; -function getBoundingClientRect(element, // eslint-disable-next-line unused-imports/no-unused-vars -includeScale) { - var rect = element.getBoundingClientRect(); - var scaleX = 1; - var scaleY = 1; // FIXME: - // `offsetWidth` returns an integer while `getBoundingClientRect` - // returns a float. This results in `scaleX` or `scaleY` being - // non-1 when it should be for elements that aren't a full pixel in - // width or height. - // if (isHTMLElement(element) && includeScale) { - // const offsetHeight = element.offsetHeight; - // const offsetWidth = element.offsetWidth; - // // Do not attempt to divide by 0, otherwise we get `Infinity` as scale - // // Fallback to 1 in case both values are `0` - // if (offsetWidth > 0) { - // scaleX = rect.width / offsetWidth || 1; - // } - // if (offsetHeight > 0) { - // scaleY = rect.height / offsetHeight || 1; - // } - // } + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect - return { - width: rect.width / scaleX, - height: rect.height / scaleY, - top: rect.top / scaleY, - right: rect.right / scaleX, - bottom: rect.bottom / scaleY, - left: rect.left / scaleX, - x: rect.left / scaleX, - y: rect.top / scaleY - }; -} + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` -// means it doesn't take into account transforms. + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; -function getLayoutRect(element) { - var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. - // Fixes https://github.com/popperjs/popper-core/issues/1223 + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (process.env.NODE_ENV !== "production") { + __debug_loops__ += 1; - var width = element.offsetWidth; - var height = element.offsetHeight; - - if (Math.abs(clientRect.width - width) <= 1) { - width = clientRect.width; - } - - if (Math.abs(clientRect.height - height) <= 1) { - height = clientRect.height; - } - - return { - x: element.offsetLeft, - y: element.offsetTop, - width: width, - height: height - }; -} - -function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method - - if (parent.contains(child)) { - return true; - } // then fallback to custom implementation with Shadow DOM support - else if (rootNode && isShadowRoot(rootNode)) { - var next = child; - - do { - if (next && parent.isSameNode(next)) { - return true; - } // $FlowFixMe[prop-missing]: need a better way to handle this... - - - next = next.parentNode || next.host; - } while (next); - } // Give up, the result is false - - - return false; -} - -function getComputedStyle(element) { - return getWindow(element).getComputedStyle(element); -} - -function isTableElement(element) { - return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; -} + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } -function getDocumentElement(element) { - // $FlowFixMe[incompatible-return]: assume body is always available - return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] - element.document) || window.document).documentElement; -} + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } -function getParentNode(element) { - if (getNodeName(element) === 'html') { - return element; - } + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; - return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle - // $FlowFixMe[incompatible-return] - // $FlowFixMe[prop-missing] - element.assignedSlot || // step into the shadow DOM of the parent of a slotted node - element.parentNode || ( // DOM Element detected - isShadowRoot(element) ? element.host : null) || // ShadowRoot detected - // $FlowFixMe[incompatible-call]: HTMLElement is a Node - getDocumentElement(element) // fallback + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; - ); -} + if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } -function getTrueOffsetParent(element) { - if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 - getComputedStyle(element).position === 'fixed') { - return null; - } + return instance; + } - return element.offsetParent; -} // `.offsetParent` reports `null` for fixed elements, while absolute elements -// return the containing block + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; -function getContainingBlock(element) { - var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; - var isIE = navigator.userAgent.indexOf('Trident') !== -1; + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); - if (isIE && isHTMLElement(element)) { - // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport - var elementCss = getComputedStyle(element); + var noopFn = function noopFn() {}; - if (elementCss.position === 'fixed') { - return null; + effectCleanupFns.push(cleanupFn || noopFn); + } + }); } - } - - var currentNode = getParentNode(element); - - while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { - var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that - // create a containing block. - // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { - return currentNode; - } else { - currentNode = currentNode.parentNode; + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; } - } - - return null; -} // Gets the closest ancestor positioned element. Handles some edge cases, -// such as table ancestors and cross browser bugs. - - -function getOffsetParent(element) { - var window = getWindow(element); - var offsetParent = getTrueOffsetParent(element); - - while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') { - offsetParent = getTrueOffsetParent(offsetParent); - } - - if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) { - return window; - } - - return offsetParent || getContainingBlock(element) || window; -} -function getMainAxisFromPlacement(placement) { - return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; -} - -var max = Math.max; -var min = Math.min; -var round = Math.round; - -function within(min$1, value, max$1) { - return max(min$1, min(value, max$1)); -} - -function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 + return instance; }; } -function mergePaddingObject(paddingObject) { - return Object.assign({}, getFreshSideObject(), paddingObject); -} - -function expandToHashMap(value, keys) { - return keys.reduce(function (hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); -} +var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; +var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers +}); // eslint-disable-next-line import/no-unused-modules -var toPaddingObject = function toPaddingObject(padding, state) { - padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { - placement: state.placement - })) : padding; - return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); +// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes +const wrapAround = (value, size) => { + return ((value % size) + size) % size; }; - -function arrow(_ref) { - var _state$modifiersData$; - - var state = _ref.state, - name = _ref.name, - options = _ref.options; - var arrowElement = state.elements.arrow; - var popperOffsets = state.modifiersData.popperOffsets; - var basePlacement = getBasePlacement(state.placement); - var axis = getMainAxisFromPlacement(basePlacement); - var isVertical = [left, right].indexOf(basePlacement) >= 0; - var len = isVertical ? 'height' : 'width'; - - if (!arrowElement || !popperOffsets) { - return; - } - - var paddingObject = toPaddingObject(options.padding, state); - var arrowRect = getLayoutRect(arrowElement); - var minProp = axis === 'y' ? top : left; - var maxProp = axis === 'y' ? bottom : right; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; - var startDiff = popperOffsets[axis] - state.rects.reference[axis]; - var arrowOffsetParent = getOffsetParent(arrowElement); - var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is - // outside of the popper bounds - - var min = paddingObject[minProp]; - var max = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset = within(min, center, max); // Prevents breaking syntax highlighting... - - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); +class Suggest { + constructor(owner, containerEl, scope) { + this.owner = owner; + this.containerEl = containerEl; + containerEl.on("click", ".suggestion-item", this.onSuggestionClick.bind(this)); + containerEl.on("mousemove", ".suggestion-item", this.onSuggestionMouseover.bind(this)); + scope.register([], "ArrowUp", (event) => { + if (!event.isComposing) { + this.setSelectedItem(this.selectedItem - 1, true); + return false; + } + }); + scope.register([], "ArrowDown", (event) => { + if (!event.isComposing) { + this.setSelectedItem(this.selectedItem + 1, true); + return false; + } + }); + scope.register([], "Enter", (event) => { + if (!event.isComposing) { + this.useSelectedItem(event); + return false; + } + }); + } + onSuggestionClick(event, el) { + event.preventDefault(); + const item = this.suggestions.indexOf(el); + this.setSelectedItem(item, false); + this.useSelectedItem(event); + } + onSuggestionMouseover(_event, el) { + const item = this.suggestions.indexOf(el); + this.setSelectedItem(item, false); + } + setSuggestions(values) { + this.containerEl.empty(); + const suggestionEls = []; + values.forEach((value) => { + const suggestionEl = this.containerEl.createDiv("suggestion-item"); + this.owner.renderSuggestion(value, suggestionEl); + suggestionEls.push(suggestionEl); + }); + this.values = values; + this.suggestions = suggestionEls; + this.setSelectedItem(0, false); + } + useSelectedItem(event) { + const currentValue = this.values[this.selectedItem]; + if (currentValue) { + this.owner.selectSuggestion(currentValue, event); + } + } + setSelectedItem(selectedIndex, scrollIntoView) { + const normalizedIndex = wrapAround(selectedIndex, this.suggestions.length); + const prevSelectedSuggestion = this.suggestions[this.selectedItem]; + const selectedSuggestion = this.suggestions[normalizedIndex]; + prevSelectedSuggestion === null || prevSelectedSuggestion === void 0 ? void 0 : prevSelectedSuggestion.removeClass("is-selected"); + selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.addClass("is-selected"); + this.selectedItem = normalizedIndex; + if (scrollIntoView) { + selectedSuggestion.scrollIntoView(false); + } + } } - -function effect$1(_ref2) { - var state = _ref2.state, - options = _ref2.options; - var _options$element = options.element, - arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; - - if (arrowElement == null) { - return; - } // CSS selector - - - if (typeof arrowElement === 'string') { - arrowElement = state.elements.popper.querySelector(arrowElement); - - if (!arrowElement) { - return; +class TextInputSuggest { + constructor(app, inputEl) { + this.app = app; + this.inputEl = inputEl; + this.scope = new obsidian.Scope(); + this.suggestEl = createDiv("suggestion-container"); + const suggestion = this.suggestEl.createDiv("suggestion"); + this.suggest = new Suggest(this, suggestion, this.scope); + this.scope.register([], "Escape", this.close.bind(this)); + this.inputEl.addEventListener("input", this.onInputChanged.bind(this)); + this.inputEl.addEventListener("focus", this.onInputChanged.bind(this)); + this.inputEl.addEventListener("blur", this.close.bind(this)); + this.suggestEl.on("mousedown", ".suggestion-container", (event) => { + event.preventDefault(); + }); } - } - - if (process.env.NODE_ENV !== "production") { - if (!isHTMLElement(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); + onInputChanged() { + const inputStr = this.inputEl.value; + const suggestions = this.getSuggestions(inputStr); + if (!suggestions) { + this.close(); + return; + } + if (suggestions.length > 0) { + this.suggest.setSuggestions(suggestions); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.open(this.app.dom.appContainerEl, this.inputEl); + } + else { + this.close(); + } } - } - - if (!contains(state.elements.popper, arrowElement)) { - if (process.env.NODE_ENV !== "production") { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); + open(container, inputEl) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.app.keymap.pushScope(this.scope); + container.appendChild(this.suggestEl); + this.popper = createPopper(inputEl, this.suggestEl, { + placement: "bottom-start", + modifiers: [ + { + name: "sameWidth", + enabled: true, + fn: ({ state, instance }) => { + // Note: positioning needs to be calculated twice - + // first pass - positioning it according to the width of the popper + // second pass - position it with the width bound to the reference element + // we need to early exit to avoid an infinite loop + const targetWidth = `${state.rects.reference.width}px`; + if (state.styles.popper.width === targetWidth) { + return; + } + state.styles.popper.width = targetWidth; + instance.update(); + }, + phase: "beforeWrite", + requires: ["computeStyles"], + }, + ], + }); + } + close() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.app.keymap.popScope(this.scope); + this.suggest.setSuggestions([]); + if (this.popper) + this.popper.destroy(); + this.suggestEl.detach(); } - - return; - } - - state.elements.arrow = arrowElement; -} // eslint-disable-next-line import/no-unused-modules - - -var arrow$1 = { - name: 'arrow', - enabled: true, - phase: 'main', - fn: arrow, - effect: effect$1, - requires: ['popperOffsets'], - requiresIfExists: ['preventOverflow'] -}; - -function getVariation(placement) { - return placement.split('-')[1]; } -var unsetSides = { - top: 'auto', - right: 'auto', - bottom: 'auto', - left: 'auto' -}; // Round the offsets to the nearest suitable subpixel based on the DPR. -// Zooming can change the DPR, but it seems to report a value that will -// cleanly divide the values into the appropriate subpixels. - -function roundOffsetsByDPR(_ref) { - var x = _ref.x, - y = _ref.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: round(round(x * dpr) / dpr) || 0, - y: round(round(y * dpr) / dpr) || 0 - }; +// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes +class FolderSuggest extends TextInputSuggest { + getSuggestions(inputStr) { + const abstractFiles = this.app.vault.getAllLoadedFiles(); + const folders = []; + const lowerCaseInputStr = inputStr.toLowerCase(); + abstractFiles.forEach((folder) => { + if (folder instanceof obsidian.TFolder && + folder.path.toLowerCase().contains(lowerCaseInputStr)) { + folders.push(folder); + } + }); + return folders; + } + renderSuggestion(file, el) { + el.setText(file.path); + } + selectSuggestion(file) { + this.inputEl.value = file.path; + this.inputEl.trigger("input"); + this.close(); + } } -function mapToStyles(_ref2) { - var _Object$assign2; - - var popper = _ref2.popper, - popperRect = _ref2.popperRect, - placement = _ref2.placement, - variation = _ref2.variation, - offsets = _ref2.offsets, - position = _ref2.position, - gpuAcceleration = _ref2.gpuAcceleration, - adaptive = _ref2.adaptive, - roundOffsets = _ref2.roundOffsets; - - var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets, - _ref3$x = _ref3.x, - x = _ref3$x === void 0 ? 0 : _ref3$x, - _ref3$y = _ref3.y, - y = _ref3$y === void 0 ? 0 : _ref3$y; - - var hasX = offsets.hasOwnProperty('x'); - var hasY = offsets.hasOwnProperty('y'); - var sideX = left; - var sideY = top; - var win = window; - - if (adaptive) { - var offsetParent = getOffsetParent(popper); - var heightProp = 'clientHeight'; - var widthProp = 'clientWidth'; +class BaseModal extends obsidian.Modal { + //taken from github.com/valentine195/obsidian-admonition + setValidationError(textInput, message) { + textInput.inputEl.addClass("is-invalid"); + if (message) { + textInput.inputEl.parentElement.addClasses([ + "has-invalid-message", + "unset-align-items" + ]); + textInput.inputEl.parentElement.parentElement.addClass(".unset-align-items"); + let mDiv = textInput.inputEl.parentElement.querySelector(".invalid-feedback"); + if (!mDiv) { + mDiv = createDiv({ cls: "invalid-feedback" }); + } + mDiv.innerText = message; + mDiv.insertAfter(textInput.inputEl); + } + } + removeValidationError(textInput) { + textInput.inputEl.removeClass("is-invalid"); + textInput.inputEl.parentElement.removeClasses([ + "has-invalid-message", + "unset-align-items" + ]); + textInput.inputEl.parentElement.parentElement.removeClass(".unset-align-items"); + if (textInput.inputEl.parentElement.querySelector(".invalid-feedback")) { + textInput.inputEl.parentElement.removeChild(textInput.inputEl.parentElement.querySelector(".invalid-feedback")); + } + } +} - if (offsetParent === getWindow(popper)) { - offsetParent = getDocumentElement(popper); +var FilterType; +(function (FilterType) { + FilterType["TAGS"] = "all articles with tags"; + FilterType["UNREAD"] = "All unread articles(from folders)"; + FilterType["READ"] = "All read articles(from folders)"; + FilterType["FAVORITES"] = "Favorites(from folders)"; +})(FilterType || (FilterType = {})); +var SortOrder; +(function (SortOrder) { + SortOrder["DATE_NEWEST"] = "Publication date (new to old)"; + SortOrder["DATE_OLDEST"] = "Publication date (old to new)"; + SortOrder["ALPHABET_NORMAL"] = "Name (A to Z)"; + SortOrder["ALPHABET_INVERTED"] = "Name (Z to A)"; +})(SortOrder || (SortOrder = {})); +class FilteredFolderModal extends BaseModal { + constructor(plugin, folder) { + super(plugin.app); + this.filterContent = ""; + this.saved = false; + if (folder) { + this.name = folder.name; + this.filterType = folder.filterType; + this.filterContent = folder.filterContent; + this.sortOrder = folder.sortOrder; + } + } + display() { + return __awaiter(this, void 0, void 0, function* () { + const { contentEl } = this; + contentEl.empty(); + let nameText; + const name = new obsidian.Setting(contentEl) + .setName("Name") + .addText((text) => { + nameText = text; + text.setValue(this.name) + .onChange((value) => { + this.removeValidationError(text); + this.name = value; + }); + }); + name.controlEl.addClass("rss-setting-input"); + const type = new obsidian.Setting(contentEl) + .setName("Type") + .setDesc("type of filter") + .addDropdown((dropdown) => { + for (const option in FilterType) { + // @ts-ignore + dropdown.addOption(option, FilterType[option]); + } + dropdown + .setValue(this.filterType) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.filterType = value; + })); + }); + type.controlEl.addClass("rss-setting-input"); + new obsidian.Setting(contentEl) + .setName("Filter") + .setDesc("Folders/Tags to filter on, split by ,") + .addText((text) => { + text + .setValue(this.filterContent) + .onChange((value) => { + this.filterContent = value; + this.removeValidationError(text); + }); + }); + const sorting = new obsidian.Setting(contentEl) + .setName("Order by") + .addDropdown((dropdown) => { + for (const order in SortOrder) { + // @ts-ignore + dropdown.addOption(order, SortOrder[order]); + } + dropdown + .setValue(this.sortOrder) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.sortOrder = value; + })); + }); + sorting.controlEl.addClass("rss-setting-input"); + const footerEl = contentEl.createDiv(); + const footerButtons = new obsidian.Setting(footerEl); + footerButtons.addButton((b) => { + b.setTooltip("Save") + .setIcon("checkmark") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + let error = false; + if (!nameText.getValue().length) { + this.setValidationError(nameText, "you need to specify a name"); + error = true; + } + if (error) { + new obsidian.Notice("please fix errors before saving."); + return; + } + this.saved = true; + this.close(); + })); + return b; + }); + footerButtons.addExtraButton((b) => { + b.setIcon("cross") + .setTooltip("Cancel") + .onClick(() => { + this.saved = false; + this.close(); + }); + return b; + }); + }); + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + yield this.display(); + }); + } +} - if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') { - heightProp = 'scrollHeight'; - widthProp = 'scrollWidth'; - } - } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; +function createCommonjsModule(fn) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; +} - offsetParent = offsetParent; +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ - if (placement === top || (placement === left || placement === right) && variation === end) { - sideY = bottom; // $FlowFixMe[prop-missing] +var lodash_sortby = createCommonjsModule(function (module, exports) { +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - y -= offsetParent[heightProp] - popperRect.height; - y *= gpuAcceleration ? 1 : -1; - } +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; - if (placement === left || (placement === top || placement === bottom) && variation === end) { - sideX = right; // $FlowFixMe[prop-missing] +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - x -= offsetParent[widthProp] - popperRect.width; - x *= gpuAcceleration ? 1 : -1; - } - } +/** Used to compose bitmasks for comparison styles. */ +var UNORDERED_COMPARE_FLAG = 1, + PARTIAL_COMPARE_FLAG = 2; - var commonStyles = Object.assign({ - position: position - }, adaptive && unsetSides); +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; - if (gpuAcceleration) { - var _Object$assign; +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); - } +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; - return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); -} +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; -function computeStyles(_ref4) { - var state = _ref4.state, - options = _ref4.options; - var _options$gpuAccelerat = options.gpuAcceleration, - gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, - _options$adaptive = options.adaptive, - adaptive = _options$adaptive === void 0 ? true : _options$adaptive, - _options$roundOffsets = options.roundOffsets, - roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - if (process.env.NODE_ENV !== "production") { - var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ''; +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; - if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); - } - } - - var commonStyles = { - placement: getBasePlacement(state.placement), - variation: getVariation(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration - }; - - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive: adaptive, - roundOffsets: roundOffsets - }))); - } - - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.arrow, - position: 'absolute', - adaptive: false, - roundOffsets: roundOffsets - }))); - } +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-placement': state.placement - }); -} // eslint-disable-next-line import/no-unused-modules +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; -var computeStyles$1 = { - name: 'computeStyles', - enabled: true, - phase: 'beforeWrite', - fn: computeStyles, - data: {} -}; +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; -var passive = { - passive: true -}; +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; -function effect(_ref) { - var state = _ref.state, - instance = _ref.instance, - options = _ref.options; - var _options$scroll = options.scroll, - scroll = _options$scroll === void 0 ? true : _options$scroll, - _options$resize = options.resize, - resize = _options$resize === void 0 ? true : _options$resize; - var window = getWindow(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.addEventListener('scroll', instance.update, passive); - }); - } +/** Detect free variable `exports`. */ +var freeExports = exports && !exports.nodeType && exports; - if (resize) { - window.addEventListener('resize', instance.update, passive); - } +/** Detect free variable `module`. */ +var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; - return function () { - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.removeEventListener('scroll', instance.update, passive); - }); - } +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; - if (resize) { - window.removeEventListener('resize', instance.update, passive); - } - }; -} // eslint-disable-next-line import/no-unused-modules +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + return freeProcess && freeProcess.binding('util'); + } catch (e) {} +}()); -var eventListeners = { - name: 'eventListeners', - enabled: true, - phase: 'write', - fn: function fn() {}, - effect: effect, - data: {} -}; +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; -var hash$1 = { - left: 'right', - right: 'left', - bottom: 'top', - top: 'bottom' -}; -function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash$1[matched]; - }); +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); } -var hash = { - start: 'end', - end: 'start' -}; -function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function (matched) { - return hash[matched]; - }); -} +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array ? array.length : 0, + result = Array(length); -function getWindowScroll(node) { - var win = getWindow(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft: scrollLeft, - scrollTop: scrollTop - }; + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; } -function getWindowScrollBarX(element) { - // If has a CSS width greater than the viewport, then this will be - // incorrect for RTL. - // Popper 1 is broken in this case and never had a bug report so let's assume - // it's not an issue. I don't think anyone ever specifies width on - // anyway. - // Browsers where the left scrollbar doesn't cause an issue report `0` for - // this (e.g. Edge 2019, IE11, Safari) - return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; -} +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; -function getViewportRect(element) { - var win = getWindow(element); - var html = getDocumentElement(element); - var visualViewport = win.visualViewport; - var width = html.clientWidth; - var height = html.clientHeight; - var x = 0; - var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper - // can be obscured underneath it. - // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even - // if it isn't open, so if this isn't available, the popper will be detected - // to overflow the bottom of the screen too early. + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) - // In Chrome, it returns a value very close to 0 (+/-) but contains rounding - // errors due to floating point numbers, so we need to check precision. - // Safari returns a number <= 0, usually < -1 when pinch-zoomed - // Feature detection fails in mobile emulation mode in Chrome. - // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < - // 0.001 - // Fallback here: "Not Safari" userAgent +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array ? array.length : 0; - if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; } } + return false; +} - return { - width: width, - height: height, - x: x + getWindowScrollBarX(element), - y: y +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; }; } -// of the `` and `` rect bounds if horizontally scrollable +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; -function getDocumentRect(element) { - var _element$ownerDocumen; + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; +} - var html = getDocumentElement(element); - var winScroll = getWindowScroll(element); - var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; - var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x = -winScroll.scrollLeft + getWindowScrollBarX(element); - var y = -winScroll.scrollTop; +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); - if (getComputedStyle(body || html).direction === 'rtl') { - x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + while (++index < n) { + result[index] = iteratee(index); } + return result; +} - return { - width: width, - height: height, - x: x, - y: y +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); }; } -function isScrollParent(element) { - // Firefox wants us to check `-x` and `-y` variations as well - var _getComputedStyle = getComputedStyle(element), - overflow = _getComputedStyle.overflow, - overflowX = _getComputedStyle.overflowX, - overflowY = _getComputedStyle.overflowY; - - return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; } -function getScrollParent(node) { - if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { - // $FlowFixMe[incompatible-return]: assume body is always available - return node.ownerDocument.body; - } - - if (isHTMLElement(node) && isScrollParent(node)) { - return node; +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} } - - return getScrollParent(getParentNode(node)); + return result; } -/* -given a DOM element, return the list of all scroll parents, up the list of ancesors -until we get to the top window object. This list is what we attach scroll listeners -to, because if any of these parent elements scroll, we'll need to re-calculate the -reference element's position. -*/ - -function listScrollParents(element, list) { - var _element$ownerDocumen; +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); - if (list === void 0) { - list = []; - } + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} - var scrollParent = getScrollParent(element); - var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); - var win = getWindow(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here - updatedList.concat(listScrollParents(getParentNode(target))); +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; } -function rectToClientRect(rect) { - return Object.assign({}, rect, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; }); + return result; } -function getInnerBoundingClientRect(element) { - var rect = getBoundingClientRect(element); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; -} +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; -function getClientRectFromMixedType(element, clippingParent) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); -} // A "clipping parent" is an overflowable container with the characteristic of -// clipping (or hiding) overflowing elements with a position different from -// `initial` +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); -function getClippingParents(element) { - var clippingParents = listScrollParents(getParentNode(element)); - var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0; - var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - if (!isElement(clipperElement)) { - return []; - } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; - return clippingParents.filter(function (clippingParent) { - return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; - }); -} // Gets the maximum area that the element is visible in due to any number of -// clipping parents +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); +/** Built-in value references. */ +var Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; -function getClippingRect(element, boundary, rootBoundary) { - var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); - var clippingParents = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents[0]; - var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent); - accRect.top = max(rect.top, accRect.top); - accRect.right = min(rect.right, accRect.right); - accRect.bottom = min(rect.bottom, accRect.bottom); - accRect.left = max(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; -} +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max; -function computeOffsets(_ref) { - var reference = _ref.reference, - element = _ref.element, - placement = _ref.placement; - var basePlacement = placement ? getBasePlacement(placement) : null; - var variation = placement ? getVariation(placement) : null; - var commonX = reference.x + reference.width / 2 - element.width / 2; - var commonY = reference.y + reference.height / 2 - element.height / 2; - var offsets; +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); - switch (basePlacement) { - case top: - offsets = { - x: commonX, - y: reference.y - element.height - }; - break; +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); - case bottom: - offsets = { - x: commonX, - y: reference.y + reference.height - }; - break; - - case right: - offsets = { - x: reference.x + reference.width, - y: commonY - }; - break; +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; - case left: - offsets = { - x: reference.x - element.width, - y: commonY - }; - break; +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; - default: - offsets = { - x: reference.x, - y: reference.y - }; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); } +} - var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; - - if (mainAxis != null) { - var len = mainAxis === 'y' ? 'height' : 'width'; +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} - switch (variation) { - case start: - offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); - break; +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} - case end: - offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); - break; - } +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} - return offsets; +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); } -function detectOverflow(state, options) { - if (options === void 0) { - options = {}; - } +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} - var _options = options, - _options$placement = _options.placement, - placement = _options$placement === void 0 ? state.placement : _options$placement, - _options$boundary = _options.boundary, - boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, - _options$rootBoundary = _options.rootBoundary, - rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, - _options$elementConte = _options.elementContext, - elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, - _options$altBoundary = _options.altBoundary, - altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, - _options$padding = _options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); - var altContext = elementContext === popper ? reference : popper; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); - var referenceClientRect = getBoundingClientRect(state.elements.reference); - var popperOffsets = computeOffsets({ - reference: referenceClientRect, - element: popperRect, - strategy: 'absolute', - placement: placement - }); - var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); - var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect - // 0 or negative = within the clipping rect +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; - if (elementContext === popper && offsetData) { - var offset = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function (key) { - var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; - var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; - overflowOffsets[key] += offset[axis] * multiply; - }); + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); } +} - return overflowOffsets; +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; } -function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); } + return true; +} - var _options = options, - placement = _options.placement, - boundary = _options.boundary, - rootBoundary = _options.rootBoundary, - padding = _options.padding, - flipVariations = _options.flipVariations, - _options$allowedAutoP = _options.allowedAutoPlacements, - allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; - var variation = getVariation(placement); - var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { - return getVariation(placement) === variation; - }) : basePlacements; - var allowedPlacements = placements$1.filter(function (placement) { - return allowedAutoPlacements.indexOf(placement) >= 0; - }); +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - if (allowedPlacements.length === 0) { - allowedPlacements = placements$1; + return index < 0 ? undefined : data[index][1]; +} - if (process.env.NODE_ENV !== "production") { - console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); - } - } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... - - - var overflows = allowedPlacements.reduce(function (acc, placement) { - acc[placement] = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding - })[getBasePlacement(placement)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function (a, b) { - return overflows[a] - overflows[b]; - }); +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; } -function getExpandedFallbackPlacements(placement) { - if (getBasePlacement(placement) === auto) { - return []; - } +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); - var oppositePlacement = getOppositePlacement(placement); - return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; } -function flip(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - - if (state.modifiersData[name]._skip) { - return; - } +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, - specifiedFallbackPlacements = options.fallbackPlacements, - padding = options.padding, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - _options$flipVariatio = options.flipVariations, - flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, - allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = getBasePlacement(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { - return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - flipVariations: flipVariations, - allowedAutoPlacements: allowedAutoPlacements - }) : placement); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements[0]; +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; - for (var i = 0; i < placements.length; i++) { - var placement = placements[i]; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - var _basePlacement = getBasePlacement(placement); +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} - var isStartVariation = getVariation(placement) === start; - var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; - var len = isVertical ? 'width' : 'height'; - var overflow = detectOverflow(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - altBoundary: altBoundary, - padding: padding - }); - var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = getOppositePlacement(mainVariationSide); - } +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} - var altVariationSide = getOppositePlacement(mainVariationSide); - var checks = []; +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} - if (checkMainAxis) { - checks.push(overflow[_basePlacement] <= 0); - } +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} - if (checkAltAxis) { - checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); - } +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; - if (checks.every(function (check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values ? values.length : 0; - checksMap.set(placement, checks); + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); } +} - if (makeFallbackChecks) { - // `2` may be desired in some cases – research later - var numberOfChecks = flipVariations ? 3 : 1; - - var _loop = function _loop(_i) { - var fittingPlacement = placements.find(function (placement) { - var checks = checksMap.get(placement); +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} - if (checks) { - return checks.slice(0, _i).every(function (check) { - return check; - }); - } - }); +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + this.__data__ = new ListCache(entries); +} - if (_ret === "break") break; +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; +} + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + return this.__data__['delete'](key); +} + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; } + cache = this.__data__ = new MapCache(pairs); } + cache.set(key, value); + return this; +} - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } -} // eslint-disable-next-line import/no-unused-modules +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; -var flip$1 = { - name: 'flip', - enabled: true, - phase: 'main', - fn: flip, - requiresIfExists: ['offset'], - data: { - _skip: false - } -}; + var length = result.length, + skipIndexes = !!length; -function getSideOffsets(overflow, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } } - - return { - top: overflow.top - rect.height - preventedOffsets.y, - right: overflow.right - rect.width + preventedOffsets.x, - bottom: overflow.bottom - rect.height + preventedOffsets.y, - left: overflow.left - rect.width - preventedOffsets.x - }; + return result; } -function isAnySideFullyClipped(overflow) { - return [top, right, bottom, left].some(function (side) { - return overflow[side] >= 0; - }); +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; } -function hide(_ref) { - var state = _ref.state, - name = _ref.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = detectOverflow(state, { - elementContext: 'reference' - }); - var popperAltOverflow = detectOverflow(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets: referenceClippingOffsets, - popperEscapeOffsets: popperEscapeOffsets, - isReferenceHidden: isReferenceHidden, - hasPopperEscaped: hasPopperEscaped - }; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-reference-hidden': isReferenceHidden, - 'data-popper-escaped': hasPopperEscaped - }); -} // eslint-disable-next-line import/no-unused-modules - +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); -var hide$1 = { - name: 'hide', - enabled: true, - phase: 'main', - requiresIfExists: ['preventOverflow'], - fn: hide -}; +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; -function distanceAndSkiddingToXY(placement, rects, offset) { - var basePlacement = getBasePlacement(placement); - var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + predicate || (predicate = isFlattenable); + result || (result = []); - var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { - placement: placement - })) : offset, - skidding = _ref[0], - distance = _ref[1]; + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [left, right].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance - }; -} - -function offset(_ref2) { - var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; - var _options$offset = options.offset, - offset = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = placements.reduce(function (acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); - return acc; - }, {}); - var _data$state$placement = data[state.placement], - x = _data$state$placement.x, - y = _data$state$placement.y; - - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x; - state.modifiersData.popperOffsets.y += y; - } +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); -var offset$1 = { - name: 'offset', - enabled: true, - phase: 'main', - requires: ['popperOffsets'], - fn: offset -}; + var index = 0, + length = path.length; -function popperOffsets(_ref) { - var state = _ref.state, - name = _ref.name; - // Offsets are the actual position the popper needs to have to be - // properly positioned near its reference element - // This is the most basic placement, and will be adjusted by - // the modifiers in the next step - state.modifiersData[name] = computeOffsets({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: 'absolute', - placement: state.placement - }); -} // eslint-disable-next-line import/no-unused-modules + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} +/** + * The base implementation of `getTag`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + return objectToString.call(value); +} -var popperOffsets$1 = { - name: 'popperOffsets', - enabled: true, - phase: 'read', - fn: popperOffsets, - data: {} -}; +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} -function getAltAxis(axis) { - return axis === 'x' ? 'y' : 'x'; +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @param {boolean} [bitmask] The bitmask of comparison flags. + * The bitmask may be composed of the following flags: + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, customizer, bitmask, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); } -function preventOverflow(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - padding = options.padding, - _options$tether = options.tether, - tether = _options$tether === void 0 ? true : _options$tether, - _options$tetherOffset = options.tetherOffset, - tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow = detectOverflow(state, { - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - altBoundary: altBoundary - }); - var basePlacement = getBasePlacement(state.placement); - var variation = getVariation(state.placement); - var isBasePlacement = !variation; - var mainAxis = getMainAxisFromPlacement(basePlacement); - var altAxis = getAltAxis(mainAxis); - var popperOffsets = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { - placement: state.placement - })) : tetherOffset; - var data = { - x: 0, - y: 0 - }; +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparisons. + * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; - if (!popperOffsets) { - return; + if (!objIsArr) { + objTag = getTag(object); + objTag = objTag == argsTag ? objectTag : objTag; } + if (!othIsArr) { + othTag = getTag(other); + othTag = othTag == argsTag ? objectTag : othTag; + } + var objIsObj = objTag == objectTag && !isHostObject(object), + othIsObj = othTag == objectTag && !isHostObject(other), + isSameTag = objTag == othTag; - if (checkMainAxis || checkAltAxis) { - var mainSide = mainAxis === 'y' ? top : left; - var altSide = mainAxis === 'y' ? bottom : right; - var len = mainAxis === 'y' ? 'height' : 'width'; - var offset = popperOffsets[mainAxis]; - var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; - var max$1 = popperOffsets[mainAxis] - overflow[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === start ? referenceRect[len] : popperRect[len]; - var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go - // outside the reference bounds - - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want - // to include its full size in the calculation. If the reference is small - // and near the edge of a boundary, the popper can overflow even if the - // reference is not overflowing as well (e.g. virtual elements with no - // width or height) + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) + : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); + } + if (!(bitmask & PARTIAL_COMPARE_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; - var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; - var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; - var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; - if (checkMainAxis) { - var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, equalFunc, customizer, bitmask, stack); +} - if (checkAltAxis) { - var _mainSide = mainAxis === 'x' ? top : left; +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; - var _altSide = mainAxis === 'x' ? bottom : right; + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; - var _offset = popperOffsets[altAxis]; + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) + : result + )) { + return false; + } + } + } + return true; +} - var _min = _offset + overflow[_mainSide]; +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} - var _max = _offset - overflow[_altSide]; +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; +} - var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); } } + return result; +} - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules - +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; -var preventOverflow$1 = { - name: 'preventOverflow', - enabled: true, - phase: 'main', - fn: preventOverflow, - requiresIfExists: ['offset'] -}; + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} -function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); }; } -function getNodeScroll(node) { - if (node === getWindow(node) || !isHTMLElement(node)) { - return getWindowScroll(node); - } else { - return getHTMLElementScroll(node); +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); + }; } -function isElementScaled(element) { - var rect = element.getBoundingClientRect(); - var scaleX = rect.width / element.offsetWidth || 1; - var scaleY = rect.height / element.offsetHeight || 1; - return scaleX !== 1 || scaleY !== 1; -} // Returns the composite rect of an element relative to its offsetParent. -// Composite means it takes into account transforms as well as layout. +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + var index = -1; + iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee)); + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); -function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); +} - var isOffsetParentAnElement = isHTMLElement(offsetParent); - isHTMLElement(offsetParent) && isElementScaled(offsetParent); - var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); }; +} - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 - isScrollParent(documentElement)) { - scroll = getNodeScroll(offsetParent); - } +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); - if (isHTMLElement(offsetParent)) { - offsets = getBoundingClientRect(offsetParent); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = getWindowScrollBarX(documentElement); + while (++index < length) { + array[index] = args[start + index]; } - } - - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = array; + return apply(func, this, otherArgs); }; } -function order(modifiers) { - var map = new Map(); - var visited = new Set(); - var result = []; - modifiers.forEach(function (modifier) { - map.set(modifier.name, modifier); - }); // On visiting object, check for its dependencies and visit them recursively - - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function (dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - - if (depModifier) { - sort(depModifier); - } - } - }); - result.push(modifier); +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - modifiers.forEach(function (modifier) { - if (!visited.has(modifier.name)) { - // check for visited object - sort(modifier); +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; } - }); - return result; + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; } -function orderModifiers(modifiers) { - // order based on dependencies - var orderedModifiers = order(modifiers); // order based on phase +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; - return modifierPhases.reduce(function (acc, phase) { - return acc.concat(orderedModifiers.filter(function (modifier) { - return modifier.phase === phase; - })); - }, []); + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; } -function debounce(fn) { - var pending; - return function () { - if (!pending) { - pending = new Promise(function (resolve) { - Promise.resolve().then(function () { - pending = undefined; - resolve(fn()); - }); - }); +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); - return pending; + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; }; } -function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; - return [].concat(args).reduce(function (p, c) { - return p.replace(/%s/, c); - }, str); + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; } -var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; -var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; -var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; -function validateModifiers(modifiers) { - modifiers.forEach(function (modifier) { - [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` - .filter(function (value, index, self) { - return self.indexOf(value) === index; - }).forEach(function (key) { - switch (key) { - case 'name': - if (typeof modifier.name !== 'string') { - console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); - } - - break; - - case 'enabled': - if (typeof modifier.enabled !== 'boolean') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); - } - - break; +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + arrLength = array.length, + othLength = other.length; - case 'phase': - if (modifierPhases.indexOf(modifier.phase) < 0) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); - } + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; - break; + stack.set(array, other); + stack.set(other, array); - case 'fn': - if (typeof modifier.fn !== 'function') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); - } + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; - break; + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!seen.has(othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + return seen.add(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, customizer, bitmask, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} - case 'effect': - if (modifier.effect != null && typeof modifier.effect !== 'function') { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); - } +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; - break; + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; - case 'requires': - if (modifier.requires != null && !Array.isArray(modifier.requires)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); - } + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); - break; + case errorTag: + return object.name == other.name && object.message == other.message; - case 'requiresIfExists': - if (!Array.isArray(modifier.requiresIfExists)) { - console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); - } + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); - break; + case mapTag: + var convert = mapToArray; - case 'options': - case 'data': - break; + case setTag: + var isPartial = bitmask & PARTIAL_COMPARE_FLAG; + convert || (convert = setToArray); - default: - console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { - return "\"" + s + "\""; - }).join(', ') + "; but \"" + key + "\" was provided."); + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; } + bitmask |= UNORDERED_COMPARE_FLAG; - modifier.requires && modifier.requires.forEach(function (requirement) { - if (modifiers.find(function (mod) { - return mod.name === requirement; - }) == null) { - console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } - }); - }); - }); + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; } -function uniqueBy(arr, fn) { - var identifiers = new Set(); - return arr.filter(function (item) { - var identifier = fn(item); +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; } - }); -} - -function mergeByName(modifiers) { - var merged = modifiers.reduce(function (merged, current) { - var existing = merged[current.name]; - merged[current.name] = existing ? Object.assign({}, existing, current, { - options: Object.assign({}, existing.options, current.options), - data: Object.assign({}, existing.data, current.data) - }) : current; - return merged; - }, {}); // IE11 does not support Object.values + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); - return Object.keys(merged).map(function (key) { - return merged[key]; - }); -} + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; -var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; -var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; -var DEFAULT_OPTIONS = { - placement: 'bottom', - modifiers: [], - strategy: 'absolute' -}; + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; -function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } } + stack['delete'](object); + stack['delete'](other); + return result; +} - return !args.some(function (element) { - return !(element && typeof element.getBoundingClientRect === 'function'); - }); +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; } -function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; - } +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; - var _generatorOptions = generatorOptions, - _generatorOptions$def = _generatorOptions.defaultModifiers, - defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, - _generatorOptions$def2 = _generatorOptions.defaultOptions, - defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper(reference, popper, options) { - if (options === void 0) { - options = defaultOptions; - } + while (length--) { + var key = result[length], + value = object[key]; - var state = { - placement: 'bottom', - orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), - modifiersData: {}, - elements: { - reference: reference, - popper: popper - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state: state, - setOptions: function setOptions(setOptionsAction) { - var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; - cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions, state.options, options); - state.scrollParents = { - reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], - popper: listScrollParents(popper) - }; // Orders the modifiers based on their dependencies and `phase` - // properties - - var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers - - state.orderedModifiers = orderedModifiers.filter(function (m) { - return m.enabled; - }); // Validate the provided modifiers so that the consumer will get warned - // if one of the modifiers is invalid for any reason + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} - if (process.env.NODE_ENV !== "production") { - var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { - var name = _ref.name; - return name; - }); - validateModifiers(modifiers); +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} - if (getBasePlacement(state.options.placement) === auto) { - var flipModifier = state.orderedModifiers.find(function (_ref2) { - var name = _ref2.name; - return name === 'flip'; - }); +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); - } - } +// Fallback for data views, maps, sets, and weak maps in IE 11, +// for data views in Edge < 14, and promises in Node.js. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; - var _getComputedStyle = getComputedStyle(popper), - marginTop = _getComputedStyle.marginTop, - marginRight = _getComputedStyle.marginRight, - marginBottom = _getComputedStyle.marginBottom, - marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can - // cause bugs with positioning, so we'll warn the consumer + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = isKey(path, object) ? [path] : castPath(path); - if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { - return parseFloat(margin); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); - } - } + var result, + index = -1, + length = path.length; - runModifierEffects(); - return instance.update(); - }, - // Sync update – it will always be executed, even if not necessary. This - // is useful for low frequency updates where sync behavior simplifies the - // logic. - // For high frequency updates (e.g. `resize` and `scroll` events), always - // prefer the async Popper#update method - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result) { + return result; + } + var length = object ? object.length : 0; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} - var _state$elements = state.elements, - reference = _state$elements.reference, - popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements - // anymore +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} - if (!areValidElements(reference, popper)) { - if (process.env.NODE_ENV !== "production") { - console.error(INVALID_ELEMENT_ERROR); - } +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} - return; - } // Store the reference and popper rects to be read by modifiers +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} - state.rects = { - reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), - popper: getLayoutRect(popper) - }; // Modifiers have the ability to reset the current update cycle. The - // most common use case for this is the `flip` modifier changing the - // placement, which then needs to re-run all the modifiers, because the - // logic was previously ran for the previous placement and is therefore - // stale/incorrect +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} - state.reset = false; - state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier - // is filled with the initial data specified by the modifier. This means - // it doesn't persist and is fresh on each update. - // To ensure persistent data, use `${name}#persistent` +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} - state.orderedModifiers.forEach(function (modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - var __debug_loops__ = 0; +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - for (var index = 0; index < state.orderedModifiers.length; index++) { - if (process.env.NODE_ENV !== "production") { - __debug_loops__ += 1; + return value === proto; +} - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } - } - - if (state.reset === true) { - state.reset = false; - index = -1; - continue; - } - - var _state$orderedModifie = state.orderedModifiers[index], - fn = _state$orderedModifie.fn, - _state$orderedModifie2 = _state$orderedModifie.options, - _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, - name = _state$orderedModifie.name; - - if (typeof fn === 'function') { - state = fn({ - state: state, - options: _options, - name: name, - instance: instance - }) || state; - } - } - }, - // Async and optimistically optimized update – it will not be executed if - // not necessary (debounced to run at most once-per-tick) - update: debounce(function () { - return new Promise(function (resolve) { - instance.forceUpdate(); - resolve(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; - } - }; - - if (!areValidElements(reference, popper)) { - if (process.env.NODE_ENV !== "production") { - console.error(INVALID_ELEMENT_ERROR); - } +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} - return instance; +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} - instance.setOptions(options).then(function (state) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state); - } - }); // Modifiers have the ability to execute arbitrary code before the first - // update cycle runs. They will be executed in the same order as the update - // cycle. This is useful when a modifier adds some persistent data that - // other modifiers need to use, but the modifier is run after the dependent - // one. +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + string = toString(string); - function runModifierEffects() { - state.orderedModifiers.forEach(function (_ref3) { - var name = _ref3.name, - _ref3$options = _ref3.options, - options = _ref3$options === void 0 ? {} : _ref3$options, - effect = _ref3.effect; + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); - if (typeof effect === 'function') { - var cleanupFn = effect({ - state: state, - name: name, - instance: instance, - options: options - }); +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - var noopFn = function noopFn() {}; +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} - effectCleanupFns.push(cleanupFn || noopFn); - } - }); - } +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, function(o) { return o.user; }); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + * + * _.sortBy(users, 'user', function(o) { + * return Math.floor(o.age / 10); + * }); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ +var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); +}); - function cleanupModifierEffects() { - effectCleanupFns.forEach(function (fn) { - return fn(); - }); - effectCleanupFns = []; - } +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; - return instance; + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; } -var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; -var createPopper = /*#__PURE__*/popperGenerator({ - defaultModifiers: defaultModifiers -}); // eslint-disable-next-line import/no-unused-modules +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; -// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes -const wrapAround = (value, size) => { - return ((value % size) + size) % size; -}; -class Suggest { - constructor(owner, containerEl, scope) { - this.owner = owner; - this.containerEl = containerEl; - containerEl.on("click", ".suggestion-item", this.onSuggestionClick.bind(this)); - containerEl.on("mousemove", ".suggestion-item", this.onSuggestionMouseover.bind(this)); - scope.register([], "ArrowUp", (event) => { - if (!event.isComposing) { - this.setSelectedItem(this.selectedItem - 1, true); - return false; - } - }); - scope.register([], "ArrowDown", (event) => { - if (!event.isComposing) { - this.setSelectedItem(this.selectedItem + 1, true); - return false; - } - }); - scope.register([], "Enter", (event) => { - if (!event.isComposing) { - this.useSelectedItem(event); - return false; - } - }); - } - onSuggestionClick(event, el) { - event.preventDefault(); - const item = this.suggestions.indexOf(el); - this.setSelectedItem(item, false); - this.useSelectedItem(event); - } - onSuggestionMouseover(_event, el) { - const item = this.suggestions.indexOf(el); - this.setSelectedItem(item, false); - } - setSuggestions(values) { - this.containerEl.empty(); - const suggestionEls = []; - values.forEach((value) => { - const suggestionEl = this.containerEl.createDiv("suggestion-item"); - this.owner.renderSuggestion(value, suggestionEl); - suggestionEls.push(suggestionEl); - }); - this.values = values; - this.suggestions = suggestionEls; - this.setSelectedItem(0, false); - } - useSelectedItem(event) { - const currentValue = this.values[this.selectedItem]; - if (currentValue) { - this.owner.selectSuggestion(currentValue, event); - } - } - setSelectedItem(selectedIndex, scrollIntoView) { - const normalizedIndex = wrapAround(selectedIndex, this.suggestions.length); - const prevSelectedSuggestion = this.suggestions[this.selectedItem]; - const selectedSuggestion = this.suggestions[normalizedIndex]; - prevSelectedSuggestion === null || prevSelectedSuggestion === void 0 ? void 0 : prevSelectedSuggestion.removeClass("is-selected"); - selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.addClass("is-selected"); - this.selectedItem = normalizedIndex; - if (scrollIntoView) { - selectedSuggestion.scrollIntoView(false); - } - } +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); } -class TextInputSuggest { - constructor(app, inputEl) { - this.app = app; - this.inputEl = inputEl; - this.scope = new obsidian.Scope(); - this.suggestEl = createDiv("suggestion-container"); - const suggestion = this.suggestEl.createDiv("suggestion"); - this.suggest = new Suggest(this, suggestion, this.scope); - this.scope.register([], "Escape", this.close.bind(this)); - this.inputEl.addEventListener("input", this.onInputChanged.bind(this)); - this.inputEl.addEventListener("focus", this.onInputChanged.bind(this)); - this.inputEl.addEventListener("blur", this.close.bind(this)); - this.suggestEl.on("mousedown", ".suggestion-container", (event) => { - event.preventDefault(); - }); - } - onInputChanged() { - const inputStr = this.inputEl.value; - const suggestions = this.getSuggestions(inputStr); - if (!suggestions) { - this.close(); - return; - } - if (suggestions.length > 0) { - this.suggest.setSuggestions(suggestions); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.open(this.app.dom.appContainerEl, this.inputEl); - } - else { - this.close(); - } - } - open(container, inputEl) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.app.keymap.pushScope(this.scope); - container.appendChild(this.suggestEl); - this.popper = createPopper(inputEl, this.suggestEl, { - placement: "bottom-start", - modifiers: [ - { - name: "sameWidth", - enabled: true, - fn: ({ state, instance }) => { - // Note: positioning needs to be calculated twice - - // first pass - positioning it according to the width of the popper - // second pass - position it with the width bound to the reference element - // we need to early exit to avoid an infinite loop - const targetWidth = `${state.rects.reference.width}px`; - if (state.styles.popper.width === targetWidth) { - return; - } - state.styles.popper.width = targetWidth; - instance.update(); - }, - phase: "beforeWrite", - requires: ["computeStyles"], - }, - ], - }); - } - close() { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.app.keymap.popScope(this.scope); - this.suggest.setSuggestions([]); - if (this.popper) - this.popper.destroy(); - this.suggestEl.detach(); - } + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); } -// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes -class FolderSuggest extends TextInputSuggest { - getSuggestions(inputStr) { - const abstractFiles = this.app.vault.getAllLoadedFiles(); - const folders = []; - const lowerCaseInputStr = inputStr.toLowerCase(); - abstractFiles.forEach((folder) => { - if (folder instanceof obsidian.TFolder && - folder.path.toLowerCase().contains(lowerCaseInputStr)) { - folders.push(folder); - } - }); - return folders; - } - renderSuggestion(file, el) { - el.setText(file.path); - } - selectSuggestion(file) { - this.inputEl.value = file.path; - this.inputEl.trigger("input"); - this.close(); - } +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); } -var FilterType; -(function (FilterType) { - FilterType["TAGS"] = "all articles with tags"; - FilterType["UNREAD"] = "All unread articles(from folders)"; - FilterType["READ"] = "All read articles(from folders)"; - FilterType["FAVORITES"] = "Favorites(from folders)"; -})(FilterType || (FilterType = {})); -var SortOrder; -(function (SortOrder) { - SortOrder["DATE_NEWEST"] = "Publication date (new to old)"; - SortOrder["DATE_OLDEST"] = "Publication date (old to new)"; - SortOrder["ALPHABET_NORMAL"] = "Name (A to Z)"; - SortOrder["ALPHABET_INVERTED"] = "Name (Z to A)"; -})(SortOrder || (SortOrder = {})); -class FilteredFolderModal extends BaseModal { - constructor(plugin, folder) { - super(plugin.app); - this.filterContent = ""; - this.saved = false; - if (folder) { - this.name = folder.name; - this.filterType = folder.filterType; - this.filterContent = folder.filterContent; - this.sortOrder = folder.sortOrder; - } - } - display() { - return __awaiter(this, void 0, void 0, function* () { - const { contentEl } = this; - contentEl.empty(); - let nameText; - const name = new obsidian.Setting(contentEl) - .setName("Name") - .addText((text) => { - nameText = text; - text.setValue(this.name) - .onChange((value) => { - this.removeValidationError(text); - this.name = value; - }); - }); - name.controlEl.addClass("rss-setting-input"); - const type = new obsidian.Setting(contentEl) - .setName("Type") - .setDesc("type of filter") - .addDropdown((dropdown) => { - for (const option in FilterType) { - // @ts-ignore - dropdown.addOption(option, FilterType[option]); - } - dropdown - .setValue(this.filterType) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.filterType = value; - })); - }); - type.controlEl.addClass("rss-setting-input"); - new obsidian.Setting(contentEl) - .setName("Filter") - .setDesc("Folders/Tags to filter on, split by ,") - .addText((text) => { - text - .setValue(this.filterContent) - .onChange((value) => { - this.filterContent = value; - this.removeValidationError(text); - }); - }); - const sorting = new obsidian.Setting(contentEl) - .setName("Order by") - .addDropdown((dropdown) => { - for (const order in SortOrder) { - // @ts-ignore - dropdown.addOption(order, SortOrder[order]); - } - dropdown - .setValue(this.sortOrder) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.sortOrder = value; - })); - }); - sorting.controlEl.addClass("rss-setting-input"); - const footerEl = contentEl.createDiv(); - const footerButtons = new obsidian.Setting(footerEl); - footerButtons.addButton((b) => { - b.setTooltip("Save") - .setIcon("checkmark") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - let error = false; - if (!nameText.getValue().length) { - this.setValidationError(nameText, "you need to specify a name"); - error = true; - } - if (error) { - new obsidian.Notice("please fix errors before saving."); - return; - } - this.saved = true; - this.close(); - })); - return b; - }); - footerButtons.addExtraButton((b) => { - b.setIcon("cross") - .setTooltip("Cancel") - .onClick(() => { - this.saved = false; - this.close(); - }); - return b; - }); - }); - } - onOpen() { - return __awaiter(this, void 0, void 0, function* () { - yield this.display(); - }); - } +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); } -const DEFAULT_SETTINGS = Object.freeze({ - feeds: [], - updateTime: 60, - filtered: [{ - name: "Favorites", - filterType: "FAVORITES", - filterContent: "", - sortOrder: "ALPHABET_NORMAL" - }], - saveLocation: 'default', - saveLocationFolder: '', - items: [], - dateFormat: "YYYY-MM-DDTHH:MM:SS", - template: "---\n" + - "link: {{link}}\n" + - "author: {{author}}\n" + - "published: {{published}}\n" + - "tags: [{{tags:,}}]\n" + - "---\n" + - "{{title}}\n" + - "{{content}}", - pasteTemplate: "## {{title}}\n" + - "{{content}}", - askForFilename: true -}); -class RSSReaderSettingsTab extends obsidian.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - display() { - const { containerEl } = this; - containerEl.empty(); - containerEl.createEl('h2', { text: 'RSS Reader Settings' }); - new obsidian.Setting(containerEl) - .setName("New file template") - .setDesc('When creating a note from a article this gets processed. ' + - 'Available variables are: {{title}}, {{link}}, {{author}}, {{published}}, {{created}}, {{content}}, {{description}}, {{folder}}, {{feed}}, {{filename}, {{tags}}, {{#tags}}') - .addTextArea((textArea) => { - textArea - .setValue(this.plugin.settings.template) - .setPlaceholder(DEFAULT_SETTINGS.template) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ - template: value - })); - })); - textArea.inputEl.setAttr("rows", 8); - }); - new obsidian.Setting(containerEl) - .setName("paste article template") - .setDesc('When pasting/copying an article this gets processed. ' + - 'Available variables are: {{title}}, {{link}}, {{author}}, {{published}}, {{content}}, {{description}}, {{folder}}, {{feed}}, {{tags}}, {{#tags}}') - .addTextArea((textArea) => { - textArea - .setValue(this.plugin.settings.pasteTemplate) - .setPlaceholder(DEFAULT_SETTINGS.pasteTemplate) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ - pasteTemplate: value - })); - })); - textArea.inputEl.setAttr("rows", 8); - }); - new obsidian.Setting(containerEl) - .setName("Default location for new notes") - .setDesc("") - .addDropdown((dropdown) => __awaiter(this, void 0, void 0, function* () { - dropdown - .addOption("default", "In the default folder") - .addOption("custom", "In the folder specified below") - .setValue(this.plugin.settings.saveLocation) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ saveLocation: value })); - this.display(); - })); - })); - if (this.plugin.settings.saveLocation == "custom") { - new obsidian.Setting(containerEl) - .setName("Folder to create new articles in") - .setDesc("newly created articles will appear in this folder") - .addSearch((search) => __awaiter(this, void 0, void 0, function* () { - new FolderSuggest(this.app, search.inputEl); - search - .setValue(this.plugin.settings.saveLocationFolder) - .setPlaceholder(DEFAULT_SETTINGS.saveLocationFolder) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ saveLocationFolder: value })); - })); - })); - } - const refresh = new obsidian.Setting(containerEl) - .setName("Refresh time") - .setDesc("How often should the feeds be refreshed, in minutes, use 0 to disable") - .addText((text) => { - text - .setPlaceholder(String(DEFAULT_SETTINGS.updateTime)) - .setValue(String(this.plugin.settings.updateTime)) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - if (value.length === 0) { - new obsidian.Notice("please specify a value"); - return; - } - if (Number(value) < 0) { - new obsidian.Notice("please specify a bigger value"); - return; - } - yield this.plugin.writeSettings(() => ({ updateTime: Number(value) })); - })); - text.inputEl.setAttr("type", "number"); - text.inputEl.setAttr("min", "1"); - //we don't want decimal numbers. - text.inputEl.setAttr("onkeypress", "return event.charCode >= 48 && event.charCode <= 57"); - }); - refresh.addExtraButton((button) => { - button - .setIcon('reset') - .setTooltip('restore default') - .onClick(() => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ - updateTime: DEFAULT_SETTINGS.updateTime - })); - this.display(); - })); - }); - let dateFormatSampleEl; - const dateFormat = new obsidian.Setting(containerEl) - .setName("Date format") - .setDesc("") - .addMomentFormat((format) => { - dateFormatSampleEl = format - .setDefaultFormat(DEFAULT_SETTINGS.dateFormat) - .setPlaceholder(DEFAULT_SETTINGS.dateFormat) - .setValue(this.plugin.settings.dateFormat) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ dateFormat: value })); - })); - }); - const referenceLink = dateFormat.descEl.createEl("a"); - referenceLink.setAttr("href", "https://momentjs.com/docs/#/displaying/format/"); - referenceLink.setText("Syntax Reference"); - const text = dateFormat.descEl.createDiv("text"); - text.setText("Your current syntax looks like this: "); - const sampleEl = text.createSpan("sample"); - dateFormatSampleEl.setSampleEl(sampleEl); - dateFormat.addExtraButton((button) => { - button - .setIcon('reset') - .setTooltip('restore default') - .onClick(() => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ - dateFormat: DEFAULT_SETTINGS.dateFormat - })); - this.display(); - })); - }); - new obsidian.Setting(containerEl) - .setName("Ask for filename") - .setDesc("Disable to use title as filename(with invalid symbols removed)") - .addToggle((toggle) => { - return toggle - .setValue(this.plugin.settings.askForFilename) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - yield this.plugin.writeSettings(() => ({ - askForFilename: value - })); - })); - }); - containerEl.createEl("h3", { text: "Filtered Folders" }); - new obsidian.Setting(containerEl) - .setName("Add New") - .setDesc("Add new filtered folder") - .addButton((button) => { - return button - .setTooltip("add new filtered folder") - .setIcon("create-new") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - const modal = new FilteredFolderModal(this.plugin); - modal.onClose = () => __awaiter(this, void 0, void 0, function* () { - if (modal.saved) { - if (this.plugin.settings.filtered.some(folder => folder.name === modal.name)) { - new obsidian.Notice("you already have a filter configured with that name"); - return; - } - yield this.plugin.writeFiltered(() => (this.plugin.settings.filtered.concat({ - name: modal.name, - filterType: modal.filterType, - filterContent: modal.filterContent, - sortOrder: modal.sortOrder - }))); - this.display(); - } - }); - modal.open(); - })); - }); - const filterContainer = containerEl.createDiv("filter-container"); - const filtersDiv = filterContainer.createDiv("filters"); - for (const id in this.plugin.settings.filtered) { - const filter = this.plugin.settings.filtered[id]; - const setting = new obsidian.Setting(filtersDiv); - setting.setName(filter.name); - setting.setDesc(filter.filterType + (filter.filterContent.length > 0) ? (" from " + filter.filterContent) : ""); - setting - .addExtraButton((b) => { - b.setIcon("pencil") - .setTooltip("Edit") - .onClick(() => { - const modal = new FilteredFolderModal(this.plugin, filter); - const oldFilter = filter; - modal.onClose = () => __awaiter(this, void 0, void 0, function* () { - if (modal.saved) { - const filters = this.plugin.settings.filtered; - filters.remove(oldFilter); - filters.push({ name: modal.name, filterType: modal.filterType, filterContent: modal.filterContent, sortOrder: modal.sortOrder }); - yield this.plugin.writeFiltered(() => (filters)); - this.display(); - } - }); - modal.open(); - }); - }) - .addExtraButton((b) => { - b.setIcon("trash") - .setTooltip("Delete") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - const filters = this.plugin.settings.filtered; - filters.remove(filter); - yield this.plugin.writeFiltered(() => (filters)); - this.display(); - })); - }); - } - containerEl.createEl("h3", { text: "Feeds" }); - new obsidian.Setting(containerEl) - .setName("Add New") - .setDesc("Add a new Feed") - .addButton((button) => { - return button - .setTooltip("add new Feed") - .setIcon("create-new") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - const modal = new FeedModal(this.plugin); - modal.onClose = () => __awaiter(this, void 0, void 0, function* () { - if (modal.saved) { - if (this.plugin.settings.feeds.some(item => item.url === modal.url)) { - new obsidian.Notice("you already have a feed configured with that url"); - return; - } - yield this.plugin.writeFeeds(() => (this.plugin.settings.feeds.concat({ - name: modal.name, - url: modal.url, - folder: modal.folder - }))); - this.display(); - } - }); - modal.open(); - })); - }); - const additionalContainer = containerEl.createDiv("feed-container"); - const feedsDiv = additionalContainer.createDiv("feeds"); - const sorted = lodash_groupby(this.plugin.settings.feeds, "folder"); - for (const [, feeds] of Object.entries(sorted)) { - for (const id in feeds) { - const feed = feeds[id]; - const setting = new obsidian.Setting(feedsDiv); - setting.setName((feed.folder ? feed.folder : "No Folder") + " - " + feed.name); - setting.setDesc(feed.url); - setting - .addExtraButton((b) => { - b.setIcon("pencil") - .setTooltip("Edit") - .onClick(() => { - const modal = new FeedModal(this.plugin, feed); - const oldFeed = feed; - modal.onClose = () => __awaiter(this, void 0, void 0, function* () { - if (modal.saved) { - const feeds = this.plugin.settings.feeds; - feeds.remove(oldFeed); - feeds.push({ name: modal.name, url: modal.url, folder: modal.folder }); - yield this.plugin.writeFeeds(() => (feeds)); - this.display(); - } - }); - modal.open(); - }); - }) - .addExtraButton((b) => { - b.setIcon("trash") - .setTooltip("Delete") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - const feeds = this.plugin.settings.feeds; - feeds.remove(feed); - yield this.plugin.writeFeeds(() => (feeds)); - this.display(); - })); - }); - } - } - } +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; } -function noop() { } -function run(fn) { - return fn(); +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } -function blank_object() { - return Object.create(null); + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); } -function run_all(fns) { - fns.forEach(run); + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; } -function is_function(thing) { - return typeof thing === 'function'; -} -function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); -} -let src_url_equal_anchor; -function src_url_equal(element_src, url) { - if (!src_url_equal_anchor) { - src_url_equal_anchor = document.createElement('a'); - } - src_url_equal_anchor.href = url; - return element_src === src_url_equal_anchor.href; -} -function is_empty(obj) { - return Object.keys(obj).length === 0; -} -function subscribe(store, ...callbacks) { - if (store == null) { - return noop; - } - const unsub = store.subscribe(...callbacks); - return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; -} -function component_subscribe(component, store, callback) { - component.$$.on_destroy.push(subscribe(store, callback)); -} -function action_destroyer(action_result) { - return action_result && is_function(action_result.destroy) ? action_result.destroy : noop; -} -function append(target, node) { - target.appendChild(node); -} -function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); -} -function detach(node) { - node.parentNode.removeChild(node); -} -function destroy_each(iterations, detaching) { - for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); - } + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); } -function element(name) { - return document.createElement(name); + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); } -function text(data) { - return document.createTextNode(data); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; } -function space() { - return text(' '); + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); } -function empty() { - return text(''); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } -function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; } -function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); } -function children(element) { - return Array.from(element.childNodes); + +module.exports = sortBy; +}); + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +var lodash_groupby = createCommonjsModule(function (module, exports) { +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used to compose bitmasks for comparison styles. */ +var UNORDERED_COMPARE_FLAG = 1, + PARTIAL_COMPARE_FLAG = 2; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** Detect free variable `exports`. */ +var freeExports = exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + return freeProcess && freeProcess.binding('util'); + } catch (e) {} +}()); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; } -function set_data(text, data) { - data = '' + data; - if (text.wholeText !== data) - text.data = data; + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; } -function set_style(node, key, value, important) { - node.style.setProperty(key, value, important ? 'important' : ''); + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; } -let current_component; -function set_current_component(component) { - current_component = component; -} +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values ? values.length : 0; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + this.__data__ = new ListCache(entries); +} + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; +} + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + return this.__data__['delete'](key); +} + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; + } + cache = this.__data__ = new MapCache(pairs); + } + cache.set(key, value); + return this; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; +} + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +/** + * The base implementation of `getTag`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + return objectToString.call(value); +} + +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @param {boolean} [bitmask] The bitmask of comparison flags. + * The bitmask may be composed of the following flags: + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, customizer, bitmask, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); +} + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparisons. + * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = getTag(object); + objTag = objTag == argsTag ? objectTag : objTag; + } + if (!othIsArr) { + othTag = getTag(other); + othTag = othTag == argsTag ? objectTag : othTag; + } + var objIsObj = objTag == objectTag && !isHostObject(object), + othIsObj = othTag == objectTag && !isHostObject(other), + isSameTag = objTag == othTag; + + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) + : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); + } + if (!(bitmask & PARTIAL_COMPARE_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, equalFunc, customizer, bitmask, stack); +} + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) + : result + )) { + return false; + } + } + } + return true; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; +} + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); + }; +} + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} + +/** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ +function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, baseIteratee(iteratee), accumulator); + }; +} + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!seen.has(othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + return seen.add(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, customizer, bitmask, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & PARTIAL_COMPARE_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= UNORDERED_COMPARE_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11, +// for data views in Edge < 14, and promises in Node.js. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = isKey(path, object) ? [path] : castPath(path); + + var result, + index = -1, + length = path.length; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result) { + return result; + } + var length = object ? object.length : 0; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + string = toString(string); + + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] + * The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ +var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + result[key] = [value]; + } +}); + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = groupBy; +}); + +/** + * : to get namespaced element + * . to get nested element + * @param element + * @param name + */ +function getElementByName(element, name) { + let value; + if (typeof element.getElementsByTagName !== 'function') { + return; + } + if (name.contains(":")) { + const [namespace, tag] = name.split(":"); + const namespaceUri = element.lookupNamespaceURI(namespace); + if (element.getElementsByTagNameNS(namespaceUri, tag).length > 0) { + value = element.getElementsByTagNameNS(namespaceUri, tag)[0].childNodes[0]; + } + } + else if (name.contains(".")) { + const [prefix, tag] = name.split("."); + if (element.getElementsByTagName(prefix).length > 0) { + const nodes = Array.from(element.getElementsByTagName(prefix)[0].childNodes); + nodes.forEach((node) => { + if (node.nodeName == tag) { + value = node; + } + }); + } + } + else { + if (element.getElementsByTagName(name).length > 0) { + if (element.getElementsByTagName(name)[0].childNodes.length == 0) { + value = element.getElementsByTagName(name)[0]; + } + else { + const node = element.getElementsByTagName(name)[0].childNodes[0]; + if (node !== undefined) + value = node; + } + } + } + return value; +} +/** + * # to get attribute + * @param element + * @param names possible names + */ +function getContent(element, names) { + let value; + names.forEach((name) => { + if (name.contains("#")) { + const [elementName, attr] = name.split("#"); + const data = getElementByName(element, elementName); + if (data) { + if (data.nodeName == elementName) { + //@ts-ignore + value = data.getAttr(attr); + } + } + } + const data = getElementByName(element, name); + if (data) { + //@ts-ignore + if (data.nodeValue) { + value = data.nodeValue; + } + //@ts-ignore + if (data.innerHTML) { + //@ts-ignore + value = data.innerHTML; + } + } + }); + if (value === undefined) { + return ""; + } + return value; +} +function buildItem(element) { + return { + title: getContent(element, ["title"]), + description: getContent(element, ["description"]), + content: getContent(element, ["description", "content", "content:encoded", "summary"]), + category: getContent(element, ["category"]), + link: getContent(element, ["link", "link#href"]), + creator: getContent(element, ["creator", "dc:creator", "author", "author.name"]), + pubDate: getContent(element, ["pubDate", "published", "updated", "dc:date"]), + folder: null, + feed: null, + read: null, + favorite: null, + created: null, + tags: [], + }; +} +function getAllItems(doc) { + const items = []; + if (doc.getElementsByTagName("item")) { + for (const elementsByTagNameKey in doc.getElementsByTagName("item")) { + const entry = doc.getElementsByTagName("item")[elementsByTagNameKey]; + items.push(entry); + } + } + if (doc.getElementsByTagName("entry")) { + for (const elementsByTagNameKey in doc.getElementsByTagName("entry")) { + const entry = doc.getElementsByTagName("entry")[elementsByTagNameKey]; + items.push(entry); + } + } + return items; +} +function getFeedItems(feed) { + return __awaiter(this, void 0, void 0, function* () { + const rawData = yield obsidian.request({ url: feed.url }); + const data = new window.DOMParser().parseFromString(rawData, "text/xml"); + const items = []; + const rawItems = getAllItems(data); + rawItems.forEach((rawItem) => { + const item = buildItem(rawItem); + if (item.title !== undefined && item.title.length !== 0) { + item.folder = feed.folder; + item.feed = feed.name; + item.read = false; + item.favorite = false; + item.created = false; + items.push(item); + } + }); + const image = getContent(data, ["image", "image.url", "icon"]); + const content = { + title: getContent(data, ["title"]), + subtitle: getContent(data, ["subtitle"]), + link: getContent(data, ["link"]), + //we don't want any leading or trailing slashes in image urls(i.e. reddit does that) + image: image ? image.replace(/^\/|\/$/g, '') : null, + description: getContent(data, ["description"]), + items: items, + folder: feed.folder, + name: feed.name + }; + return Promise.resolve(content); + }); +} + +const VIEW_ID = "RSS_FEED"; +const FILE_NAME_REGEX = /["\/<>:|?]/gm; +const TAG_REGEX = /([\p{Letter}\p{Emoji_Presentation}\p{Number}\/_-]+)/u; +const NUMBER_REGEX = /^[0-9]*$/gm; +//TODO: remove once api definition has been updated +/** + * taken from @licat(https://discord.com/channels/686053708261228577/840286264964022302/899037833552093184) + * @param html + */ +function sanitizeHTMLToDom(html) { + // @ts-ignore + return window.DOMPurify.sanitize(html, { + ALLOW_UNKNOWN_PROTOCOLS: true, + RETURN_DOM_FRAGMENT: true, + RETURN_DOM_IMPORT: true, + FORBID_TAGS: ['style'], + ADD_TAGS: ['iframe'], + ADD_ATTR: ['frameborder', 'allowfullscreen', 'allow', 'aria-label-position'], + }); +} +//taken from: https://stackoverflow.com/a/43467144/5589264 +function isValidHttpUrl(string) { + let url; + try { + url = new URL(string); + } + catch (_) { + return false; + } + return url.protocol === "http:" || url.protocol === "https:"; +} + +class FeedModal extends BaseModal { + constructor(plugin, feed) { + super(plugin.app); + this.saved = false; + if (feed) { + this.name = feed.name; + this.url = feed.url; + this.folder = feed.folder; + } + } + display() { + return __awaiter(this, void 0, void 0, function* () { + const { contentEl } = this; + contentEl.empty(); + let nameText; + const name = new obsidian.Setting(contentEl) + .setName("Name") + .setDesc("Name of feed") + .addText((text) => { + nameText = text; + text.setValue(this.name) + .onChange((value) => { + this.removeValidationError(text); + this.name = value; + }); + }); + name.controlEl.addClass("rss-setting-input"); + let urlText; + const url = new obsidian.Setting(contentEl) + .setName("url") + .setDesc("url of feed") + .addText((text) => { + urlText = text; + text.setValue(this.url) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.removeValidationError(text); + this.url = value; + })); + }); + url.controlEl.addClass("rss-setting-input"); + new obsidian.Setting(contentEl) + .setName("Folder") + .addText((text) => { + text.setValue(this.folder) + .onChange((value) => { + this.folder = value; + }); + }); + const footerEl = contentEl.createDiv(); + const footerButtons = new obsidian.Setting(footerEl); + footerButtons.addButton((b) => { + b.setTooltip("Save") + .setIcon("checkmark") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + let error = false; + if (!nameText.getValue().length) { + this.setValidationError(nameText, "you need to specify a name"); + error = true; + } + if (!urlText.getValue().length) { + this.setValidationError(urlText, "you need to specify a url"); + error = true; + } + if (!isValidHttpUrl(urlText.getValue())) { + this.setValidationError(urlText, "This url is not valid"); + error = true; + } + else { + const items = yield getFeedItems({ name: "test", url: urlText.getValue(), folder: "" }); + if (items.items.length == 0) { + this.setValidationError(urlText, "this feed does not have any entries"); + error = true; + } + } + if (error) { + new obsidian.Notice("please fix errors before saving."); + return; + } + this.saved = true; + this.close(); + })); + return b; + }); + footerButtons.addExtraButton((b) => { + b.setIcon("cross") + .setTooltip("Cancel") + .onClick(() => { + this.saved = false; + this.close(); + }); + return b; + }); + }); + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + yield this.display(); + }); + } +} + +function displayFeedSettings(plugin, container) { + container.empty(); + container.createEl("h3", { text: "Feeds" }); + new obsidian.Setting(container) + .setName("Add New") + .setDesc("Add a new Feed") + .addButton((button) => { + return button + .setTooltip("add new Feed") + .setIcon("create-new") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + const modal = new FeedModal(plugin); + modal.onClose = () => __awaiter(this, void 0, void 0, function* () { + if (modal.saved) { + if (plugin.settings.feeds.some(item => item.url === modal.url)) { + new obsidian.Notice("you already have a feed configured with that url"); + return; + } + yield plugin.writeFeeds(() => (plugin.settings.feeds.concat({ + name: modal.name, + url: modal.url, + folder: modal.folder + }))); + displayFeedSettings(plugin, container); + } + }); + modal.open(); + })); + }); + const feedsDiv = container.createDiv("feeds"); + const sorted = lodash_sortby(lodash_groupby(plugin.settings.feeds, "folder"), function (o) { + return o[0].folder; + }); + for (const [, feeds] of Object.entries(sorted)) { + for (const id in feeds) { + const feed = feeds[id]; + const setting = new obsidian.Setting(feedsDiv); + setting.setName((feed.folder ? feed.folder : "No Folder") + " - " + feed.name); + setting.setDesc(feed.url); + setting + .addExtraButton((b) => { + b.setIcon("pencil") + .setTooltip("Edit") + .onClick(() => { + const modal = new FeedModal(plugin, feed); + const oldFeed = feed; + modal.onClose = () => __awaiter(this, void 0, void 0, function* () { + if (modal.saved) { + const feeds = plugin.settings.feeds; + feeds.remove(oldFeed); + feeds.push({ name: modal.name, url: modal.url, folder: modal.folder }); + yield plugin.writeFeeds(() => (feeds)); + displayFeedSettings(plugin, container); + } + }); + modal.open(); + }); + }) + .addExtraButton((b) => { + b.setIcon("trash") + .setTooltip("Delete") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + const feeds = plugin.settings.feeds; + feeds.remove(feed); + yield plugin.writeFeeds(() => (feeds)); + displayFeedSettings(plugin, container); + })); + }); + } + } +} + +const DEFAULT_SETTINGS = Object.freeze({ + feeds: [], + updateTime: 60, + filtered: [{ + name: "Favorites", + filterType: "FAVORITES", + filterContent: "", + sortOrder: "ALPHABET_NORMAL" + }], + saveLocation: 'default', + saveLocationFolder: '', + items: [], + dateFormat: "YYYY-MM-DDTHH:MM:SS", + template: "---\n" + + "link: {{link}}\n" + + "author: {{author}}\n" + + "published: {{published}}\n" + + "tags: [{{tags:,}}]\n" + + "---\n" + + "{{title}}\n" + + "{{content}}", + pasteTemplate: "## {{title}}\n" + + "{{content}}", + askForFilename: true, + autoSync: false, + hotkeys: { + create: "n", + paste: "v", + copy: "c", + favorite: "f", + read: "r", + tags: "t", + open: "o", + } +}); +class RSSReaderSettingsTab extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + containerEl.createEl('h2', { text: 'RSS Reader Settings' }); + containerEl.createEl('h3', { text: 'File creation' }); + new obsidian.Setting(containerEl) + .setName("New file template") + .setDesc('When creating a note from a article this gets processed. ' + + 'Available variables are: {{title}}, {{link}}, {{author}}, {{published}}, {{created}}, {{content}}, {{description}}, {{folder}}, {{feed}}, {{filename}, {{tags}}, {{#tags}}') + .addTextArea((textArea) => { + textArea + .setValue(this.plugin.settings.template) + .setPlaceholder(DEFAULT_SETTINGS.template) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + template: value + })); + })); + textArea.inputEl.setAttr("rows", 8); + }); + new obsidian.Setting(containerEl) + .setName("paste article template") + .setDesc('When pasting/copying an article this gets processed. ' + + 'Available variables are: {{title}}, {{link}}, {{author}}, {{published}}, {{content}}, {{description}}, {{folder}}, {{feed}}, {{tags}}, {{#tags}}') + .addTextArea((textArea) => { + textArea + .setValue(this.plugin.settings.pasteTemplate) + .setPlaceholder(DEFAULT_SETTINGS.pasteTemplate) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + pasteTemplate: value + })); + })); + textArea.inputEl.setAttr("rows", 8); + }); + new obsidian.Setting(containerEl) + .setName("Default location for new notes") + .setDesc("") + .addDropdown((dropdown) => __awaiter(this, void 0, void 0, function* () { + dropdown + .addOption("default", "In the default folder") + .addOption("custom", "In the folder specified below") + .setValue(this.plugin.settings.saveLocation) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ saveLocation: value })); + this.display(); + })); + })); + if (this.plugin.settings.saveLocation == "custom") { + new obsidian.Setting(containerEl) + .setName("Folder to create new articles in") + .setDesc("newly created articles will appear in this folder") + .addSearch((search) => __awaiter(this, void 0, void 0, function* () { + new FolderSuggest(this.app, search.inputEl); + search + .setValue(this.plugin.settings.saveLocationFolder) + .setPlaceholder(DEFAULT_SETTINGS.saveLocationFolder) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ saveLocationFolder: value })); + })); + })); + } + let dateFormatSampleEl; + const dateFormat = new obsidian.Setting(containerEl) + .setName("Date format") + .setDesc("") + .addMomentFormat((format) => { + dateFormatSampleEl = format + .setDefaultFormat(DEFAULT_SETTINGS.dateFormat) + .setPlaceholder(DEFAULT_SETTINGS.dateFormat) + .setValue(this.plugin.settings.dateFormat) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ dateFormat: value })); + })); + }); + const referenceLink = dateFormat.descEl.createEl("a"); + referenceLink.setAttr("href", "https://momentjs.com/docs/#/displaying/format/"); + referenceLink.setText("Syntax Reference"); + const text = dateFormat.descEl.createDiv("text"); + text.setText("Your current syntax looks like this: "); + const sampleEl = text.createSpan("sample"); + dateFormatSampleEl.setSampleEl(sampleEl); + dateFormat.addExtraButton((button) => { + button + .setIcon('reset') + .setTooltip('restore default') + .onClick(() => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + dateFormat: DEFAULT_SETTINGS.dateFormat + })); + this.display(); + })); + }); + containerEl.createEl("h3", { text: "Misc" }); + const refresh = new obsidian.Setting(containerEl) + .setName("Refresh time") + .setDesc("How often should the feeds be refreshed, in minutes, use 0 to disable") + .addText((text) => { + text + .setPlaceholder(String(DEFAULT_SETTINGS.updateTime)) + .setValue(String(this.plugin.settings.updateTime)) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + if (value.length === 0) { + new obsidian.Notice("please specify a value"); + return; + } + if (Number(value) < 0) { + new obsidian.Notice("please specify a bigger value"); + return; + } + yield this.plugin.writeSettings(() => ({ updateTime: Number(value) })); + })); + text.inputEl.setAttr("type", "number"); + text.inputEl.setAttr("min", "1"); + //we don't want decimal numbers. + text.inputEl.setAttr("onkeypress", "return event.charCode >= 48 && event.charCode <= 57"); + }); + refresh.addExtraButton((button) => { + button + .setIcon('reset') + .setTooltip('restore default') + .onClick(() => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + updateTime: DEFAULT_SETTINGS.updateTime + })); + this.display(); + })); + }); + new obsidian.Setting(containerEl) + .setName("Multi device usage") + .setDesc("Keep article status synced when using multiple devices at the same time\n(Requires a restart to become effective)") + .addToggle((toggle) => { + return toggle + .setValue(this.plugin.settings.autoSync) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + autoSync: value + })); + })); + }); + new obsidian.Setting(containerEl) + .setName("Ask for filename") + .setDesc("Disable to use title as filename(with invalid symbols removed)") + .addToggle((toggle) => { + return toggle + .setValue(this.plugin.settings.askForFilename) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + askForFilename: value + })); + })); + }); + containerEl.createEl("h3", { text: "Filtered Folders" }); + new obsidian.Setting(containerEl) + .setName("Add New") + .setDesc("Add new filtered folder") + .addButton((button) => { + return button + .setTooltip("add new filtered folder") + .setIcon("create-new") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + const modal = new FilteredFolderModal(this.plugin); + modal.onClose = () => __awaiter(this, void 0, void 0, function* () { + if (modal.saved) { + if (this.plugin.settings.filtered.some(folder => folder.name === modal.name)) { + new obsidian.Notice("you already have a filter configured with that name"); + return; + } + yield this.plugin.writeFiltered(() => (this.plugin.settings.filtered.concat({ + name: modal.name, + filterType: modal.filterType, + filterContent: modal.filterContent, + sortOrder: modal.sortOrder + }))); + this.display(); + } + }); + modal.open(); + })); + }); + const filterContainer = containerEl.createDiv("filter-container"); + const filtersDiv = filterContainer.createDiv("filters"); + for (const id in this.plugin.settings.filtered.sort((a, b) => a.name.localeCompare(b.name))) { + const filter = this.plugin.settings.filtered[id]; + const setting = new obsidian.Setting(filtersDiv); + setting.setName(filter.name); + setting.setDesc(filter.filterType + (filter.filterContent.length > 0) ? (" from " + filter.filterContent) : ""); + setting + .addExtraButton((b) => { + b.setIcon("pencil") + .setTooltip("Edit") + .onClick(() => { + const modal = new FilteredFolderModal(this.plugin, filter); + const oldFilter = filter; + modal.onClose = () => __awaiter(this, void 0, void 0, function* () { + if (modal.saved) { + const filters = this.plugin.settings.filtered; + filters.remove(oldFilter); + filters.push({ name: modal.name, filterType: modal.filterType, filterContent: modal.filterContent, sortOrder: modal.sortOrder }); + yield this.plugin.writeFiltered(() => (filters)); + this.display(); + } + }); + modal.open(); + }); + }) + .addExtraButton((b) => { + b.setIcon("trash") + .setTooltip("Delete") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + const filters = this.plugin.settings.filtered; + filters.remove(filter); + yield this.plugin.writeFiltered(() => (filters)); + this.display(); + })); + }); + } + const feedsContainer = containerEl.createDiv("feed-container"); + displayFeedSettings(this.plugin, feedsContainer); + containerEl.createEl("h2", { text: "Hotkeys" }); + containerEl.createEl("h3", { text: "when reading a article" }); + new obsidian.Setting(containerEl) + .setName("Create new note") + .addText((text) => { + text + .setValue(this.plugin.settings.hotkeys.create) + .setPlaceholder(DEFAULT_SETTINGS.hotkeys.create) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + hotkeys: Object.assign(Object.assign({}, this.plugin.settings.hotkeys), { create: value }) + })); + })); + text.inputEl.setAttr("maxlength", 1); + text.inputEl.style.width = "20%"; + }); + new obsidian.Setting(containerEl) + .setName("Paste to current note") + .addText((text) => { + text + .setValue(this.plugin.settings.hotkeys.paste) + .setPlaceholder(DEFAULT_SETTINGS.hotkeys.paste) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + hotkeys: Object.assign(Object.assign({}, this.plugin.settings.hotkeys), { paste: value }) + })); + })); + text.inputEl.setAttr("maxlength", 1); + text.inputEl.style.width = "20%"; + }); + new obsidian.Setting(containerEl) + .setName("Open in browser") + .addText((text) => { + text + .setValue(this.plugin.settings.hotkeys.open) + .setPlaceholder(DEFAULT_SETTINGS.hotkeys.open) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + hotkeys: Object.assign(Object.assign({}, this.plugin.settings.hotkeys), { open: value }) + })); + })); + text.inputEl.setAttr("maxlength", 1); + text.inputEl.style.width = "20%"; + }); + new obsidian.Setting(containerEl) + .setName("Copy to clipboard") + .addText((text) => { + text + .setValue(this.plugin.settings.hotkeys.copy) + .setPlaceholder(DEFAULT_SETTINGS.hotkeys.copy) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + hotkeys: Object.assign(Object.assign({}, this.plugin.settings.hotkeys), { copy: value }) + })); + })); + text.inputEl.setAttr("maxlength", 1); + text.inputEl.style.width = "20%"; + }); + new obsidian.Setting(containerEl) + .setName("Mark as favorites/remove from favorites") + .addText((text) => { + text + .setValue(this.plugin.settings.hotkeys.favorite) + .setPlaceholder(DEFAULT_SETTINGS.hotkeys.favorite) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + hotkeys: Object.assign(Object.assign({}, this.plugin.settings.hotkeys), { favorite: value }) + })); + })); + text.inputEl.setAttr("maxlength", 1); + text.inputEl.style.width = "20%"; + }); + new obsidian.Setting(containerEl) + .setName("Mark as read/unread") + .addText((text) => { + text + .setValue(this.plugin.settings.hotkeys.read) + .setPlaceholder(DEFAULT_SETTINGS.hotkeys.read) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + hotkeys: Object.assign(Object.assign({}, this.plugin.settings.hotkeys), { read: value }) + })); + })); + text.inputEl.setAttr("maxlength", 1); + text.inputEl.style.width = "20%"; + }); + new obsidian.Setting(containerEl) + .setName("Edit tags") + .addText((text) => { + text + .setValue(this.plugin.settings.hotkeys.tags) + .setPlaceholder(DEFAULT_SETTINGS.hotkeys.tags) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.plugin.writeSettings(() => ({ + hotkeys: Object.assign(Object.assign({}, this.plugin.settings.hotkeys), { tags: value }) + })); + })); + text.inputEl.setAttr("maxlength", 1); + text.inputEl.style.width = "20%"; + }); + } +} + +function noop() { } +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +let src_url_equal_anchor; +function src_url_equal(element_src, url) { + if (!src_url_equal_anchor) { + src_url_equal_anchor = document.createElement('a'); + } + src_url_equal_anchor.href = url; + return element_src === src_url_equal_anchor.href; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function action_destroyer(action_result) { + return action_result && is_function(action_result.destroy) ? action_result.destroy : noop; +} +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function children(element) { + return Array.from(element.childNodes); +} +function set_data(text, data) { + data = '' + data; + if (text.wholeText !== data) + text.data = data; +} +function set_style(node, key, value, important) { + node.style.setProperty(key, value, important ? 'important' : ''); +} + +let current_component; +function set_current_component(component) { + current_component = component; +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +let flushing = false; +const seen_callbacks = new Set(); +function flush() { + if (flushing) + return; + flushing = true; + do { + // first, call beforeUpdate functions + // and update components + for (let i = 0; i < dirty_components.length; i += 1) { + const component = dirty_components[i]; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + flushing = false; + seen_callbacks.clear(); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +let outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } +} +function create_component(block) { + block && block.c(); +} +function mount_component(component, target, anchor, customElement) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles && append_styles($$.root); + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +/** + * Base class for Svelte components. Used when dev=false. + */ +class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +} + +const subscriber_queue = []; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop) { + let stop; + const subscribers = new Set(); + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} + +const configuredFeedsStore = writable([]); +const filteredStore = writable([]); +const settingsStore = writable(DEFAULT_SETTINGS); +const feedsStore = writable([]); +const sortedFeedsStore = writable(); +const filteredItemsStore = writable(); + +/* src/view/IconComponent.svelte generated by Svelte v3.44.2 */ + +function create_if_block$4(ctx) { + let span; + let icon_action; + let mounted; + let dispose; + + return { + c() { + span = element("span"); + }, + m(target, anchor) { + insert(target, span, anchor); + + if (!mounted) { + dispose = action_destroyer(icon_action = /*icon*/ ctx[1].call(null, span, /*iconName*/ ctx[0])); + mounted = true; + } + }, + p(ctx, dirty) { + if (icon_action && is_function(icon_action.update) && dirty & /*iconName*/ 1) icon_action.update.call(null, /*iconName*/ ctx[0]); + }, + d(detaching) { + if (detaching) detach(span); + mounted = false; + dispose(); + } + }; +} + +function create_fragment$4(ctx) { + let if_block_anchor; + let if_block = /*iconName*/ ctx[0].length > 0 && create_if_block$4(ctx); + + return { + c() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx, [dirty]) { + if (/*iconName*/ ctx[0].length > 0) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block$4(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: noop, + o: noop, + d(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} + +function instance$4($$self, $$props, $$invalidate) { + let { iconName = "" } = $$props; + + const icon = (node, icon) => { + obsidian.setIcon(node, icon); + }; + + $$self.$$set = $$props => { + if ('iconName' in $$props) $$invalidate(0, iconName = $$props.iconName); + }; + + return [iconName, icon]; +} + +class IconComponent extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$4, create_fragment$4, safe_not_equal, { iconName: 0 }); + } +} + +//slightly modified version from https://github.com/zsviczian/obsidian-excalidraw-plugin +class TextInputPrompt extends BaseModal { + constructor(app, promptText, hint, defaultValue, placeholder) { + super(app); + this.promptText = promptText; + this.hint = hint; + this.defaultValue = defaultValue; + this.placeholder = placeholder; + } + onOpen() { + this.titleEl.setText(this.promptText); + this.createForm(); + } + onClose() { + this.contentEl.empty(); + } + createForm() { + const div = this.contentEl.createDiv(); + const text = new obsidian.Setting(div).setName(this.promptText).setDesc(this.hint).addText((textComponent) => { + textComponent + .setValue(this.defaultValue) + .setPlaceholder(this.placeholder) + .onChange(() => { + this.removeValidationError(textComponent); + }) + .inputEl.setAttribute("size", "50"); + this.textComponent = textComponent; + }); + text.controlEl.addClass("rss-setting-input"); + new obsidian.Setting(div).addButton((b) => { + b + .setButtonText("Save") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + this.resolve(this.textComponent); + })); + return b; + }); + } + openAndGetValue(resolve) { + return __awaiter(this, void 0, void 0, function* () { + this.resolve = resolve; + yield this.open(); + }); + } +} + +var feather = createCommonjsModule(function (module, exports) { +(function webpackUniversalModuleDefinition(root, factory) { + module.exports = factory(); +})(typeof self !== 'undefined' ? self : commonjsGlobal, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./dist/icons.json": +/*!*************************!*\ + !*** ./dist/icons.json ***! + \*************************/ +/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ +/***/ (function(module) { + +module.exports = {"activity":"","airplay":"","alert-circle":"","alert-octagon":"","alert-triangle":"","align-center":"","align-justify":"","align-left":"","align-right":"","anchor":"","aperture":"","archive":"","arrow-down-circle":"","arrow-down-left":"","arrow-down-right":"","arrow-down":"","arrow-left-circle":"","arrow-left":"","arrow-right-circle":"","arrow-right":"","arrow-up-circle":"","arrow-up-left":"","arrow-up-right":"","arrow-up":"","at-sign":"","award":"","bar-chart-2":"","bar-chart":"","battery-charging":"","battery":"","bell-off":"","bell":"","bluetooth":"","bold":"","book-open":"","book":"","bookmark":"","box":"","briefcase":"","calendar":"","camera-off":"","camera":"","cast":"","check-circle":"","check-square":"","check":"","chevron-down":"","chevron-left":"","chevron-right":"","chevron-up":"","chevrons-down":"","chevrons-left":"","chevrons-right":"","chevrons-up":"","chrome":"","circle":"","clipboard":"","clock":"","cloud-drizzle":"","cloud-lightning":"","cloud-off":"","cloud-rain":"","cloud-snow":"","cloud":"","code":"","codepen":"","codesandbox":"","coffee":"","columns":"","command":"","compass":"","copy":"","corner-down-left":"","corner-down-right":"","corner-left-down":"","corner-left-up":"","corner-right-down":"","corner-right-up":"","corner-up-left":"","corner-up-right":"","cpu":"","credit-card":"","crop":"","crosshair":"","database":"","delete":"","disc":"","divide-circle":"","divide-square":"","divide":"","dollar-sign":"","download-cloud":"","download":"","dribbble":"","droplet":"","edit-2":"","edit-3":"","edit":"","external-link":"","eye-off":"","eye":"","facebook":"","fast-forward":"","feather":"","figma":"","file-minus":"","file-plus":"","file-text":"","file":"","film":"","filter":"","flag":"","folder-minus":"","folder-plus":"","folder":"","framer":"","frown":"","gift":"","git-branch":"","git-commit":"","git-merge":"","git-pull-request":"","github":"","gitlab":"","globe":"","grid":"","hard-drive":"","hash":"","headphones":"","heart":"","help-circle":"","hexagon":"","home":"","image":"","inbox":"","info":"","instagram":"","italic":"","key":"","layers":"","layout":"","life-buoy":"","link-2":"","link":"","linkedin":"","list":"","loader":"","lock":"","log-in":"","log-out":"","mail":"","map-pin":"","map":"","maximize-2":"","maximize":"","meh":"","menu":"","message-circle":"","message-square":"","mic-off":"","mic":"","minimize-2":"","minimize":"","minus-circle":"","minus-square":"","minus":"","monitor":"","moon":"","more-horizontal":"","more-vertical":"","mouse-pointer":"","move":"","music":"","navigation-2":"","navigation":"","octagon":"","package":"","paperclip":"","pause-circle":"","pause":"","pen-tool":"","percent":"","phone-call":"","phone-forwarded":"","phone-incoming":"","phone-missed":"","phone-off":"","phone-outgoing":"","phone":"","pie-chart":"","play-circle":"","play":"","plus-circle":"","plus-square":"","plus":"","pocket":"","power":"","printer":"","radio":"","refresh-ccw":"","refresh-cw":"","repeat":"","rewind":"","rotate-ccw":"","rotate-cw":"","rss":"","save":"","scissors":"","search":"","send":"","server":"","settings":"","share-2":"","share":"","shield-off":"","shield":"","shopping-bag":"","shopping-cart":"","shuffle":"","sidebar":"","skip-back":"","skip-forward":"","slack":"","slash":"","sliders":"","smartphone":"","smile":"","speaker":"","square":"","star":"","stop-circle":"","sun":"","sunrise":"","sunset":"","tablet":"","tag":"","target":"","terminal":"","thermometer":"","thumbs-down":"","thumbs-up":"","toggle-left":"","toggle-right":"","tool":"","trash-2":"","trash":"","trello":"","trending-down":"","trending-up":"","triangle":"","truck":"","tv":"","twitch":"","twitter":"","type":"","umbrella":"","underline":"","unlock":"","upload-cloud":"","upload":"","user-check":"","user-minus":"","user-plus":"","user-x":"","user":"","users":"","video-off":"","video":"","voicemail":"","volume-1":"","volume-2":"","volume-x":"","volume":"","watch":"","wifi-off":"","wifi":"","wind":"","x-circle":"","x-octagon":"","x-square":"","x":"","youtube":"","zap-off":"","zap":"","zoom-in":"","zoom-out":""}; + +/***/ }), + +/***/ "./node_modules/classnames/dedupe.js": +/*!*******************************************!*\ + !*** ./node_modules/classnames/dedupe.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/* global define */ + +(function () { + + var classNames = (function () { + // don't inherit from Object so we can skip hasOwnProperty check later + // http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232 + function StorageObject() {} + StorageObject.prototype = Object.create(null); + + function _parseArray (resultSet, array) { + var length = array.length; + + for (var i = 0; i < length; ++i) { + _parse(resultSet, array[i]); + } + } + + var hasOwn = {}.hasOwnProperty; + + function _parseNumber (resultSet, num) { + resultSet[num] = true; + } + + function _parseObject (resultSet, object) { + for (var k in object) { + if (hasOwn.call(object, k)) { + // set value to false instead of deleting it to avoid changing object structure + // https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions + resultSet[k] = !!object[k]; + } + } + } + + var SPACE = /\s+/; + function _parseString (resultSet, str) { + var array = str.split(SPACE); + var length = array.length; + + for (var i = 0; i < length; ++i) { + resultSet[array[i]] = true; + } + } + + function _parse (resultSet, arg) { + if (!arg) return; + var argType = typeof arg; + + // 'foo bar' + if (argType === 'string') { + _parseString(resultSet, arg); + + // ['foo', 'bar', ...] + } else if (Array.isArray(arg)) { + _parseArray(resultSet, arg); + + // { 'foo': true, ... } + } else if (argType === 'object') { + _parseObject(resultSet, arg); + + // '130' + } else if (argType === 'number') { + _parseNumber(resultSet, arg); + } + } + + function _classNames () { + // don't leak arguments + // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments + var len = arguments.length; + var args = Array(len); + for (var i = 0; i < len; i++) { + args[i] = arguments[i]; + } + + var classSet = new StorageObject(); + _parseArray(classSet, args); + + var list = []; + + for (var k in classSet) { + if (classSet[k]) { + list.push(k); + } + } + + return list.join(' '); + } + + return _classNames; + })(); + + if (typeof module !== 'undefined' && module.exports) { + module.exports = classNames; + } else { + // register as 'classnames', consistent with npm package name + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return classNames; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } +}()); + + +/***/ }), + +/***/ "./node_modules/core-js/es/array/from.js": +/*!***********************************************!*\ + !*** ./node_modules/core-js/es/array/from.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js"); +__webpack_require__(/*! ../../modules/es.array.from */ "./node_modules/core-js/modules/es.array.from.js"); +var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); + +module.exports = path.Array.from; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/a-function.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/a-function.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (it) { + if (typeof it != 'function') { + throw TypeError(String(it) + ' is not a function'); + } return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/an-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/an-object.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +module.exports = function (it) { + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } return it; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-from.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/array-from.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); +var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); +var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); + +// `Array.from` method +// https://tc39.github.io/ecma262/#sec-array.from +module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iteratorMethod = getIteratorMethod(O); + var length, result, step, iterator; + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = iteratorMethod.call(O); + result = new C(); + for (;!(step = iterator.next()).done; index++) { + createProperty(result, index, mapping + ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) + : step.value + ); + } + } else { + length = toLength(O.length); + result = new C(length); + for (;length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/array-includes.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/array-includes.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); +var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); + +// `Array.prototype.{ indexOf, includes }` methods implementation +// false -> Array#indexOf +// https://tc39.github.io/ecma262/#sec-array.prototype.indexof +// true -> Array#includes +// https://tc39.github.io/ecma262/#sec-array.prototype.includes +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/bind-context.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/bind-context.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); + +// optional / simple context binding +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 0: return function () { + return fn.call(that); + }; + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": +/*!****************************************************************************!*\ + !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +// call something on iterator step with safe closing on error +module.exports = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (error) { + var returnMethod = iterator['return']; + if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); + throw error; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js": +/*!**************************************************************************!*\ + !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line no-throw-literal + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof-raw.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/classof-raw.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/classof.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/classof.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/copy-constructor-properties.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); +var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); + +module.exports = function (target, source) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/correct-prototype-getter.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-iterator-constructor.js": +/*!***********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype; +var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property-descriptor.js": +/*!**********************************************************************!*\ + !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! + \**********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/create-property.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/create-property.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = function (object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/define-iterator.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/define-iterator.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js"); +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); +var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js"); + +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { + hide(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return nativeIterator.call(this); }; + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + hide(IterablePrototype, ITERATOR, defaultIterator); + } + Iterators[NAME] = defaultIterator; + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + return methods; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/descriptors.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/descriptors.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +// Thank's IE8 for his funny defineProperty +module.exports = !fails(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/document-create-element.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/document-create-element.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var exist = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return exist ? document.createElement(it) : {}; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/enum-bug-keys.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/export.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/export.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); +var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); +var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty === typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + hide(sourceProperty, 'sham', true); + } + // extend global + redefine(target, key, sourceProperty, options); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/fails.js": +/*!*************************************************!*\ + !*** ./node_modules/core-js/internals/fails.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/function-to-string.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/function-to-string.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); + +module.exports = shared('native-function-to-string', Function.toString); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/get-iterator-method.js": +/*!***************************************************************!*\ + !*** ./node_modules/core-js/internals/get-iterator-method.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/global.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/global.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {var O = 'object'; +var check = function (it) { + return it && it.Math == Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line no-undef + check(typeof globalThis == O && globalThis) || + check(typeof window == O && window) || + check(typeof self == O && self) || + check(typeof global == O && global) || + // eslint-disable-next-line no-new-func + Function('return this')(); + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))); + +/***/ }), + +/***/ "./node_modules/core-js/internals/has.js": +/*!***********************************************!*\ + !*** ./node_modules/core-js/internals/has.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; + +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/hidden-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/hidden-keys.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/hide.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/hide.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/html.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/html.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + +var document = global.document; + +module.exports = document && document.documentElement; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/ie8-dom-define.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); + +// Thank's IE8 for his funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a != 7; +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/indexed-object.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/indexed-object.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + +var split = ''.split; + +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins + return !Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) == 'String' ? split.call(it, '') : Object(it); +} : Object; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/internal-state.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/internal-state.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP) { + var store = new WeakMap(); + var wmget = store.get; + var wmhas = store.has; + var wmset = store.set; + set = function (it, metadata) { + wmset.call(store, it, metadata); + return metadata; + }; + get = function (it) { + return wmget.call(store, it) || {}; + }; + has = function (it) { + return wmhas.call(store, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + hide(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return objectHas(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return objectHas(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-array-iterator-method.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-forced.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-forced.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true + : value == NATIVE ? false + : typeof detection == 'function' ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/is-object.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/is-pure.js": +/*!***************************************************!*\ + !*** ./node_modules/core-js/internals/is-pure.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = false; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators-core.js": +/*!**********************************************************!*\ + !*** ./node_modules/core-js/internals/iterators-core.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +var returnThis = function () { return this; }; + +// `%IteratorPrototype%` object +// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +if (IteratorPrototype == undefined) IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/iterators.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/iterators.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/native-symbol.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/native-symbol.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + // Chrome 38 Symbol has incorrect toString conversion + // eslint-disable-next-line no-undef + return !String(Symbol()); +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/native-weak-map.js": +/*!***********************************************************!*\ + !*** ./node_modules/core-js/internals/native-weak-map.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); + +var WeakMap = global.WeakMap; + +module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-create.js": +/*!*********************************************************!*\ + !*** ./node_modules/core-js/internals/object-create.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); +var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); +var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var IE_PROTO = sharedKey('IE_PROTO'); + +var PROTOTYPE = 'prototype'; +var Empty = function () { /* empty */ }; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var length = enumBugKeys.length; + var lt = '<'; + var script = 'script'; + var gt = '>'; + var js = 'java' + script + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = String(js); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; + return createDict(); +}; + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : defineProperties(result, Properties); +}; + +hiddenKeys[IE_PROTO] = true; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-properties.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-properties.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); + +module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var i = 0; + var key; + while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]); + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-define-property.js": +/*!******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-define-property.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); + +var nativeDefineProperty = Object.defineProperty; + +exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": +/*!******************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! + \******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); +var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); +var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); + +var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-names.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": +/*!***************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-get-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); +var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); +var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); + +var IE_PROTO = sharedKey('IE_PROTO'); +var ObjectPrototype = Object.prototype; + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectPrototype : null; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys-internal.js": +/*!****************************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys-internal.js ***! + \****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); +var arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js"); +var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + +var arrayIndexOf = arrayIncludes(false); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-keys.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/object-keys.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); +var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": +/*!*************************************************************************!*\ + !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! + \*************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var nativePropertyIsEnumerable = {}.propertyIsEnumerable; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : nativePropertyIsEnumerable; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/object-set-prototype-of.js": +/*!*******************************************************************!*\ + !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js"); + +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var correctSetter = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; + setter.call(test, []); + correctSetter = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + validateSetPrototypeOfArguments(O, proto); + if (correctSetter) setter.call(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/own-keys.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/own-keys.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); +var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +var Reflect = global.Reflect; + +// all object keys, includes non-enumerable and symbols +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; +}; + -const dirty_components = []; -const binding_callbacks = []; -const render_callbacks = []; -const flush_callbacks = []; -const resolved_promise = Promise.resolve(); -let update_scheduled = false; -function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } -} -function add_render_callback(fn) { - render_callbacks.push(fn); -} -let flushing = false; -const seen_callbacks = new Set(); -function flush() { - if (flushing) - return; - flushing = true; - do { - // first, call beforeUpdate functions - // and update components - for (let i = 0; i < dirty_components.length; i += 1) { - const component = dirty_components[i]; - set_current_component(component); - update(component.$$); - } - set_current_component(null); - dirty_components.length = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); - // then, once components are updated, call - // afterUpdate functions. This may cause - // subsequent updates... - for (let i = 0; i < render_callbacks.length; i += 1) { - const callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - // ...so guard against infinite loops - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); - } - update_scheduled = false; - flushing = false; - seen_callbacks.clear(); -} -function update($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } -} -const outroing = new Set(); -let outros; -function group_outros() { - outros = { - r: 0, - c: [], - p: outros // parent group - }; -} -function check_outros() { - if (!outros.r) { - run_all(outros.c); - } - outros = outros.p; -} -function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } -} -function transition_out(block, local, detach, callback) { - if (block && block.o) { - if (outroing.has(block)) - return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach) - block.d(1); - callback(); - } - }); - block.o(local); - } -} -function create_component(block) { - block && block.c(); -} -function mount_component(component, target, anchor, customElement) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; - fragment && fragment.m(target, anchor); - if (!customElement) { - // onMount happens before the initial afterUpdate - add_render_callback(() => { - const new_on_destroy = on_mount.map(run).filter(is_function); - if (on_destroy) { - on_destroy.push(...new_on_destroy); - } - else { - // Edge case - component was destroyed immediately, - // most likely as a result of a binding initialising - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - } - after_update.forEach(add_render_callback); -} -function destroy_component(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - // TODO null out other refs, including component.$$ (but need to - // preserve final state?) - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } -} -function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); -} -function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) { - const parent_component = current_component; - set_current_component(component); - const $$ = component.$$ = { - fragment: null, - ctx: null, - // state - props, - update: noop, - not_equal, - bound: blank_object(), - // lifecycle - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), - // everything else - callbacks: blank_object(), - dirty, - skip_bound: false, - root: options.target || parent_component.$$.root - }; - append_styles && append_styles($$.root); - let ready = false; - $$.ctx = instance - ? instance(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty(component, i); - } - return ret; - }) - : []; - $$.update(); - ready = true; - run_all($$.before_update); - // `false` as a special case of no DOM component - $$.fragment = create_fragment ? create_fragment($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - const nodes = children(options.target); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } - else { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor, options.customElement); - flush(); - } - set_current_component(parent_component); -} -/** - * Base class for Svelte components. Used when dev=false. - */ -class SvelteComponent { - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type, callback) { - const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); - callbacks.push(callback); - return () => { - const index = callbacks.indexOf(callback); - if (index !== -1) - callbacks.splice(index, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } - } -} +/***/ }), + +/***/ "./node_modules/core-js/internals/path.js": +/*!************************************************!*\ + !*** ./node_modules/core-js/internals/path.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/redefine.js": +/*!****************************************************!*\ + !*** ./node_modules/core-js/internals/redefine.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); +var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); -const subscriber_queue = []; -/** - * Create a `Writable` store that allows both updating and reading by subscription. - * @param {*=}value initial value - * @param {StartStopNotifier=}start start and stop notifications for subscriptions - */ -function writable(value, start = noop) { - let stop; - const subscribers = new Set(); - function set(new_value) { - if (safe_not_equal(value, new_value)) { - value = new_value; - if (stop) { // store is ready - const run_queue = !subscriber_queue.length; - for (const subscriber of subscribers) { - subscriber[1](); - subscriber_queue.push(subscriber, value); - } - if (run_queue) { - for (let i = 0; i < subscriber_queue.length; i += 2) { - subscriber_queue[i][0](subscriber_queue[i + 1]); - } - subscriber_queue.length = 0; - } - } - } - } - function update(fn) { - set(fn(value)); - } - function subscribe(run, invalidate = noop) { - const subscriber = [run, invalidate]; - subscribers.add(subscriber); - if (subscribers.size === 1) { - stop = start(set) || noop; - } - run(value); - return () => { - subscribers.delete(subscriber); - if (subscribers.size === 0) { - stop(); - stop = null; - } - }; - } - return { set, update, subscribe }; -} +var getInternalState = InternalStateModule.get; +var enforceInternalState = InternalStateModule.enforce; +var TEMPLATE = String(nativeFunctionToString).split('toString'); -const configuredFeedsStore = writable([]); -const filteredStore = writable([]); -const settingsStore = writable(DEFAULT_SETTINGS); -const feedsStore = writable([]); -const sortedFeedsStore = writable(); -const filteredItemsStore = writable(); +shared('inspectSource', function (it) { + return nativeFunctionToString.call(it); +}); -/* src/view/IconComponent.svelte generated by Svelte v3.44.2 */ +(module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + if (typeof value == 'function') { + if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); + enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); + } + if (O === global) { + if (simple) O[key] = value; + else setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) O[key] = value; + else hide(O, key, value); +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, 'toString', function toString() { + return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); +}); -function create_if_block$4(ctx) { - let span; - let icon_action; - let mounted; - let dispose; - return { - c() { - span = element("span"); - }, - m(target, anchor) { - insert(target, span, anchor); +/***/ }), - if (!mounted) { - dispose = action_destroyer(icon_action = /*icon*/ ctx[1].call(null, span, /*iconName*/ ctx[0])); - mounted = true; - } - }, - p(ctx, dirty) { - if (icon_action && is_function(icon_action.update) && dirty & /*iconName*/ 1) icon_action.update.call(null, /*iconName*/ ctx[0]); - }, - d(detaching) { - if (detaching) detach(span); - mounted = false; - dispose(); - } - }; -} +/***/ "./node_modules/core-js/internals/require-object-coercible.js": +/*!********************************************************************!*\ + !*** ./node_modules/core-js/internals/require-object-coercible.js ***! + \********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { -function create_fragment$4(ctx) { - let if_block_anchor; - let if_block = /*iconName*/ ctx[0].length > 0 && create_if_block$4(ctx); +// `RequireObjectCoercible` abstract operation +// https://tc39.github.io/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; - return { - c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx, [dirty]) { - if (/*iconName*/ ctx[0].length > 0) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block$4(ctx); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - i: noop, - o: noop, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; -} -function instance$4($$self, $$props, $$invalidate) { - let { iconName = "" } = $$props; +/***/ }), + +/***/ "./node_modules/core-js/internals/set-global.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/set-global.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); + +module.exports = function (key, value) { + try { + hide(global, key, value); + } catch (error) { + global[key] = value; + } return value; +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/set-to-string-tag.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; +var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); +var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { + defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); + } +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared-key.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/shared-key.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + + +/***/ }), + +/***/ "./node_modules/core-js/internals/shared.js": +/*!**************************************************!*\ + !*** ./node_modules/core-js/internals/shared.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); +var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || setGlobal(SHARED, {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.1.3', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-at.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/string-at.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); - const icon = (node, icon) => { - obsidian.setIcon(node, icon); - }; +// CONVERT_TO_STRING: true -> String#at +// CONVERT_TO_STRING: false -> String#codePointAt +module.exports = function (that, pos, CONVERT_TO_STRING) { + var S = String(requireObjectCoercible(that)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING ? S.charAt(position) : first + : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; +}; - $$self.$$set = $$props => { - if ('iconName' in $$props) $$invalidate(0, iconName = $$props.iconName); - }; - return [iconName, icon]; -} +/***/ }), -class IconComponent extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$4, create_fragment$4, safe_not_equal, { iconName: 0 }); - } -} +/***/ "./node_modules/core-js/internals/to-absolute-index.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-absolute-index.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { -//slightly modified version from https://github.com/zsviczian/obsidian-excalidraw-plugin -class TextInputPrompt extends BaseModal { - constructor(app, promptText, hint, defaultValue, placeholder) { - super(app); - this.promptText = promptText; - this.hint = hint; - this.defaultValue = defaultValue; - this.placeholder = placeholder; - } - onOpen() { - this.titleEl.setText(this.promptText); - this.createForm(); - } - onClose() { - this.contentEl.empty(); - } - createForm() { - const div = this.contentEl.createDiv(); - const text = new obsidian.Setting(div).setName(this.promptText).setDesc(this.hint).addText((textComponent) => { - textComponent - .setValue(this.defaultValue) - .setPlaceholder(this.placeholder) - .onChange(() => { - this.removeValidationError(textComponent); - }) - .inputEl.setAttribute("size", "50"); - this.textComponent = textComponent; - }); - text.controlEl.addClass("rss-setting-input"); - new obsidian.Setting(div).addButton((b) => { - b - .setButtonText("Save") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - this.resolve(this.textComponent); - })); - return b; - }); - } - openAndGetValue(resolve) { - return __awaiter(this, void 0, void 0, function* () { - this.resolve = resolve; - yield this.open(); - }); - } -} +var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); -var feather = createCommonjsModule(function (module, exports) { -(function webpackUniversalModuleDefinition(root, factory) { - module.exports = factory(); -})(typeof self !== 'undefined' ? self : commonjsGlobal, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ({ +var max = Math.max; +var min = Math.min; -/***/ "./dist/icons.json": -/*!*************************!*\ - !*** ./dist/icons.json ***! - \*************************/ -/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ -/***/ (function(module) { +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). +module.exports = function (index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; -module.exports = {"activity":"","airplay":"","alert-circle":"","alert-octagon":"","alert-triangle":"","align-center":"","align-justify":"","align-left":"","align-right":"","anchor":"","aperture":"","archive":"","arrow-down-circle":"","arrow-down-left":"","arrow-down-right":"","arrow-down":"","arrow-left-circle":"","arrow-left":"","arrow-right-circle":"","arrow-right":"","arrow-up-circle":"","arrow-up-left":"","arrow-up-right":"","arrow-up":"","at-sign":"","award":"","bar-chart-2":"","bar-chart":"","battery-charging":"","battery":"","bell-off":"","bell":"","bluetooth":"","bold":"","book-open":"","book":"","bookmark":"","box":"","briefcase":"","calendar":"","camera-off":"","camera":"","cast":"","check-circle":"","check-square":"","check":"","chevron-down":"","chevron-left":"","chevron-right":"","chevron-up":"","chevrons-down":"","chevrons-left":"","chevrons-right":"","chevrons-up":"","chrome":"","circle":"","clipboard":"","clock":"","cloud-drizzle":"","cloud-lightning":"","cloud-off":"","cloud-rain":"","cloud-snow":"","cloud":"","code":"","codepen":"","codesandbox":"","coffee":"","columns":"","command":"","compass":"","copy":"","corner-down-left":"","corner-down-right":"","corner-left-down":"","corner-left-up":"","corner-right-down":"","corner-right-up":"","corner-up-left":"","corner-up-right":"","cpu":"","credit-card":"","crop":"","crosshair":"","database":"","delete":"","disc":"","divide-circle":"","divide-square":"","divide":"","dollar-sign":"","download-cloud":"","download":"","dribbble":"","droplet":"","edit-2":"","edit-3":"","edit":"","external-link":"","eye-off":"","eye":"","facebook":"","fast-forward":"","feather":"","figma":"","file-minus":"","file-plus":"","file-text":"","file":"","film":"","filter":"","flag":"","folder-minus":"","folder-plus":"","folder":"","framer":"","frown":"","gift":"","git-branch":"","git-commit":"","git-merge":"","git-pull-request":"","github":"","gitlab":"","globe":"","grid":"","hard-drive":"","hash":"","headphones":"","heart":"","help-circle":"","hexagon":"","home":"","image":"","inbox":"","info":"","instagram":"","italic":"","key":"","layers":"","layout":"","life-buoy":"","link-2":"","link":"","linkedin":"","list":"","loader":"","lock":"","log-in":"","log-out":"","mail":"","map-pin":"","map":"","maximize-2":"","maximize":"","meh":"","menu":"","message-circle":"","message-square":"","mic-off":"","mic":"","minimize-2":"","minimize":"","minus-circle":"","minus-square":"","minus":"","monitor":"","moon":"","more-horizontal":"","more-vertical":"","mouse-pointer":"","move":"","music":"","navigation-2":"","navigation":"","octagon":"","package":"","paperclip":"","pause-circle":"","pause":"","pen-tool":"","percent":"","phone-call":"","phone-forwarded":"","phone-incoming":"","phone-missed":"","phone-off":"","phone-outgoing":"","phone":"","pie-chart":"","play-circle":"","play":"","plus-circle":"","plus-square":"","plus":"","pocket":"","power":"","printer":"","radio":"","refresh-ccw":"","refresh-cw":"","repeat":"","rewind":"","rotate-ccw":"","rotate-cw":"","rss":"","save":"","scissors":"","search":"","send":"","server":"","settings":"","share-2":"","share":"","shield-off":"","shield":"","shopping-bag":"","shopping-cart":"","shuffle":"","sidebar":"","skip-back":"","skip-forward":"","slack":"","slash":"","sliders":"","smartphone":"","smile":"","speaker":"","square":"","star":"","stop-circle":"","sun":"","sunrise":"","sunset":"","tablet":"","tag":"","target":"","terminal":"","thermometer":"","thumbs-down":"","thumbs-up":"","toggle-left":"","toggle-right":"","tool":"","trash-2":"","trash":"","trello":"","trending-down":"","trending-up":"","triangle":"","truck":"","tv":"","twitch":"","twitter":"","type":"","umbrella":"","underline":"","unlock":"","upload-cloud":"","upload":"","user-check":"","user-minus":"","user-plus":"","user-x":"","user":"","users":"","video-off":"","video":"","voicemail":"","volume-1":"","volume-2":"","volume-x":"","volume":"","watch":"","wifi-off":"","wifi":"","wind":"","x-circle":"","x-octagon":"","x-square":"","x":"","youtube":"","zap-off":"","zap":"","zoom-in":"","zoom-out":""}; /***/ }), -/***/ "./node_modules/classnames/dedupe.js": -/*!*******************************************!*\ - !*** ./node_modules/classnames/dedupe.js ***! - \*******************************************/ +/***/ "./node_modules/core-js/internals/to-indexed-object.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/to-indexed-object.js ***! + \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -/* global define */ +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); -(function () { +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; - var classNames = (function () { - // don't inherit from Object so we can skip hasOwnProperty check later - // http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232 - function StorageObject() {} - StorageObject.prototype = Object.create(null); - function _parseArray (resultSet, array) { - var length = array.length; +/***/ }), - for (var i = 0; i < length; ++i) { - _parse(resultSet, array[i]); - } - } +/***/ "./node_modules/core-js/internals/to-integer.js": +/*!******************************************************!*\ + !*** ./node_modules/core-js/internals/to-integer.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { - var hasOwn = {}.hasOwnProperty; +var ceil = Math.ceil; +var floor = Math.floor; - function _parseNumber (resultSet, num) { - resultSet[num] = true; - } +// `ToInteger` abstract operation +// https://tc39.github.io/ecma262/#sec-tointeger +module.exports = function (argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); +}; - function _parseObject (resultSet, object) { - for (var k in object) { - if (hasOwn.call(object, k)) { - // set value to false instead of deleting it to avoid changing object structure - // https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions - resultSet[k] = !!object[k]; - } - } - } - var SPACE = /\s+/; - function _parseString (resultSet, str) { - var array = str.split(SPACE); - var length = array.length; +/***/ }), - for (var i = 0; i < length; ++i) { - resultSet[array[i]] = true; - } - } +/***/ "./node_modules/core-js/internals/to-length.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-length.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); - function _parse (resultSet, arg) { - if (!arg) return; - var argType = typeof arg; +var min = Math.min; - // 'foo bar' - if (argType === 'string') { - _parseString(resultSet, arg); +// `ToLength` abstract operation +// https://tc39.github.io/ecma262/#sec-tolength +module.exports = function (argument) { + return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; - // ['foo', 'bar', ...] - } else if (Array.isArray(arg)) { - _parseArray(resultSet, arg); - // { 'foo': true, ... } - } else if (argType === 'object') { - _parseObject(resultSet, arg); +/***/ }), - // '130' - } else if (argType === 'number') { - _parseNumber(resultSet, arg); - } - } +/***/ "./node_modules/core-js/internals/to-object.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-object.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - function _classNames () { - // don't leak arguments - // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments - var len = arguments.length; - var args = Array(len); - for (var i = 0; i < len; i++) { - args[i] = arguments[i]; - } +var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); - var classSet = new StorageObject(); - _parseArray(classSet, args); +// `ToObject` abstract operation +// https://tc39.github.io/ecma262/#sec-toobject +module.exports = function (argument) { + return Object(requireObjectCoercible(argument)); +}; - var list = []; - for (var k in classSet) { - if (classSet[k]) { - list.push(k); - } - } +/***/ }), - return list.join(' '); - } +/***/ "./node_modules/core-js/internals/to-primitive.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/internals/to-primitive.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - return _classNames; - })(); +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); - if (typeof module !== 'undefined' && module.exports) { - module.exports = classNames; - } else { - // register as 'classnames', consistent with npm package name - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { - return classNames; - }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } -}()); +// 7.1.1 ToPrimitive(input [, PreferredType]) +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; /***/ }), -/***/ "./node_modules/core-js/es/array/from.js": +/***/ "./node_modules/core-js/internals/uid.js": /*!***********************************************!*\ - !*** ./node_modules/core-js/es/array/from.js ***! + !*** ./node_modules/core-js/internals/uid.js ***! \***********************************************/ /*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/***/ (function(module, exports) { -__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js"); -__webpack_require__(/*! ../../modules/es.array.from */ "./node_modules/core-js/modules/es.array.from.js"); -var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); +var id = 0; +var postfix = Math.random(); -module.exports = path.Array.from; +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36)); +}; /***/ }), -/***/ "./node_modules/core-js/internals/a-function.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/a-function.js ***! - \******************************************************/ +/***/ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***! + \*******************************************************************************/ /*! no static exports found */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { -module.exports = function (it) { - if (typeof it != 'function') { - throw TypeError(String(it) + ' is not a function'); - } return it; +var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + +module.exports = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) { + throw TypeError("Can't set " + String(proto) + ' as a prototype'); + } }; /***/ }), -/***/ "./node_modules/core-js/internals/an-object.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/an-object.js ***! - \*****************************************************/ +/***/ "./node_modules/core-js/internals/well-known-symbol.js": +/*!*************************************************************!*\ + !*** ./node_modules/core-js/internals/well-known-symbol.js ***! + \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); +var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); +var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); +var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); -module.exports = function (it) { - if (!isObject(it)) { - throw TypeError(String(it) + ' is not an object'); - } return it; +var Symbol = global.Symbol; +var store = shared('wks'); + +module.exports = function (name) { + return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name] + || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; /***/ }), -/***/ "./node_modules/core-js/internals/array-from.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/array-from.js ***! - \******************************************************/ +/***/ "./node_modules/core-js/modules/es.array.from.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/modules/es.array.from.js ***! + \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); -var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); -var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); -var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); -var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); +var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); +var from = __webpack_require__(/*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js"); +var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); + +var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + Array.from(iterable); +}); // `Array.from` method // https://tc39.github.io/ecma262/#sec-array.from -module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var argumentsLength = arguments.length; - var mapfn = argumentsLength > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var index = 0; - var iteratorMethod = getIteratorMethod(O); - var length, result, step, iterator; - if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); - // if the target is not iterable or it's an array with the default iterator - use a simple case - if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { - iterator = iteratorMethod.call(O); - result = new C(); - for (;!(step = iterator.next()).done; index++) { - createProperty(result, index, mapping - ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) - : step.value - ); - } - } else { - length = toLength(O.length); - result = new C(length); - for (;length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } - } - result.length = index; - return result; -}; +$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from +}); /***/ }), -/***/ "./node_modules/core-js/internals/array-includes.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/array-includes.js ***! - \**********************************************************/ +/***/ "./node_modules/core-js/modules/es.string.iterator.js": +/*!************************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.iterator.js ***! + \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); -var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); -var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); +var codePointAt = __webpack_require__(/*! ../internals/string-at */ "./node_modules/core-js/internals/string-at.js"); +var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); +var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); -// `Array.prototype.{ indexOf, includes }` methods implementation -// false -> Array#indexOf -// https://tc39.github.io/ecma262/#sec-array.prototype.indexof -// true -> Array#includes -// https://tc39.github.io/ecma262/#sec-array.prototype.includes -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; -}; +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = codePointAt(string, index, true); + state.index += point.length; + return { value: point, done: false }; +}); /***/ }), -/***/ "./node_modules/core-js/internals/bind-context.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/internals/bind-context.js ***! - \********************************************************/ +/***/ "./node_modules/webpack/buildin/global.js": +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ /*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); +/***/ (function(module, exports) { -// optional / simple context binding -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 0: return function () { - return fn.call(that); - }; - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; -}; +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1, eval)("this"); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; /***/ }), -/***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": -/*!****************************************************************************!*\ - !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! - \****************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); - -// call something on iterator step with safe closing on error -module.exports = function (iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (error) { - var returnMethod = iterator['return']; - if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); - throw error; - } -}; +/***/ "./src/default-attrs.json": +/*!********************************!*\ + !*** ./src/default-attrs.json ***! + \********************************/ +/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */ +/***/ (function(module) { +module.exports = {"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}; /***/ }), -/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js": -/*!**************************************************************************!*\ - !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! - \**************************************************************************/ +/***/ "./src/icon.js": +/*!*********************!*\ + !*** ./src/icon.js ***! + \*********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); -var ITERATOR = wellKnownSymbol('iterator'); -var SAFE_CLOSING = false; +Object.defineProperty(exports, "__esModule", { + value: true +}); -try { - var called = 0; - var iteratorWithReturn = { - next: function () { - return { done: !!called++ }; - }, - 'return': function () { - SAFE_CLOSING = true; - } - }; - iteratorWithReturn[ITERATOR] = function () { - return this; - }; - // eslint-disable-next-line no-throw-literal - Array.from(iteratorWithReturn, function () { throw 2; }); -} catch (error) { /* empty */ } +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; -module.exports = function (exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) return false; - var ITERATION_SUPPORT = false; - try { - var object = {}; - object[ITERATOR] = function () { - return { - next: function () { - return { done: ITERATION_SUPPORT = true }; - } - }; - }; - exec(object); - } catch (error) { /* empty */ } - return ITERATION_SUPPORT; -}; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js"); -/***/ }), +var _dedupe2 = _interopRequireDefault(_dedupe); -/***/ "./node_modules/core-js/internals/classof-raw.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/classof-raw.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { +var _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ "./src/default-attrs.json"); -var toString = {}.toString; +var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -/***/ }), +var Icon = function () { + function Icon(name, contents) { + var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; -/***/ "./node_modules/core-js/internals/classof.js": -/*!***************************************************!*\ - !*** ./node_modules/core-js/internals/classof.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + _classCallCheck(this, Icon); -var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + this.name = name; + this.contents = contents; + this.tags = tags; + this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name }); + } -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); -// ES3 wrong here -var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; + /** + * Create an SVG string. + * @param {Object} attrs + * @returns {string} + */ -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (error) { /* empty */ } -}; -// getting tag from ES6+ `Object.prototype.toString` -module.exports = function (it) { - var O, tag, result; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag - // builtinTag case - : CORRECT_ARGUMENTS ? classofRaw(O) - // ES3 arguments fallback - : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; -}; + _createClass(Icon, [{ + key: 'toSvg', + value: function toSvg() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); -/***/ }), + return '' + this.contents + ''; + } -/***/ "./node_modules/core-js/internals/copy-constructor-properties.js": -/*!***********************************************************************!*\ - !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /** + * Return string representation of an `Icon`. + * + * Added for backward compatibility. If old code expects `feather.icons.` + * to be a string, `toString()` will get implicitly called. + * + * @returns {string} + */ -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); -var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); + }, { + key: 'toString', + value: function toString() { + return this.contents; + } + }]); -module.exports = function (target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } -}; + return Icon; +}(); + +/** + * Convert attributes object to string of HTML attributes. + * @param {Object} attrs + * @returns {string} + */ + + +function attrsToString(attrs) { + return Object.keys(attrs).map(function (key) { + return key + '="' + attrs[key] + '"'; + }).join(' '); +} +exports.default = Icon; /***/ }), -/***/ "./node_modules/core-js/internals/correct-prototype-getter.js": -/*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! - \********************************************************************/ +/***/ "./src/icons.js": +/*!**********************!*\ + !*** ./src/icons.js ***! + \**********************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -module.exports = !fails(function () { - function F() { /* empty */ } - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; +Object.defineProperty(exports, "__esModule", { + value: true }); +var _icon = __webpack_require__(/*! ./icon */ "./src/icon.js"); -/***/ }), +var _icon2 = _interopRequireDefault(_icon); -/***/ "./node_modules/core-js/internals/create-iterator-constructor.js": -/*!***********************************************************************!*\ - !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! - \***********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +var _icons = __webpack_require__(/*! ../dist/icons.json */ "./dist/icons.json"); -var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype; -var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); +var _icons2 = _interopRequireDefault(_icons); -var returnThis = function () { return this; }; +var _tags = __webpack_require__(/*! ./tags.json */ "./src/tags.json"); -module.exports = function (IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + ' Iterator'; - IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; -}; +var _tags2 = _interopRequireDefault(_tags); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = Object.keys(_icons2.default).map(function (key) { + return new _icon2.default(key, _icons2.default[key], _tags2.default[key]); +}).reduce(function (object, icon) { + object[icon.name] = icon; + return object; +}, {}); /***/ }), -/***/ "./node_modules/core-js/internals/create-property-descriptor.js": -/*!**********************************************************************!*\ - !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! - \**********************************************************************/ +/***/ "./src/index.js": +/*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ /*! no static exports found */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; +var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); -/***/ }), +var _icons2 = _interopRequireDefault(_icons); -/***/ "./node_modules/core-js/internals/create-property.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/create-property.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +var _toSvg = __webpack_require__(/*! ./to-svg */ "./src/to-svg.js"); -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); +var _toSvg2 = _interopRequireDefault(_toSvg); -module.exports = function (object, key, value) { - var propertyKey = toPrimitive(key); - if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else object[propertyKey] = value; -}; +var _replace = __webpack_require__(/*! ./replace */ "./src/replace.js"); + +var _replace2 = _interopRequireDefault(_replace); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; /***/ }), -/***/ "./node_modules/core-js/internals/define-iterator.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/define-iterator.js ***! - \***********************************************************/ +/***/ "./src/replace.js": +/*!************************!*\ + !*** ./src/replace.js ***! + \************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); -var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); -var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); -var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); -var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); -var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js"); -var IteratorPrototype = IteratorsCore.IteratorPrototype; -var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; -var ITERATOR = wellKnownSymbol('iterator'); -var KEYS = 'keys'; -var VALUES = 'values'; -var ENTRIES = 'entries'; +Object.defineProperty(exports, "__esModule", { + value: true +}); -var returnThis = function () { return this; }; +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */ -module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - var getIterationMethod = function (KIND) { - if (KIND === DEFAULT && defaultIterator) return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; - case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; - case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; - } return function () { return new IteratorConstructor(this); }; - }; +var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js"); - var TO_STRING_TAG = NAME + ' Iterator'; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] - || IterablePrototype['@@iterator'] - || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; +var _dedupe2 = _interopRequireDefault(_dedupe); - // fix native - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { - hide(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } - // Set @@toStringTag to native iterators - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; - } - } +var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { return nativeIterator.call(this); }; - } +var _icons2 = _interopRequireDefault(_icons); - // define iterator - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - hide(IterablePrototype, ITERATOR, defaultIterator); - } - Iterators[NAME] = defaultIterator; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - // export additional methods - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); +/** + * Replace all HTML elements that have a `data-feather` attribute with SVG markup + * corresponding to the element's `data-feather` attribute value. + * @param {Object} attrs + */ +function replace() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (typeof document === 'undefined') { + throw new Error('`feather.replace()` only works in a browser environment.'); } - return methods; -}; + var elementsToReplace = document.querySelectorAll('[data-feather]'); + + Array.from(elementsToReplace).forEach(function (element) { + return replaceElement(element, attrs); + }); +} + +/** + * Replace a single HTML element with SVG markup + * corresponding to the element's `data-feather` attribute value. + * @param {HTMLElement} element + * @param {Object} attrs + */ +function replaceElement(element) { + var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var elementAttrs = getAttrs(element); + var name = elementAttrs['data-feather']; + delete elementAttrs['data-feather']; + + var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); + var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml'); + var svgElement = svgDocument.querySelector('svg'); + + element.parentNode.replaceChild(svgElement, element); +} + +/** + * Get the attributes of an HTML element. + * @param {HTMLElement} element + * @returns {Object} + */ +function getAttrs(element) { + return Array.from(element.attributes).reduce(function (attrs, attr) { + attrs[attr.name] = attr.value; + return attrs; + }, {}); +} +exports.default = replace; /***/ }), -/***/ "./node_modules/core-js/internals/descriptors.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/descriptors.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/***/ "./src/tags.json": +/*!***********************!*\ + !*** ./src/tags.json ***! + \***********************/ +/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ +/***/ (function(module) { -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); +module.exports = {"activity":["pulse","health","action","motion"],"airplay":["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],"anchor":[],"archive":["index","box"],"at-sign":["mention","at","email","message"],"award":["achievement","badge"],"aperture":["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],"battery":["power","electricity"],"battery-charging":["power","electricity"],"bell":["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],"bluetooth":["wireless"],"book-open":["read","library"],"book":["read","dictionary","booklet","magazine","library"],"bookmark":["read","clip","marker","tag"],"box":["cube"],"briefcase":["work","bag","baggage","folder"],"calendar":["date"],"camera":["photo"],"cast":["chromecast","airplay"],"circle":["off","zero","record"],"clipboard":["copy"],"clock":["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],"cloud":["weather"],"codepen":["logo"],"codesandbox":["logo"],"code":["source","programming"],"coffee":["drink","cup","mug","tea","cafe","hot","beverage"],"columns":["layout"],"command":["keyboard","cmd","terminal","prompt"],"compass":["navigation","safari","travel","direction"],"copy":["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"cpu":["processor","technology"],"credit-card":["purchase","payment","cc"],"crop":["photo","image"],"crosshair":["aim","target"],"database":["storage","memory"],"delete":["remove"],"disc":["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],"droplet":["water"],"edit":["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],"eye":["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],"facebook":["logo","social"],"fast-forward":["music"],"figma":["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],"film":["movie","video"],"filter":["funnel","hopper"],"flag":["report"],"folder-minus":["directory"],"folder-plus":["directory"],"folder":["directory"],"framer":["logo","design","tool"],"frown":["emoji","face","bad","sad","emotion"],"gift":["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],"github":["logo","version control"],"gitlab":["logo","version control"],"globe":["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],"hash":["hashtag","number","pound"],"headphones":["music","audio","sound"],"heart":["like","love","emotion"],"help-circle":["question mark"],"hexagon":["shape","node.js","logo"],"home":["house","living"],"image":["picture"],"inbox":["email"],"instagram":["logo","camera"],"key":["password","login","authentication","secure"],"layers":["stack"],"layout":["window","webpage"],"life-bouy":["help","life ring","support"],"link":["chain","url"],"link-2":["chain","url"],"linkedin":["logo","social media"],"list":["options"],"lock":["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],"mail":["email","message"],"map-pin":["location","navigation","travel","marker"],"map":["location","navigation","travel"],"maximize":["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],"meh":["emoji","face","neutral","emotion"],"menu":["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],"mic":["record","sound","listen"],"minimize":["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],"minus":["subtract"],"monitor":["tv","screen","display"],"moon":["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],"move":["arrows"],"music":["note"],"navigation":["location","travel"],"navigation-2":["location","travel"],"octagon":["stop"],"package":["box","container"],"paperclip":["attachment"],"pause":["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],"percent":["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],"phone":["call"],"play":["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],"plus":["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],"pocket":["logo","save"],"power":["on","off"],"printer":["fax","office","device"],"radio":["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],"repeat":["loop","arrows"],"rewind":["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],"rss":["feed","subscribe"],"save":["floppy disk"],"scissors":["cut"],"search":["find","magnifier","magnifying glass"],"send":["message","mail","email","paper airplane","paper aeroplane"],"settings":["cog","edit","gear","preferences"],"share-2":["network","connections"],"shield":["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],"shuffle":["music"],"skip-back":["music"],"skip-forward":["music"],"slack":["logo"],"slash":["ban","no"],"sliders":["settings","controls"],"smartphone":["cellphone","device"],"smile":["emoji","face","happy","good","emotion"],"speaker":["audio","music"],"star":["bookmark","favorite","like"],"stop-circle":["media","music"],"sun":["brightness","weather","light"],"sunrise":["weather","time","morning","day"],"sunset":["weather","time","evening","night"],"tablet":["device"],"tag":["label"],"target":["logo","bullseye"],"terminal":["code","command line","prompt"],"thermometer":["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],"tool":["settings","spanner"],"trash":["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],"triangle":["delta"],"truck":["delivery","van","shipping","transport","lorry"],"tv":["television","stream"],"twitch":["logo"],"twitter":["logo","social"],"type":["text"],"umbrella":["rain","weather"],"unlock":["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],"user":["person","account"],"users":["group"],"video-off":["camera","movie","film"],"video":["camera","movie","film"],"voicemail":["phone"],"volume":["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],"watch":["clock","time"],"wifi-off":["disabled"],"wifi":["connection","signal","wireless"],"wind":["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],"x":["cancel","close","delete","remove","times","clear"],"youtube":["logo","video","play"],"zap-off":["flash","camera","lightning"],"zap":["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}; -// Thank's IE8 for his funny defineProperty -module.exports = !fails(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); +/***/ }), + +/***/ "./src/to-svg.js": +/*!***********************!*\ + !*** ./src/to-svg.js ***! + \***********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); -/***/ "./node_modules/core-js/internals/document-create-element.js": -/*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/document-create-element.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); +var _icons2 = _interopRequireDefault(_icons); -var document = global.document; -// typeof document.createElement is 'object' in old IE -var exist = isObject(document) && isObject(document.createElement); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -module.exports = function (it) { - return exist ? document.createElement(it) : {}; -}; +/** + * Create an SVG string. + * @deprecated + * @param {string} name + * @param {Object} attrs + * @returns {string} + */ +function toSvg(name) { + var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.'); -/***/ }), + if (!name) { + throw new Error('The required `key` (icon name) parameter is missing.'); + } -/***/ "./node_modules/core-js/internals/enum-bug-keys.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + if (!_icons2.default[name]) { + throw new Error('No icon matching \'' + name + '\'. See the complete list of icons at https://feathericons.com'); + } -// IE8- don't enum bug keys -module.exports = [ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' -]; + return _icons2.default[name].toSvg(attrs); +} +exports.default = toSvg; /***/ }), -/***/ "./node_modules/core-js/internals/export.js": +/***/ 0: /*!**************************************************!*\ - !*** ./node_modules/core-js/internals/export.js ***! + !*** multi core-js/es/array/from ./src/index.js ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; -var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); -var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); -var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); -var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); +__webpack_require__(/*! core-js/es/array/from */"./node_modules/core-js/es/array/from.js"); +module.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */"./src/index.js"); -/* - options.target - name of the target object - options.global - target is the global object - options.stat - export as static methods of target - options.proto - export as prototype methods of target - options.real - real prototype method for the `pure` version - options.forced - export even if the native feature is available - options.bind - bind methods to the target, required for the `pure` version - options.wrap - wrap constructors to preventing global pollution, required for the `pure` version - options.unsafe - use the simple assignment of property instead of delete + defineProperty - options.sham - add a flag to not completely full polyfills - options.enumerable - export as enumerable property - options.noTargetGet - prevent calling a getter on target -*/ -module.exports = function (options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global; - } else if (STATIC) { - target = global[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global[TARGET] || {}).prototype; - } - if (target) for (key in source) { - sourceProperty = source[key]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); - // contained in target - if (!FORCED && targetProperty !== undefined) { - if (typeof sourceProperty === typeof targetProperty) continue; - copyConstructorProperties(sourceProperty, targetProperty); + +/***/ }) + +/******/ }); +}); + +}); + +/** + * This module contains various utility functions commonly used in Obsidian plugins. + * @module obsidian-community-lib + */ +/** + * Adds a specific Feather Icon to Obsidian. + * + * @param name official Name of the Icon (https://feathericons.com/) + * @param attr SVG Attributes for the Icon. The default should work for most usecases. + * @returns {string} Icon name + */ +function addFeatherIcon(name, attr = { viewBox: "0 0 24 24", width: "100", height: "100" }) { + if (feather.icons[name]) { + const iconName = `feather-${name}`; + obsidian.addIcon(iconName, feather.icons[name].toSvg(attr)); + return iconName; + } + else { + throw Error(`This Icon (${name}) doesn't exist in the Feather Library.`); + } +} +/** + * Copy `content` to the users clipboard. + * + * @param {string} content The content to be copied to clipboard. + * @param {() => any} success The callback to run when text is successfully copied. Default throws a new `Notice` + * @param {(reason?) => any} failure The callback to run when text was not able to be copied. Default throws a new `Notice`, and console logs the error.` + */ +async function copy(content, success = () => new obsidian.Notice("Copied to clipboard"), failure = (reason) => { + new obsidian.Notice("Could not copy to clipboard"); + console.log({ reason }); +}) { + await navigator.clipboard.writeText(content).then(success, failure); +} +/** + * Check if `noteName` is the name of a note that exists in the vault. + * @param {App} app + * @param {string} noteName Basename of the note to search for. + * @param {string} [sourcePath=""] Optional file path to start searching from. Default is the current file. + * @returns boolean + */ +const isInVault = (app, noteName, sourcePath = "") => !!app.metadataCache.getFirstLinkpathDest(noteName, sourcePath); + +function createNewNote(plugin, item) { + return __awaiter(this, void 0, void 0, function* () { + const activeFile = plugin.app.workspace.getActiveFile(); + let dir = plugin.app.fileManager.getNewFileParent(activeFile ? activeFile.path : "").path; + if (plugin.settings.saveLocation === "custom") { + dir = plugin.settings.saveLocationFolder; + } + //make sure there are no slashes in the title. + const title = item.title.replace(/[\/\\:]/g, ' '); + const inputPrompt = new TextInputPrompt(plugin.app, "Please specify a file name", "cannot contain: * \" \\ / < > : | ?", title, title); + if (plugin.settings.askForFilename) { + yield inputPrompt + .openAndGetValue((text) => __awaiter(this, void 0, void 0, function* () { + const value = text.getValue(); + if (value.match(FILE_NAME_REGEX)) { + inputPrompt.setValidationError(text, "that filename is not valid"); + return; + } + const filePath = obsidian.normalizePath([dir, `${value}.md`].join('/')); + if (isInVault(plugin.app, filePath, '')) { + inputPrompt.setValidationError(text, "there is already a note with that name"); + return; + } + inputPrompt.close(); + yield createNewFile(plugin, item, filePath, value); + })); + } + else { + const replacedTitle = item.title.replace(FILE_NAME_REGEX, ''); + const filePath = obsidian.normalizePath([dir, `${replacedTitle}.md`].join('/')); + yield createNewFile(plugin, item, filePath, item.title); + } + }); +} +function createNewFile(plugin, item, path, title) { + return __awaiter(this, void 0, void 0, function* () { + if (isInVault(plugin.app, path, '')) { + new obsidian.Notice("there is already a note with that name"); + return; + } + const appliedTemplate = applyTemplate(item, plugin.settings.template, plugin.settings, title); + const file = yield plugin.app.vault.create(path, appliedTemplate); + yield plugin.app.workspace.activeLeaf.openFile(file, { + state: { mode: 'edit' }, + }); + item.created = true; + const items = plugin.settings.items; + yield plugin.writeFeedContent(() => { + return items; + }); + new obsidian.Notice("Created note from article"); + }); +} +function pasteToNote(plugin, item) { + return __awaiter(this, void 0, void 0, function* () { + const file = plugin.app.workspace.getActiveFile(); + if (file === null) { + new obsidian.Notice("no file active"); + return; + } + const view = plugin.app.workspace.getActiveViewOfType(obsidian.MarkdownView); + if (view) { + const appliedTemplate = applyTemplate(item, plugin.settings.pasteTemplate, plugin.settings); + const editor = view.editor; + editor.replaceRange(appliedTemplate, editor.getCursor()); + item.created = true; + const items = plugin.settings.items; + yield plugin.writeFeedContent(() => { + return items; + }); + new obsidian.Notice("inserted article into note"); + } + }); +} +function applyTemplate(item, template, settings, filename) { + const content = obsidian.htmlToMarkdown(item.content); + let result = replaceAll(template, "{{title}}", item.title); + result = replaceAll(result, "{{link}}", item.link); + result = replaceAll(result, "{{author}}", item.creator); + result = replaceAll(result, "{{content}}", content); + result = replaceAll(result, "{{published}}", window.moment(item.pubDate).format(settings.dateFormat)); + result = replaceAll(result, "{{feed}}", item.feed); + result = replaceAll(result, "{{folder}}", item.folder); + result = replaceAll(result, "{{description}}", item.description); + result = result.replace(/({{tags:).*(}})/g, function (k) { + const value = k.split(":")[1]; + const separator = value.substring(0, value.indexOf("}")); + return item.tags.join(separator); + }); + result = result.replace(/({{#tags:).*(}})/g, function (k) { + const value = k.split(":")[1]; + const separator = value.substring(0, value.indexOf("}")); + return item.tags.map(i => '#' + i).join(separator); + }); + result = replaceAll(result, "{{tags}}", item.tags.join(", ")); + result = replaceAll(result, "{{#tags}}", item.tags.map(i => '#' + i).join(", ")); + if (filename) { + result = replaceAll(result, "{{filename}}", filename); + result = replaceAll(result, "{{created}}", window.moment().format(settings.dateFormat)); } - // add a flag to not completely full polyfills - if (options.sham || (targetProperty && targetProperty.sham)) { - hide(sourceProperty, 'sham', true); + return result; +} +function openInBrowser(item) { + if (typeof item.link === "string") { + window.open(item.link, '_blank'); } - // extend global - redefine(target, key, sourceProperty, options); - } -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/fails.js": -/*!*************************************************!*\ - !*** ./node_modules/core-js/internals/fails.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function (exec) { - try { - return !!exec(); - } catch (error) { - return true; - } -}; - - -/***/ }), - -/***/ "./node_modules/core-js/internals/function-to-string.js": -/*!**************************************************************!*\ - !*** ./node_modules/core-js/internals/function-to-string.js ***! - \**************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); - -module.exports = shared('native-function-to-string', Function.toString); - - -/***/ }), +} +//taken from: https://stackoverflow.com/a/1144788/5589264 +function escapeRegExp(string) { + return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} +function replaceAll(str, find, replace) { + return str.replace(new RegExp(escapeRegExp(find), 'g'), replace); +} -/***/ "./node_modules/core-js/internals/get-iterator-method.js": -/*!***************************************************************!*\ - !*** ./node_modules/core-js/internals/get-iterator-method.js ***! - \***************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +class TagModal extends BaseModal { + constructor(plugin, tags) { + super(plugin.app); + this.plugin = plugin; + this.tags = tags; + } + display() { + const { contentEl } = this; + contentEl.empty(); + contentEl.createEl("h1", { text: "Edit Tags" }); + const tagDiv = contentEl.createDiv("tags"); + for (const tag in this.tags) { + const setting = new obsidian.Setting(tagDiv); + setting.setName(this.tags[tag]); + setting.addExtraButton((b) => { + b + .setIcon("trash") + .setTooltip("Delete") + .onClick(() => { + this.tags = this.tags.filter(e => e !== this.tags[tag]); + console.log("new tags " + this.tags); + this.display(); + }); + }); + } + const buttonEl = contentEl.createSpan("actionButtons"); + const buttons = new obsidian.Setting(buttonEl).addButton((btn) => btn.setButtonText("new").onClick(() => __awaiter(this, void 0, void 0, function* () { + const input = yield new TextInputPrompt(this.app, "Tag", "new tag name", "", "tag name"); + let textInput; + input.openAndGetValue((value => { + textInput = value; + if (!value.getValue().match(TAG_REGEX) || value.getValue().match(NUMBER_REGEX) || value.getValue().contains(" ") || value.getValue().contains('#')) { + input.setValidationError(textInput, "This is not a valid tag"); + return; + } + this.tags.push(value.getValue()); + this.display(); + input.close(); + })); + }))); + buttons.addExtraButton((btn) => btn.setTooltip("Save").setIcon("checkmark").onClick(() => __awaiter(this, void 0, void 0, function* () { + this.close(); + }))); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + yield this.display(); + }); + } +} -var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); +class Action { + constructor(name, icon, processor) { + this.name = name; + this.icon = icon; + this.processor = processor; + } +} +Action.CREATE_NOTE = new Action("create new note", "create-new", (plugin, item) => { + return createNewNote(plugin, item); +}); +Action.PASTE = new Action("paste to current note", "paste", (plugin, item) => { + return pasteToNote(plugin, item); +}); +Action.COPY = new Action("copy to clipboard", "feather-clipboard", ((_, item) => { + return copy(obsidian.htmlToMarkdown(item.content)); +})); +Action.OPEN = new Action("open in browser", "open-elsewhere-glyph", ((_, item) => { + openInBrowser(item); + return Promise.resolve(); +})); +Action.TAGS = new Action("edit tags", "tag-glyph", (((plugin, item) => { + const modal = new TagModal(plugin, item.tags); + modal.onClose = () => __awaiter(void 0, void 0, void 0, function* () { + item.tags = modal.tags; + const items = plugin.settings.items; + yield plugin.writeFeedContent(() => { + return items; + }); + }); + modal.open(); + return Promise.resolve(); +}))); +Action.READ = new Action("Mark as read/unread", "feather-eye", (((plugin, item) => __awaiter(void 0, void 0, void 0, function* () { + if (item.read) { + item.read = false; + new obsidian.Notice("marked item as unread"); + } + else { + item.read = true; + new obsidian.Notice("marked item as read"); + } + const items = plugin.settings.items; + yield plugin.writeFeedContent(() => { + return items; + }); + return Promise.resolve(); +})))); +Action.FAVORITE = new Action("Mark as Favorite/remove from favorites", "star", (((plugin, item) => __awaiter(void 0, void 0, void 0, function* () { + if (item.favorite) { + item.favorite = false; + new obsidian.Notice("removed item from favorites"); + } + else { + item.favorite = true; + new obsidian.Notice("marked item as favorite"); + } + const items = plugin.settings.items; + yield plugin.writeFeedContent(() => { + return items; + }); + return Promise.resolve(); +})))); +Action.actions = Array.of(Action.FAVORITE, Action.READ, Action.TAGS, Action.CREATE_NOTE, Action.PASTE, Action.COPY, Action.OPEN); -var ITERATOR = wellKnownSymbol('iterator'); +class ItemModal extends obsidian.Modal { + constructor(plugin, item) { + super(plugin.app); + this.plugin = plugin; + this.item = item; + item.read = true; + const items = this.plugin.settings.items; + this.plugin.writeFeedContent(() => { + return items; + }); + this.scope.register([], this.plugin.settings.hotkeys.read, () => { + this.markAsRead(); + }); + this.scope.register([], this.plugin.settings.hotkeys.favorite, () => { + this.markAsFavorite(); + }); + this.scope.register([], this.plugin.settings.hotkeys.create, () => { + Action.CREATE_NOTE.processor(this.plugin, this.item); + }); + this.scope.register([], this.plugin.settings.hotkeys.paste, () => { + Action.PASTE.processor(this.plugin, this.item); + }); + this.scope.register([], this.plugin.settings.hotkeys.copy, () => { + Action.COPY.processor(this.plugin, this.item); + }); + this.scope.register([], this.plugin.settings.hotkeys.tags, () => { + Action.TAGS.processor(this.plugin, this.item); + }); + this.scope.register([], this.plugin.settings.hotkeys.open, () => { + Action.OPEN.processor(this.plugin, this.item); + }); + } + markAsFavorite() { + return __awaiter(this, void 0, void 0, function* () { + yield Action.FAVORITE.processor(this.plugin, this.item); + this.favoriteButton.setIcon((this.item.favorite) ? 'star-glyph' : 'star'); + }); + } + markAsRead() { + return __awaiter(this, void 0, void 0, function* () { + yield Action.READ.processor(this.plugin, this.item); + this.readButton.setIcon((this.item.read) ? 'feather-eye-off' : 'feather-eye'); + }); + } + display() { + const { contentEl } = this; + contentEl.empty(); + const topButtons = contentEl.createSpan('topButtons'); + const title = contentEl.createEl('h1', 'rss-title'); + title.setText(this.item.title); + const subtitle = contentEl.createEl("h3", "rss-subtitle"); + if (this.item.creator) { + subtitle.appendText(this.item.creator); + } + if (this.item.pubDate) { + subtitle.appendText(" - " + window.moment(this.item.pubDate).format(this.plugin.settings.dateFormat)); + } + const tagEl = contentEl.createSpan("tags"); + this.item.tags.forEach((tag) => { + const tagA = tagEl.createEl("a"); + tagA.setText(tag); + tagA.addClass("tag", "rss-tag"); + }); + this.readButton = new obsidian.ButtonComponent(topButtons) + .setIcon(this.item.read ? 'feather-eye-off' : 'feather-eye') + .setTooltip(this.item.read ? 'Mark as unread' : 'mark as read') + .onClick(() => __awaiter(this, void 0, void 0, function* () { + yield this.markAsRead(); + })); + this.readButton.buttonEl.setAttribute("tabindex", "-1"); + this.favoriteButton = new obsidian.ButtonComponent(topButtons) + .setIcon(this.item.favorite ? 'star-glyph' : 'star') + .setTooltip(this.item.favorite ? 'remove from favorites' : 'mark as favorite') + .onClick(() => __awaiter(this, void 0, void 0, function* () { + yield this.markAsFavorite(); + })); + this.favoriteButton.buttonEl.setAttribute("tabindex", "-1"); + Array.of(Action.TAGS, Action.CREATE_NOTE, Action.PASTE, Action.COPY, Action.OPEN).forEach((action) => { + const button = new obsidian.ButtonComponent(topButtons) + .setIcon(action.icon) + .setTooltip(action.name) + .onClick(() => __awaiter(this, void 0, void 0, function* () { + yield action.processor(this.plugin, this.item); + })); + button.buttonEl.setAttribute("tabindex", "-1"); + }); + /*//@ts-ignore + if(this.app.plugins.plugins["obsidian-tts"]) { + new ButtonComponent(topButtons) + .setIcon("audio-file") + .setTooltip("Read article") + .onClick(async () => { + //@ts-ignore + await this.app.plugins.plugins["obsidian-tts"].playText(this.item.content); + }); + }*/ + const content = contentEl.createDiv('rss-content'); + content.addClass("scrollable-content"); + if (this.item.content) { + content.append(sanitizeHTMLToDom(this.item.content)); + } + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + yield this.display(); + }); + } +} -module.exports = function (it) { - if (it != undefined) return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; -}; +/* src/view/HtmlTooltip.svelte generated by Svelte v3.44.2 */ +function create_if_block$3(ctx) { + let span; + let html_action; + let mounted; + let dispose; -/***/ }), + return { + c() { + span = element("span"); + attr(span, "class", "tooltiptext"); + }, + m(target, anchor) { + insert(target, span, anchor); -/***/ "./node_modules/core-js/internals/global.js": -/*!**************************************************!*\ - !*** ./node_modules/core-js/internals/global.js ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (!mounted) { + dispose = action_destroyer(html_action = /*html*/ ctx[1].call(null, span, /*content*/ ctx[0])); + mounted = true; + } + }, + p(ctx, dirty) { + if (html_action && is_function(html_action.update) && dirty & /*content*/ 1) html_action.update.call(null, /*content*/ ctx[0]); + }, + d(detaching) { + if (detaching) detach(span); + mounted = false; + dispose(); + } + }; +} -/* WEBPACK VAR INJECTION */(function(global) {var O = 'object'; -var check = function (it) { - return it && it.Math == Math && it; -}; +function create_fragment$3(ctx) { + let if_block_anchor; + let if_block = /*content*/ ctx[0].length > 0 && create_if_block$3(ctx); -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -module.exports = - // eslint-disable-next-line no-undef - check(typeof globalThis == O && globalThis) || - check(typeof window == O && window) || - check(typeof self == O && self) || - check(typeof global == O && global) || - // eslint-disable-next-line no-new-func - Function('return this')(); + return { + c() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx, [dirty]) { + if (/*content*/ ctx[0].length > 0) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block$3(ctx); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: noop, + o: noop, + d(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))); +function instance$3($$self, $$props, $$invalidate) { + let { content = "" } = $$props; -/***/ }), + const html = (node, content) => { + node.append(sanitizeHTMLToDom(content)); + }; -/***/ "./node_modules/core-js/internals/has.js": -/*!***********************************************!*\ - !*** ./node_modules/core-js/internals/has.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + $$self.$$set = $$props => { + if ('content' in $$props) $$invalidate(0, content = $$props.content); + }; -var hasOwnProperty = {}.hasOwnProperty; + return [content, html]; +} -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); -}; +class HtmlTooltip extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$3, create_fragment$3, safe_not_equal, { content: 0 }); + } +} +/* src/view/ItemView.svelte generated by Svelte v3.44.2 */ -/***/ }), +function get_each_context$2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[6] = list[i]; + return child_ctx; +} -/***/ "./node_modules/core-js/internals/hidden-keys.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/hidden-keys.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { +// (46:0) {#if item} +function create_if_block$2(ctx) { + let div1; + let div0; + let t0; + let t1; + let a; + let t2_value = /*item*/ ctx[1].title + ""; + let t2; + let t3; + let span; + let div0_class_value; + let t4; + let current; + let mounted; + let dispose; + let if_block0 = /*item*/ ctx[1].favorite && create_if_block_4$1(); + let if_block1 = /*item*/ ctx[1].created && create_if_block_3$1(); + let each_value = /*item*/ ctx[1].tags; + let each_blocks = []; -module.exports = {}; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); + } + let if_block2 = /*hover*/ ctx[2] && create_if_block_1$2(ctx); -/***/ }), + return { + c() { + div1 = element("div"); + div0 = element("div"); + if (if_block0) if_block0.c(); + t0 = space(); + if (if_block1) if_block1.c(); + t1 = space(); + a = element("a"); + t2 = text(t2_value); + t3 = space(); + span = element("span"); -/***/ "./node_modules/core-js/internals/hide.js": -/*!************************************************!*\ - !*** ./node_modules/core-js/internals/hide.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); + t4 = space(); + if (if_block2) if_block2.c(); + attr(div0, "class", div0_class_value = "rss-feed-item " + (/*item*/ ctx[1].read ? 'rss-read' : 'rss-not-read')); + attr(div1, "class", "is-clickable rss-tooltip"); + set_style(div1, "margin-left", "20px"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + if (if_block0) if_block0.m(div0, null); + append(div0, t0); + if (if_block1) if_block1.m(div0, null); + append(div0, t1); + append(div0, a); + append(a, t2); + append(div0, t3); + append(div0, span); -module.exports = DESCRIPTORS ? function (object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(span, null); + } + append(div1, t4); + if (if_block2) if_block2.m(div1, null); + current = true; -/***/ }), + if (!mounted) { + dispose = [ + listen(a, "click", /*click_handler*/ ctx[5]), + listen(a, "contextmenu", /*openMenu*/ ctx[4]), + listen(a, "mouseover", /*toggleHover*/ ctx[3]), + listen(a, "mouseleave", /*toggleHover*/ ctx[3]) + ]; -/***/ "./node_modules/core-js/internals/html.js": -/*!************************************************!*\ - !*** ./node_modules/core-js/internals/html.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + mounted = true; + } + }, + p(ctx, dirty) { + if (/*item*/ ctx[1].favorite) { + if (if_block0) { + if (dirty & /*item*/ 2) { + transition_in(if_block0, 1); + } + } else { + if_block0 = create_if_block_4$1(); + if_block0.c(); + transition_in(if_block0, 1); + if_block0.m(div0, t0); + } + } else if (if_block0) { + group_outros(); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + transition_out(if_block0, 1, 1, () => { + if_block0 = null; + }); -var document = global.document; + check_outros(); + } -module.exports = document && document.documentElement; + if (/*item*/ ctx[1].created) { + if (if_block1) { + if (dirty & /*item*/ 2) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block_3$1(); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div0, t1); + } + } else if (if_block1) { + group_outros(); + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); -/***/ }), + check_outros(); + } -/***/ "./node_modules/core-js/internals/ie8-dom-define.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if ((!current || dirty & /*item*/ 2) && t2_value !== (t2_value = /*item*/ ctx[1].title + "")) set_data(t2, t2_value); -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); + if (dirty & /*item*/ 2) { + each_value = /*item*/ ctx[1].tags; + let i; -// Thank's IE8 for his funny defineProperty -module.exports = !DESCRIPTORS && !fails(function () { - return Object.defineProperty(createElement('div'), 'a', { - get: function () { return 7; } - }).a != 7; -}); + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$2(ctx, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block$2(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(span, null); + } + } -/***/ }), + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } -/***/ "./node_modules/core-js/internals/indexed-object.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/indexed-object.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + each_blocks.length = each_value.length; + } -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); -var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); + if (!current || dirty & /*item*/ 2 && div0_class_value !== (div0_class_value = "rss-feed-item " + (/*item*/ ctx[1].read ? 'rss-read' : 'rss-not-read'))) { + attr(div0, "class", div0_class_value); + } -var split = ''.split; + if (/*hover*/ ctx[2]) { + if (if_block2) { + if_block2.p(ctx, dirty); -module.exports = fails(function () { - // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins - return !Object('z').propertyIsEnumerable(0); -}) ? function (it) { - return classof(it) == 'String' ? split.call(it, '') : Object(it); -} : Object; + if (dirty & /*hover*/ 4) { + transition_in(if_block2, 1); + } + } else { + if_block2 = create_if_block_1$2(ctx); + if_block2.c(); + transition_in(if_block2, 1); + if_block2.m(div1, null); + } + } else if (if_block2) { + group_outros(); + transition_out(if_block2, 1, 1, () => { + if_block2 = null; + }); -/***/ }), + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(if_block0); + transition_in(if_block1); + transition_in(if_block2); + current = true; + }, + o(local) { + transition_out(if_block0); + transition_out(if_block1); + transition_out(if_block2); + current = false; + }, + d(detaching) { + if (detaching) detach(div1); + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); + destroy_each(each_blocks, detaching); + if (if_block2) if_block2.d(); + mounted = false; + run_all(dispose); + } + }; +} -/***/ "./node_modules/core-js/internals/internal-state.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/internal-state.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +// (49:12) {#if (item.favorite)} +function create_if_block_4$1(ctx) { + let iconcomponent; + let current; + iconcomponent = new IconComponent({ props: { iconName: "star" } }); -var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); -var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); -var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + return { + c() { + create_component(iconcomponent.$$.fragment); + }, + m(target, anchor) { + mount_component(iconcomponent, target, anchor); + current = true; + }, + i(local) { + if (current) return; + transition_in(iconcomponent.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(iconcomponent.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(iconcomponent, detaching); + } + }; +} -var WeakMap = global.WeakMap; -var set, get, has; +// (52:12) {#if (item.created)} +function create_if_block_3$1(ctx) { + let iconcomponent; + let current; + iconcomponent = new IconComponent({ props: { iconName: "document" } }); -var enforce = function (it) { - return has(it) ? get(it) : set(it, {}); -}; + return { + c() { + create_component(iconcomponent.$$.fragment); + }, + m(target, anchor) { + mount_component(iconcomponent, target, anchor); + current = true; + }, + i(local) { + if (current) return; + transition_in(iconcomponent.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(iconcomponent.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(iconcomponent, detaching); + } + }; +} -var getterFor = function (TYPE) { - return function (it) { - var state; - if (!isObject(it) || (state = get(it)).type !== TYPE) { - throw TypeError('Incompatible receiver, ' + TYPE + ' required'); - } return state; - }; -}; +// (66:12) {#each item.tags as tag} +function create_each_block$2(ctx) { + let t0; + let a; + let t1_value = /*tag*/ ctx[6] + ""; + let t1; -if (NATIVE_WEAK_MAP) { - var store = new WeakMap(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set = function (it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - get = function (it) { - return wmget.call(store, it) || {}; - }; - has = function (it) { - return wmhas.call(store, it); - }; -} else { - var STATE = sharedKey('state'); - hiddenKeys[STATE] = true; - set = function (it, metadata) { - hide(it, STATE, metadata); - return metadata; - }; - get = function (it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function (it) { - return objectHas(it, STATE); - }; + return { + c() { + t0 = text(" "); + a = element("a"); + t1 = text(t1_value); + attr(a, "class", "tag rss-tag"); + }, + m(target, anchor) { + insert(target, t0, anchor); + insert(target, a, anchor); + append(a, t1); + }, + p(ctx, dirty) { + if (dirty & /*item*/ 2 && t1_value !== (t1_value = /*tag*/ ctx[6] + "")) set_data(t1, t1_value); + }, + d(detaching) { + if (detaching) detach(t0); + if (detaching) detach(a); + } + }; } -module.exports = { - set: set, - get: get, - has: has, - enforce: enforce, - getterFor: getterFor -}; +// (71:8) {#if (hover)} +function create_if_block_1$2(ctx) { + let if_block_anchor; + let current; + let if_block = /*item*/ ctx[1].description !== /*item*/ ctx[1].content && create_if_block_2$2(ctx); + + return { + c() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx, dirty) { + if (/*item*/ ctx[1].description !== /*item*/ ctx[1].content) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*item*/ 2) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_2$2(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); -/***/ }), + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} -/***/ "./node_modules/core-js/internals/is-array-iterator-method.js": -/*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +// (72:12) {#if (item.description !== item.content)} +function create_if_block_2$2(ctx) { + let htmltooltip; + let current; -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); -var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); + htmltooltip = new HtmlTooltip({ + props: { content: /*item*/ ctx[1].description } + }); -var ITERATOR = wellKnownSymbol('iterator'); -var ArrayPrototype = Array.prototype; + return { + c() { + create_component(htmltooltip.$$.fragment); + }, + m(target, anchor) { + mount_component(htmltooltip, target, anchor); + current = true; + }, + p(ctx, dirty) { + const htmltooltip_changes = {}; + if (dirty & /*item*/ 2) htmltooltip_changes.content = /*item*/ ctx[1].description; + htmltooltip.$set(htmltooltip_changes); + }, + i(local) { + if (current) return; + transition_in(htmltooltip.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(htmltooltip.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(htmltooltip, detaching); + } + }; +} -// check on default Array iterator -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); -}; +function create_fragment$2(ctx) { + let if_block_anchor; + let current; + let if_block = /*item*/ ctx[1] && create_if_block$2(ctx); + return { + c() { + if (if_block) if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx, [dirty]) { + if (/*item*/ ctx[1]) { + if (if_block) { + if_block.p(ctx, dirty); -/***/ }), + if (dirty & /*item*/ 2) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block$2(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); -/***/ "./node_modules/core-js/internals/is-forced.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-forced.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + transition_out(if_block, 1, 1, () => { + if_block = null; + }); -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} -var replacement = /#|\.prototype\./; +function instance$2($$self, $$props, $$invalidate) { + let { plugin = null } = $$props; + let { item = null } = $$props; + let hover = false; -var isForced = function (feature, detection) { - var value = data[normalize(feature)]; - return value == POLYFILL ? true - : value == NATIVE ? false - : typeof detection == 'function' ? fails(detection) - : !!detection; -}; + function toggleHover() { + $$invalidate(2, hover = !hover); + } -var normalize = isForced.normalize = function (string) { - return String(string).replace(replacement, '.').toLowerCase(); -}; + function openMenu(e) { + return __awaiter(this, void 0, void 0, function* () { + if (e.ctrlKey && e.altKey) { + openInBrowser(item); + return; + } -var data = isForced.data = {}; -var NATIVE = isForced.NATIVE = 'N'; -var POLYFILL = isForced.POLYFILL = 'P'; + if (e.ctrlKey) { + yield createNewNote(plugin, item); + return; + } -module.exports = isForced; + if (e.altKey) { + yield pasteToNote(plugin, item); + return; + } + const menu = new obsidian.Menu(plugin.app); -/***/ }), + Action.actions.forEach(action => { + menu.addItem(menuItem => { + menuItem.setIcon(action.icon).setTitle(action.name).onClick(() => __awaiter(this, void 0, void 0, function* () { + yield action.processor(plugin, item); + })); + }); + }); -/***/ "./node_modules/core-js/internals/is-object.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-object.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + menu.showAtPosition({ x: e.x, y: e.y }); + }); + } -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; + const click_handler = () => { + new ItemModal(plugin, item).open(); + }; + $$self.$$set = $$props => { + if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin); + if ('item' in $$props) $$invalidate(1, item = $$props.item); + }; -/***/ }), + return [plugin, item, hover, toggleHover, openMenu, click_handler]; +} -/***/ "./node_modules/core-js/internals/is-pure.js": -/*!***************************************************!*\ - !*** ./node_modules/core-js/internals/is-pure.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { +class ItemView extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$2, create_fragment$2, safe_not_equal, { plugin: 0, item: 1 }); + } +} -module.exports = false; +/* src/view/FeedView.svelte generated by Svelte v3.44.2 */ +function get_each_context$1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[6] = list[i]; + return child_ctx; +} -/***/ }), +// (49:0) {:else} +function create_else_block(ctx) { + let div3; + let div1; + let div0; + let iconcomponent; + let t0; + let span; + let t1_value = /*feed*/ ctx[0].name + ""; + let t1; + let t2; + let div1_class_value; + let t3; + let div2; + let show_if = !/*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name); + let current; + let mounted; + let dispose; + iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); + let if_block0 = /*feed*/ ctx[0].image && create_if_block_2$1(ctx); + let if_block1 = show_if && create_if_block_1$1(ctx); -/***/ "./node_modules/core-js/internals/iterators-core.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/iterators-core.js ***! - \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + return { + c() { + div3 = element("div"); + div1 = element("div"); + div0 = element("div"); + create_component(iconcomponent.$$.fragment); + t0 = space(); + span = element("span"); + t1 = text(t1_value); + t2 = space(); + if (if_block0) if_block0.c(); + t3 = space(); + div2 = element("div"); + if (if_block1) if_block1.c(); + attr(div0, "class", "rss-feed-title"); + set_style(div0, "overflow", "hidden"); -var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); -var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + attr(div1, "class", div1_class_value = /*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name) + ? 'is-collapsed' + : ''); -var ITERATOR = wellKnownSymbol('iterator'); -var BUGGY_SAFARI_ITERATORS = false; + attr(div2, "class", "rss-feed-items"); + attr(div3, "class", "rss-feed"); + set_style(div3, "margin-left", "20px"); + }, + m(target, anchor) { + insert(target, div3, anchor); + append(div3, div1); + append(div1, div0); + mount_component(iconcomponent, div0, null); + append(div0, t0); + append(div0, span); + append(span, t1); + append(span, t2); + if (if_block0) if_block0.m(span, null); + append(div3, t3); + append(div3, div2); + if (if_block1) if_block1.m(div2, null); + current = true; -var returnThis = function () { return this; }; + if (!mounted) { + dispose = [ + listen(div1, "click", /*click_handler*/ ctx[5]), + listen(div1, "contextmenu", /*openMenu*/ ctx[4]) + ]; -// `%IteratorPrototype%` object -// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object -var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + mounted = true; + } + }, + p(ctx, dirty) { + if ((!current || dirty & /*feed*/ 1) && t1_value !== (t1_value = /*feed*/ ctx[0].name + "")) set_data(t1, t1_value); -if ([].keys) { - arrayIterator = [].keys(); - // Safari 8 has buggy iterators w/o `next` - if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } -} + if (/*feed*/ ctx[0].image) { + if (if_block0) { + if_block0.p(ctx, dirty); + } else { + if_block0 = create_if_block_2$1(ctx); + if_block0.c(); + if_block0.m(span, null); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } -if (IteratorPrototype == undefined) IteratorPrototype = {}; + if (!current || dirty & /*foldedState, feed*/ 5 && div1_class_value !== (div1_class_value = /*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name) + ? 'is-collapsed' + : '')) { + attr(div1, "class", div1_class_value); + } -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); + if (dirty & /*foldedState, feed*/ 5) show_if = !/*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name); -module.exports = { - IteratorPrototype: IteratorPrototype, - BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS -}; + if (show_if) { + if (if_block1) { + if_block1.p(ctx, dirty); + if (dirty & /*foldedState, feed*/ 5) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block_1$1(ctx); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div2, null); + } + } else if (if_block1) { + group_outros(); -/***/ }), + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); -/***/ "./node_modules/core-js/internals/iterators.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/iterators.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(iconcomponent.$$.fragment, local); + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(iconcomponent.$$.fragment, local); + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) detach(div3); + destroy_component(iconcomponent); + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); + mounted = false; + run_all(dispose); + } + }; +} -module.exports = {}; +// (47:0) {#if !feed} +function create_if_block$1(ctx) { + let p; + return { + c() { + p = element("p"); + p.textContent = "...loading"; + }, + m(target, anchor) { + insert(target, p, anchor); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(p); + } + }; +} -/***/ }), +// (58:20) {#if (feed.image)} +function create_if_block_2$1(ctx) { + let img; + let img_src_value; + let img_alt_value; -/***/ "./node_modules/core-js/internals/native-symbol.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/native-symbol.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + return { + c() { + img = element("img"); + if (!src_url_equal(img.src, img_src_value = /*feed*/ ctx[0].image)) attr(img, "src", img_src_value); + attr(img, "alt", img_alt_value = /*feed*/ ctx[0].title); + set_style(img, "height", "1em"); + }, + m(target, anchor) { + insert(target, img, anchor); + }, + p(ctx, dirty) { + if (dirty & /*feed*/ 1 && !src_url_equal(img.src, img_src_value = /*feed*/ ctx[0].image)) { + attr(img, "src", img_src_value); + } -var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); + if (dirty & /*feed*/ 1 && img_alt_value !== (img_alt_value = /*feed*/ ctx[0].title)) { + attr(img, "alt", img_alt_value); + } + }, + d(detaching) { + if (detaching) detach(img); + } + }; +} -module.exports = !!Object.getOwnPropertySymbols && !fails(function () { - // Chrome 38 Symbol has incorrect toString conversion - // eslint-disable-next-line no-undef - return !String(Symbol()); -}); +// (66:12) {#if !foldedState.get(feed.name)} +function create_if_block_1$1(ctx) { + let each_1_anchor; + let current; + let each_value = /*feed*/ ctx[0].items; + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); + } -/***/ }), + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); -/***/ "./node_modules/core-js/internals/native-weak-map.js": -/*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/native-weak-map.js ***! - \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } -var WeakMap = global.WeakMap; + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx, dirty) { + if (dirty & /*feed, plugin*/ 3) { + each_value = /*feed*/ ctx[0].items; + let i; -module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$1(ctx, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block$1(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } -/***/ }), + group_outros(); -/***/ "./node_modules/core-js/internals/object-create.js": -/*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/object-create.js ***! - \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); -var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); -var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); -var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); -var IE_PROTO = sharedKey('IE_PROTO'); + check_outros(); + } + }, + i(local) { + if (current) return; -var PROTOTYPE = 'prototype'; -var Empty = function () { /* empty */ }; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = documentCreateElement('iframe'); - var length = enumBugKeys.length; - var lt = '<'; - var script = 'script'; - var gt = '>'; - var js = 'java' + script + ':'; - var iframeDocument; - iframe.style.display = 'none'; - html.appendChild(iframe); - iframe.src = String(js); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; - return createDict(); -}; + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : defineProperties(result, Properties); -}; + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } -hiddenKeys[IE_PROTO] = true; + current = false; + }, + d(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) detach(each_1_anchor); + } + }; +} +// (67:16) {#each feed.items as item} +function create_each_block$1(ctx) { + let itemview; + let current; -/***/ }), + itemview = new ItemView({ + props: { + item: /*item*/ ctx[6], + plugin: /*plugin*/ ctx[1] + } + }); -/***/ "./node_modules/core-js/internals/object-define-properties.js": -/*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/object-define-properties.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + return { + c() { + create_component(itemview.$$.fragment); + }, + m(target, anchor) { + mount_component(itemview, target, anchor); + current = true; + }, + p(ctx, dirty) { + const itemview_changes = {}; + if (dirty & /*feed*/ 1) itemview_changes.item = /*item*/ ctx[6]; + if (dirty & /*plugin*/ 2) itemview_changes.plugin = /*plugin*/ ctx[1]; + itemview.$set(itemview_changes); + }, + i(local) { + if (current) return; + transition_in(itemview.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(itemview.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(itemview, detaching); + } + }; +} -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); -var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); +function create_fragment$1(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block$1, create_else_block]; + const if_blocks = []; -module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var i = 0; - var key; - while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]); - return O; -}; + function select_block_type(ctx, dirty) { + if (!/*feed*/ ctx[0]) return 0; + return 1; + } + current_block_type_index = select_block_type(ctx); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); -/***/ }), + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx, [dirty]) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx); -/***/ "./node_modules/core-js/internals/object-define-property.js": -/*!******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-define-property.js ***! - \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx, dirty); + } else { + group_outros(); -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); -var nativeDefineProperty = Object.defineProperty; + check_outros(); + if_block = if_blocks[current_block_type_index]; -exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; -}; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block.c(); + } else { + if_block.p(ctx, dirty); + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if_blocks[current_block_type_index].d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} -/***/ }), +function instance$1($$self, $$props, $$invalidate) { + let { feed = null } = $$props; + let { plugin } = $$props; + let foldedState = new Map(); -/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": -/*!******************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + function toggleFold(feed) { + foldedState.set(feed, !foldedState.get(feed)); + $$invalidate(2, foldedState); + } -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); -var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); -var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); + function openMenu(e) { + return __awaiter(this, void 0, void 0, function* () { + const menu = new obsidian.Menu(plugin.app); -var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + menu.addItem(menuItem => { + menuItem.setIcon("create-new").setTitle("Create all").onClick(() => __awaiter(this, void 0, void 0, function* () { + for (let item of feed.items) { + yield Action.CREATE_NOTE.processor(plugin, item); + } + })); + }); -exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { /* empty */ } - if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); -}; + menu.addItem(menuItem => { + menuItem.setIcon("create-new").setTitle("Mark all as read").onClick(() => __awaiter(this, void 0, void 0, function* () { + for (let item of feed.items) { + item.read = true; + } + const items = plugin.settings.items; -/***/ }), + yield plugin.writeFeedContent(() => { + return items; + }); + })); + }); -/***/ "./node_modules/core-js/internals/object-get-own-property-names.js": -/*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + menu.showAtPosition({ x: e.x, y: e.y }); + }); + } -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + const click_handler = () => toggleFold(feed.name); -var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + $$self.$$set = $$props => { + if ('feed' in $$props) $$invalidate(0, feed = $$props.feed); + if ('plugin' in $$props) $$invalidate(1, plugin = $$props.plugin); + }; -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); -}; + return [feed, plugin, foldedState, toggleFold, openMenu, click_handler]; +} +class FeedView extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$1, create_fragment$1, safe_not_equal, { feed: 0, plugin: 1 }); + } +} -/***/ }), +/* src/view/FolderView.svelte generated by Svelte v3.44.2 */ -/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": -/*!***************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \***************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i]; + return child_ctx; +} -exports.f = Object.getOwnPropertySymbols; +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[12] = list[i]; + return child_ctx; +} +function get_each_context_2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[15] = list[i][0]; + child_ctx[9] = list[i][1]; + return child_ctx; +} -/***/ }), +function get_each_context_3(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[18] = list[i]; + return child_ctx; +} -/***/ "./node_modules/core-js/internals/object-get-prototype-of.js": -/*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +// (14:0) {#if $filteredItemsStore} +function create_if_block_4(ctx) { + let div1; + let div0; + let iconcomponent; + let t0; + let span; + let div0_class_value; + let t2; + let show_if = !/*foldedState*/ ctx[1].get('rss-filters'); + let current; + let mounted; + let dispose; + iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); + let if_block = show_if && create_if_block_5(ctx); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); -var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); -var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); + return { + c() { + div1 = element("div"); + div0 = element("div"); + create_component(iconcomponent.$$.fragment); + t0 = space(); + span = element("span"); + span.textContent = "Filtered Folders"; + t2 = space(); + if (if_block) if_block.c(); -var IE_PROTO = sharedKey('IE_PROTO'); -var ObjectPrototype = Object.prototype; + attr(div0, "class", div0_class_value = /*foldedState*/ ctx[1].get('rss-filters') + ? 'is-collapsed' + : ''); -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectPrototype : null; -}; + attr(div1, "class", "rss-filtered-folders"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(iconcomponent, div0, null); + append(div0, t0); + append(div0, span); + append(div1, t2); + if (if_block) if_block.m(div1, null); + current = true; + if (!mounted) { + dispose = listen(div0, "click", /*click_handler*/ ctx[5]); + mounted = true; + } + }, + p(ctx, dirty) { + if (!current || dirty & /*foldedState*/ 2 && div0_class_value !== (div0_class_value = /*foldedState*/ ctx[1].get('rss-filters') + ? 'is-collapsed' + : '')) { + attr(div0, "class", div0_class_value); + } -/***/ }), + if (dirty & /*foldedState*/ 2) show_if = !/*foldedState*/ ctx[1].get('rss-filters'); -/***/ "./node_modules/core-js/internals/object-keys-internal.js": -/*!****************************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys-internal.js ***! - \****************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (show_if) { + if (if_block) { + if_block.p(ctx, dirty); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); -var arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js"); -var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); + if (dirty & /*foldedState*/ 2) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_5(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div1, null); + } + } else if (if_block) { + group_outros(); -var arrayIndexOf = arrayIncludes(false); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); -module.exports = function (object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; -}; + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(iconcomponent.$$.fragment, local); + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(iconcomponent.$$.fragment, local); + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) detach(div1); + destroy_component(iconcomponent); + if (if_block) if_block.d(); + mounted = false; + dispose(); + } + }; +} +// (22:8) {#if (!foldedState.get('rss-filters'))} +function create_if_block_5(ctx) { + let each_1_anchor; + let current; + let each_value_2 = Object.entries(/*$filteredItemsStore*/ ctx[2]); + let each_blocks = []; -/***/ }), + for (let i = 0; i < each_value_2.length; i += 1) { + each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); + } -/***/ "./node_modules/core-js/internals/object-keys.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); -var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); -var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -module.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); -}; + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } + + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx, dirty) { + if (dirty & /*Object, $filteredItemsStore, plugin, foldedState, toggleFold*/ 23) { + each_value_2 = Object.entries(/*$filteredItemsStore*/ ctx[2]); + let i; + for (i = 0; i < each_value_2.length; i += 1) { + const child_ctx = get_each_context_2(ctx, each_value_2, i); -/***/ }), + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block_2(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } -/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": -/*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! - \*************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + group_outros(); -var nativePropertyIsEnumerable = {}.propertyIsEnumerable; -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + for (i = each_value_2.length; i < each_blocks.length; i += 1) { + out(i); + } -// Nashorn ~ JDK8 bug -var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + check_outros(); + } + }, + i(local) { + if (current) return; -exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; -} : nativePropertyIsEnumerable; + for (let i = 0; i < each_value_2.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); -/***/ }), + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } -/***/ "./node_modules/core-js/internals/object-set-prototype-of.js": -/*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! - \*******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + current = false; + }, + d(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) detach(each_1_anchor); + } + }; +} -var validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js"); +// (30:16) {#if (!foldedState.get('rss-filter' + folder.filter.name))} +function create_if_block_6(ctx) { + let div; + let t; + let current; + let each_value_3 = /*folder*/ ctx[9].items.items; + let each_blocks = []; -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { - var correctSetter = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; - setter.call(test, []); - correctSetter = test instanceof Array; - } catch (error) { /* empty */ } - return function setPrototypeOf(O, proto) { - validateSetPrototypeOfArguments(O, proto); - if (correctSetter) setter.call(O, proto); - else O.__proto__ = proto; - return O; - }; -}() : undefined); + for (let i = 0; i < each_value_3.length; i += 1) { + each_blocks[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i)); + } + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); -/***/ }), + return { + c() { + div = element("div"); -/***/ "./node_modules/core-js/internals/own-keys.js": -/*!****************************************************!*\ - !*** ./node_modules/core-js/internals/own-keys.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); -var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + t = space(); + set_style(div, "margin-left", "20px"); + }, + m(target, anchor) { + insert(target, div, anchor); -var Reflect = global.Reflect; + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div, null); + } -// all object keys, includes non-enumerable and symbols -module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; -}; + append(div, t); + current = true; + }, + p(ctx, dirty) { + if (dirty & /*Object, $filteredItemsStore, plugin*/ 5) { + each_value_3 = /*folder*/ ctx[9].items.items; + let i; + for (i = 0; i < each_value_3.length; i += 1) { + const child_ctx = get_each_context_3(ctx, each_value_3, i); -/***/ }), + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block_3(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div, t); + } + } -/***/ "./node_modules/core-js/internals/path.js": -/*!************************************************!*\ - !*** ./node_modules/core-js/internals/path.js ***! - \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + group_outros(); -module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); + for (i = each_value_3.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) return; -/***/ }), + for (let i = 0; i < each_value_3.length; i += 1) { + transition_in(each_blocks[i]); + } -/***/ "./node_modules/core-js/internals/redefine.js": -/*!****************************************************!*\ - !*** ./node_modules/core-js/internals/redefine.js ***! - \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); -var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); -var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } -var getInternalState = InternalStateModule.get; -var enforceInternalState = InternalStateModule.enforce; -var TEMPLATE = String(nativeFunctionToString).split('toString'); + current = false; + }, + d(detaching) { + if (detaching) detach(div); + destroy_each(each_blocks, detaching); + } + }; +} -shared('inspectSource', function (it) { - return nativeFunctionToString.call(it); -}); +// (32:24) {#each folder.items.items as item} +function create_each_block_3(ctx) { + let itemview; + let current; -(module.exports = function (O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - if (typeof value == 'function') { - if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); - enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); - } - if (O === global) { - if (simple) O[key] = value; - else setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple = true; - } - if (simple) O[key] = value; - else hide(O, key, value); -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, 'toString', function toString() { - return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); -}); + itemview = new ItemView({ + props: { + item: /*item*/ ctx[18], + plugin: /*plugin*/ ctx[0] + } + }); + return { + c() { + create_component(itemview.$$.fragment); + }, + m(target, anchor) { + mount_component(itemview, target, anchor); + current = true; + }, + p(ctx, dirty) { + const itemview_changes = {}; + if (dirty & /*$filteredItemsStore*/ 4) itemview_changes.item = /*item*/ ctx[18]; + if (dirty & /*plugin*/ 1) itemview_changes.plugin = /*plugin*/ ctx[0]; + itemview.$set(itemview_changes); + }, + i(local) { + if (current) return; + transition_in(itemview.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(itemview.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(itemview, detaching); + } + }; +} -/***/ }), +// (23:12) {#each Object.entries($filteredItemsStore) as [key, folder]} +function create_each_block_2(ctx) { + let div; + let iconcomponent; + let t0; + let span; + let t1_value = /*folder*/ ctx[9].filter.name + ""; + let t1; + let div_class_value; + let t2; + let show_if = !/*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name); + let if_block_anchor; + let current; + let mounted; + let dispose; + iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); -/***/ "./node_modules/core-js/internals/require-object-coercible.js": -/*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/require-object-coercible.js ***! - \********************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + function click_handler_1() { + return /*click_handler_1*/ ctx[6](/*folder*/ ctx[9]); + } -// `RequireObjectCoercible` abstract operation -// https://tc39.github.io/ecma262/#sec-requireobjectcoercible -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; -}; + let if_block = show_if && create_if_block_6(ctx); + return { + c() { + div = element("div"); + create_component(iconcomponent.$$.fragment); + t0 = space(); + span = element("span"); + t1 = text(t1_value); + t2 = space(); + if (if_block) if_block.c(); + if_block_anchor = empty(); -/***/ }), + attr(div, "class", div_class_value = /*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name) + ? 'is-collapsed' + : ''); -/***/ "./node_modules/core-js/internals/set-global.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/set-global.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + set_style(div, "margin-left", "20px"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(iconcomponent, div, null); + append(div, t0); + append(div, span); + append(span, t1); + insert(target, t2, anchor); + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); + if (!mounted) { + dispose = listen(div, "click", click_handler_1); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if ((!current || dirty & /*$filteredItemsStore*/ 4) && t1_value !== (t1_value = /*folder*/ ctx[9].filter.name + "")) set_data(t1, t1_value); -module.exports = function (key, value) { - try { - hide(global, key, value); - } catch (error) { - global[key] = value; - } return value; -}; + if (!current || dirty & /*foldedState, $filteredItemsStore*/ 6 && div_class_value !== (div_class_value = /*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name) + ? 'is-collapsed' + : '')) { + attr(div, "class", div_class_value); + } + if (dirty & /*foldedState, $filteredItemsStore*/ 6) show_if = !/*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name); -/***/ }), + if (show_if) { + if (if_block) { + if_block.p(ctx, dirty); -/***/ "./node_modules/core-js/internals/set-to-string-tag.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (dirty & /*foldedState, $filteredItemsStore*/ 6) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_6(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); -var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; -var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); -var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); -var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(iconcomponent.$$.fragment, local); + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(iconcomponent.$$.fragment, local); + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) detach(div); + destroy_component(iconcomponent); + if (detaching) detach(t2); + if (if_block) if_block.d(detaching); + if (detaching) detach(if_block_anchor); + mounted = false; + dispose(); + } + }; +} -module.exports = function (it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); - } -}; +// (43:0) {#if !$sortedFeedsStore} +function create_if_block_3(ctx) { + let h1; + + return { + c() { + h1 = element("h1"); + h1.textContent = "No feeds configured"; + }, + m(target, anchor) { + insert(target, h1, anchor); + }, + d(detaching) { + if (detaching) detach(h1); + } + }; +} +// (47:0) {#if $sortedFeedsStore} +function create_if_block(ctx) { + let div1; + let div0; + let iconcomponent; + let t0; + let span; + let div0_class_value; + let t2; + let show_if = !/*foldedState*/ ctx[1].get('rss-folders'); + let current; + let mounted; + let dispose; + iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); + let if_block = show_if && create_if_block_1(ctx); -/***/ }), + return { + c() { + div1 = element("div"); + div0 = element("div"); + create_component(iconcomponent.$$.fragment); + t0 = space(); + span = element("span"); + span.textContent = "Folders"; + t2 = space(); + if (if_block) if_block.c(); -/***/ "./node_modules/core-js/internals/shared-key.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/shared-key.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + attr(div0, "class", div0_class_value = /*foldedState*/ ctx[1].get('rss-folders') + ? 'is-collapsed' + : ''); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); + attr(div1, "class", "rss-feeds-folders"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(iconcomponent, div0, null); + append(div0, t0); + append(div0, span); + append(div1, t2); + if (if_block) if_block.m(div1, null); + current = true; -var keys = shared('keys'); + if (!mounted) { + dispose = listen(div0, "click", /*click_handler_2*/ ctx[7]); + mounted = true; + } + }, + p(ctx, dirty) { + if (!current || dirty & /*foldedState*/ 2 && div0_class_value !== (div0_class_value = /*foldedState*/ ctx[1].get('rss-folders') + ? 'is-collapsed' + : '')) { + attr(div0, "class", div0_class_value); + } -module.exports = function (key) { - return keys[key] || (keys[key] = uid(key)); -}; + if (dirty & /*foldedState*/ 2) show_if = !/*foldedState*/ ctx[1].get('rss-folders'); + if (show_if) { + if (if_block) { + if_block.p(ctx, dirty); -/***/ }), + if (dirty & /*foldedState*/ 2) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_1(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div1, null); + } + } else if (if_block) { + group_outros(); -/***/ "./node_modules/core-js/internals/shared.js": -/*!**************************************************!*\ - !*** ./node_modules/core-js/internals/shared.js ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + transition_out(if_block, 1, 1, () => { + if_block = null; + }); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); -var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(iconcomponent.$$.fragment, local); + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(iconcomponent.$$.fragment, local); + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) detach(div1); + destroy_component(iconcomponent); + if (if_block) if_block.d(); + mounted = false; + dispose(); + } + }; +} -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || setGlobal(SHARED, {}); +// (55:8) {#if (!foldedState.get('rss-folders'))} +function create_if_block_1(ctx) { + let each_1_anchor; + let current; + let each_value = Object.keys(/*$sortedFeedsStore*/ ctx[3]); + let each_blocks = []; -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: '3.1.3', - mode: IS_PURE ? 'pure' : 'global', - copyright: '© 2019 Denis Pushkarev (zloirock.ru)' -}); + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); -/***/ }), + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } -/***/ "./node_modules/core-js/internals/string-at.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/string-at.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } -var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx, dirty) { + if (dirty & /*$sortedFeedsStore, Object, plugin, foldedState, toggleFold*/ 27) { + each_value = Object.keys(/*$sortedFeedsStore*/ ctx[3]); + let i; -// CONVERT_TO_STRING: true -> String#at -// CONVERT_TO_STRING: false -> String#codePointAt -module.exports = function (that, pos, CONVERT_TO_STRING) { - var S = String(requireObjectCoercible(that)); - var position = toInteger(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; - first = S.charCodeAt(position); - return first < 0xD800 || first > 0xDBFF || position + 1 === size - || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF - ? CONVERT_TO_STRING ? S.charAt(position) : first - : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; -}; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } -/***/ }), + group_outros(); -/***/ "./node_modules/core-js/internals/to-absolute-index.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-absolute-index.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } -var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); + check_outros(); + } + }, + i(local) { + if (current) return; -var max = Math.max; -var min = Math.min; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } -// Helper for a popular repeating case of the spec: -// Let integer be ? ToInteger(index). -// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). -module.exports = function (index, length) { - var integer = toInteger(index); - return integer < 0 ? max(integer + length, 0) : min(integer, length); -}; + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } -/***/ }), + current = false; + }, + d(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) detach(each_1_anchor); + } + }; +} -/***/ "./node_modules/core-js/internals/to-indexed-object.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-indexed-object.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +// (65:20) {#if (!foldedState.get(folder))} +function create_if_block_2(ctx) { + let each_1_anchor; + let current; + let each_value_1 = /*$sortedFeedsStore*/ ctx[3][/*folder*/ ctx[9]]; + let each_blocks = []; -// toObject with fallback for non-array-like ES3 strings -var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } -module.exports = function (it) { - return IndexedObject(requireObjectCoercible(it)); -}; + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } -/***/ }), + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } -/***/ "./node_modules/core-js/internals/to-integer.js": -/*!******************************************************!*\ - !*** ./node_modules/core-js/internals/to-integer.js ***! - \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx, dirty) { + if (dirty & /*$sortedFeedsStore, Object, plugin*/ 9) { + each_value_1 = /*$sortedFeedsStore*/ ctx[3][/*folder*/ ctx[9]]; + let i; -var ceil = Math.ceil; -var floor = Math.floor; + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); -// `ToInteger` abstract operation -// https://tc39.github.io/ecma262/#sec-tointeger -module.exports = function (argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); -}; + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + group_outros(); -/***/ }), + for (i = each_value_1.length; i < each_blocks.length; i += 1) { + out(i); + } -/***/ "./node_modules/core-js/internals/to-length.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-length.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + check_outros(); + } + }, + i(local) { + if (current) return; -var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks[i]); + } -var min = Math.min; + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); -// `ToLength` abstract operation -// https://tc39.github.io/ecma262/#sec-tolength -module.exports = function (argument) { - return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 -}; + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + destroy_each(each_blocks, detaching); + if (detaching) detach(each_1_anchor); + } + }; +} -/***/ }), +// (66:24) {#each $sortedFeedsStore[folder] as feed} +function create_each_block_1(ctx) { + let feedview; + let current; -/***/ "./node_modules/core-js/internals/to-object.js": -/*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-object.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + feedview = new FeedView({ + props: { + feed: /*feed*/ ctx[12], + plugin: /*plugin*/ ctx[0] + } + }); -var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); + return { + c() { + create_component(feedview.$$.fragment); + }, + m(target, anchor) { + mount_component(feedview, target, anchor); + current = true; + }, + p(ctx, dirty) { + const feedview_changes = {}; + if (dirty & /*$sortedFeedsStore*/ 8) feedview_changes.feed = /*feed*/ ctx[12]; + if (dirty & /*plugin*/ 1) feedview_changes.plugin = /*plugin*/ ctx[0]; + feedview.$set(feedview_changes); + }, + i(local) { + if (current) return; + transition_in(feedview.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(feedview.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(feedview, detaching); + } + }; +} -// `ToObject` abstract operation -// https://tc39.github.io/ecma262/#sec-toobject -module.exports = function (argument) { - return Object(requireObjectCoercible(argument)); -}; +// (56:12) {#each Object.keys($sortedFeedsStore) as folder} +function create_each_block(ctx) { + let div1; + let div0; + let iconcomponent; + let t0; + let span; + let t1_value = (/*folder*/ ctx[9] !== "undefined" + ? /*folder*/ ctx[9] + : 'No Folder') + ""; -/***/ }), + let t1; + let div0_class_value; + let t2; + let show_if = !/*foldedState*/ ctx[1].get(/*folder*/ ctx[9]); + let t3; + let current; + let mounted; + let dispose; + iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); -/***/ "./node_modules/core-js/internals/to-primitive.js": -/*!********************************************************!*\ - !*** ./node_modules/core-js/internals/to-primitive.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + function click_handler_3() { + return /*click_handler_3*/ ctx[8](/*folder*/ ctx[9]); + } -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); + let if_block = show_if && create_if_block_2(ctx); -// 7.1.1 ToPrimitive(input [, PreferredType]) -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; + return { + c() { + div1 = element("div"); + div0 = element("div"); + create_component(iconcomponent.$$.fragment); + t0 = space(); + span = element("span"); + t1 = text(t1_value); + t2 = space(); + if (if_block) if_block.c(); + t3 = space(); + attr(div0, "class", div0_class_value = /*foldedState*/ ctx[1].get(/*folder*/ ctx[9]) + ? 'is-collapsed' + : ''); -/***/ }), + attr(div1, "class", "rss-folder"); + set_style(div1, "margin-left", "20px"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(iconcomponent, div0, null); + append(div0, t0); + append(div0, span); + append(span, t1); + append(div1, t2); + if (if_block) if_block.m(div1, null); + append(div1, t3); + current = true; -/***/ "./node_modules/core-js/internals/uid.js": -/*!***********************************************!*\ - !*** ./node_modules/core-js/internals/uid.js ***! - \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + if (!mounted) { + dispose = listen(div0, "click", click_handler_3); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; -var id = 0; -var postfix = Math.random(); + if ((!current || dirty & /*$sortedFeedsStore*/ 8) && t1_value !== (t1_value = (/*folder*/ ctx[9] !== "undefined" + ? /*folder*/ ctx[9] + : 'No Folder') + "")) set_data(t1, t1_value); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36)); -}; + if (!current || dirty & /*foldedState, $sortedFeedsStore*/ 10 && div0_class_value !== (div0_class_value = /*foldedState*/ ctx[1].get(/*folder*/ ctx[9]) + ? 'is-collapsed' + : '')) { + attr(div0, "class", div0_class_value); + } + if (dirty & /*foldedState, $sortedFeedsStore*/ 10) show_if = !/*foldedState*/ ctx[1].get(/*folder*/ ctx[9]); -/***/ }), + if (show_if) { + if (if_block) { + if_block.p(ctx, dirty); -/***/ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***! - \*******************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (dirty & /*foldedState, $sortedFeedsStore*/ 10) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_2(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div1, t3); + } + } else if (if_block) { + group_outros(); -var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); -var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); -module.exports = function (O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) { - throw TypeError("Can't set " + String(proto) + ' as a prototype'); - } -}; + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(iconcomponent.$$.fragment, local); + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(iconcomponent.$$.fragment, local); + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) detach(div1); + destroy_component(iconcomponent); + if (if_block) if_block.d(); + mounted = false; + dispose(); + } + }; +} +function create_fragment(ctx) { + let t0; + let t1; + let if_block2_anchor; + let current; + let if_block0 = /*$filteredItemsStore*/ ctx[2] && create_if_block_4(ctx); + let if_block1 = !/*$sortedFeedsStore*/ ctx[3] && create_if_block_3(); + let if_block2 = /*$sortedFeedsStore*/ ctx[3] && create_if_block(ctx); -/***/ }), + return { + c() { + if (if_block0) if_block0.c(); + t0 = space(); + if (if_block1) if_block1.c(); + t1 = space(); + if (if_block2) if_block2.c(); + if_block2_anchor = empty(); + }, + m(target, anchor) { + if (if_block0) if_block0.m(target, anchor); + insert(target, t0, anchor); + if (if_block1) if_block1.m(target, anchor); + insert(target, t1, anchor); + if (if_block2) if_block2.m(target, anchor); + insert(target, if_block2_anchor, anchor); + current = true; + }, + p(ctx, [dirty]) { + if (/*$filteredItemsStore*/ ctx[2]) { + if (if_block0) { + if_block0.p(ctx, dirty); -/***/ "./node_modules/core-js/internals/well-known-symbol.js": -/*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/well-known-symbol.js ***! - \*************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + if (dirty & /*$filteredItemsStore*/ 4) { + transition_in(if_block0, 1); + } + } else { + if_block0 = create_if_block_4(ctx); + if_block0.c(); + transition_in(if_block0, 1); + if_block0.m(t0.parentNode, t0); + } + } else if (if_block0) { + group_outros(); -var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); -var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); -var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); -var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); + transition_out(if_block0, 1, 1, () => { + if_block0 = null; + }); -var Symbol = global.Symbol; -var store = shared('wks'); + check_outros(); + } -module.exports = function (name) { - return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name] - || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; + if (!/*$sortedFeedsStore*/ ctx[3]) { + if (if_block1) ; else { + if_block1 = create_if_block_3(); + if_block1.c(); + if_block1.m(t1.parentNode, t1); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + if (/*$sortedFeedsStore*/ ctx[3]) { + if (if_block2) { + if_block2.p(ctx, dirty); -/***/ }), + if (dirty & /*$sortedFeedsStore*/ 8) { + transition_in(if_block2, 1); + } + } else { + if_block2 = create_if_block(ctx); + if_block2.c(); + transition_in(if_block2, 1); + if_block2.m(if_block2_anchor.parentNode, if_block2_anchor); + } + } else if (if_block2) { + group_outros(); -/***/ "./node_modules/core-js/modules/es.array.from.js": -/*!*******************************************************!*\ - !*** ./node_modules/core-js/modules/es.array.from.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + transition_out(if_block2, 1, 1, () => { + if_block2 = null; + }); -var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); -var from = __webpack_require__(/*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js"); -var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(if_block0); + transition_in(if_block2); + current = true; + }, + o(local) { + transition_out(if_block0); + transition_out(if_block2); + current = false; + }, + d(detaching) { + if (if_block0) if_block0.d(detaching); + if (detaching) detach(t0); + if (if_block1) if_block1.d(detaching); + if (detaching) detach(t1); + if (if_block2) if_block2.d(detaching); + if (detaching) detach(if_block2_anchor); + } + }; +} -var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { - Array.from(iterable); -}); +function instance($$self, $$props, $$invalidate) { + let $filteredItemsStore; + let $sortedFeedsStore; + component_subscribe($$self, filteredItemsStore, $$value => $$invalidate(2, $filteredItemsStore = $$value)); + component_subscribe($$self, sortedFeedsStore, $$value => $$invalidate(3, $sortedFeedsStore = $$value)); + let { plugin } = $$props; + let foldedState = new Map(); -// `Array.from` method -// https://tc39.github.io/ecma262/#sec-array.from -$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { - from: from -}); + function toggleFold(folder) { + foldedState.set(folder, !foldedState.get(folder)); + $$invalidate(1, foldedState); + } + const click_handler = () => toggleFold('rss-filters'); + const click_handler_1 = folder => toggleFold('rss-filter' + folder.filter.name); + const click_handler_2 = () => toggleFold('rss-folders'); + const click_handler_3 = folder => toggleFold(folder); -/***/ }), + $$self.$$set = $$props => { + if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin); + }; -/***/ "./node_modules/core-js/modules/es.string.iterator.js": -/*!************************************************************!*\ - !*** ./node_modules/core-js/modules/es.string.iterator.js ***! - \************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + return [ + plugin, + foldedState, + $filteredItemsStore, + $sortedFeedsStore, + toggleFold, + click_handler, + click_handler_1, + click_handler_2, + click_handler_3 + ]; +} -var codePointAt = __webpack_require__(/*! ../internals/string-at */ "./node_modules/core-js/internals/string-at.js"); -var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); -var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); +class FolderView extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance, create_fragment, safe_not_equal, { plugin: 0 }); + } +} -var STRING_ITERATOR = 'String Iterator'; -var setInternalState = InternalStateModule.set; -var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); +class ViewLoader extends obsidian.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.plugin = plugin; + } + getDisplayText() { + return "RSS Feeds"; + } + getViewType() { + return VIEW_ID; + } + getIcon() { + return "feather-rss"; + } + onOpen() { + return __awaiter(this, void 0, void 0, function* () { + this.feed = new FolderView({ + target: this.contentEl, + props: { + plugin: this.plugin + }, + }); + }); + } + onClose() { + if (this.feed) { + this.feed.$destroy(); + } + return Promise.resolve(); + } +} -// `String.prototype[@@iterator]` method -// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator -defineIterator(String, 'String', function (iterated) { - setInternalState(this, { - type: STRING_ITERATOR, - string: String(iterated), - index: 0 - }); -// `%StringIteratorPrototype%.next` method -// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next -}, function next() { - var state = getInternalState(this); - var string = state.string; - var index = state.index; - var point; - if (index >= string.length) return { value: undefined, done: true }; - point = codePointAt(string, index, true); - state.index += point.length; - return { value: point, done: false }; -}); +/** + * Lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +var lodash_mergewith = createCommonjsModule(function (module, exports) { +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; -/***/ }), +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; -/***/ "./node_modules/webpack/buildin/global.js": -/*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1, eval)("this"); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]'; -/***/ }), +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; -/***/ "./src/default-attrs.json": -/*!********************************!*\ - !*** ./src/default-attrs.json ***! - \********************************/ -/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */ -/***/ (function(module) { +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; -module.exports = {"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"}; +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; -/***/ }), +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; -/***/ "./src/icon.js": -/*!*********************!*\ - !*** ./src/icon.js ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; -Object.defineProperty(exports, "__esModule", { - value: true -}); +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +/** Detect free variable `exports`. */ +var freeExports = exports && !exports.nodeType && exports; -var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js"); +/** Detect free variable `module`. */ +var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; -var _dedupe2 = _interopRequireDefault(_dedupe); +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; -var _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ "./src/default-attrs.json"); +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; -var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (types) { + return types; + } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); -var Icon = function () { - function Icon(name, contents) { - var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - _classCallCheck(this, Icon); +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} - this.name = name; - this.contents = contents; - this.tags = tags; - this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name }); +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); } + return result; +} - /** - * Create an SVG string. - * @param {Object} attrs - * @returns {string} - */ +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} - _createClass(Icon, [{ - key: 'toSvg', - value: function toSvg() { - var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} - var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; - return '' + this.contents + ''; - } +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; - /** - * Return string representation of an `Icon`. - * - * Added for backward compatibility. If old code expects `feather.icons.` - * to be a string, `toString()` will get implicitly called. - * - * @returns {string} - */ +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - }, { - key: 'toString', - value: function toString() { - return this.contents; - } - }]); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - return Icon; -}(); +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); /** - * Convert attributes object to string of HTML attributes. - * @param {Object} attrs - * @returns {string} + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. */ +var nativeObjectToString = objectProto.toString; +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); -function attrsToString(attrs) { - return Object.keys(attrs).map(function (key) { - return key + '="' + attrs[key] + '"'; - }).join(' '); -} +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); -exports.default = Icon; +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; -/***/ }), +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); -/***/ "./src/icons.js": -/*!**********************!*\ - !*** ./src/icons.js ***! - \**********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeMax = Math.max, + nativeNow = Date.now; +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); -Object.defineProperty(exports, "__esModule", { - value: true -}); +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); -var _icon = __webpack_require__(/*! ./icon */ "./src/icon.js"); +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; -var _icon2 = _interopRequireDefault(_icon); + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} -var _icons = __webpack_require__(/*! ../dist/icons.json */ "./dist/icons.json"); +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} -var _icons2 = _interopRequireDefault(_icons); +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} -var _tags = __webpack_require__(/*! ./tags.json */ "./src/tags.json"); +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} -var _tags2 = _interopRequireDefault(_tags); +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} -exports.default = Object.keys(_icons2.default).map(function (key) { - return new _icon2.default(key, _icons2.default[key], _tags2.default[key]); -}).reduce(function (object, icon) { - object[icon.name] = icon; - return object; -}, {}); +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; -/***/ }), +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; -/***/ "./src/index.js": -/*!**********************!*\ - !*** ./src/index.js ***! - \**********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} -var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); -var _icons2 = _interopRequireDefault(_icons); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} -var _toSvg = __webpack_require__(/*! ./to-svg */ "./src/to-svg.js"); +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); -var _toSvg2 = _interopRequireDefault(_toSvg); + return index < 0 ? undefined : data[index][1]; +} -var _replace = __webpack_require__(/*! ./replace */ "./src/replace.js"); +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} -var _replace2 = _interopRequireDefault(_replace); +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} -module.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; -/***/ }), +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; -/***/ "./src/replace.js": -/*!************************!*\ - !*** ./src/replace.js ***! - \************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} -Object.defineProperty(exports, "__esModule", { - value: true -}); +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */ +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} -var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js"); +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; -var _dedupe2 = _interopRequireDefault(_dedupe); + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} -var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; -var _icons2 = _interopRequireDefault(_icons); +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} /** - * Replace all HTML elements that have a `data-feather` attribute with SVG markup - * corresponding to the element's `data-feather` attribute value. - * @param {Object} attrs + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ -function replace() { - var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - if (typeof document === 'undefined') { - throw new Error('`feather.replace()` only works in a browser environment.'); - } - - var elementsToReplace = document.querySelectorAll('[data-feather]'); +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); - Array.from(elementsToReplace).forEach(function (element) { - return replaceElement(element, attrs); - }); + this.size = data.size; + return result; } /** - * Replace a single HTML element with SVG markup - * corresponding to the element's `data-feather` attribute value. - * @param {HTMLElement} element - * @param {Object} attrs + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. */ -function replaceElement(element) { - var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - var elementAttrs = getAttrs(element); - var name = elementAttrs['data-feather']; - delete elementAttrs['data-feather']; - - var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); - var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml'); - var svgElement = svgDocument.querySelector('svg'); - - element.parentNode.replaceChild(svgElement, element); +function stackGet(key) { + return this.__data__.get(key); } /** - * Get the attributes of an HTML element. - * @param {HTMLElement} element - * @returns {Object} + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. */ -function getAttrs(element) { - return Array.from(element.attributes).reduce(function (attrs, attr) { - attrs[attr.name] = attr.value; - return attrs; - }, {}); +function stackHas(key) { + return this.__data__.has(key); } -exports.default = replace; - -/***/ }), - -/***/ "./src/tags.json": -/*!***********************!*\ - !*** ./src/tags.json ***! - \***********************/ -/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ -/***/ (function(module) { - -module.exports = {"activity":["pulse","health","action","motion"],"airplay":["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],"anchor":[],"archive":["index","box"],"at-sign":["mention","at","email","message"],"award":["achievement","badge"],"aperture":["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],"battery":["power","electricity"],"battery-charging":["power","electricity"],"bell":["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],"bluetooth":["wireless"],"book-open":["read","library"],"book":["read","dictionary","booklet","magazine","library"],"bookmark":["read","clip","marker","tag"],"box":["cube"],"briefcase":["work","bag","baggage","folder"],"calendar":["date"],"camera":["photo"],"cast":["chromecast","airplay"],"circle":["off","zero","record"],"clipboard":["copy"],"clock":["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],"cloud":["weather"],"codepen":["logo"],"codesandbox":["logo"],"code":["source","programming"],"coffee":["drink","cup","mug","tea","cafe","hot","beverage"],"columns":["layout"],"command":["keyboard","cmd","terminal","prompt"],"compass":["navigation","safari","travel","direction"],"copy":["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"cpu":["processor","technology"],"credit-card":["purchase","payment","cc"],"crop":["photo","image"],"crosshair":["aim","target"],"database":["storage","memory"],"delete":["remove"],"disc":["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],"droplet":["water"],"edit":["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],"eye":["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],"facebook":["logo","social"],"fast-forward":["music"],"figma":["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],"film":["movie","video"],"filter":["funnel","hopper"],"flag":["report"],"folder-minus":["directory"],"folder-plus":["directory"],"folder":["directory"],"framer":["logo","design","tool"],"frown":["emoji","face","bad","sad","emotion"],"gift":["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],"github":["logo","version control"],"gitlab":["logo","version control"],"globe":["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],"hash":["hashtag","number","pound"],"headphones":["music","audio","sound"],"heart":["like","love","emotion"],"help-circle":["question mark"],"hexagon":["shape","node.js","logo"],"home":["house","living"],"image":["picture"],"inbox":["email"],"instagram":["logo","camera"],"key":["password","login","authentication","secure"],"layers":["stack"],"layout":["window","webpage"],"life-bouy":["help","life ring","support"],"link":["chain","url"],"link-2":["chain","url"],"linkedin":["logo","social media"],"list":["options"],"lock":["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],"mail":["email","message"],"map-pin":["location","navigation","travel","marker"],"map":["location","navigation","travel"],"maximize":["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],"meh":["emoji","face","neutral","emotion"],"menu":["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],"mic":["record","sound","listen"],"minimize":["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],"minus":["subtract"],"monitor":["tv","screen","display"],"moon":["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],"move":["arrows"],"music":["note"],"navigation":["location","travel"],"navigation-2":["location","travel"],"octagon":["stop"],"package":["box","container"],"paperclip":["attachment"],"pause":["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],"percent":["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],"phone":["call"],"play":["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],"plus":["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],"pocket":["logo","save"],"power":["on","off"],"printer":["fax","office","device"],"radio":["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],"repeat":["loop","arrows"],"rewind":["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],"rss":["feed","subscribe"],"save":["floppy disk"],"scissors":["cut"],"search":["find","magnifier","magnifying glass"],"send":["message","mail","email","paper airplane","paper aeroplane"],"settings":["cog","edit","gear","preferences"],"share-2":["network","connections"],"shield":["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],"shuffle":["music"],"skip-back":["music"],"skip-forward":["music"],"slack":["logo"],"slash":["ban","no"],"sliders":["settings","controls"],"smartphone":["cellphone","device"],"smile":["emoji","face","happy","good","emotion"],"speaker":["audio","music"],"star":["bookmark","favorite","like"],"stop-circle":["media","music"],"sun":["brightness","weather","light"],"sunrise":["weather","time","morning","day"],"sunset":["weather","time","evening","night"],"tablet":["device"],"tag":["label"],"target":["logo","bullseye"],"terminal":["code","command line","prompt"],"thermometer":["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],"tool":["settings","spanner"],"trash":["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],"triangle":["delta"],"truck":["delivery","van","shipping","transport","lorry"],"tv":["television","stream"],"twitch":["logo"],"twitter":["logo","social"],"type":["text"],"umbrella":["rain","weather"],"unlock":["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],"user":["person","account"],"users":["group"],"video-off":["camera","movie","film"],"video":["camera","movie","film"],"voicemail":["phone"],"volume":["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],"watch":["clock","time"],"wifi-off":["disabled"],"wifi":["connection","signal","wireless"],"wind":["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],"x":["cancel","close","delete","remove","times","clear"],"youtube":["logo","video","play"],"zap-off":["flash","camera","lightning"],"zap":["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]}; - -/***/ }), - -/***/ "./src/to-svg.js": -/*!***********************!*\ - !*** ./src/to-svg.js ***! - \***********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js"); - -var _icons2 = _interopRequireDefault(_icons); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - /** - * Create an SVG string. - * @deprecated - * @param {string} name - * @param {Object} attrs - * @returns {string} + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. */ -function toSvg(name) { - var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.'); - - if (!name) { - throw new Error('The required `key` (icon name) parameter is missing.'); - } - - if (!_icons2.default[name]) { - throw new Error('No icon matching \'' + name + '\'. See the complete list of icons at https://feathericons.com'); +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); } - - return _icons2.default[name].toSvg(attrs); + data.set(key, value); + this.size = data.size; + return this; } -exports.default = toSvg; - -/***/ }), - -/***/ 0: -/*!**************************************************!*\ - !*** multi core-js/es/array/from ./src/index.js ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(/*! core-js/es/array/from */"./node_modules/core-js/es/array/from.js"); -module.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */"./src/index.js"); - - -/***/ }) - -/******/ }); -}); +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; -}); +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; -/** - * This module contains various utility functions commonly used in Obsidian plugins. - * @module obsidian-community-lib - */ -/** - * Adds a specific Feather Icon to Obsidian. - * - * @param name official Name of the Icon (https://feathericons.com/) - * @param attr SVG Attributes for the Icon. The default should work for most usecases. - * @returns {string} Icon name - */ -function addFeatherIcon(name, attr = { viewBox: "0 0 24 24", width: "100", height: "100" }) { - if (feather.icons[name]) { - const iconName = `feather-${name}`; - obsidian.addIcon(iconName, feather.icons[name].toSvg(attr)); - return iconName; - } - else { - throw Error(`This Icon (${name}) doesn't exist in the Feather Library.`); - } -} -/** - * Copy `content` to the users clipboard. - * - * @param {string} content The content to be copied to clipboard. - * @param {() => any} success The callback to run when text is successfully copied. Default throws a new `Notice` - * @param {(reason?) => any} failure The callback to run when text was not able to be copied. Default throws a new `Notice`, and console logs the error.` - */ -async function copy(content, success = () => new obsidian.Notice("Copied to clipboard"), failure = (reason) => { - new obsidian.Notice("Could not copy to clipboard"); - console.log({ reason }); -}) { - await navigator.clipboard.writeText(content).then(success, failure); -} -/** - * Check if `noteName` is the name of a note that exists in the vault. - * @param {App} app - * @param {string} noteName Basename of the note to search for. - * @param {string} [sourcePath=""] Optional file path to start searching from. Default is the current file. - * @returns boolean - */ -const isInVault = (app, noteName, sourcePath = "") => !!app.metadataCache.getFirstLinkpathDest(noteName, sourcePath); + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} -function createNewNote(plugin, item) { - return __awaiter(this, void 0, void 0, function* () { - const activeFile = plugin.app.workspace.getActiveFile(); - let dir = plugin.app.fileManager.getNewFileParent(activeFile ? activeFile.path : "").path; - if (plugin.settings.saveLocation === "custom") { - dir = plugin.settings.saveLocationFolder; - } - //make sure there are no slashes in the title. - const title = item.title.replace(/[\/\\:]/g, ' '); - const inputPrompt = new TextInputPrompt(plugin.app, "Please specify a file name", "cannot contain: * \" \\ / < > : | ?", title, title); - if (plugin.settings.askForFilename) { - yield inputPrompt - .openAndGetValue((text) => __awaiter(this, void 0, void 0, function* () { - const value = text.getValue(); - if (value.match(FILE_NAME_REGEX)) { - inputPrompt.setValidationError(text, "that filename is not valid"); - return; - } - const filePath = obsidian.normalizePath([dir, `${value}.md`].join('/')); - if (isInVault(plugin.app, filePath, '')) { - inputPrompt.setValidationError(text, "there is already a note with that name"); - return; - } - inputPrompt.close(); - yield createNewFile(plugin, item, filePath, value); - })); - } - else { - const replacedTitle = item.title.replace(FILE_NAME_REGEX, ''); - const filePath = obsidian.normalizePath([dir, `${replacedTitle}.md`].join('/')); - yield createNewFile(plugin, item, filePath, item.title); - } - }); +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } } -function createNewFile(plugin, item, path, title) { - return __awaiter(this, void 0, void 0, function* () { - if (isInVault(plugin.app, path, '')) { - new obsidian.Notice("there is already a note with that name"); - return; - } - const appliedTemplate = applyTemplate(item, plugin.settings.template, plugin.settings, title); - const file = yield plugin.app.vault.create(path, appliedTemplate); - yield plugin.app.workspace.activeLeaf.openFile(file, { - state: { mode: 'edit' }, - }); - item.created = true; - const items = plugin.settings.items; - yield plugin.writeFeedContent(() => { - return items; - }); - new obsidian.Notice("Created note from article"); - }); + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } } -function pasteToNote(plugin, item) { - return __awaiter(this, void 0, void 0, function* () { - const file = plugin.app.workspace.getActiveFile(); - if (file === null) { - new obsidian.Notice("no file active"); - return; - } - const view = plugin.app.workspace.getActiveViewOfType(obsidian.MarkdownView); - if (view) { - const appliedTemplate = applyTemplate(item, plugin.settings.pasteTemplate, plugin.settings); - const editor = view.editor; - editor.replaceRange(appliedTemplate, editor.getCursor()); - item.created = true; - const items = plugin.settings.items; - yield plugin.writeFeedContent(() => { - return items; - }); - new obsidian.Notice("inserted article into note"); - } - }); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; } -function applyTemplate(item, template, settings, filename) { - const content = obsidian.htmlToMarkdown(item.content); - let result = replaceAll(template, "{{title}}", item.title); - result = replaceAll(result, "{{link}}", item.link); - result = replaceAll(result, "{{author}}", item.creator); - result = replaceAll(result, "{{content}}", content); - result = replaceAll(result, "{{published}}", window.moment(item.pubDate).format(settings.dateFormat)); - result = replaceAll(result, "{{feed}}", item.feed); - result = replaceAll(result, "{{folder}}", item.folder); - result = replaceAll(result, "{{description}}", item.description); - result = result.replace(/({{tags:).*(}})/g, function (k) { - const value = k.split(":")[1]; - const separator = value.substring(0, value.indexOf("}")); - return item.tags.join(separator); - }); - result = result.replace(/({{#tags:).*(}})/g, function (k) { - const value = k.split(":")[1]; - const separator = value.substring(0, value.indexOf("}")); - return item.tags.map(i => '#' + i).join(separator); + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true }); - result = replaceAll(result, "{{tags}}", item.tags.join(", ")); - result = replaceAll(result, "{{#tags}}", item.tags.map(i => '#' + i).join(", ")); - if (filename) { - result = replaceAll(result, "{{filename}}", filename); - result = replaceAll(result, "{{created}}", window.moment().format(settings.dateFormat)); - } - return result; + } else { + object[key] = value; + } } -function openInBrowser(item) { - if (typeof item.link === "string") { - window.open(item.link, '_blank'); - } + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); } -//taken from: https://stackoverflow.com/a/1144788/5589264 -function escapeRegExp(string) { - return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; } -function replaceAll(str, find, replace) { - return str.replace(new RegExp(escapeRegExp(find), 'g'), replace); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); } -class TagModal extends BaseModal { - constructor(plugin, tags) { - super(plugin.app); - this.plugin = plugin; - this.tags = tags; +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); } - display() { - const { contentEl } = this; - contentEl.empty(); - contentEl.createEl("h1", { text: "Edit Tags" }); - const tagDiv = contentEl.createDiv("tags"); - for (const tag in this.tags) { - const setting = new obsidian.Setting(tagDiv); - setting.setName(this.tags[tag]); - setting.addExtraButton((b) => { - b - .setIcon("trash") - .setTooltip("Delete") - .onClick(() => { - this.tags = this.tags.filter(e => e !== this.tags[tag]); - console.log("new tags " + this.tags); - this.display(); - }); - }); - } - const buttonEl = contentEl.createSpan("actionButtons"); - const buttons = new obsidian.Setting(buttonEl).addButton((btn) => btn.setButtonText("new").onClick(() => __awaiter(this, void 0, void 0, function* () { - const input = yield new TextInputPrompt(this.app, "Tag", "new tag name", "", "tag name"); - let textInput; - input.openAndGetValue((value => { - textInput = value; - if (!value.getValue().match(TAG_REGEX) || value.getValue().match(NUMBER_REGEX) || value.getValue().contains(" ") || value.getValue().contains('#')) { - input.setValidationError(textInput, "This is not a valid tag"); - return; - } - this.tags.push(value.getValue()); - this.display(); - input.close(); - })); - }))); - buttons.addExtraButton((btn) => btn.setTooltip("Save").setIcon("checkmark").onClick(() => __awaiter(this, void 0, void 0, function* () { - this.close(); - }))); + } + return result; +} + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); } - onClose() { - const { contentEl } = this; - contentEl.empty(); + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); } - onOpen() { - return __awaiter(this, void 0, void 0, function* () { - yield this.display(); - }); + }, keysIn); +} + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); } -class Action { - constructor(name, icon, processor) { - this.name = name; - this.icon = icon; - this.processor = processor; - } +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); } -Action.CREATE_NOTE = new Action("create new note", "create-new", (plugin, item) => { - return createNewNote(plugin, item); -}); -Action.PASTE = new Action("paste to current note", "paste", (plugin, item) => { - return pasteToNote(plugin, item); -}); -Action.COPY = new Action("copy to clipboard", "feather-clipboard", ((_, item) => { - return copy(obsidian.htmlToMarkdown(item.content)); -})); -Action.OPEN = new Action("open in browser", "open-elsewhere-glyph", ((_, item) => { - openInBrowser(item); - return Promise.resolve(); -})); -Action.TAGS = new Action("edit tags", "tag-glyph", (((plugin, item) => { - const modal = new TagModal(plugin, item.tags); - modal.onClose = () => __awaiter(void 0, void 0, void 0, function* () { - item.tags = modal.tags; - const items = plugin.settings.items; - yield plugin.writeFeedContent(() => { - return items; - }); - }); - modal.open(); - return Promise.resolve(); -}))); -Action.actions = Array.of(Action.TAGS, Action.CREATE_NOTE, Action.PASTE, Action.COPY, Action.OPEN); -class ItemModal extends obsidian.Modal { - constructor(plugin, item) { - super(plugin.app); - this.plugin = plugin; - this.item = item; - item.read = true; - const items = this.plugin.settings.items; - this.plugin.writeFeedContent(() => { - return items; - }); - } - display() { - const { contentEl } = this; - contentEl.empty(); - const topButtons = contentEl.createSpan('topButtons'); - const title = contentEl.createEl('h1', 'rss-title'); - title.setText(this.item.title); - const subtitle = contentEl.createEl("h3", "rss-subtitle"); - if (this.item.creator) { - subtitle.appendText(this.item.creator); - } - if (this.item.pubDate) { - subtitle.appendText(" - " + window.moment(this.item.pubDate).format(this.plugin.settings.dateFormat)); - } - const tagEl = contentEl.createSpan("tags"); - this.item.tags.forEach((tag) => { - const tagA = tagEl.createEl("a"); - tagA.setText(tag); - tagA.addClass("tag", "rss-tag"); - }); - const readButton = new obsidian.ButtonComponent(topButtons) - .setIcon(this.item.read ? 'feather-eye-off' : 'feather-eye') - .setTooltip(this.item.read ? 'Mark as unread' : 'mark as read') - .onClick(() => __awaiter(this, void 0, void 0, function* () { - if (this.item.read) { - readButton.setIcon('feather-eye'); - this.item.read = false; - new obsidian.Notice("marked item as unread"); - } - else { - this.item.read = true; - readButton.setIcon('feather-eye-off'); - new obsidian.Notice("marked item as read"); - } - const items = this.plugin.settings.items; - yield this.plugin.writeFeedContent(() => { - return items; - }); - })); - const favoriteButton = new obsidian.ButtonComponent(topButtons) - .setIcon(this.item.favorite ? 'star-glyph' : 'star') - .setTooltip(this.item.favorite ? 'remove from favorites' : 'mark as favorite') - .onClick(() => __awaiter(this, void 0, void 0, function* () { - if (this.item.favorite) { - favoriteButton.setIcon('star'); - this.item.favorite = false; - new obsidian.Notice("removed item from favorites"); - } - else { - favoriteButton.setIcon('star-glyph'); - this.item.favorite = true; - new obsidian.Notice("added item to favorites"); - } - const items = this.plugin.settings.items; - yield this.plugin.writeFeedContent(() => { - return items; - }); - })); - Action.actions.forEach((action) => { - new obsidian.ButtonComponent(topButtons) - .setIcon(action.icon) - .setTooltip(action.name) - .onClick(() => __awaiter(this, void 0, void 0, function* () { - yield action.processor(this.plugin, this.item); - })); - }); - const content = contentEl.createDiv('rss-content'); - content.addClass("scrollable-content"); - if (this.item.content) { - content.append(sanitizeHTMLToDom(this.item.content)); - } - } - onClose() { - const { contentEl } = this; - contentEl.empty(); +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; } - onOpen() { - return __awaiter(this, void 0, void 0, function* () { - yield this.display(); - }); + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); } + } + return object; } -/* src/view/HtmlTooltip.svelte generated by Svelte v3.44.2 */ - -function create_if_block$3(ctx) { - let span; - let html_action; - let mounted; - let dispose; +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; - return { - c() { - span = element("span"); - attr(span, "class", "tooltiptext"); - }, - m(target, anchor) { - insert(target, span, anchor); + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; - if (!mounted) { - dispose = action_destroyer(html_action = /*html*/ ctx[1].call(null, span, /*content*/ ctx[0])); - mounted = true; - } - }, - p(ctx, dirty) { - if (html_action && is_function(html_action.update) && dirty & /*content*/ 1) html_action.update.call(null, /*content*/ ctx[0]); - }, - d(detaching) { - if (detaching) detach(span); - mounted = false; - dispose(); - } - }; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); } -function create_fragment$3(ctx) { - let if_block_anchor; - let if_block = /*content*/ ctx[0].length > 0 && create_if_block$3(ctx); +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; - return { - c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx, [dirty]) { - if (/*content*/ ctx[0].length > 0) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block$3(ctx); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - i: noop, - o: noop, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; } -function instance$3($$self, $$props, $$invalidate) { - let { content = "" } = $$props; +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} - const html = (node, content) => { - node.append(sanitizeHTMLToDom(content)); - }; +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; - $$self.$$set = $$props => { - if ('content' in $$props) $$invalidate(0, content = $$props.content); - }; + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} - return [content, html]; + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; } -class HtmlTooltip extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$3, create_fragment$3, safe_not_equal, { content: 0 }); - } +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; } -/* src/view/ItemView.svelte generated by Svelte v3.44.2 */ +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; -function get_each_context$2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[6] = list[i]; - return child_ctx; + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); } -// (46:0) {#if item} -function create_if_block$2(ctx) { - let div1; - let div0; - let t0; - let t1; - let a; - let t2_value = /*item*/ ctx[1].title + ""; - let t2; - let t3; - let span; - let div0_class_value; - let t4; - let current; - let mounted; - let dispose; - let if_block0 = /*item*/ ctx[1].favorite && create_if_block_4$1(); - let if_block1 = /*item*/ ctx[1].created && create_if_block_3$1(); - let each_value = /*item*/ ctx[1].tags; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); - } +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} - let if_block2 = /*hover*/ ctx[2] && create_if_block_1$2(ctx); +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} - return { - c() { - div1 = element("div"); - div0 = element("div"); - if (if_block0) if_block0.c(); - t0 = space(); - if (if_block1) if_block1.c(); - t1 = space(); - a = element("a"); - t2 = text(t2_value); - t3 = space(); - span = element("span"); +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - t4 = space(); - if (if_block2) if_block2.c(); - attr(div0, "class", div0_class_value = "rss-feed-item " + (/*item*/ ctx[1].read ? 'rss-read' : 'rss-not-read')); - attr(div1, "class", "is-clickable rss-tooltip"); - set_style(div1, "margin-left", "20px"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - if (if_block0) if_block0.m(div0, null); - append(div0, t0); - if (if_block1) if_block1.m(div0, null); - append(div0, t1); - append(div0, a); - append(a, t2); - append(div0, t3); - append(div0, span); + return value === proto; +} - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(span, null); - } +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} - append(div1, t4); - if (if_block2) if_block2.m(div1, null); - current = true; +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} - if (!mounted) { - dispose = [ - listen(a, "click", /*click_handler*/ ctx[5]), - listen(a, "contextmenu", /*openMenu*/ ctx[4]), - listen(a, "mouseover", /*toggleHover*/ ctx[3]), - listen(a, "mouseleave", /*toggleHover*/ ctx[3]) - ]; +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); - mounted = true; - } - }, - p(ctx, dirty) { - if (/*item*/ ctx[1].favorite) { - if (if_block0) { - if (dirty & /*item*/ 2) { - transition_in(if_block0, 1); - } - } else { - if_block0 = create_if_block_4$1(); - if_block0.c(); - transition_in(if_block0, 1); - if_block0.m(div0, t0); - } - } else if (if_block0) { - group_outros(); + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} - transition_out(if_block0, 1, 1, () => { - if_block0 = null; - }); +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } - check_outros(); - } + if (key == '__proto__') { + return; + } - if (/*item*/ ctx[1].created) { - if (if_block1) { - if (dirty & /*item*/ 2) { - transition_in(if_block1, 1); - } - } else { - if_block1 = create_if_block_3$1(); - if_block1.c(); - transition_in(if_block1, 1); - if_block1.m(div0, t1); - } - } else if (if_block1) { - group_outros(); + return object[key]; +} - transition_out(if_block1, 1, 1, () => { - if_block1 = null; - }); +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); - check_outros(); - } +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} - if ((!current || dirty & /*item*/ 2) && t2_value !== (t2_value = /*item*/ ctx[1].title + "")) set_data(t2, t2_value); +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} - if (dirty & /*item*/ 2) { - each_value = /*item*/ ctx[1].tags; - let i; +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$2(ctx, each_value, i); +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block$2(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(span, null); - } - } +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} - each_blocks.length = each_value.length; - } +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} - if (!current || dirty & /*item*/ 2 && div0_class_value !== (div0_class_value = "rss-feed-item " + (/*item*/ ctx[1].read ? 'rss-read' : 'rss-not-read'))) { - attr(div0, "class", div0_class_value); - } +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; - if (/*hover*/ ctx[2]) { - if (if_block2) { - if_block2.p(ctx, dirty); +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} - if (dirty & /*hover*/ 4) { - transition_in(if_block2, 1); - } - } else { - if_block2 = create_if_block_1$2(ctx); - if_block2.c(); - transition_in(if_block2, 1); - if_block2.m(div1, null); - } - } else if (if_block2) { - group_outros(); +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} - transition_out(if_block2, 1, 1, () => { - if_block2 = null; - }); +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block0); - transition_in(if_block1); - transition_in(if_block2); - current = true; - }, - o(local) { - transition_out(if_block0); - transition_out(if_block1); - transition_out(if_block2); - current = false; - }, - d(detaching) { - if (detaching) detach(div1); - if (if_block0) if_block0.d(); - if (if_block1) if_block1.d(); - destroy_each(each_blocks, detaching); - if (if_block2) if_block2.d(); - mounted = false; - run_all(dispose); - } - }; +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; } -// (49:12) {#if (item.favorite)} -function create_if_block_4$1(ctx) { - let iconcomponent; - let current; - iconcomponent = new IconComponent({ props: { iconName: "star" } }); +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - return { - c() { - create_component(iconcomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(iconcomponent, target, anchor); - current = true; - }, - i(local) { - if (current) return; - transition_in(iconcomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconcomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconcomponent, detaching); - } - }; +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); } -// (52:12) {#if (item.created)} -function create_if_block_3$1(ctx) { - let iconcomponent; - let current; - iconcomponent = new IconComponent({ props: { iconName: "document" } }); +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} - return { - c() { - create_component(iconcomponent.$$.fragment); - }, - m(target, anchor) { - mount_component(iconcomponent, target, anchor); - current = true; - }, - i(local) { - if (current) return; - transition_in(iconcomponent.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconcomponent.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconcomponent, detaching); - } - }; +/** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ +var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); +}); + +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; } -// (66:12) {#each item.tags as tag} -function create_each_block$2(ctx) { - let t0; - let a; - let t1_value = /*tag*/ ctx[6] + ""; - let t1; - - return { - c() { - t0 = text(" "); - a = element("a"); - t1 = text(t1_value); - attr(a, "class", "tag rss-tag"); - }, - m(target, anchor) { - insert(target, t0, anchor); - insert(target, a, anchor); - append(a, t1); - }, - p(ctx, dirty) { - if (dirty & /*item*/ 2 && t1_value !== (t1_value = /*tag*/ ctx[6] + "")) set_data(t1, t1_value); - }, - d(detaching) { - if (detaching) detach(t0); - if (detaching) detach(a); - } - }; +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; } -// (71:8) {#if (hover)} -function create_if_block_1$2(ctx) { - let if_block_anchor; - let current; - let if_block = /*item*/ ctx[1].description !== /*item*/ ctx[1].content && create_if_block_2$2(ctx); +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} - return { - c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx, dirty) { - if (/*item*/ ctx[1].description !== /*item*/ ctx[1].content) { - if (if_block) { - if_block.p(ctx, dirty); +module.exports = mergeWith; +}); - if (dirty & /*item*/ 2) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_2$2(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ - transition_out(if_block, 1, 1, () => { - if_block = null; - }); +var lodash_keyby = createCommonjsModule(function (module, exports) { +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; -} +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; -// (72:12) {#if (item.description !== item.content)} -function create_if_block_2$2(ctx) { - let htmltooltip; - let current; +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; - htmltooltip = new HtmlTooltip({ - props: { content: /*item*/ ctx[1].description } - }); +/** Used to compose bitmasks for comparison styles. */ +var UNORDERED_COMPARE_FLAG = 1, + PARTIAL_COMPARE_FLAG = 2; - return { - c() { - create_component(htmltooltip.$$.fragment); - }, - m(target, anchor) { - mount_component(htmltooltip, target, anchor); - current = true; - }, - p(ctx, dirty) { - const htmltooltip_changes = {}; - if (dirty & /*item*/ 2) htmltooltip_changes.content = /*item*/ ctx[1].description; - htmltooltip.$set(htmltooltip_changes); - }, - i(local) { - if (current) return; - transition_in(htmltooltip.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(htmltooltip.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(htmltooltip, detaching); - } - }; -} +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; -function create_fragment$2(ctx) { - let if_block_anchor; - let current; - let if_block = /*item*/ ctx[1] && create_if_block$2(ctx); +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; - return { - c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx, [dirty]) { - if (/*item*/ ctx[1]) { - if (if_block) { - if_block.p(ctx, dirty); +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; - if (dirty & /*item*/ 2) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block$2(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - transition_out(if_block, 1, 1, () => { - if_block = null; - }); +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; -} +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; -function instance$2($$self, $$props, $$invalidate) { - let { plugin = null } = $$props; - let { item = null } = $$props; - let hover = false; +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; - function toggleHover() { - $$invalidate(2, hover = !hover); - } +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; - function openMenu(e) { - return __awaiter(this, void 0, void 0, function* () { - if (e.ctrlKey && e.altKey) { - openInBrowser(item); - return; - } +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; - if (e.ctrlKey) { - yield createNewNote(plugin, item); - return; - } +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; - if (e.altKey) { - yield pasteToNote(plugin, item); - return; - } +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - const menu = new obsidian.Menu(plugin.app); +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); - Action.actions.forEach(action => { - menu.addItem(menuItem => { - menuItem.setIcon(action.icon).setTitle(action.name).onClick(() => __awaiter(this, void 0, void 0, function* () { - yield action.processor(plugin, item); - })); - }); - }); +/** Detect free variable `exports`. */ +var freeExports = exports && !exports.nodeType && exports; - menu.showAtPosition({ x: e.x, y: e.y }); - }); - } +/** Detect free variable `module`. */ +var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module; - const click_handler = () => { - new ItemModal(plugin, item).open(); - }; +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; - $$self.$$set = $$props => { - if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin); - if ('item' in $$props) $$invalidate(1, item = $$props.item); - }; +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; - return [plugin, item, hover, toggleHover, openMenu, click_handler]; -} +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + return freeProcess && freeProcess.binding('util'); + } catch (e) {} +}()); -class ItemView extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$2, create_fragment$2, safe_not_equal, { plugin: 0, item: 1 }); - } -} +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; -/* src/view/FeedView.svelte generated by Svelte v3.44.2 */ +/** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array ? array.length : 0; -function get_each_context$1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[5] = list[i]; - return child_ctx; + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; } -// (16:0) {:else} -function create_else_block(ctx) { - let div3; - let div1; - let div0; - let iconcomponent; - let t0; - let span; - let t1_value = /*feed*/ ctx[0].name + ""; - let t1; - let t2; - let div1_class_value; - let t3; - let div2; - let show_if = !/*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name); - let current; - let mounted; - let dispose; - iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); - let if_block0 = /*feed*/ ctx[0].image && create_if_block_2$1(ctx); - let if_block1 = show_if && create_if_block_1$1(ctx); - - return { - c() { - div3 = element("div"); - div1 = element("div"); - div0 = element("div"); - create_component(iconcomponent.$$.fragment); - t0 = space(); - span = element("span"); - t1 = text(t1_value); - t2 = space(); - if (if_block0) if_block0.c(); - t3 = space(); - div2 = element("div"); - if (if_block1) if_block1.c(); - attr(div0, "class", "rss-feed-title"); - set_style(div0, "overflow", "hidden"); +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array ? array.length : 0; - attr(div1, "class", div1_class_value = /*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name) - ? 'is-collapsed' - : ''); + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} - attr(div2, "class", "rss-feed-items"); - attr(div3, "class", "rss-feed"); - set_style(div3, "margin-left", "20px"); - }, - m(target, anchor) { - insert(target, div3, anchor); - append(div3, div1); - append(div1, div0); - mount_component(iconcomponent, div0, null); - append(div0, t0); - append(div0, span); - append(span, t1); - append(span, t2); - if (if_block0) if_block0.m(span, null); - append(div3, t3); - append(div3, div2); - if (if_block1) if_block1.m(div2, null); - current = true; +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} - if (!mounted) { - dispose = listen(div1, "click", /*click_handler*/ ctx[4]); - mounted = true; - } - }, - p(ctx, dirty) { - if ((!current || dirty & /*feed*/ 1) && t1_value !== (t1_value = /*feed*/ ctx[0].name + "")) set_data(t1, t1_value); +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); - if (/*feed*/ ctx[0].image) { - if (if_block0) { - if_block0.p(ctx, dirty); - } else { - if_block0 = create_if_block_2$1(ctx); - if_block0.c(); - if_block0.m(span, null); - } - } else if (if_block0) { - if_block0.d(1); - if_block0 = null; - } + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} - if (!current || dirty & /*foldedState, feed*/ 5 && div1_class_value !== (div1_class_value = /*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name) - ? 'is-collapsed' - : '')) { - attr(div1, "class", div1_class_value); - } +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} - if (dirty & /*foldedState, feed*/ 5) show_if = !/*foldedState*/ ctx[2].get(/*feed*/ ctx[0].name); +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} - if (show_if) { - if (if_block1) { - if_block1.p(ctx, dirty); +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} - if (dirty & /*foldedState, feed*/ 5) { - transition_in(if_block1, 1); - } - } else { - if_block1 = create_if_block_1$1(ctx); - if_block1.c(); - transition_in(if_block1, 1); - if_block1.m(div2, null); - } - } else if (if_block1) { - group_outros(); +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); - transition_out(if_block1, 1, 1, () => { - if_block1 = null; - }); + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(iconcomponent.$$.fragment, local); - transition_in(if_block1); - current = true; - }, - o(local) { - transition_out(iconcomponent.$$.fragment, local); - transition_out(if_block1); - current = false; - }, - d(detaching) { - if (detaching) detach(div3); - destroy_component(iconcomponent); - if (if_block0) if_block0.d(); - if (if_block1) if_block1.d(); - mounted = false; - dispose(); - } - }; +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; } -// (14:0) {#if !feed} -function create_if_block$1(ctx) { - let p; +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); - return { - c() { - p = element("p"); - p.textContent = "...loading"; - }, - m(target, anchor) { - insert(target, p, anchor); - }, - p: noop, - i: noop, - o: noop, - d(detaching) { - if (detaching) detach(p); - } - }; + set.forEach(function(value) { + result[++index] = value; + }); + return result; } -// (24:20) {#if (feed.image)} -function create_if_block_2$1(ctx) { - let img; - let img_src_value; - let img_alt_value; +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; - return { - c() { - img = element("img"); - if (!src_url_equal(img.src, img_src_value = /*feed*/ ctx[0].image)) attr(img, "src", img_src_value); - attr(img, "alt", img_alt_value = /*feed*/ ctx[0].title); - set_style(img, "height", "1em"); - }, - m(target, anchor) { - insert(target, img, anchor); - }, - p(ctx, dirty) { - if (dirty & /*feed*/ 1 && !src_url_equal(img.src, img_src_value = /*feed*/ ctx[0].image)) { - attr(img, "src", img_src_value); - } +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; - if (dirty & /*feed*/ 1 && img_alt_value !== (img_alt_value = /*feed*/ ctx[0].title)) { - attr(img, "alt", img_alt_value); - } - }, - d(detaching) { - if (detaching) detach(img); - } - }; -} +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); -// (32:12) {#if !foldedState.get(feed.name)} -function create_if_block_1$1(ctx) { - let each_1_anchor; - let current; - let each_value = /*feed*/ ctx[0].items; - let each_blocks = []; +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); - } +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); - } +/** Built-in value references. */ +var Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx, dirty) { - if (dirty & /*feed, plugin*/ 3) { - each_value = /*feed*/ ctx[0].items; - let i; +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$1(ctx, each_value, i); +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block$1(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} - group_outros(); +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} - check_outros(); - } - }, - i(local) { - if (current) return; +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; - current = false; - }, - d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) detach(each_1_anchor); - } - }; +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } } -// (33:16) {#each feed.items as item} -function create_each_block$1(ctx) { - let itemview; - let current; +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} - itemview = new ItemView({ - props: { - item: /*item*/ ctx[5], - plugin: /*plugin*/ ctx[1] - } - }); +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - return { - c() { - create_component(itemview.$$.fragment); - }, - m(target, anchor) { - mount_component(itemview, target, anchor); - current = true; - }, - p(ctx, dirty) { - const itemview_changes = {}; - if (dirty & /*feed*/ 1) itemview_changes.item = /*item*/ ctx[5]; - if (dirty & /*plugin*/ 2) itemview_changes.plugin = /*plugin*/ ctx[1]; - itemview.$set(itemview_changes); - }, - i(local) { - if (current) return; - transition_in(itemview.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(itemview.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(itemview, detaching); - } - }; + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; } -function create_fragment$1(ctx) { - let current_block_type_index; - let if_block; - let if_block_anchor; - let current; - const if_block_creators = [create_if_block$1, create_else_block]; - const if_blocks = []; - - function select_block_type(ctx, dirty) { - if (!/*feed*/ ctx[0]) return 0; - return 1; - } +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); - current_block_type_index = select_block_type(ctx); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return index < 0 ? undefined : data[index][1]; +} - return { - c() { - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if_blocks[current_block_type_index].m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx, [dirty]) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx); +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx, dirty); - } else { - group_outros(); +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} - check_outros(); - if_block = if_blocks[current_block_type_index]; +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - if_block.c(); - } else { - if_block.p(ctx, dirty); - } +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if_blocks[current_block_type_index].d(detaching); - if (detaching) detach(if_block_anchor); - } - }; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } } -function instance$1($$self, $$props, $$invalidate) { - let { feed = null } = $$props; - let { plugin } = $$props; - let foldedState = new Map(); - - function toggleFold(feed) { - foldedState.set(feed, !foldedState.get(feed)); - $$invalidate(2, foldedState); - } +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} - const click_handler = () => toggleFold(feed.name); +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} - $$self.$$set = $$props => { - if ('feed' in $$props) $$invalidate(0, feed = $$props.feed); - if ('plugin' in $$props) $$invalidate(1, plugin = $$props.plugin); - }; +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} - return [feed, plugin, foldedState, toggleFold, click_handler]; +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); } -class FeedView extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$1, create_fragment$1, safe_not_equal, { feed: 0, plugin: 1 }); - } +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; } -/* src/view/FolderView.svelte generated by Svelte v3.44.2 */ +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; -function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[9] = list[i]; - return child_ctx; +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values ? values.length : 0; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } } -function get_each_context_1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[12] = list[i]; - return child_ctx; +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; } -function get_each_context_2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[15] = list[i][0]; - child_ctx[9] = list[i][1]; - return child_ctx; +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); } -function get_each_context_3(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[18] = list[i]; - return child_ctx; +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + this.__data__ = new ListCache(entries); } -// (14:0) {#if $filteredItemsStore} -function create_if_block_4(ctx) { - let div1; - let div0; - let iconcomponent; - let t0; - let span; - let div0_class_value; - let t2; - let show_if = !/*foldedState*/ ctx[1].get('rss-filters'); - let current; - let mounted; - let dispose; - iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); - let if_block = show_if && create_if_block_5(ctx); +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; +} - return { - c() { - div1 = element("div"); - div0 = element("div"); - create_component(iconcomponent.$$.fragment); - t0 = space(); - span = element("span"); - span.textContent = "Filtered Folders"; - t2 = space(); - if (if_block) if_block.c(); +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + return this.__data__['delete'](key); +} - attr(div0, "class", div0_class_value = /*foldedState*/ ctx[1].get('rss-filters') - ? 'is-collapsed' - : ''); +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} - attr(div1, "class", "rss-filtered-folders"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - mount_component(iconcomponent, div0, null); - append(div0, t0); - append(div0, span); - append(div1, t2); - if (if_block) if_block.m(div1, null); - current = true; +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} - if (!mounted) { - dispose = listen(div0, "click", /*click_handler*/ ctx[5]); - mounted = true; - } - }, - p(ctx, dirty) { - if (!current || dirty & /*foldedState*/ 2 && div0_class_value !== (div0_class_value = /*foldedState*/ ctx[1].get('rss-filters') - ? 'is-collapsed' - : '')) { - attr(div0, "class", div0_class_value); - } +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; + } + cache = this.__data__ = new MapCache(pairs); + } + cache.set(key, value); + return this; +} - if (dirty & /*foldedState*/ 2) show_if = !/*foldedState*/ ctx[1].get('rss-filters'); +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; - if (show_if) { - if (if_block) { - if_block.p(ctx, dirty); +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; - if (dirty & /*foldedState*/ 2) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_5(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(div1, null); - } - } else if (if_block) { - group_outros(); + var length = result.length, + skipIndexes = !!length; - transition_out(if_block, 1, 1, () => { - if_block = null; - }); + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(iconcomponent.$$.fragment, local); - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(iconcomponent.$$.fragment, local); - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) detach(div1); - destroy_component(iconcomponent); - if (if_block) if_block.d(); - mounted = false; - dispose(); - } - }; +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; } -// (22:8) {#if (!foldedState.get('rss-filters'))} -function create_if_block_5(ctx) { - let each_1_anchor; - let current; - let each_value_2 = Object.entries(/*$filteredItemsStore*/ ctx[2]); - let each_blocks = []; +/** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; +} - for (let i = 0; i < each_value_2.length; i += 1) { - each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); - } +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); - } +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx, dirty) { - if (dirty & /*Object, $filteredItemsStore, plugin, foldedState, toggleFold*/ 23) { - each_value_2 = Object.entries(/*$filteredItemsStore*/ ctx[2]); - let i; + var index = 0, + length = path.length; - for (i = 0; i < each_value_2.length; i += 1) { - const child_ctx = get_each_context_2(ctx, each_value_2, i); + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block_2(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } +/** + * The base implementation of `getTag`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + return objectToString.call(value); +} - group_outros(); +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} - for (i = each_value_2.length; i < each_blocks.length; i += 1) { - out(i); - } +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @param {boolean} [bitmask] The bitmask of comparison flags. + * The bitmask may be composed of the following flags: + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, customizer, bitmask, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); +} - check_outros(); - } - }, - i(local) { - if (current) return; +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparisons. + * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; - for (let i = 0; i < each_value_2.length; i += 1) { - transition_in(each_blocks[i]); - } + if (!objIsArr) { + objTag = getTag(object); + objTag = objTag == argsTag ? objectTag : objTag; + } + if (!othIsArr) { + othTag = getTag(other); + othTag = othTag == argsTag ? objectTag : othTag; + } + var objIsObj = objTag == objectTag && !isHostObject(object), + othIsObj = othTag == objectTag && !isHostObject(other), + isSameTag = objTag == othTag; - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) + : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); + } + if (!(bitmask & PARTIAL_COMPARE_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; - current = false; - }, - d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) detach(each_1_anchor); - } - }; + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, equalFunc, customizer, bitmask, stack); } -// (30:16) {#if (!foldedState.get('rss-filter' + folder.filter.name))} -function create_if_block_6(ctx) { - let div; - let t; - let current; - let each_value_3 = /*folder*/ ctx[9].items.items; - let each_blocks = []; +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; - for (let i = 0; i < each_value_3.length; i += 1) { - each_blocks[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i)); - } + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) + : result + )) { + return false; + } + } + } + return true; +} - return { - c() { - div = element("div"); +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; +} + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} - t = space(); - set_style(div, "margin-left", "20px"); - }, - m(target, anchor) { - insert(target, div, anchor); +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(div, null); - } +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} - append(div, t); - current = true; - }, - p(ctx, dirty) { - if (dirty & /*Object, $filteredItemsStore, plugin*/ 5) { - each_value_3 = /*folder*/ ctx[9].items.items; - let i; +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); + }; +} - for (i = 0; i < each_value_3.length; i += 1) { - const child_ctx = get_each_context_3(ctx, each_value_3, i); +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block_3(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(div, t); - } - } +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - group_outros(); +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} - for (i = each_value_3.length; i < each_blocks.length; i += 1) { - out(i); - } +/** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ +function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; - check_outros(); - } - }, - i(local) { - if (current) return; + return func(collection, setter, baseIteratee(iteratee), accumulator); + }; +} - for (let i = 0; i < each_value_3.length; i += 1) { - transition_in(each_blocks[i]); - } +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; - current = false; - }, - d(detaching) { - if (detaching) detach(div); - destroy_each(each_blocks, detaching); - } - }; + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; } -// (32:24) {#each folder.items.items as item} -function create_each_block_3(ctx) { - let itemview; - let current; +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + arrLength = array.length, + othLength = other.length; - itemview = new ItemView({ - props: { - item: /*item*/ ctx[18], - plugin: /*plugin*/ ctx[0] - } - }); + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; - return { - c() { - create_component(itemview.$$.fragment); - }, - m(target, anchor) { - mount_component(itemview, target, anchor); - current = true; - }, - p(ctx, dirty) { - const itemview_changes = {}; - if (dirty & /*$filteredItemsStore*/ 4) itemview_changes.item = /*item*/ ctx[18]; - if (dirty & /*plugin*/ 1) itemview_changes.plugin = /*plugin*/ ctx[0]; - itemview.$set(itemview_changes); - }, - i(local) { - if (current) return; - transition_in(itemview.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(itemview.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(itemview, detaching); - } - }; + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!seen.has(othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + return seen.add(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, customizer, bitmask, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; } -// (23:12) {#each Object.entries($filteredItemsStore) as [key, folder]} -function create_each_block_2(ctx) { - let div; - let iconcomponent; - let t0; - let span; - let t1_value = /*folder*/ ctx[9].filter.name + ""; - let t1; - let div_class_value; - let t2; - let show_if = !/*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name); - let if_block_anchor; - let current; - let mounted; - let dispose; - iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; - function click_handler_1() { - return /*click_handler_1*/ ctx[6](/*folder*/ ctx[9]); - } + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; - let if_block = show_if && create_if_block_6(ctx); + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); - return { - c() { - div = element("div"); - create_component(iconcomponent.$$.fragment); - t0 = space(); - span = element("span"); - t1 = text(t1_value); - t2 = space(); - if (if_block) if_block.c(); - if_block_anchor = empty(); + case errorTag: + return object.name == other.name && object.message == other.message; - attr(div, "class", div_class_value = /*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name) - ? 'is-collapsed' - : ''); + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); - set_style(div, "margin-left", "20px"); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(iconcomponent, div, null); - append(div, t0); - append(div, span); - append(span, t1); - insert(target, t2, anchor); - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; + case mapTag: + var convert = mapToArray; - if (!mounted) { - dispose = listen(div, "click", click_handler_1); - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if ((!current || dirty & /*$filteredItemsStore*/ 4) && t1_value !== (t1_value = /*folder*/ ctx[9].filter.name + "")) set_data(t1, t1_value); + case setTag: + var isPartial = bitmask & PARTIAL_COMPARE_FLAG; + convert || (convert = setToArray); - if (!current || dirty & /*foldedState, $filteredItemsStore*/ 6 && div_class_value !== (div_class_value = /*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name) - ? 'is-collapsed' - : '')) { - attr(div, "class", div_class_value); - } + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= UNORDERED_COMPARE_FLAG; - if (dirty & /*foldedState, $filteredItemsStore*/ 6) show_if = !/*foldedState*/ ctx[1].get('rss-filter' + /*folder*/ ctx[9].filter.name); + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); + stack['delete'](object); + return result; - if (show_if) { - if (if_block) { - if_block.p(ctx, dirty); + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} - if (dirty & /*foldedState, $filteredItemsStore*/ 6) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_6(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} customizer The function to customize comparisons. + * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` + * for more details. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { + var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; - transition_out(if_block, 1, 1, () => { - if_block = null; - }); + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(iconcomponent.$$.fragment, local); - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(iconcomponent.$$.fragment, local); - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) detach(div); - destroy_component(iconcomponent); - if (detaching) detach(t2); - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - mounted = false; - dispose(); - } - }; -} + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; -// (43:0) {#if !$sortedFeedsStore} -function create_if_block_3(ctx) { - let h1; + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} - return { - c() { - h1 = element("h1"); - h1.textContent = "No feeds configured"; - }, - m(target, anchor) { - insert(target, h1, anchor); - }, - d(detaching) { - if (detaching) detach(h1); - } - }; +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; } -// (47:0) {#if $sortedFeedsStore} -function create_if_block(ctx) { - let div1; - let div0; - let iconcomponent; - let t0; - let span; - let div0_class_value; - let t2; - let show_if = !/*foldedState*/ ctx[1].get('rss-folders'); - let current; - let mounted; - let dispose; - iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); - let if_block = show_if && create_if_block_1(ctx); +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; - return { - c() { - div1 = element("div"); - div0 = element("div"); - create_component(iconcomponent.$$.fragment); - t0 = space(); - span = element("span"); - span.textContent = "Folders"; - t2 = space(); - if (if_block) if_block.c(); + while (length--) { + var key = result[length], + value = object[key]; - attr(div0, "class", div0_class_value = /*foldedState*/ ctx[1].get('rss-folders') - ? 'is-collapsed' - : ''); + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} - attr(div1, "class", "rss-feeds-folders"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - mount_component(iconcomponent, div0, null); - append(div0, t0); - append(div0, span); - append(div1, t2); - if (if_block) if_block.m(div1, null); - current = true; +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} - if (!mounted) { - dispose = listen(div0, "click", /*click_handler_2*/ ctx[7]); - mounted = true; - } - }, - p(ctx, dirty) { - if (!current || dirty & /*foldedState*/ 2 && div0_class_value !== (div0_class_value = /*foldedState*/ ctx[1].get('rss-folders') - ? 'is-collapsed' - : '')) { - attr(div0, "class", div0_class_value); - } +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; - if (dirty & /*foldedState*/ 2) show_if = !/*foldedState*/ ctx[1].get('rss-folders'); +// Fallback for data views, maps, sets, and weak maps in IE 11, +// for data views in Edge < 14, and promises in Node.js. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; - if (show_if) { - if (if_block) { - if_block.p(ctx, dirty); + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} - if (dirty & /*foldedState*/ 2) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_1(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(div1, null); - } - } else if (if_block) { - group_outros(); +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = isKey(path, object) ? [path] : castPath(path); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); + var result, + index = -1, + length = path.length; - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(iconcomponent.$$.fragment, local); - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(iconcomponent.$$.fragment, local); - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) detach(div1); - destroy_component(iconcomponent); - if (if_block) if_block.d(); - mounted = false; - dispose(); - } - }; + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result) { + return result; + } + var length = object ? object.length : 0; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); } -// (55:8) {#if (!foldedState.get('rss-folders'))} -function create_if_block_1(ctx) { - let each_1_anchor; - let current; - let each_value = Object.keys(/*$sortedFeedsStore*/ ctx[3]); - let each_blocks = []; +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); - } +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); - } +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx, dirty) { - if (dirty & /*$sortedFeedsStore, Object, plugin, foldedState, toggleFold*/ 27) { - each_value = Object.keys(/*$sortedFeedsStore*/ ctx[3]); - let i; + return value === proto; +} - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context(ctx, each_value, i); +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} - group_outros(); +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + string = toString(string); - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); - check_outros(); - } - }, - i(local) { - if (current) return; +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] + * The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ +var keyBy = createAggregator(function(result, value, key) { + result[key] = value; +}); + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; - current = false; - }, - d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) detach(each_1_anchor); - } - }; +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); } -// (65:20) {#if (!foldedState.get(folder))} -function create_if_block_2(ctx) { - let each_1_anchor; - let current; - let each_value_1 = /*$sortedFeedsStore*/ ctx[3][/*folder*/ ctx[9]]; - let each_blocks = []; - - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); - } +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); - } +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} - insert(target, each_1_anchor, anchor); - current = true; - }, - p(ctx, dirty) { - if (dirty & /*$sortedFeedsStore, Object, plugin*/ 9) { - each_value_1 = /*$sortedFeedsStore*/ ctx[3][/*folder*/ ctx[9]]; - let i; +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_1(ctx, each_value_1, i); +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block_1(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} - group_outros(); +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} - for (i = each_value_1.length; i < each_blocks.length; i += 1) { - out(i); - } +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} - check_outros(); - } - }, - i(local) { - if (current) return; +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - for (let i = 0; i < each_value_1.length; i += 1) { - transition_in(each_blocks[i]); - } +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} - current = false; - }, - d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) detach(each_1_anchor); - } - }; +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } -// (66:24) {#each $sortedFeedsStore[folder] as feed} -function create_each_block_1(ctx) { - let feedview; - let current; - - feedview = new FeedView({ - props: { - feed: /*feed*/ ctx[12], - plugin: /*plugin*/ ctx[0] - } - }); +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} - return { - c() { - create_component(feedview.$$.fragment); - }, - m(target, anchor) { - mount_component(feedview, target, anchor); - current = true; - }, - p(ctx, dirty) { - const feedview_changes = {}; - if (dirty & /*$sortedFeedsStore*/ 8) feedview_changes.feed = /*feed*/ ctx[12]; - if (dirty & /*plugin*/ 1) feedview_changes.plugin = /*plugin*/ ctx[0]; - feedview.$set(feedview_changes); - }, - i(local) { - if (current) return; - transition_in(feedview.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(feedview.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(feedview, detaching); - } - }; +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); } -// (56:12) {#each Object.keys($sortedFeedsStore) as folder} -function create_each_block(ctx) { - let div1; - let div0; - let iconcomponent; - let t0; - let span; +module.exports = keyBy; +}); - let t1_value = (/*folder*/ ctx[9] !== "undefined" - ? /*folder*/ ctx[9] - : 'No Folder') + ""; +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; - let t1; - let div0_class_value; - let t2; - let show_if = !/*foldedState*/ ctx[1].get(/*folder*/ ctx[9]); - let t3; - let current; - let mounted; - let dispose; - iconcomponent = new IconComponent({ props: { iconName: "right-triangle" } }); +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; - function click_handler_3() { - return /*click_handler_3*/ ctx[8](/*folder*/ ctx[9]); - } +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; - let if_block = show_if && create_if_block_2(ctx); +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array ? array.length : 0, + result = Array(length); - return { - c() { - div1 = element("div"); - div0 = element("div"); - create_component(iconcomponent.$$.fragment); - t0 = space(); - span = element("span"); - t1 = text(t1_value); - t2 = space(); - if (if_block) if_block.c(); - t3 = space(); + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} - attr(div0, "class", div0_class_value = /*foldedState*/ ctx[1].get(/*folder*/ ctx[9]) - ? 'is-collapsed' - : ''); +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); - attr(div1, "class", "rss-folder"); - set_style(div1, "margin-left", "20px"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - mount_component(iconcomponent, div0, null); - append(div0, t0); - append(div0, span); - append(span, t1); - append(div1, t2); - if (if_block) if_block.m(div1, null); - append(div1, t3); - current = true; + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} - if (!mounted) { - dispose = listen(div0, "click", click_handler_3); - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; +/** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ +function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); +} - if ((!current || dirty & /*$sortedFeedsStore*/ 8) && t1_value !== (t1_value = (/*folder*/ ctx[9] !== "undefined" - ? /*folder*/ ctx[9] - : 'No Folder') + "")) set_data(t1, t1_value); +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} - if (!current || dirty & /*foldedState, $sortedFeedsStore*/ 10 && div0_class_value !== (div0_class_value = /*foldedState*/ ctx[1].get(/*folder*/ ctx[9]) - ? 'is-collapsed' - : '')) { - attr(div0, "class", div0_class_value); - } +/** Used for built-in method references. */ +var objectProto = Object.prototype; - if (dirty & /*foldedState, $sortedFeedsStore*/ 10) show_if = !/*foldedState*/ ctx[1].get(/*folder*/ ctx[9]); +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; - if (show_if) { - if (if_block) { - if_block.p(ctx, dirty); +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; - if (dirty & /*foldedState, $sortedFeedsStore*/ 10) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block_2(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(div1, t3); - } - } else if (if_block) { - group_outros(); +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; - transition_out(if_block, 1, 1, () => { - if_block = null; - }); + var length = result.length, + skipIndexes = !!length; - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(iconcomponent.$$.fragment, local); - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(iconcomponent.$$.fragment, local); - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) detach(div1); - destroy_component(iconcomponent); - if (if_block) if_block.d(); - mounted = false; - dispose(); - } - }; + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; } -function create_fragment(ctx) { - let t0; - let t1; - let if_block2_anchor; - let current; - let if_block0 = /*$filteredItemsStore*/ ctx[2] && create_if_block_4(ctx); - let if_block1 = !/*$sortedFeedsStore*/ ctx[3] && create_if_block_3(); - let if_block2 = /*$sortedFeedsStore*/ ctx[3] && create_if_block(ctx); - - return { - c() { - if (if_block0) if_block0.c(); - t0 = space(); - if (if_block1) if_block1.c(); - t1 = space(); - if (if_block2) if_block2.c(); - if_block2_anchor = empty(); - }, - m(target, anchor) { - if (if_block0) if_block0.m(target, anchor); - insert(target, t0, anchor); - if (if_block1) if_block1.m(target, anchor); - insert(target, t1, anchor); - if (if_block2) if_block2.m(target, anchor); - insert(target, if_block2_anchor, anchor); - current = true; - }, - p(ctx, [dirty]) { - if (/*$filteredItemsStore*/ ctx[2]) { - if (if_block0) { - if_block0.p(ctx, dirty); - - if (dirty & /*$filteredItemsStore*/ 4) { - transition_in(if_block0, 1); - } - } else { - if_block0 = create_if_block_4(ctx); - if_block0.c(); - transition_in(if_block0, 1); - if_block0.m(t0.parentNode, t0); - } - } else if (if_block0) { - group_outros(); +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} - transition_out(if_block0, 1, 1, () => { - if_block0 = null; - }); +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} - check_outros(); - } +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - if (!/*$sortedFeedsStore*/ ctx[3]) { - if (if_block1) ; else { - if_block1 = create_if_block_3(); - if_block1.c(); - if_block1.m(t1.parentNode, t1); - } - } else if (if_block1) { - if_block1.d(1); - if_block1 = null; - } + return value === proto; +} - if (/*$sortedFeedsStore*/ ctx[3]) { - if (if_block2) { - if_block2.p(ctx, dirty); +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} - if (dirty & /*$sortedFeedsStore*/ 8) { - transition_in(if_block2, 1); - } - } else { - if_block2 = create_if_block(ctx); - if_block2.c(); - transition_in(if_block2, 1); - if_block2.m(if_block2_anchor.parentNode, if_block2_anchor); - } - } else if (if_block2) { - group_outros(); +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; - transition_out(if_block2, 1, 1, () => { - if_block2 = null; - }); +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block0); - transition_in(if_block2); - current = true; - }, - o(local) { - transition_out(if_block0); - transition_out(if_block2); - current = false; - }, - d(detaching) { - if (if_block0) if_block0.d(detaching); - if (detaching) detach(t0); - if (if_block1) if_block1.d(detaching); - if (detaching) detach(t1); - if (if_block2) if_block2.d(detaching); - if (detaching) detach(if_block2_anchor); - } - }; +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); } -function instance($$self, $$props, $$invalidate) { - let $filteredItemsStore; - let $sortedFeedsStore; - component_subscribe($$self, filteredItemsStore, $$value => $$invalidate(2, $filteredItemsStore = $$value)); - component_subscribe($$self, sortedFeedsStore, $$value => $$invalidate(3, $sortedFeedsStore = $$value)); - let { plugin } = $$props; - let foldedState = new Map(); - - function toggleFold(folder) { - foldedState.set(folder, !foldedState.get(folder)); - $$invalidate(1, foldedState); - } +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} - const click_handler = () => toggleFold('rss-filters'); - const click_handler_1 = folder => toggleFold('rss-filter' + folder.filter.name); - const click_handler_2 = () => toggleFold('rss-folders'); - const click_handler_3 = folder => toggleFold(folder); +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} - $$self.$$set = $$props => { - if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin); - }; +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} - return [ - plugin, - foldedState, - $filteredItemsStore, - $sortedFeedsStore, - toggleFold, - click_handler, - click_handler_1, - click_handler_2, - click_handler_3 - ]; +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; } -class FolderView extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance, create_fragment, safe_not_equal, { plugin: 0 }); - } +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } -class ViewLoader extends obsidian.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.plugin = plugin; - } - getDisplayText() { - return "RSS Feeds"; - } - getViewType() { - return VIEW_ID; - } - getIcon() { - return "feather-rss"; - } - onOpen() { - return __awaiter(this, void 0, void 0, function* () { - this.feed = new FolderView({ - target: this.contentEl, - props: { - plugin: this.plugin - }, - }); - }); - } - onClose() { - if (this.feed) { - this.feed.$destroy(); - } - return Promise.resolve(); - } +/** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ +function values(object) { + return object ? baseValues(object, keys(object)) : []; } +var lodash_values = values; + class RssReaderPlugin extends obsidian.Plugin { onload() { return __awaiter(this, void 0, void 0, function* () { @@ -10603,6 +18271,11 @@ class RssReaderPlugin extends obsidian.Plugin { }), this.settings.updateTime * 60 * 1000); this.registerInterval(interval); } + if (this.settings.autoSync) { + this.registerInterval(window.setInterval(() => __awaiter(this, void 0, void 0, function* () { + yield this.loadSettings(); + }), 1000 * 60)); + } //reset update timer on settings change. settingsStore.subscribe((settings) => { if (interval !== undefined) @@ -10622,7 +18295,9 @@ class RssReaderPlugin extends obsidian.Plugin { sortedFeedsStore.update(() => sorted); let items = []; for (const feed in Object.keys(feeds)) { - items = items.concat(feeds[feed].items); + //@ts-ignore + const feedItems = feeds[feed].items.sort((a, b) => window.moment(b.pubDate) - window.moment(a.pubDate)); + items = items.concat(feedItems); } this.filterItems(items); }); @@ -10685,12 +18360,33 @@ class RssReaderPlugin extends obsidian.Plugin { } updateFeeds() { return __awaiter(this, void 0, void 0, function* () { + function mergeArrayById(array1, array2) { + const mergedObjectMap = lodash_keyby(array1, 'link'); + const finalArray = []; + for (const object of array2) { + if (object.link && mergedObjectMap[object.link]) { + mergedObjectMap[object.link] = Object.assign(Object.assign({}, mergedObjectMap[object.link]), object); + } + else { + finalArray.push(object); + } + } + lodash_values(mergedObjectMap).forEach(object => { + finalArray.push(object); + }); + return finalArray; + } + function customizer(objValue, srcValue) { + if (Array.isArray(objValue)) { + return mergeArrayById(objValue, srcValue); + } + } let result = []; for (const feed of this.settings.feeds) { const items = yield getFeedItems(feed); result.push(items); } - result = Object.assign({}, result, this.settings.items); + result = lodash_mergewith(result, this.settings.items, customizer); yield this.writeFeedContent(() => result); }); } @@ -10790,4 +18486,4 @@ class RssReaderPlugin extends obsidian.Plugin { } module.exports = RssReaderPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9wYXJzZXIvcnNzUGFyc2VyLnRzIiwic3JjL2NvbnN0cy50cyIsInNyYy9tb2RhbHMvQmFzZU1vZGFsLnRzIiwic3JjL21vZGFscy9GZWVkTW9kYWwudHMiLCJub2RlX21vZHVsZXMvbG9kYXNoLmdyb3VwYnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvY29udGFpbnMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0RnJlc2hTaWRlT2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRWaWV3cG9ydFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFNjcm9sbFBhcmVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlU2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RlYm91bmNlLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9mb3JtYXQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91bmlxdWVCeS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VCeU5hbWUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLmpzIiwic3JjL3NldHRpbmdzL3N1Z2dlc3QudHMiLCJzcmMvc2V0dGluZ3MvRm9sZGVyU3VnZ2VzdG9yLnRzIiwic3JjL21vZGFscy9GaWx0ZXJlZEZvbGRlck1vZGFsLnRzIiwic3JjL3NldHRpbmdzL3NldHRpbmdzLnRzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9pbnRlcm5hbC9pbmRleC5tanMiLCJub2RlX21vZHVsZXMvc3ZlbHRlL3N0b3JlL2luZGV4Lm1qcyIsInNyYy9zdG9yZXMudHMiLCJzcmMvdmlldy9JY29uQ29tcG9uZW50LnN2ZWx0ZSIsInNyYy9tb2RhbHMvVGV4dElucHV0UHJvbXB0LnRzIiwibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC9mZWF0aGVyLmpzIiwibm9kZV9tb2R1bGVzL29ic2lkaWFuLWNvbW11bml0eS1saWIvZGlzdC91dGlscy5qcyIsInNyYy9mdW5jdGlvbnMudHMiLCJzcmMvbW9kYWxzL1RhZ01vZGFsLnRzIiwic3JjL2FjdGlvbnMvQWN0aW9uLnRzIiwic3JjL21vZGFscy9JdGVtTW9kYWwudHMiLCJzcmMvdmlldy9IdG1sVG9vbHRpcC5zdmVsdGUiLCJzcmMvdmlldy9JdGVtVmlldy5zdmVsdGUiLCJzcmMvdmlldy9GZWVkVmlldy5zdmVsdGUiLCJzcmMvdmlldy9Gb2xkZXJWaWV3LnN2ZWx0ZSIsInNyYy92aWV3L1ZpZXdMb2FkZXIudHMiLCJzcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsicmVxdWVzdCIsIk1vZGFsIiwiU2V0dGluZyIsIk5vdGljZSIsImdsb2JhbCIsImVmZmVjdCIsIm1pbiIsIm1heCIsIm1hdGhNYXgiLCJtYXRoTWluIiwiaGFzaCIsImFsbFBsYWNlbWVudHMiLCJwbGFjZW1lbnRzIiwicG9wcGVyT2Zmc2V0cyIsImNvbXB1dGVTdHlsZXMiLCJhcHBseVN0eWxlcyIsIm9mZnNldCIsImZsaXAiLCJwcmV2ZW50T3ZlcmZsb3ciLCJhcnJvdyIsImhpZGUiLCJTY29wZSIsIlRGb2xkZXIiLCJQbHVnaW5TZXR0aW5nVGFiIiwiZ3JvdXBCeSIsInRoaXMiLCJmZWF0aGVyLmljb25zIiwiYWRkSWNvbiIsIm5vcm1hbGl6ZVBhdGgiLCJNYXJrZG93blZpZXciLCJodG1sVG9NYXJrZG93biIsIkJ1dHRvbkNvbXBvbmVudCIsIkl0ZW1WaWV3IiwiTGlz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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsWUFBWSxDQUFDLEdBQUcsRUFBRTtBQUMzQixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRO0FBQzFCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEM7QUFDQSxFQUFFLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsWUFBWSxDQUFDLEdBQUcsRUFBRTtBQUMzQixFQUFFLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2xDLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVE7QUFDMUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QztBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEdBQUcsTUFBTTtBQUNULElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMzQixHQUFHO0FBQ0gsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFL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QUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDO0FBQy9CLEVBQUUsT0FBTyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRTtBQUM1QixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztBQUMzQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFO0FBQzVCLEVBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQUMvRCxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBSyxDQUFDLE9BQU8sRUFBRTtBQUN4QixFQUFFLElB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7QUFDekMsRUFBRSxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksSUFBSSxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xFLEVBQUUsT0FBTyxNQUFNLEtBQUssU0FBUyxHQUFHLFlBQVksR0FBRyxNQUFNLENBQUM7QUFDdEQsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDN0IsRUFBRSxPQUFPLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDdEIsRUFBRSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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LGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxD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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFZpZXdwb3J0UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0U2Nyb2xsUGFyZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2Zvcm1hdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdmFsaWRhdGVNb2RpZmllcnMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VuaXF1ZUJ5LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZUJ5TmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvY3JlYXRlUG9wcGVyLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJzcmMvc2V0dGluZ3Mvc3VnZ2VzdC50cyIsInNyYy9zZXR0aW5ncy9Gb2xkZXJTdWdnZXN0b3IudHMiLCJzcmMvbW9kYWxzL0Jhc2VNb2RhbC50cyIsInNyYy9tb2RhbHMvRmlsdGVyZWRGb2xkZXJNb2RhbC50cyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2guc29ydGJ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvZGFzaC5ncm91cGJ5L2luZGV4LmpzIiwic3JjL3BhcnNlci9yc3NQYXJzZXIudHMiLCJzcmMvY29uc3RzLnRzIiwic3JjL21vZGFscy9GZWVkTW9kYWwudHMiLCJzcmMvc2V0dGluZ3MvRmVlZFNldHRpbmdzLnRzIiwic3JjL3NldHRpbmdzL3NldHRpbmdzLnRzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9pbnRlcm5hbC9pbmRleC5tanMiLCJub2RlX21vZHVsZXMvc3ZlbHRlL3N0b3JlL2luZGV4Lm1qcyIsInNyYy9zdG9yZXMudHMiLCJzcmMvdmlldy9JY29uQ29tcG9uZW50LnN2ZWx0ZSIsInNyYy9tb2RhbHMvVGV4dElucHV0UHJvbXB0LnRzIiwibm9kZV9tb2R1bGVzL2ZlYXRoZXItaWNvbnMvZGlzdC9mZWF0aGVyLmpzIiwibm9kZV9tb2R1bGVzL29ic2lkaWFuLWNvbW11bml0eS1saWIvZGlzdC91dGlscy5qcyIsInNyYy9mdW5jdGlvbnMudHMiLCJzcmMvbW9kYWxzL1RhZ01vZGFsLnRzIiwic3JjL2FjdGlvbnMvQWN0aW9uLnRzIiwic3JjL21vZGFscy9JdGVtTW9kYWwudHMiLCJzcmMvdmlldy9IdG1sVG9vbHRpcC5zdmVsdGUiLCJzcmMvdmlldy9JdGVtVmlldy5zdmVsdGUiLCJzcmMvdmlldy9GZWVkVmlldy5zdmVsdGUiLCJzcmMvdmlldy9Gb2xkZXJWaWV3LnN2ZWx0ZSIsInNyYy92aWV3L1ZpZXdMb2FkZXIudHMiLCJub2RlX21vZHVsZXMvbG9kYXNoLm1lcmdld2l0aC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9sb2Rhc2gua2V5YnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvbG9kYXNoLnZhbHVlcy9pbmRleC5qcyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJlZmZlY3QiLCJtaW4iLCJtYXgiLCJtYXRoTWF4IiwibWF0aE1pbiIsImhhc2giLCJhbGxQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsInBvcHBlck9mZnNldHMiLCJjb21wdXRlU3R5bGVzIiwiYXBwbHlTdHlsZXMiLCJvZmZzZXQiLCJmbGlwIiwicHJldmVudE92ZXJmbG93IiwiYXJyb3ciLCJoaWRlIiwiU2NvcGUiLCJURm9sZGVyIiwiTW9kYWwiLCJTZXR0aW5nIiwiTm90aWNlIiwiZ2xvYmFsIiwicmVxdWVzdCIsInNvcnRCeSIsImdyb3VwQnkiLCJQbHVnaW5TZXR0aW5nVGFiIiwidGhpcyIsImZlYXRoZXIuaWNvbnMiLCJhZGRJY29uIiwibm9ybWFsaXplUGF0aCIsIk1hcmtkb3duVmlldyIsImh0bWxUb01hcmtkb3duIiwiQnV0dG9uQ29tcG9uZW50IiwiSXRlbVZpZXciLCJMaXN0RmVlZHNWaWV3IiwiUGx1Z2luIiwia2V5QnkiLCJ2YWx1ZXMiLCJtZXJnZVdpdGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdURBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FB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LENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRTtBQUMxQixFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQzFCLEVBQUUsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDakMsRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEMsRUFBRSxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFDRDtBQUNBO0FBQ0EsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO0FBQ3pDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsY0FBYyxDQUFDO0FBQzlDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztBQUNyQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7QUFDckMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7QUFDNUIsRUFBRSxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO0FBQ2xDLEVBQUUsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUU7QUFDM0I7QUFDQTtBQUNBLEVBQUUsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzlELEVBQUUsT0FBTyxHQUFHLElBQUksT0FBTyxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUM7QUFDekMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRTtBQUN6QixFQUFFLE9BQU8sT0FBTyxLQUFLLElBQUksUUFBUTtBQUNqQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksZ0JBQWdCLENBQUM7QUFDOUQsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDekIsRUFBRSxJQUFJLElBQUksR0FBRyxPQUFPLEtBQUssQ0FBQztBQUMxQixFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUU7QUFDN0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxDQUFDO0FBQzdDLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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LE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFB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LE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUMzRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDekQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFF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 diff --git a/.obsidian/plugins/rss-reader/manifest.json b/.obsidian/plugins/rss-reader/manifest.json index 497d6239..5b67708d 100644 --- a/.obsidian/plugins/rss-reader/manifest.json +++ b/.obsidian/plugins/rss-reader/manifest.json @@ -1,7 +1,7 @@ { "id": "rss-reader", "name": "RSS Reader", - "version": "0.6.3", + "version": "0.6.6", "minAppVersion": "0.9.12", "description": "Read RSS Feeds from within obsidian", "author": "Johannes Theiner", diff --git a/.obsidian/workspace b/.obsidian/workspace index 03ce0f95..a3a637e1 100644 --- a/.obsidian/workspace +++ b/.obsidian/workspace @@ -9,7 +9,7 @@ "state": { "type": "markdown", "state": { - "file": "03.01 Reading list/Sad Little Men.md", + "file": "03.01 Reading list/@Reading master.md", "mode": "preview" } } @@ -68,7 +68,7 @@ "state": { "type": "backlink", "state": { - "file": "03.01 Reading list/Sad Little Men.md", + "file": "03.01 Reading list/@Reading master.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -88,7 +88,7 @@ } }, { - "id": "08dd144bddf51338", + "id": "8e49244dd6b51d56", "type": "leaf", "state": { "type": "RSS_FEED", @@ -96,7 +96,7 @@ } }, { - "id": "0d7650fccb1aef9d", + "id": "110937027e33846c", "type": "leaf", "state": { "type": "DICE_ROLLER_VIEW", @@ -108,15 +108,15 @@ }, "active": "e8d1a34590cd1804", "lastOpenFiles": [ + "03.01 Reading list/@Reading master.md", + "00.02 Inbox/Keila la Rouge.md", + "00.02 Inbox/Lionel Asbo.md", + "00.02 Inbox/By the Sea.md", + "00.02 Inbox/Sérotonine.md", + "03.01 Reading list/Comprendre l'islam.md", "03.01 Reading list/Sad Little Men.md", "00.02 Inbox/Auden - private viewing & workshop 2711.md", "01.02 Home/@Shopping list.md", - "01.02 Home/@Daily tracker.md", - "01.01 Life Orga/@Life Organisation.md", - "00.03 News/News.md", - "00.03 News/Monaco-Lille l'ASM arrache un point, de gros regrets pour le LOSC.md", - "05.02 Networks/VPS Console Dialogue.md", - "05.02 Networks/Configuring Caddy.md", - "01.02 Home/MRCK.md" + "01.02 Home/@Daily tracker.md" ] } \ No newline at end of file diff --git a/00.02 Inbox/Keila la Rouge.md b/00.02 Inbox/Keila la Rouge.md new file mode 100644 index 00000000..4a864070 --- /dev/null +++ b/00.02 Inbox/Keila la Rouge.md @@ -0,0 +1,84 @@ +--- + +Tag: ["Novel", "Society", "Judaism", "LifeChange"] +Date: 2021-11-26 +DocType: "Source" +Hierarchy: "NonRoot" +TimeStamp: +location: +Source: + Type: "Book" + Author: "Isaac Bashevis Singer" + Language: "EN" + Published: 1976 + Link: https://www.babelio.com/livres/Singer-Keila-la-Rouge/1006978 + Read: + +--- + +Parent:: [[@Reading master|Reading list]] + +--- + +  + +```button +name Edit Source parameters +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-KLRSourceEdit + +```button +name Save +type command +action Save current file +id Save +``` +^button-KLRTNSave + +  + +# Keila la Rouge + +  + +```ad-abstract +title: Summary +collapse: open +Varsovie est sous le joug du grand Empire Russe. Keila la Rouge, flamboyante de ses cheveux roux et porteuse du passeport jaune des prostituées, se voit enfin « offrir » la proposition de mariage de Yarmy, Yarmy la Teigne. Sa chance dépasse l'entendement, et elle le sait. +``` + +  + +```toc +style: number +``` + +  + +--- + +  + +### Cover + +  + +![](https://www.livredepoche.com/sites/default/files/images/livres/couv/9782253100522-001-T.jpeg) + +  + +--- + +  + +### Notes + +  + +Loret ipsum + +  +  \ No newline at end of file diff --git a/03.01 Reading list/@Reading master.md b/03.01 Reading list/@Reading master.md index 0829be13..857cc53a 100644 --- a/03.01 Reading list/@Reading master.md +++ b/03.01 Reading list/@Reading master.md @@ -2,8 +2,8 @@ QueryTheme: Social QueryAddedDate: 2021 -QueryLanguage: QueryAuthor: +QueryLanguage: QueryPublishedD: QueryReadD: cssclass: recipeTable diff --git a/06.01 Finances/Ledger.md b/06.01 Finances/Ledger.md index 3b4dc717..ee8556b3 100644 --- a/06.01 Finances/Ledger.md +++ b/06.01 Finances/Ledger.md @@ -49,5 +49,9 @@ assets:Cash:GBP 2021/11/22 Current expenses + expenses:Current Expenses:GBP £300.00 + assets:Cash:GBP + +2021/11/26 Current expenses expenses:Current Expenses:GBP £300.00 assets:Cash:GBP \ No newline at end of file